Engineering note · AI Tree Inventory · 1 min read
From orthophoto to a register engineers sign off
The AI proposes trees the field survey missed. Engineers approve, reject and correct on a map, and the result goes out as the client's own Excel register, GIS files, CAD and a QGIS project.
The input is an orthophoto, down to 4 cm resolution, and the existing survey register. Trees are detected with PyTorch and DeepForest and matched against the register to find the ones that are missing. A vision model grades each candidate into five confidence levels. Costs are capped and shown before any paid step runs.
Engineers review everything zone by zone in a map-based review app. They approve or reject each proposal, add trees the AI missed, and correct species. Only species from the project's own list are allowed. Nothing is ever lost: a rejected proposal stays in the record as rejected.
Measurements are treated with the same care. Out-of-range values are flagged and replaced with real values from nearby trees of the same species, never with an invented number. The original register is never modified. Every correction is kept in its own log, traceable to the person who approved it, and any change can be withdrawn.
The output goes straight into the tools engineers use. The client's Excel register is rebuilt with its original formatting, alongside shapefile and GeoPackage files, CAD files and a QGIS project, with no manual conversion. Each tree can get a QR label that opens a public mobile datasheet with its data and photos. The processing runs on the Python geospatial stack: GDAL, PDAL, rasterio and GeoPandas.