v2.1.1 – Docs overhaul, multispectral + predict/outputs upgrades, CI refresh
Compare: v2.0.1...v2.1.1
Stats: 53 commits · 40 files · +2,918 / −2,126 LOC
Highlights
- Multispectral support in prediction/training:
predict.pynow reads.tifstacks via rasterio and handles H×W×C ordering; training docs cover MS workflows. - Smarter crown de-overlap (
clean_crowns): rewritten around spatial join + union-find clustering; more robust, faster on big scenes. - Docs: major restructure: new tutorial series, API reference, and an HPC/cluster guide; docs build is more reliable via mocked heavy deps.
- CI refresh: runners moved to Ubuntu 22.04, pin/upgrade key pieces (GDAL in CI, NumPy bound for tests), and a cleaner Sphinx workflow with gh-pages deploy.
- Dependency modernisation: shapely ≥2, geopandas/rasterio/fiona ranges updated; stale geospatial deps removed.
New / Improved
Models & pipeline
-
predict.py- Accepts .png (RGB via OpenCV) and .tif (multispectral via rasterio).
- Safer filename handling and JSON output naming.
- Clearer logging and mode detection via
get_filenames(...).
-
outputs.py-
New
clean_crownsalgorithm:- bbox-based spatial join to find candidates;
- union-find to cluster overlaps by IoU;
- keep best per cluster by
field(defaultConfidence_score); - filters invalid/empty geometry; configurable
area_threshold(now default 2 m²).
-
-
evaluation.py-
More robust geometry ops:
- handles
GEOSException, usesmake_validfallback; - consistent
union_area/IoU computation; - safer handling of test/pred file naming.
- handles
-
-
train.py- Large update (see docs): clarified config path, support surfaced for MS training, early-stopping usage, and advanced options captured in docs.
Documentation
-
Restructure
-
New
docs/source/tutorials/series:01_getting_started,02_data_preparation,03_training_and_evaluation,04_prediction,05_advanced_topics.
-
API reference via
sphinx-apidoc(docs/source/api.rst). -
Cluster/HPC guide with CSD3 examples and GPU setup (
cluster.rst).
-
-
Build reliability
conf.py: add repo root tosys.path; mock heavy deps (torch,detectron2,rasterio,geopandas,shapely, etc.) so docs build without native libs.releasestring set to 2.1.1.docs/requirements.txtadded.
-
Model garden
- Updated Zenodo links; added notes for 230717_base, 230729_05dates, and 250312_flexi; example
wgetcommands updated.
- Updated Zenodo links; added notes for 230717_base, 230729_05dates, and 250312_flexi; example
Continuous Integration
-
python-ci.yml- Runner:
ubuntu-22.04. - GDAL in CI from 3.6.4; explicit
numpy>=1.20,<2.0for tests; addpytest-order. - Keep flake8 erroring on syntax/undefined names; soften general run with
--exit-zerofor metrics only.
- Runner:
-
sphinx-ci.yml- Renamed to “Sphinx Documentation”; runner
ubuntu-22.04. - Streamlined: setup-python@v4, build, upload artifact (v4), and deploy to GitHub Pages on
master.
- Renamed to “Sphinx Documentation”; runner
Repo/Meta
.gitattributes: make*.pydetectable, ignore notebooks for linguist.- New dark/light logos updated.
- README: contributors updated (incl. Christopher Kotthoff).
Removals / Potentially Breaking
-
Removed data loaders:
detectree2/data_loading/gdrive.pygdrivePull.shgee_download.pyquickstart.py
If you relied on these, migrate to your own fetch scripts or keep them pinned at ≤ v2.0.1.
-
Docs cleanup: legacy
tutorial.rstandtutorial_multi.rstremoved (replaced by new tutorial set).
Dependency changes (setup.py)
-
Now requires
shapely>=2.0,geopandas>=0.13,rasterio>=1.2,<1.4,fiona>=1.8,<1.10,numpy>=1.20,pandas>=1.3,opencv-python>=4.5,tqdm>=4.60,pycocotools>=2.0.4,detectron2from GitHub.
-
Removed:
proj,geos,pygeos,pypng,pycrs,descartes, hard-pinned prerelease rasterio, etc.
Tests
tests/test_preprocessing.py: updated expectedybox_coords(reflects tiling math tweak).
Upgrade notes
- If your environment is older (e.g., shapely <2), create a fresh venv and reinstall.
- For MS
.tifpredictions, ensure rasterio can open your imagery and that channel order matches expectations. - The new
clean_crownsdefaults are stricter (area_threshold=2). If you need tiny crowns, lower that or post-filter byConfidence_score.
Contributors
Thanks to everyone who pushed on CI, docs, MS support, and the crown cleaning logic. Also updated contributor credits in README.
What's Changed
- Added Compute Cluster Guide by @ChristopherKotthoff in #154
- fixed the random rotation augmentation inconsistency by @ChristopherKotthoff in #155
- Fixed Layout for the Cluster Guide by @ChristopherKotthoff in #156
- Jb/dec24 by @PatBall1 in #158
- Github Workflow Fix (python-ci.yml) by @ChristopherKotthoff in #172
- [Re-Opened] Added Adaptive Tiling by @ChristopherKotthoff in #173
- Masks and Other Features for Tiling by @ChristopherKotthoff in #165
- Random Tiles Subset Generation by @ChristopherKotthoff in #166
- Additional Custom
nodata-Values by @ChristopherKotthoff in #167 - Conversion of all Multispectral Tiles to the Range 0-255 by @ChristopherKotthoff in #168
- Overlapping Tiles - More Training Data by @ChristopherKotthoff in #169
- Fix typo in tutorial by @CiSong10 in #175
- visualization feature with clean_crowns bugfix by @ChristopherKotthoff in #179
- Weight Initialization for MS by repeating RGB Channel Weights in the First Layer by @ChristopherKotthoff in #170
- Create an RGB clone of a MS Tiles Folder by @ChristopherKotthoff in #180
- Ignoring certain Bands during the Tiling Process by @ChristopherKotthoff in #181
- Remove non-annotated image data from training-tiles by @ChristopherKotthoff in #182
- Fixing sphinx-ci Workflow + Optimization by @ChristopherKotthoff in #185
- Fixed failing Pytest by @ChristopherKotthoff in #186
- Fix FileNotFoundError and shapely.errors.GEOSException for models/evaluation.py by @CiSong10 in #187
- Jb/sept25 by @PatBall1 in #203
- Enhancing RGB Tile Contrast by @ChristopherKotthoff in #202
- Tutorial Modifications and Extension by @ChristopherKotthoff in #204
New Contributors
Full Changelog: v2.0.1...v2.1.1