718 751 palmiers à huile comptés par imagerie aérienne
Une plantation commerciale de palmiers à huile en Afrique de l'Ouest avait besoin d'un inventaire arbre par arbre de son domaine. J'ai construit une chaîne de traitement qui repère chaque couronne de palmier dans l'imagerie aérienne et en fait un point cartographié et comptable.
- Palmiers détectés
- 718 751
- Surface nette couverte
- 12 166,6 ha
- Blocs de production
- 26
- Densité moyenne
- 59,1 palmiers/ha
Agrandir
La question
Combien de palmiers compte la plantation, et où se trouve chacun d'eux ? Sur un domaine de cette taille, les comptages manuels sont lents et ne produisent pas de carte. Le livrable est ici un point cartographié par palmier, bloc par bloc, que la plantation peut interroger et vérifier.
Comment ça marche
- ImagerieUne orthomosaïque RVB par bloc
- TuilesDécoupes de 1 280 pixels avec 256 pixels de recouvrement
- DétectionUn modèle YOLOv8 à une seule classe : le palmier à huile
- FusionRésultats des tuiles réunis et doublons supprimés
- InventaireUn point par palmier, en GeoPackage et CSV
Le modèle a appris à partir de 4 041 couronnes annotées à la main sur 435 tuiles provenant de deux blocs. Les tuiles du bloc pilote forment un échantillon stratifié, choisi pour couvrir les scènes avec seulement des adventices, seulement des palmiers, ou les deux. Les jeux d'entraînement, de validation et de test ont été séparés à 70/15/15 par secteur géographique plutôt que par tuile aléatoire : le score de test porte donc sur un terrain que le modèle n'avait pas vu.
Améliorer le modèle en production
À mesure que les blocs arrivaient, deux types d'erreurs sont apparus : la canopée dense des palmiers adultes, où les couronnes voisines se confondent, et les jeunes palmiers, petits et faciles à manquer. J'ai annoté des exemples de ces deux cas sur un second bloc et réentraîné le modèle. Le modèle publié est le fruit de 9 itérations d'entraînement, chacune comparée au même jeu de test mis de côté. Par rapport à la version de référence antérieure, il trouve plus de palmiers et fait moins de fausses détections : aucun des deux progrès ne s'est fait au détriment de l'autre.
Précision mesurée
J'ai évalué le modèle publié sur 79 tuiles de test contenant 716 palmiers annotés à la main, sur un terrain qu'il n'a jamais vu à l'entraînement, et j'ai passé la version de référence sur les mêmes tuiles.
| Modèle publié | Version de référence | |
|---|---|---|
| Précision : part des détections qui sont de vrais palmiers | 0,845 | 0,727 |
| Rappel : part des vrais palmiers trouvés | 0,774 | 0,637 |
| Palmiers comptés à l'intérieur des tuiles (comptage manuel : 518) | 519 | 454 |
| Écart avec le comptage manuel | +0,2 % | −12,4 % |
Le comptage porte sur l'intérieur des tuiles, car les tuiles de la chaîne de traitement se chevauchent : une couronne coupée au bord d'une tuile apparaît entière dans la suivante, et les doublons sont fusionnés. La version de référence manquait surtout des palmiers dans la canopée dense et parmi les jeunes plants ; le réentraînement sur ces cas a comblé l'essentiel de l'écart. L'évaluation complète figure dans la fiche du modèle (en anglais).
Obtenir un total juste
Les blocs ont été livrés un par un, et beaucoup se chevauchaient. Une vérification de chaque paire a trouvé 5 194,7 ha de couverture commune sur 51 paires de blocs. Additionner le comptage de chaque bloc séparément aurait compté les palmiers de ces zones deux ou trois fois.
Je l'ai résolu par une règle fixe : la zone commune appartient au bloc livré en premier, et les blocs suivants abandonnent leurs détections dans ce recouvrement. Chaque hectare est compté une fois.
Là où des données d'élévation existaient (5 blocs sur 26), un contrôle de la hauteur de canopée signale les détections trop basses pour être plausibles, qui ne sont probablement pas des palmiers. Il les signale pour vérification ; il ne les supprime pas.
Ce que ce travail ne prétend pas
- Les recouvrements ont été résolus avec l'emprise rectangulaire de chaque bloc, pas avec des limites de propriété levées. Les totaux par bloc pourraient changer si les vraies limites étaient appliquées. Le total de la plantation devrait peu varier, car le recouvrement correspond à un vrai recouvrement d'images.
- Après application de la règle, quelques blocs ne gardent qu'une mince bande de terrain : leur nombre de palmiers par hectare paraît donc très faible. Ces chiffres doivent être vérifiés sur le terrain avant d'être cités.
- Si le comptage à l'intérieur des tuiles est si proche, c'est en partie parce que les erreurs se compensent : environ 100 palmiers annotés sont manqués, et à peu près autant de détections n'ont pas d'annotation correspondante. Par bloc, les écarts étaient de +3,2 % et −4,3 %. Les totaux sur de nombreux palmiers sont fiables ; chaque détection prise isolément ne l'est pas forcément.
- Ce sont des contrôles sur des tuiles mises de côté, pas un comptage de terrain sur un bloc entier. Les palmiers de la plantation sont surtout jeunes, et le modèle n'a pas été évalué sur d'autres plantations ni sur de grands palmiers adultes aux couronnes très imbriquées.
Ce que la plantation a reçu
- Un GeoPackage par bloc avec deux couches : les contours des couronnes, et un point par palmier avec un identifiant, un score de confiance et la surface de la couronne.
- Un inventaire général de la plantation qui réunit tous les blocs.
- Un guide pour traiter de nouveaux blocs sans réentraîner le modèle, sauf si un nouveau type d'erreur apparaît.
Code et modèle ouverts
Avec l'accord du propriétaire de la plantation, le code et le modèle entraîné sont publics sous licence AGPL-3.0. Les images et les annotations restent à la plantation. Le modèle peut aussi être exporté en ONNX et utilisé dans QGIS avec l'extension Deepness.
Sur le terrain
Photos et vidéo prises sur le domaine. J'ai supprimé les données de localisation de chaque fichier.



