L’intelligence artificielle révolutionne l’agriculture de précision. En effectuant l’analyse d’images agronomiques à haute cadence, les réseaux de neurones permettent notamment de fournir à l’agriculteur des données précieuses auxquelles il n’aurait pas accès par ailleurs.
Conscient des avantages que peut vous apporter l’intelligence artificielle, vous avez décidé de vous lancer dans un projet de détection automatique d’une situation en élevage ou en production végétale. Cette décision permettra à votre entreprise de gagner un temps précieux et vous apportera un réel avantage concurrentiel…
Mais avant de vous lancer, avez-vous estimé le temps de développement de votre projet ? Savez-vous combien de temps il faudra pour entraîner le réseau de neurones qui vous aidera tant au quotidien ? Vous et vos équipes sont-elles disponibles et organisées pour fournir les images sur lesquelles les algorithmes s'entraîneront ? Si c’est encore un peu flou pour vous, nous vous apportons notre éclairage en abordant dans cet article le temps nécessaire aux différentes étapes de la création d’un réseau de neurones dédié à l’analyse agronomique d’images.
Quelles sont les étapes du développement d’un réseau de neurones ?
Le temps de développement d’un réseau de neurones passe par trois principales étapes :
- La constitution d’une base de données d’images qui servira à l’entraînement et à l’évaluation du réseau,
- Le choix d’une architecture de réseau de neurones,
- L’entraînement du réseau à partir de la base de données.
Le choix d’une architecture peut sembler complexe au novice, mais c’est peut-être l’étape qui demande le moins de temps. En effet, il existe un certain nombre de modèles de référence qui ont prouvé leur efficacité, et qui peuvent être utilisés comme point de départ pour construire diverses applications. Une même architecture pourra par exemple être utilisée pour la détection d’adventices dans les cultures, pour détecter la présence d’un insecte ravageur dans un piège, ou pour compter les fruits dans un arbre. La spécialisation du réseau viendra de son entraînement à partir d’une base de données d’images constituée pour chaque besoin à détecter. Le temps passé au choix d’une architecture peut ainsi être mutualisé entre plusieurs applications.
Les étapes les plus chronophages sont donc la constitution d’une base de données d’images et l’entraînement du réseau.
L'acquisition de données : étape fondamentale pour constituer un réseau de neurones
C’est une étape souvent négligée lorsqu’on se lance dans un projet de machine learning. Et c’est pourtant celle qui s’avère la plus fastidieuse si l’on n’est pas bien préparé. L’entraînement d’un réseau de neurones requiert un nombre important d’images, mais surtout un jeu d’images de qualité, représentatives de ce qui sera observé lors de l’utilisation du réseau de neurones.
Des images de qualité prises sous tous les angles
Un réseau de neurones apprend à reproduire les résultats attendus sur les images qu’on lui présente. Il est donc important qu’on lui soumette des images variées et qui représentent toutes les situations qui pourraient être rencontrées en pratique.
Prenons l’exemple d’un réseau de neurones qui n’aurait été entraîné à reconnaître un objet uniquement par temps dégagé, et qui se trompe dès que le ciel est couvert. Ce genre de situation peut être évitée par une planification minutieuse de l’acquisition des données d’entraînement, qui anticipe l’ensemble des cas d’usage. Pour la détection d’adventices, on veillera par exemple à obtenir des images des plantes à différents stades de croissance, par différentes conditions d’éclairage et sur différents types de sols.
Une conséquence de cette contrainte est que la préparation de la base de données d’entraînement doit être planifiée suffisamment en amont pour laisser le temps d’acquérir des images dans toutes les conditions requises. Le temps nécessaire dépend alors fortement de la nature du projet.
Par exemple, si l’on souhaite obtenir une base de données contenant des images d’une culture à tous les stades, la constitution de la base de données durera au moins une saison. Mais si le projet porte sur un stade précis de développement de la culture, la campagne d’acquisition pourra être plus courte et plus ciblée. Dans tous les cas, il est important d’anticiper pour capturer un maximum de variabilité dès la première campagne d’acquisition et éviter d’avoir à répéter plusieurs cycles acquisition-entraînement avant d’atteindre la performance voulue.
Les annotations des images, du temps à consacrer
Les images ne sont qu’une partie des données nécessaires à l’entraînement d’un réseau de neurones. Pour l’apprentissage dit supervisé, l’entraînement du réseau requiert aussi des annotations qui indiquent le résultat attendu sur les images d’entraînement. La préparation des données et notamment via les annotations peut prendre plusieurs formes plus ou moins détaillées :
- Pour la classification d’image :
L’annotation est simplement une étiquette parmi une liste prédéfinie. Par exemple, pour la reconnaissance de maladie en viticulture, chaque photo sera étiquetée comme “saine” ou avec la maladie correspondante. C’est la forme la plus simple d’annotation, et la plus rapide à réaliser.
- Pour la détection d’objets :
L’annotation doit fournir la position des objets dans l’image. La méthode la plus utilisée consiste à définir une « boîte englobante » pour chaque objet dans l’image, c’est-à-dire le plus petit rectangle qui contient l’objet. Ces annotations sont plus longues à produire, puisque l’on doit dessiner le rectangle pour chaque objet dans l’image.
- Pour encore plus de précision :
On peut souhaiter avoir une délinéation précise du contour des objets. Ce type d’annotation fournit plus d’information, mais est très fastidieuse à réaliser manuellement.
Sans un procédé bien défini, l’annotation d’images peut monopoliser la plus grande partie du temps consacré à un projet. L’activité d’annotation est tellement chronophage et technique que certaines entreprises n’hésitent pas à sous-traiter cette tâche. D’autres préfèrent gérer le procédé d’annotation en interne afin de mieux maîtriser la qualité des données.
Cette seconde option est préférable quand une expertise est requise pour l’interprétation des images. Il est alors nécessaire de prévoir l’infrastructure d’annotation et les ressources humaines nécessaires, pour éviter que la phase d’annotation ne devienne le goulot d’étranglement du développement de la solution. C’est pour répondre à ce haut niveau de qualité que Dilepix a développé ses propres outils d’annotation internes spécialisés pour les problématiques agronomiques.
Le temps d’entraînement du réseau de neurones
Une fois que la base d’images est collectée et annotée, il faut entraîner le réseau de neurones. L’entraînement consiste à faire varier les millions de paramètres du réseau jusqu’à ce que sa sortie soit la plus proche possible du résultat attendu. Le temps nécessaire pour arriver au résultat voulu dépend de la valeur initiale des paramètres, de l’algorithme utilisé pour les mettre à jour, de la taille de la banque de données, et enfin de la puissance de calcul.
Pour donner un ordre de grandeur, prenons l’exemple d’ImageNet, cette banque de 14 millions d’images annotées est utilisée pour la recherche en machine learning depuis 2010. D’après les résultats de la compétition « DAWNBench » de l’Université de Stanford, en 2017, il fallait deux jours pour obtenir une précision de 93 % sur ImageNet, contre neuf minutes en 2018, et 2 minutes en 2019.
Notons que ces performances sont des records obtenus sur les meilleurs calculateurs graphiques du moment. Avec une simple carte graphique, il faut plutôt compter deux semaines.
Cependant, il est possible de réduire le temps d’entraînement en changeant l’initialisation des paramètres du réseau. Pour un entraînement « complet », les paramètres sont initialisés aléatoirement : le réseau n’a aucune information a priori. Mais si l’on dispose d’un réseau de neurones déjà entraîné pour une certaine tâche, on peut le réutiliser comme point de départ pour l’entraîner à une autre tâche. Il s’agit alors d’apprentissage par transfert. Par exemple, on peut utiliser un réseau déjà entraîné sur ImageNet, et adapter ses paramètres pour effectuer une nouvelle tâche plus spécialisée, telle que la reconnaissance d’adventices. Le réseau aura déjà appris à travers les 14 millions d’images d’ImageNet à extraire des formes, textures et objets. L’ajuster pour différencier différentes espèces de plantes sera beaucoup plus rapide qu’en partant de zéro.
En conclusion, le temps nécessaire pour créer un réseau de neurones doit être estimé en prenant en compte les différentes étapes de sa construction :
- La constitution d’une banque d’images,
- L’annotation des images,
- L'entraînement du réseau de neurones.
Si le temps d’entraînement à proprement parler dépend principalement de moyens techniques, il est plus délicat d’estimer le temps nécessaire à l'acquisition d’images et à l’annotation.
Ces étapes nécessitent une expertise et une planification minutieuse pour éviter les déconvenues.
💡 Vous l’avez compris, le temps de création d’un réseau de neurones dépendra aussi de vous. En effet, dans le cadre du développement de votre projet, il vous faudra fournir un grand nombre d’images prises sous différents angles et à différents moments. Cette étape peut prendre un certain temps si elle n’a pas suffisamment été anticipée en amont du projet. Il est donc important de planifier l’acquisition de ces données. Plus cette étape sera préparée et organisée, plus court sera le délai d'entraînement de votre réseau de neurones.
Parce que votre projet ne s’improvise pas, les experts Dilepix resteront à vos côtés pour vous conseiller et vous accompagner à chaque étape de développement.
Pour aller plus loin, vous pouvez consulter nos autres articles consacré au deep learning en agriculture et en quoi consiste l'apprentissage supervisé en agriculture