Skip to main content

Prediction through DeepForest

Prediction

DeepForest allows the prediction of the new data with the prebuilt model or we can also use our custom trained models. 


Predict a single image

DeepForest allows to predict single images with predict_image function which can read an image from memory or file provided by user, which returns the bounding boxes of the predicted trees in image.

 
image_path = get_data("OSBS_029.png")
boxes = model.predict_image(path=image_path, return_plot = False)


 

 
boxes.head()
xmin ymin xmax ymax label scores
0 334.708405 342.333954 375.941376 392.187531 0 0.736650
1 295.990601 371.456604 331.521240 400.000000 0 0.714327
2 216.828201 207.996216 245.123276 240.167023 0 0.691064
3 276.206848 330.758636 303.309631 363.038422 0 0.690987
4 328.604736 45.947182 361.095276 80.635254 0 0.638212
 

The current DeepForest has release model there is a category named "Tree", which has the label as numeric 0 and there is also a bird release model which has the label as numeric 1.

Predict a tile

Large tiles covering large geographic areas will not fit in memory during prediction, and results will be poor due to the density of bounding boxes. Remote sensing data is typically provided as a geospatial .tif file and is best suited for the predict_tile function, which divides the tile into overlapping windows, performs predictions on each window, and reassembles the resulting annotations.

 
raster_path = get_data("OSBS_029.tif")
# Window size of 300px with an overlap of 25% among windows for this small tile.
predicted_raster = model.predict_tile(raster_path, return_plot = True
                                              patch_size=300,patch_overlap=0.25)
 

 

Predict a set of annotations

When evaluating ground truth data, it is helpful to predict a sequence of images and combine them into a data frame. The predict_generator method allows the user to point to an annotated file and return predictions for all images. The image path is a relative path to the root dir. What we generally do is save the .csv file alongside the images.

 
csv_file = get_data("testfile_deepforest.csv")
boxes = model.predict_file(csv_file=csv_file
                                root_dir = os.path.dirname(csv_file),savedir=".")
 


We can also customize the appeaance of bounding box created like color and thickness by providing these arguments a value while calling predict_image function.

 
image_path = get_data("OSBS_029.png")
boxes = model.predict_image(path=image_path, return_plot = True
                                               color=(0, 165, 255), thickness=3)
 

 

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