DeepForest Changelog#
Version 2.0.0 (Date: November 4, 2025)#
Breaking Changes - Deprecated Items Removed:#
Removed Functions:
xml_to_annotations()- Useutilities.read_pascal_voc(path)or the generalutilities.read_file(path).boxes_to_shapefile()- Useimage_to_geo_coordinates().project_boxes()- Useimage_to_geo_coordinates().annotations_to_shapefile- Useimage_to_geo_coordinates().plot_points()- Useplot_resultsdraw_points()- Useplot_resultsplot_predictions()- Useplot_resultsdraw_predictions()- Useplot_resultsuse_release()- Useload_model('weecology/deepforest-tree')insteaduse_bird_release()- Useload_model('weecology/deepforest-bird')instead
Removed Parameters:
geometry_typeandsave_dirfromshapefile_to_annotations()num_classesandlabel_dictfromdeepforest()constructor - Use config file insteadaugmentparameter from all functions - Useaugmentationsparameter insteadraster_pathparameter from predict_tile() - Usepathparameter instead
Migration Guide:
Replace
xml_to_annotations(xml_path)withread_pascal_voc(xml_path)Replace
boxes_to_shapefile(df, root_dir)withimage_to_geo_coordinates(df, root_dir)Replace
plot_points(image, points)withplot_results(results)Replace
draw_points(image, points)withplot_results(results)Replace
plot_predictions(image, df)withplot_results(results)Replace
draw_predictions(image, df)withplot_results(results)Replace
use_release()withload_model('weecology/deepforest-tree')Replace
use_bird_release()withload_model('weecology/deepforest-bird')Use config file or
config_argsinstead of constructor parametersUse
augmentationsparameter instead ofaugmentparameter
Developer#
Developer Workflow:
Pre-commit workflow with Ruff, docformatter, and nbQA for automated code quality checks
Editor integration recommendations (VS Code, PyCharm, Vim/Neovim)
Comprehensive developer contributing guide
Infrastructure:
Modernized pyproject.toml configuration with improved dependency management
Better optional dependency handling (dev, docs)
Documentation:
Enhanced Sphinx documentation with pydata theme
Improved version switcher for release candidates
ReadTheDocs integration with uv
Testing:
Enhanced test coverage for edge cases
Added comprehensive test suites for dataset handling, evaluation metrics, CLI functionality, model inference, and HuggingFace model loading
Features#
Model Structure:
Enhanced configuration handling via config file system
Better separation of concerns between training and prediction modules
Consistent type hints in
BaseModeland model creation methodsImproved model validation with
check_model()method
Data Handling:
Improved annotation reading with unified
read_file()methodEnhanced geometry type detection and conversion
Better coordinate system handling (image ↔ geographic)
Enhancements#
Installation & Packaging:
Updated Python version requirement to 3.11+
Removed conda support (package now only available via PyPI)
Canonical PEP 440 versioning format implementation (e.g.,
2.0.0rc1)
Testing & Evaluation:
Improved
evaluate_boxes()with better multi-class supportEnhanced class recall and precision calculations
Better handling of empty predictions and ground truth
Improved point recall evaluation for point annotations
Documentation:
Enhanced installation instructions (pip/uv focused)
Better examples and tutorials
Updated migration guides for deprecated features
Version 2.0.0rc2 (Date: October 23, 2025)#
Internal / Developer Updates:
Fixed publish pipeline issues
No user-facing changes from 2.0.0rc1
Version 2.0.0rc1 (Date: October 21, 2025)#
Release Candidate 1 - Beta Release#
Breaking Changes - Deprecated Items Removed:#
Removed Functions:
xml_to_annotations()- Useutilities.read_pascal_voc(path)or the generalutilities.read_file(path).boxes_to_shapefile()- Useimage_to_geo_coordinates().project_boxes()- Useimage_to_geo_coordinates().annotations_to_shapefile- Useimage_to_geo_coordinates().plot_points()- Useplot_resultsdraw_points()- Useplot_resultsplot_predictions()- Useplot_resultsdraw_predictions()- Useplot_resultsuse_release()- Useload_model('weecology/deepforest-tree')insteaduse_bird_release()- Useload_model('weecology/deepforest-bird')instead
Removed Parameters:
geometry_typeandsave_dirfromshapefile_to_annotations()num_classesandlabel_dictfromdeepforest()constructor - Use config file insteadaugmentparameter from all functions - Useaugmentationsparameter insteadraster_pathparameter from predict_tile() - Usepathparameter instead
Migration Guide:
Replace
xml_to_annotations(xml_path)withread_pascal_voc(xml_path)Replace
boxes_to_shapefile(df, root_dir)withimage_to_geo_coordinates(df, root_dir)Replace
plot_points(image, points)withplot_results(results)Replace
draw_points(image, points)withplot_results(results)Replace
plot_predictions(image, df)withplot_results(results)Replace
draw_predictions(image, df)withplot_results(results)Replace
use_release()withload_model('weecology/deepforest-tree')Replace
use_bird_release()withload_model('weecology/deepforest-bird')Use config file or
config_argsinstead of constructor parametersUse
augmentationsparameter instead ofaugmentparameter
Version 1.5.2 (Date: Feb 7, 2025)#
The major innovations are:
Improve Tests on edge cases
Additional features and enhancements include:
Documentation: Improved documentation workflow and version available
Version 1.5.0 (Date: Jan 15, 2024)#
The major innovations are:
Restructured package layout by moving code into
src/directory for better organizationAdded batch prediction capabilities for improved processing of multiple images
Implemented support for image dataframes to allow more flexible input formats
Created
plot_annotationsmethod for better visualization of predictionsAdded out-of-memory dataset sample for handling large datasets efficiently
Additional features and enhancements include:
Enhancement: Reorganized package structure to follow modern Python packaging standards
Enhancement: Enhanced test coverage for new features
Enhancement: Improved code organization and maintainability
Documentation: Added docformatter for consistent docstring formatting
Documentation: Improved documentation clarity and organization
Documentation: Added new contributor: Dingyi Fang
Version 1.4.1 (Date: Oct 26, 2024)#
Enhancement: Use GitHub Actions to publish the package.
Version 1.4.0 (Date: Oct 9, 2024)#
The major innovations are:
New model loading framework using HuggingFace. DeepForest models are now available on HuggingFace. The models can be loaded using
load_model()and used for inference.An all-purpose
read_filemethod is introduced to read annotations from various formats including CSV, JSON, and Pascal VOC.The
CropModelclass is introduced to classify detected objects using a trained classification model. Use when a multi-class DeepForest model is not sufficiently flexible, such as when new data sources are used for fine-grained classification and class imbalance.deepforest.visualize.plot_resultsis now the primary method for visualizing predictions. The function is more flexible and allows for customizing the plot using the supervision package.
Additional features and enhancements include:
New Feature: A
crop_rasterfunction is introduced to crop a raster image using a bounding box.New Feature: Added beta support for multiple annotation types including point, box, and polygon.
New Feature: Added support for learning rates scheduling using the
torch.optim.lr_schedulermodule. The learning rate scheduler can be specified in the configuration file.New Utility: Created
utilities.download_ArcGIS_RESTfunction to download tiles from the ArcGIS REST API (e.g., NAIP imagery).Enhancement: The training module better matches torchvision negative anchors format for empty frames.
Deprecation:
shapefile_to_annotationsindeepforest/utilities.pyis deprecated in favor of the more generalread_filemethod.Deprecation:
predictindeepforest/main.py. Thereturn_plotargument is deprecated and will be removed in version 2.0. Usevisualize.plot_resultsinstead.Deprecation:
predict_tileindeepforest/main.py. Deprecated argumentsreturn_plot,color, andthicknesswill be removed in version 2.0.Deprecation:
crop_functionindeepforest/preprocess.py. Thebase_dirargument is deprecated and will be removed in version 2.0. Usesave_dirinstead.Deprecation: The
deepforest.visualize.IoU_Callbackfor better alignment with the PyTorch Lightning API (see issue).Deprecation:
deepforest.main.use_releaseanddeepforest.main.use_bird_releaseare deprecated in favor of the new model loading framework, for example usingdeepforest.main.load_model("weecology/deepforest-bird").
Version 1.3.3 (Date: Mar 12, 2024)#
Enhancement:
split_rasternow allowsannotations_fileto beNone, enabling flexibility during data preprocessing.
Version 1.3.0 (Date: Dec 3, 2023)#
Deprecation: Removed
IoU_Callbackfor better alignment with the PyTorch Lightning API (see issue).Refactor: Evaluation code now leverages the PyTorch Lightning evaluation loop for result calculation during training.
Refactor: Simplified
image_callbacksby using predictions directly. No need to specify the root directory or CSV file, as the evaluation file is assumed.
Version 1.1.3 (Date: Nov 9, 2021)#
Enhancement: Added box coordinates to the evaluation results frame for better result tracking.
Version 1.1.2 (Date: Sep 30, 2021)#
Bug Fix: Fixed incorrect precision calculation in
class_recall.csvwhen multiple classes were present.
Version 1.1.1 (Date: Sep 14, 2021)#
Update:
project_boxesnow includes output options for bothpredict_tileandpredict_image.New Feature: Introduced
annotations_to_shapefile, which reversesshapefile_to_annotationsfunctionality. Thanks to @sdtaylor for this contribution.
Version 1.1.0 (Date: Aug 5, 2021)#
Enhancement: Empty frames are now allowed by passing annotations with 0’s for all coordinates. Example format:
image_path, 0, 0, 0, 0, "Tree"
New Feature: Introduced
check_releaseto reduce GitHub rate limit issues. When usinguse_release(), the local model will be used ifcheck_release = False.
Version 1.0.9 (Date: Jul 14, 2021)#
Enhancement: Improved default dtype for Windows users, thanks to @ElliotSalisbury for the contribution.
Version 1.0.0 (Date: Jun 7, 2021)#
Major Update: Transitioned from TensorFlow to a PyTorch backend, enhancing performance and flexibility.
Version 0.1.34 (Date: )#
Optimization: Profiled dataset and evaluation code, significantly improving evaluation performance.
Version 0.1.30 (Date: )#
Bug Fix: Resolved issues to allow learning rate monitoring and decay based on
val_classification_loss.