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 Observation Network. Users can extend this model by annotating and training custom models starting from the prebuilt model.
DeepForest es un paquete de python para la predicción de coronas de árboles individuales basada en modelos entrenados con imágenes remotas RVA ( RGB, por sus siglas en inglés). DeepForest viene con un modelo entrenado con datos proveídos por la Red Nacional de Observatorios Ecológicos (NEON, por sus siglas en inglés). Los usuarios pueden ampliar este modelo pre-construido por anotación de etiquetas y entrenamiento con datos locales. La documentación de DeepForest está escrita en inglés, sin embargo, agradeceríamos contribuciones con fin de hacerla accesible en otros idiomas.
Compiled versions of DeepForest are available for Windows, Mac and Linux on pypi.
pip install DeepForest
Installation has been currently validated on clean installs of
- Linux version (Ubuntu 17.4.0)
- Mac OSX Mojave Python 3.7.5
- Windows 2016+
DeepForest can alternatively be installed from source using the github repository. The python package dependencies are managed by conda. For help installing conda see: conda quickstart.
git clone https://github.com/weecology/DeepForest.git
cd DeepForest
conda env create --file=environment.yml
conda activate DeepForest
#build c extentions for retinanet
python setup.py build_ext --inplace
After installation confirm DeepForest is installed by checking the version
python
Python 3.6.9 |Anaconda, Inc.| (default, Jul 30 2019, 13:42:17)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import deepforest
>>> deepforest.__version__
https://deepforest.readthedocs.io.
All issues can be submitted to the github repo. First have a look at FAQ for a few common errors. We look forward to hearing about the performance of the prebuilt and custom models. We encourage all users to submit a sample image issue, regardless of performance, to the image gallery. We want to hear from you!
Using DeepForest, users can predict individual tree crowns by loading prebuilt models and applying them to RGB images.
Currently there is 1 prebuilt model, "NEON", which was trained using a semi-supervised process from imagery from the National Ecological Observation Network. For more information on the prebuilt models see citations.
import matplotlib.pyplot as plt
from deepforest import deepforest
from deepforest import get_data
test_model = deepforest.deepforest()
test_model.use_release()
#predict image
image_path = get_data("OSBS_029.tif")
image = test_model.predict_image(image_path = image_path)
#Show image, matplotlib expects RGB channel order, but keras-retinanet predicts in BGR
plt.imshow(image[...,::-1])
plt.show()
Window size can be important and is worth playing with, especially when predicting data coarser than the 0.1m data used to train the prebuilt model. Users must balance that the trees must be recognizable, so the images cannot be cropped too small, but the trees cannot be so small that they cannot be seen.
DeepForest allows training through a keras-retinanet CSV generator. Input files must be formatted, without a header, in the following format:
image_path, xmin, ymin, xmax, ymax, label
With one bounding box for each line. The image path is relative to the location of the annotations file.
Training config parameters are stored in a deepforest_config.yml. They also can be changed at runtime.
from deepforest import deepforest
from deepforest import get_data
test_model = deepforest.deepforest()
# Example run with short training
test_model.config["epochs"] = 1
test_model.config["save-snapshot"] = False
test_model.config["steps"] = 1
#Path to sample file
annotations_file = get_data("testfile_deepforest.csv")
test_model.train(annotations=annotations_file, input_type="fit_generator")
#save trained model
test_model.model.save("snapshots/final_model.h5")
Thanks to Microsoft AI4Earth grant for hosting a azure web demo of the trained model.
http://tree.westus.cloudapp.azure.com/shiny/
- Free software: MIT license
We are organizing a benchmark dataset for individual tree crown prediction in RGB imagery from the National Ecological Observation Network: https://github.com/weecology/NeonTreeEvaluation
DeepForest is an open-source tool that depends on engagement from the community. If you use DeepForest, please consider uploading an image to be shown in the gallery. This way the developers, and potential funding sources, can gather understanding on the kinds of images and use-cases. To upload, submit a new issue on github.