When growers ask us for an automated tree count, the request usually sounds simple: "Just point the model at the satellite image and tell me how many trees are in the block." The reality is messier.
The resolution problem
Most off-the-shelf detection models — including the ones trained on the popular VHRTrees and DeepForest datasets — were trained on imagery between 10cm and 30cm ground-sample-distance (GSD). Free public imagery in the United States is NAIP, which is 0.6m GSD. That's a 4–6x resolution gap. At NAIP scale, a young avocado tree might cover only 8–12 pixels — close to the limit of what convolutional detectors can resolve.
Domain gap
A model trained on Turkish hazelnut orchards captured from Google Earth doesn't generalize cleanly to California avocados captured from NAIP. The geometry of the canopies is different, the spectral characteristics of the imagery are different, and the background (bare ground, cover crop, irrigation hardware) is different.
What we do about it
Our current production pipeline does three things to compensate:
- Polygon-mask before inference. We black out everything outside the farm boundary so the model isn't tempted to detect riparian trees, neighbor blocks, or the parking lot.
- Ensemble YOLOv8 + Detectree2. Detectree2 catches detections that YOLO misses — at the cost of more false positives that we filter downstream.
- Per-detection model version tracking. Every detection is tagged with the model that produced it, so we can re-score historically when we ship a new model.
On the Esparto test farm, this gets us to about 459 of an estimated 800 trees — high precision, but recall is still the bottleneck.
The honest answer
If you need 95%+ recall on a mature orchard, you currently need higher-resolution imagery than free public sources provide. Commercial 30cm imagery from Maxar or Planet costs real money but moves the recall ceiling substantially.
Future posts will cover the super-resolution experiments we tried (and why they mostly didn't work), and where we think the field is heading.
