Skip to main content

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.


Introduction

                     


                


DeepForest is a python package for training and predicting individual tree crowns from airborne RGB imagery. DeepForest comes with a prebuilt model trained on data from the National Ecological Observatory Network. Users can extend this model by annotating and training custom models.

The aim of the project was to resolve the sensitivity issue to the resolution of the input image as it's not possible to always have image data clicked from a certain height.

It was achieved by robust training of the model on data on various resolutions and checking whether the evaluation score was for the prediction of data.

The codebase for DeepForest can be found here

Goals of the Project

  • To get the NeonTreeEvaluation dataset and resample all the data with various resolutions and check whether the data is fit to be evaluated.
  • Evaluating the data on those resolutions and creating a curve to see a pattern of evaluation scores
  • Training of the model on urban tree detection data and predicting test files and checking for the accuracy of output results
  • Training of the model on OSBS dataset by splitting the rasters into certain patch sizes with a certain overlap of images and then predicting the test files

Task Completion

Contributions before GSoC'22 are here

My contributions to deepforest are here

Blogs

GSoC projectlink
Start of the coding periodlink
My GSOC workflowlink
Creating flutter packageslink
Prediction through DeepForestlink
AWS CLI— Know its Applications and Benefitslink
Sensitivity of the model to input resolutionlink
Deepforest and Retinanetlink
Deepforest Model Traininglink
Model training on OSBS datasetlink
Evaluation of predicted datalink
Deep Learninglink

Research accomplished

  • Researched and contributed to the wrapping of raster files into certain resolutions and training of model on these rasters to improve the accuracy of model prediction on various heights.
  • Contributed on getting any memory and computational error while training of large dataset at once, therefore to avoid it we can split that raster into small sizes and get a single training file containing information of multiple images, thereafter training the model on those various images.
  • Researched on the evaluation of NeonTreeEvaluation on various resolutions after training the model on Urban tree detection.
  • Researched deep-learning and neural networks on object detection model with Retinanet and Resnet_50, and contributed to annotating raster's by converting them into shapefiles.
  • Using clusters for high-end computation by using multiple GPU support for training and testing of data
  • Worked on docker-compose and multiple docker images, and contributed to GitHub actions and working of CI/CD.
  • Researched package management and deployment in various frameworks such as PythonFlutterNodeC++ and server deployment and server configuration of Apache, AWS, Nginx and Shine
  • Contributed to system design and working of data structures and algorithms.

Future Goals

I will work on robust training of models on various datasets with certain resolutions so that we can reach better accuracy, visualization of the urban tree detection data results, checking for the evaluation score of NeonTreeEvaluation after training our model on urban tree detection data, sample images of before and after training on the urban tree detection data for some NeonTreeEvaluation plots.

I plan to continue contributing to Weecology after the completion of GSoC'22 and stay an active contributor to it.

Acknowledgment

First, I would like to thank my mentors Ben Weinstein, Henry Senyondo, and Ethan White. They really believed in our potential, encouraged us to talk to the community, and show us some great opportunities. They were an amazing team of mentors and I will always be thankful to them. Without them, I would probably never would had submitted a project to GSoC.

Henry Senyondo deserves special recognition for his unwavering support and leadership, he always made sure that we as interns didn't have any problems, Thanks to Ben Weinstein for always guiding me to the codebase and mentoring me on how can I achieve my goal and I learned a lot with him about deep-learning.

Comments

Popular posts from this blog

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...