Skip to main content

GSOC Project

DeepForest

This project aims to make the model which would already be trained for the classification of species and detection of alive and dead, trees or birds using transfer learning on the current release model which is based on object detection, only detecting trees and birds, for now, It also involves improving the user interface for working with the multi-class model for a better understating of the species.

Basic Understanding of project

Through initial understanding and contribution to DeepForest, I have grasped a basic understanding that DeepForest uses Retinanet as a one-stage object detection model that utilizes a focal loss function to address class imbalance during training and which is composed of a backbone network.

Backbone Network

The backbone is responsible for computing a convolutional feature map over an entire input image and is an off-the-self convolutional network to predict individual tree crowns and birds from airborne RGB images. The pre-built model uses a semi-supervised approach to generate millions of moderate-quality annotations using an unsupervised Li DAR tree detection algorithm, followed by manual annotation of RGB images at selected locations.

Depending on what one wants to predict on their data, one requires an adequate backbone network and a certain amount of prediction heads. For a basic classification network, ResNet is the backbone and the fully connected layer as the sole prediction head.

The backbone network convolution and pooling is responsible for extracting a feature map from the image that contains higher-level summarized information. Each head uses this feature map as input to predict its desired outcome. The loss that one optimizes for during training is usually a weighted sum of the individual losses for each prediction head.


Design of DeepForest

Although the main design of this package is for tree detection of a single class which tells the user whether the tree is alive or dead. It uses Retinanet for the creation of a model and Pytorch lightning for the training of model, We can extend the core functionality, and tags with multiple classes according to our need. When creating a DeepForest model object, pass in the expected number of classes and a dictionary of classes that map each numeric class to a character label, moreover model is very sensitive to input resolution of raster images and tends to have low frequency when the resolution of image increases, so there is a need for robust training of model on various resolutions or preprocessing the data and trying to find the appropriate patch size for increasing the model accuracy.


 

 


 

Comments

Popular posts from this blog

GSoC Final Report

GSoC Final Report My journey on the Google Summer of Code project passed by so fast, A lot of stuff happened during those three months, and as I’m writing this blog post, I feel quite nostalgic about these three months. GSoC was indeed a fantastic experience. It gave me an opportunity to grow as a developer in an open source community and I believe that I ended up GSoC with a better understanding of what open source is. I learned more about the community, how to communicate with them, and who are the actors in this workflow. So, this is a summary report of all my journey at GSoC 2022. Name : Ansh Dassani Organization:   NumFOCUS- Data Retriever Project title : Training and Evaluation of model on various resolutions Project link:  DeepForest Mentors :  Ben Weinstein ,  Henry Senyondo , Ethan White Introduction                                        DeepForest is a pytho...

Deep Learning

What is deep learning? Deep learning is one of the subsets of machine learning that uses deep learning algorithms to implicitly come up with important conclusions based on input data. Genrally deeplearning is unsupervised learning or semi supervised learning and is based on representation learning that is a set of techniques that allows a system to automatically discover the representations needed for feature detection or classification from raw data. This replaces manual feature engineering and allows a machine to both learn the features and use them to perform a specific task, it learns from representative examples. For example: if you want to build a model that recognizes trees, you need to prepare a database that includes a lot of different tree images. The main architectures of deep learning are: -Convolutional neural networks -Recurrent neural networks -Generative adversarial networks -Recursive neural networks I'll be talking about them more in later part of this blog. Diffe...

Sensitivity of model to input resolution

Sensitivity of the model to resolution The Deepforest model was trained on 10cm data at 400px crops is way too sensitive to the input resolution of images and quality of images, and it tends to give inaccurate results on these images and it's not possible to always have images from drones from a particular height that is 10cm in our case, so we have to come up with a solution for how to get better results for multiple resolutions of data. So we have two solutions to get better predictions, which can be preprocessing of data and retraining the model on different input resolutions. In preprocessing what we can do is to try to get nearby patch size to give better results as the resolution of the input data decreases compared to the data used to train the model, the patch size needs to be larger and we can pass the appropriate patch size in ```predict_tile``` function, but retaining of the model on different resolutions can be more amount of work but yes we tried to achieve it by evalu...