IA et machine learning
« De combien d'images avons-nous besoin ? » est la première question de presque tout projet d'IA. La réponse honnête est : cela dépend. Cela ressemble à une échappatoire, mais c'est le début d'un plan. Car ce sont les images que vous collectez, plus que leur nombre, qui font la différence.
Pourquoi il n'existe pas de chiffre fixe
Un élève conducteur qui s'entraîne trente heures sur un parking vide n'est pas prêt pour autant à circuler en centre-ville. Il en va de même pour un modèle d'IA : il n'apprend que ce qu'il a vu. Le nombre d'images nécessaires dépend avant tout de cinq facteurs :
- La tâche : la classification évalue l'image entière, la détection trouve des objets avec un cadre, la segmentation attribue chaque pixel. Plus la tâche est fine, plus l'annotation de chaque image demande de travail.
- L'écart entre les classes : un composant manquant est plus facile à apprendre qu'une fine rayure sur une surface structurée.
- La dispersion : variantes, fournisseurs, équipes, encrassement et position des pièces – tout ce qui change en exploitation doit figurer dans les données.
- Le point de départ : un modèle préentraîné sur de grands jeux de données publics nécessite nettement moins d'images propres qu'un modèle qui part de zéro.
- L'exigence : chaque amélioration supplémentaire coûte plus de données que la précédente. Une étude de Google Research a constaté que, pour les tâches d'images, les performances ne croissent que de façon logarithmique avec la quantité de données d'entraînement. Chaque doublement apporte donc moins que le précédent.
Planifier par cellules plutôt que par totaux
« 5 000 images », cela paraît beaucoup. Si 4 800 d'entre elles montrent la même variante de l'équipe du matin, elles servent peu. Planifiez donc dans un tableau : variantes et conditions en lignes, classes en colonnes, un nombre minimal par cellule. Un court script vérifie si les données collectées respectent le plan :
import pandas as pd
# Une ligne par image annotée : fichier, variante, équipe, classe
daten = pd.read_csv("bilder.csv")
tabelle = pd.crosstab([daten["variante"], daten["schicht"]], daten["klasse"])
# Rendre visibles les combinaisons totalement absentes
zeilen = pd.MultiIndex.from_product(
[daten["variante"].unique(), daten["schicht"].unique()],
names=["variante", "schicht"])
tabelle = tabelle.reindex(zeilen, fill_value=0)
MINDESTENS = 50 # votre consigne par cellule, issue de la tâche et de la courbe d'apprentissage
zellen = tabelle.stack()
for (variante, schicht, klasse), anzahl in zellen[zellen < MINDESTENS].items():
print(f"Zu wenig: {variante} / {schicht} / {klasse}: {anzahl} Bilder")
La valeur 50 n'est qu'un exemple. Votre nombre minimal découle de la tâche et de la courbe d'apprentissage. Les lignes « Zu wenig » (trop peu) sont votre liste de courses pour la prochaine série de prises de vue. Les plus dangereuses sont les combinaisons totalement absentes. C'est pourquoi le script les complète par zéro au lieu de les omettre en silence.
La courbe d'apprentissage montre si davantage de données aide
Vous n'avez pas à deviner si continuer à collecter vaut la peine. Entraînez avec un quart, la moitié et la totalité des images disponibles et mesurez à chaque fois sur le même jeu de test inchangé. Si la courbe monte encore nettement, davantage d'images aidera. Si elle est plate, davantage d'images du même type n'apporte guère. Il manque alors d'autres images, de meilleures annotations ou une autre méthode.
De bonnes annotations valent mieux que beaucoup d'images
Un modèle ne peut pas devenir meilleur que ses annotations. Une étude de 2021 montre à quel point les erreurs y sont répandues : dans les jeux de test de dix jeux de données couramment utilisés, au moins 3,3 % des annotations en moyenne étaient fausses, et au moins 6 % dans le jeu de validation d'ImageNet. Et ce, pour des données publiques soigneusement entretenues. Trois mesures aident :
- Un guide d'annotation avec des exemples d'images, surtout pour les cas limites : à partir de quand une rayure est-elle un défaut ?
- Un échantillon est annoté deux fois, indépendamment par deux personnes. En cas de désaccord, ce sont les spécialistes de l'assurance qualité qui tranchent.
- Les corrections sont intégrées dans une nouvelle version, versionnée, du jeu de données.
L'augmentation de données ne remplace pas de vraies images
Pivoter, retourner, éclaircir et assombrir : de telles variations artificielles aident si ces fluctuations se produisent aussi sur la ligne. Elles ne génèrent ni un nouveau type de défaut ni la surface d'un nouveau fournisseur. Les images de défauts synthétiques ne sont elles aussi utiles que si le modèle est finalement vérifié sur de vraies images.
Erreurs typiques
- Se fixer un nombre total comme objectif au lieu d'un nombre minimal par cellule.
- Collecter les images là où c'est pratique : sur une seule ligne, dans une seule équipe, chez un seul fournisseur.
- Compter les prises de vue en rafale d'une même pièce comme autant d'images. Elles n'apportent guère d'information nouvelle.
- Recomposer le jeu de test à chaque passage. Les résultats ne sont alors plus comparables.
- Annoter sans guide, chacun selon ses propres critères.
- Générer des variations qui n'existent jamais dans la réalité, par exemple des pièces à l'envers.
- Ne pas versionner l'état des données. Plus tard, personne ne sait avec quelles images le modèle en exploitation a appris.
Comment nous vous aidons
- Étude de faisabilité en traitement d'images : sur vos images d'exemple, nous vérifions si une méthode par apprentissage est viable et vous indiquons quelles images manquent encore – sous forme de forfait de démarrage à prix fixe.
- Plan de données et entraînement : plan de prises de vue, guide d'annotation, entraînement, validation et intégration dans votre logiciel en C#, C++ ou Python. En savoir plus sur notre travail avec l'intelligence artificielle.
- Votre projet : Demander un projet ou convenir d'un premier entretien
Sources : Northcutt, Athalye, Mueller, « Pervasive Label Errors in Test Sets Destabilize Machine Learning Benchmarks » (NeurIPS 2021) ; Sun, Shrivastava, Singh, Gupta, « Revisiting Unreasonable Effectiveness of Data in Deep Learning Era » (ICCV 2017).
