DeepForest ships pre-trained crown and bird detectors so you do not start from scratch
Python Package for Airborne RGB machine learning
At a glance
- What is it?
- DeepForest is a Python package for training and predicting ecological objects in airborne RGB imagery, built on the object detection module from torchvision and shipped with trained models for tree crowns and birds. The catch it states itself is that a prebuilt model will rarely fit your forest without fine tuning.
- Who is it for?
- DeepForest suits ecologists and forestry researchers who have high resolution RGB imagery and need per-tree or per-bird counts now, rather than a research pipeline that starts from a blank detector, and it suits teams willing to annotate data and fine tune the model for their own sensors.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 17 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Per-object detection in high resolution airborne imagery
DeepForest is a Python package for training and predicting ecological objects in airborne imagery. The README is specific about the domain: it predicts bounding boxes corresponding to individual trees in RGB imagery, and it currently ships two models, a tree crown object detection model and a bird detection model.
The problem it attacks is described in the Why DeepForest section. Remote sensing can change the speed, scale and cost of biodiversity and forestry surveys, but data acquisition currently outpaces the ability to identify individual organisms in high resolution imagery. Individual crown delineation has been a long standing challenge in remote sensing, and available algorithms produce mixed results.
The claim of being first is worth quoting with attribution rather than repeating as fact. The README calls DeepForest the first open-source implementation of a deep learning model for crown detection, and its stated motivation is simpler: deep learning works in many computer vision tasks but needs significant training data, so including a trained model is meant to remove that barrier for people working with different forests, sensors and spatial resolutions.
So the audience is not a computer vision researcher. It is a field ecologist with a GeoTIFF or a set of images and a need for counts.
A torchvision detector with trained weights already loaded
The mechanism is a thin, opinionated layer over PyTorch. The README states that DeepForest uses deep learning object detection networks to predict bounding boxes, is built on the object detection module from the torchvision package, and is designed to make training models for detection simpler.
That single design decision explains most of what the package does and does not do. It inherits torchvision's detection architectures and training loop, so you are not choosing an architecture from scratch, and you are not writing a data pipeline from scratch either. What you get instead is a pipeline where the model, the label set and the preprocessing are already assembled for ecological imagery.
The dependency list in the project metadata backs this up. It includes faster-coco-eval for detection evaluation, kornia for image processing, opencv-python-headless, geopandas, h5py, hydra-core with omegaconf for configuration, huggingface_hub, numpy with a 2.0.0 floor, matplotlib, pandas, aiohttp and aiolimiter.
The hydra and omegaconf pair tells you the configuration is declarative rather than hard-coded in scripts, which matters if you plan to sweep parameters. The huggingface_hub dependency tells you model weights are fetched from a model hub rather than shipped inside the wheel.
Both shipped models are single class, and yours can be more
The README makes a precise claim about the models: both the tree crown model and the bird model are single class modules, and they can be extended to species classification based on new data. Users can extend these models by annotating and training custom models.
Single class is the key limitation and also the extension point. A pre-trained crown model finds crowns, not species. A pre-trained bird model finds birds, not bird taxa. If you want to know whether a detected bird is one species rather than another, that is new training work on your own annotations.
The project metadata describes the platform more broadly than the README: individual detection from airborne remote sensing including trees, birds, and livestock, with support for multiple detection models and easy fine tuning to particular ecosystems.
That is the workflow the package is designed around. Predict first with a shipped model, look at where it fails on your own imagery, annotate those cases, and fine tune until the counts are usable. The DeepForest paper and the model papers cited in the README are the references for the underlying work, with the crown model described in the 2019 Remote Sensing paper and the bird model in the 2022 Ecological Applications paper.
Getting the package and the dependency weight it brings
The README does not include an install command, so this article does not invent one. The project publishes on PyPI under the name DeepForest, and the full documentation lives at deepforest.readthedocs.io.
The supported Python range and the license are declared in the project metadata:
name = "deepforest"
version = "2.1.0"
requires-python = ">=3.10,<3.15"
license = {text = "MIT"}The dependency list is the part to look at before you commit, because it is long and pulls in compiled wheels. A slice of it:
dependencies = [
"faster-coco-eval>=1.6.8",
"geopandas",
"huggingface_hub>=0.25.0",
"hydra-core",
"kornia>=0.8.2",
"numpy>=2.0.0",
"opencv-python-headless>=4.5.4",
"omegaconf",Three things stand out. The numpy 2.0.0 floor means an older scientific stack in the same environment will need attention. The opencv-python-headless variant avoids pulling in a GUI toolkit, which is the right choice on clusters. And the presence of geopandas and h5py means spatial data handling is part of the dependency surface rather than something you add yourself.
The classifier list also names the supported operating systems: MacOS, Microsoft Windows, POSIX and Unix. No Linux-specific entry appears beyond POSIX and Unix, and the badge in the README states Python 3.10 and later below 3.15.
The prebuilt model will probably not read your forest correctly
The README is unusually direct about the limits of the off-the-shelf weights, and it is worth quoting rather than smoothing over. It says that, given the enormous array of forest types and image acquisition environments, it is unlikely that your image will be perfectly predicted by a prebuilt model, and then points readers to tips and general guidelines to improve predictions.
This is the honest centre of the package. The value is not that a crown model transfers perfectly to a new forest. The value is that it gives you a working baseline and a training pipeline, so the path from no model to a locally tuned one is short. Both shipped models are single class, so species-level questions always require your own labelled data.
The failure mode to plan for is silent miscounting rather than a crash. A detector that under-detects under a canopy type produces plausible-looking boxes with missing trees, and a species classifier trained on too few classes can produce confident wrong labels. Because the output is a set of bounding boxes, downstream area or density calculations inherit that error directly, so any accuracy claim in a paper needs the local evaluation that fine tuning is there to support.
The README routes questions about improving a model to the discussion board, and reserves the issues page for feature requests and bug reports.
Using torchvision directly, and what DeepForest changes
The comparison worth making is with torchvision's object detection module, since that is what DeepForest is built on. Working with torchvision directly means you assemble the pieces yourself: choose a detection architecture, prepare a dataset in the expected annotation format, write the training loop, evaluate with your own metric code, and map bounding boxes onto your geospatial layer.
DeepForest removes that assembly work and adds ecological specifics. It ships trained weights for crowns and birds so you can predict before you train, it is built to make training models for detection simpler, and the dependency set is arranged around geospatial data handling with geopandas, h5py and hydra-core configuration.
The trade is control. Using torchvision directly gives you every architecture option and every training detail, at the cost of the setup work. DeepForest gives you a working model and a tuned-for-ecology pipeline, with a smaller set of choices exposed. For a project that needs a specific detector or unusual augmentation strategy, the direct route stays open, since DeepForest does not replace torchvision, it builds on it.
A 2.x release line, active pushes, and a documented citation path
The release history shows a major version boundary and recent work on it. Version 2.1.0 was released on 2026-02-26, version 2.0.0 on 2025-11-04, and 2.0.0rc2 on 2025-10-23, and the last push to the repository was on 2026-10-08.
If you are pinning a dependency, be aware that the 2.0.0 line is where breaking changes landed, so a 1.x pin and a 2.x pin are different animals. The repository root carries HISTORY.md and version_switcher.json, which are the places to check what changed, and pyproject.toml reports the current version as 2.1.0.
The project takes its citation obligations seriously, which matters for research use. The README states that most usage should cite two papers, the DeepForest paper from 2020 in Methods in Ecology and Evolution and the paper describing the model, with a separate citation for the bird model. A Zenodo DOI badge, a CITATION.cff file and a citation_count.json script for pulling citation numbers are all present, and the docs are built with readthedocs from a .readthedocs.yml configuration.
The license is MIT, and the README calls it free software. The repository also holds AGENTS.md, CONTRIBUTING.md and an AUTHORS.md file, and the developer guidelines in the README require an approved issue before a non-trivial pull request is opened.
Editorial conclusion
DeepForest suits ecologists and forestry researchers who have high resolution RGB imagery and need per-tree or per-bird counts now, rather than a research pipeline that starts from a blank detector, and it suits teams willing to annotate data and fine tune the model for their own sensors. It is the wrong choice for hyperspectral or multispectral workflows, for imagery outside the RGB range the models were trained on, and for anyone who needs guaranteed accuracy on a single forest without doing local training, since the README states plainly that a prebuilt model is unlikely to predict your image perfectly. Verify first which released model you need, tree crown or bird, that your Python version falls inside the supported >=3.10,<3.15 range, and that the platform is one of MacOS, Windows, POSIX or Unix, which is the full list the package metadata claims.
Frequently asked questions
What does DeepForest detect in airborne imagery?
DeepForest predicts bounding boxes for individual trees in RGB imagery, and it ships with a tree crown object detection model and a bird detection model. The project metadata also describes support for livestock and multiple detection models.
Which Python versions does DeepForest support?
The project metadata sets requires-python to >=3.10,<3.15, and the README badge states Python 3.10 and later below 3.15. Supported operating systems listed in the metadata are MacOS, Microsoft Windows, POSIX and Unix.
Can I train DeepForest on my own tree or bird data?
Yes. Users can extend the shipped models by annotating and training custom models, and both are single class modules that can be extended to species classification based on new data. The README points to tips and guidelines for improving predictions on your own imagery.
Is DeepForest built on PyTorch and torchvision?
The README says DeepForest is built on the object detection module from the torchvision package and uses deep learning object detection networks, and the dependency list includes kornia, faster-coco-eval and huggingface_hub alongside the scientific Python stack.
Where should I report a DeepForest bug or ask for help?
The README asks that model improvement suggestions go to the GitHub discussion board, and that only feature requests or bug reports be posted on the issues page. The documentation is hosted on readthedocs.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/weecology-deepforest)Was this useful?