Skip to content

Releases: PatBall1/detectree2

v2.1.1

16 Oct 09:21

Choose a tag to compare

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.py now reads .tif stacks 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_crowns algorithm:

      • bbox-based spatial join to find candidates;
      • union-find to cluster overlaps by IoU;
      • keep best per cluster by field (default Confidence_score);
      • filters invalid/empty geometry; configurable area_threshold (now default 2 m²).
  • evaluation.py

    • More robust geometry ops:

      • handles GEOSException, uses make_valid fallback;
      • consistent union_area/IoU computation;
      • safer handling of test/pred file naming.
  • 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 to sys.path; mock heavy deps (torch, detectron2, rasterio, geopandas, shapely, etc.) so docs build without native libs.
    • release string set to 2.1.1.
    • docs/requirements.txt added.
  • Model garden

    • Updated Zenodo links; added notes for 230717_base, 230729_05dates, and 250312_flexi; example wget commands updated.

Continuous Integration

  • python-ci.yml

    • Runner: ubuntu-22.04.
    • GDAL in CI from 3.6.4; explicit numpy>=1.20,<2.0 for tests; add pytest-order.
    • Keep flake8 erroring on syntax/undefined names; soften general run with --exit-zero for metrics only.
  • 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.

Repo/Meta

  • .gitattributes: make *.py detectable, 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.py
    • gdrivePull.sh
    • gee_download.py
    • quickstart.py

    If you relied on these, migrate to your own fetch scripts or keep them pinned at ≤ v2.0.1.

  • Docs cleanup: legacy tutorial.rst and tutorial_multi.rst removed (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,
    • detectron2 from GitHub.
  • Removed: proj, geos, pygeos, pypng, pycrs, descartes, hard-pinned prerelease rasterio, etc.

Tests

  • tests/test_preprocessing.py: updated expected ybox_coords (reflects tiling math tweak).

Upgrade notes

  • If your environment is older (e.g., shapely <2), create a fresh venv and reinstall.
  • For MS .tif predictions, ensure rasterio can open your imagery and that channel order matches expectations.
  • The new clean_crowns defaults are stricter (area_threshold=2). If you need tiny crowns, lower that or post-filter by Confidence_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

New Contributors

Full Changelog: v2.0.1...v2.1.1

v2.0.1

22 Oct 21:42
1ac2f60

Choose a tag to compare

Bug fix to ensure prediction tiling works as intended

v2.0.0

17 Sep 11:34
1c30ea4

Choose a tag to compare

Major changes and upgrades

Tiling

  • Tiling now works with the path to the orthomosaic as an argument (rather than the orthomosaic). This will require previous scripts to be adjusted.
  • Tiling is now parallelised rather than sequential. This should speed up the tiling process on multi-core systems.

Multispectral compatibility

  • Tiling and training now works with MS imagery (as well as RGB) - this is described in the updated tutorial.
  • There is no upper bound on the number of bands that can be used (except for memory limitations of the system) - this can mean additional spectral and non-spectral (e.g. CHM bands) can be stacked

Multi-class models

  • The functionality of multi-class training has been upgraded - this is described in the updated tutorial
  • It is now easier to train models to detect and classify trees of different types (e.g. species, liana infestations)
  • A "class mapping" is generated at the tiling stage and carried throughout the training and prediction stages

Please raise and issues you find with the new features and we will get them fixed ASAP.

v1.0.8

17 Jan 13:47

Choose a tag to compare

Models moved from repo to Zenodo to resolve bandwidth issues

v1.0.7

01 Oct 17:52

Choose a tag to compare

Multi-temporal prediction combination.
Multi-class outputs.

v1.0.6

11 Jul 20:10
285ce4c

Choose a tag to compare

Some changes to how the file paths are constructed in tile_data to allow more flexibility for non-conventional crs

v1.0.5

30 Jun 14:38
3cae008

Choose a tag to compare

to_traintest_function tweaked to support cases where there is limited available data. It is now possible to not reserve any data for testing (keeping it all for training/validation). Through the strict argument it is also possible to control whether no overlap in the buffer of training/validation tiles and test tiles is enforced.

This flexibility should help users who have limited data to train on.

v1.0.4

14 Jun 13:00
524a5be

Choose a tag to compare

Minor updates to the clean_crown function to help handle crs and indexing issues

v1.0.3

23 May 19:05
b3af22d

Choose a tag to compare

Some fixes to the tile_data_train function were implemented to stop misalignment on tiles along the edge of a raster scene

v1.0.2

19 May 15:21
9211c2a

Choose a tag to compare

Some cleaning of the repo to align with publication in Remote Sensing in Ecology and Conservation