Maintenir une supériorité technologique ou, se mettre à niveau technologiquement est soit une garantie de posséder un avantage concurrentiel, soit un impératif de survie.
L’intelligence artificielle est la “nouvelle” technologie qui a su convaincre certains industriels et qui s’implémente de plus en plus au sein des usines. Dans une industrie, les apports de l’intelligence artificielle peuvent prendre de nombreuses formes et peuvent s’étendre à l’ensemble des services d’une entreprise [1] :
Aide à la prise de décision : l’intelligence artificielle est utilisée pour réaliser du traitement de données, pour assister dans le suivi des activités et de la gestion de la société (suivi des stocks, prévision d’achats, suggestions de production…)
Maintenance : l’IA est utilisée pour réaliser de la maintenance prédictive des machines, c’est-à-dire pour anticiper l’apparition d’une panne en surveillant des indicateurs pouvant révéler une anomalie éventuelle de fonctionnement
Contrôle qualité : les réseaux de neurones sont mis à profit pour la détection des défauts par le biais de la vision par ordinateur (computer vision). Concrètement, des caméras sont utilisées et des algorithmes analysent les images pour détecter en quasi temps réel de potentiels défauts issus de la chaîne de production.
Et bien plus encore : les algorithmes de machine learning et de deep learning peuvent encore assister les industries dans de nombreux cas. Comme par exemple en étant utilisés pour trier et ordonner un ensemble de pièces, dans des chatbots pour automatiser la relation clients. Ou encore en automatisant simplement des tâches longues, répétitives et à faible valeur ajoutée pour rendre le travail des collaborateurs plus agréable et pertinent avec par exemple la rédaction automatisée de rapports.
Malgré l’ampleur des gains envisageables, il existe des risques liés à l’utilisation de l’IA qu’il faut pouvoir maîtriser pour espérer maximiser ses bénéfices et être prochainement conforme à la standardisation des technologies d’IA. S’assurer de la fiabilité d’un système d’IA est alors un impératif qui n’est pour autant pas si aisé à accomplir.
Ce cas d'usage permet de présenter des méthodes pour évaluer la fiabilité d’un système d’IA utilisé pour le contrôle de la qualité dans une chaîne de production.
Depuis la révolution industrielle, les machines de production s’automatisent progressivement et les contrôles de qualité sont fréquemment réalisés pour des questions réglementaires, garantir la performance de la production ou préserver l’image de marque [2].
Or aujourd'hui, le contrôle de qualité est une activité qui peut se réaliser manuellement et nécessiter beaucoup de main-d’œuvre pour être efficace. L’IA peut ainsi aider à résoudre les problèmes de manque de main d'œuvre tout en permettant d’améliorer le taux de détection de défauts en réalisant des contrôles 24h/24 et augmenter la productivité des travailleurs qui pourront alors se concentrer sur d’autres tâches [3].
Comme abordé précédemment, pour implémenter une IA de détection de défauts en toute confiance, il est important d’être en mesure de garantir la fiabilité du système. Pour évaluer cette fiabilité, nous allons dans la suite de l’étude nous appuyer sur différentes métriques offertes par Saimple : la relevance (qui relève de l’explicabilité de l’IA) et la dominance (qui se réfère à la robustesse du système). Nous analyserons également la précision (accuracy) du modèle d’IA et nous ajouterons un bruit métier pour renforcer la pertinence de l’évaluation de la robustesse.
Le jeu de données utilisé dans ce cas d’étude provient de Kaggle et concerne des produits de fabrication de moulage.
Le moulage ou fonderie consiste à réaliser des pièces brutes en versant une coulée du métal en fusion dans un moule de sable ou de métal ; le métal coulé se solidifie ensuite et permet d’obtenir la pièce souhaitée. Cependant, des défauts de moule ou des défauts liés à la solidification de la coulée peuvent entraîner des malfaçons de pièces.
Le jeu de données est composé de 7348 images de taille 300x300 pixels contenant deux classes :
ok : la pièce est non défectueuse
défaut : la pièce est défectueuse
Il est divisé en deux sous-dossiers :
train composé de 3758 images de roues défectueuses et 2875 non défectueuses
test composé de 453 images de roues défectueuses et 262 non défectueuses
L’ensemble des images sont des prises de vues de dessus de roues de pompe submersible.
Comparaison entre une pièce non défectueuse et une pièce défectueuse
Il est également à noter que ces images sont toutes en échelle de gris et qu’une data augmentation a déjà été réalisée pour produire le jeu de données.
Exemple de data augmentation effectuée
Les images originales, c'est-à-dire sans data augmentation, sont disponibles dans le dossier casting_512x512 sur kaggle.
Les techniques de moulage en industrie sont souvent utilisées car elles permettent de produire des pièces de formes complexes, de façon identique et dans des quantités massives.
Cependant, la production massive de pièces par moulage présente par moment des défauts de coulée qui introduisent une irrégularité indésirable dans un processus de coulée de métal.
Le but est de construire un modèle à base de convolutions afin de rendre le processus de détection de défauts automatique concernant les défauts de coulée.
L’ensemble des images test sont classées par le modèle suivant sa prise de décision quant au caractère défectueux d’une pièce. Pour nous permettre de commencer à évaluer les performances du modèle, visualisons les résultats sous la forme d’une matrice de confusion. Ainsi, il est possible de visualiser le pourcentage d’images qui sont correctement classées et le pourcentage de celles qui le sont mal.
Matrice de confusion
D'après la matrice de confusion, sur l’ensemble des images de test, 1.9% des pièces ont été classées comme étant défectueuses alors qu’elles ne l’étaient en réalité pas, ce cas est appelé faux positif. A l’inverse, 12% ont été classées comme non défectueuses alors qu’elles l’étaient bel et bien, ce cas est appelé faux négatif.
La mauvaise classification peut être un problème très important dans l’industrie. Le cas d’un faux négatif est un cas où le modèle classe une pièce défectueuse comme étant une pièce conforme et donc il y a un risque que cela nuise à l’image de l’entreprise concernant la qualité des produits finis délivrés. En effet chaque défaut implique une diminution de la qualité de la pièce ce qui peut engendrer des problèmes de sécurité lors de l‘utilisation de celle-ci.
Le cas des faux positifs est un cas où le modèle classe une pièce conforme comme étant défectueuse, ce qui lève une fausse alerte et peut engendrer une augmentation des coûts de maintenance et des coûts de production. Ces augmentations de coûts peuvent être liées à une perte de temps faisant suite au déclenchement non justifié d’une opération d’analyse/maintenance sur la chaîne de production ou par le temps perdu d’un ouvrier à vérifier manuellement si la pièce désignée par l’IA comme étant défectueuse l’est réellement, pour éviter de jeter automatiquement une pièce et engendrer une perte sèche supplémentaire.
L’enjeu d’avoir des modèles d’IA les plus fiables possible est donc très important pour les industriels implémentant cette technologie de pointe dans leurs usines tant en termes d’image que de gain temps/argent.
La quantité de faux négatifs ou de faux positifs est un des indicateurs de performance lors du développement d’un modèle de classification. Il est alors important de comprendre l’origine de ces mauvaises classifications en les analysant, pour permettre de prendre des mesures correctives visant à diminuer ces classifications erronées.
Concentrons nous premièrement sur les faux négatifs. Pour ce faire, 4 images présentant des défauts mais n’étant pas classifiées comme défectueuses sont sélectionnées. Les ronds rouges ont été ici rajoutés pour améliorer la visibilité des défauts mais ils ne sont bien évidemment pas présents dans les images du jeu de données.
Visualisation des défauts
Il faut noter que le label noté “ok” correspond aux pièces non défectueuses et que le label “def” correspond aux pièces défectueuses. Parmi toutes les images mal classées, on peut remarquer que les défauts ne se situent pas à la bordure de la pièce. Une analyse de la relevance permettra peut-être d’expliquer la mauvaise classification. Utilisons la relevance fournie par Saimple afin de visualiser le comportement du modèle vis-à-vis de la classification des images ci-dessus et comparons les résultats avec ceux obtenus pour une image bien classée.
Les résultats, ci-dessus, permettent de comparer une image bien classée et une image mal classée. L’image bien classée obtient une relevance plus significative sur le contour externe et interne de la pièce (pixels bleus et rouges). La dominance (barres vertes et bleues) de cette dernière indique que le modèle semble classer l’image avec certitude en ayant un score dépassant les 0.9. Tandis que pour l’image mal classée, le score de dominance est moins élevé que le score de l’image précédente. En étudiant la relevance, il est possible de comprendre quels éléments de l’image ont influencé la mauvaise classification du modèle. Le résultat de relevance pour l’image mal classée est nettement différent. En effet, le modèle semble se concentrer davantage sur les éléments internes noirs de la pièce et légèrement sur les défauts. Cependant, même s’il semble détecter les défauts, il ne classifie pas la pièce comme étant défectueuse à l’instar des cas où les défauts se situent sur le bord des pièces. Une explication pourrait être que les images comportant des défauts sur les bords des pièces sont sur-représentées dans le jeu de données et donc que l’algorithme appuie sa décision sur le caractère imparfait du contour extérieur des pièces. La détection de défauts sur l’intérieur de celles-ci n’est donc pas considérée comme une caractéristique défectueuse puisque ces pièces ne présentent pas de défauts sur leurs bords. Il pourrait donc y avoir un biais dans l’entraînement de l’algorithme, ce qui causerait des erreurs de classification pour les défauts présents sur les parties intérieures des pièces.
Peut-être que l'introduction de ce potentiel biais dans le jeu de données est lié au fait que les défauts sur les contours des pièces sont bien plus courants dans l’industrie métallurgique que des défauts sur les parties intérieures des pièces. C’est pourquoi il est important de bien équilibrer les jeux de données, non proportionnellement aux probabilités d’apparition des évènements mais simplement en termes de nombre. C’est un piège classique que Saimple peut mettre en exergue.
Puisque pour améliorer l’efficacité de l’algorithme le jeu de données doit être équilibré entre toutes les classes et les différents types de défauts, une solution peut être d’utiliser une nouvelle fois la data augmentation mais cette fois-ci pour équilibrer les types de défauts. Effectivement, la data augmentation est aussi efficace pour équilibrer le jeu de données lorsque certaines features sont peu présentes car les données manquent les concernant. Cependant, comme démontré dans d’autres cas d’usage, suivant la manière dont est réalisée la data augmentation, cette dernière doit être effectuée sur toutes les classes pour être efficace. Ceci peut s’avérer compliqué quand il s’agit de déterminer le moment adéquat pour arrêter un processus de data augmentation ; afin d’améliorer les performances tout en limitant les coûts de développement. La finalité est d’obtenir des données brutes et des données augmentées pour chaque classe et que celles-ci soient équivalentes en nombre. Saimple peut également aider en ce sens en permettant de monitorer les performances de l’algorithme tout au long du processus, ce qui permet de savoir quand un résultat est satisfaisant et que le processus peut ainsi être stoppé.L’outil Saimple permet de modéliser, sur l’ensemble d’une image, les bruits (perturbations) homogènes possibles sous certaines conditions au travers d’un objet abstrait. Toutes les combinaisons/variations possibles de l'image d'origine se font suivant une amplitude Delta définie. Cependant, l’analyse abstraite peut également se faire sur une zone déterminée, pour évaluer avec plus de précision la robustesse du réseau face à des bruits très spécifiques s’appliquant sur des zones d’intérêt.
L’ajout de bruit local sur les images pourrait ainsi permettre d’aider à la résolution de la problématique de classification soulevée précédemment, en participant au processus de renforcement de la robustesse du réseau. En plus de servir à l'évaluation, l’analyse abstraite permet d’orienter la data augmentation en mesurant tout au long du processus l’impact sur le réseau entraîné. Également, des images concrètes issues de l’analyse abstraite peuvent servir à alimenter la data augmentation en permettant de compléter le dataset avec des images qui ne sont bruitées que localement. On peut par exemple imaginer une image présentant un halo lumineux seulement sur une petite partie de l’image.
Un masque peut être créé pour réaliser l’application locale du bruit. Ici, il s’agit du contour de la pièce, en rouge.
Exemple d’application d’un bruit local
Comme expliqué, Saimple construit un domaine abstrait comprenant l’ensemble des cas possibles de représentation d’une image pour un bruit donné. Le bruit local permet quant-à-lui de construire un domaine autour des zones d’intérêt et non sur toute l’image. Il peut donc être plus intéressant d’utiliser cette autre méthode d’application du bruit par Saimple lorsque l’objectif est de résister à des bruits localisés, comme par exemple dans le cas d’attaques de type adversariale. Ainsi, il est envisageable d’obtenir une valeur de delta maximale plus représentative de la réalité et possiblement plus élevée ce qui peut être un meilleur indice de confiance du modèle.
Pour rappel, le delta max fait référence à une valeur particulière de delta correspondante à l'amplitude de bruit pour laquelle on arrive à prouver la dominance d'un réseau classifieur.
L’évaluation du réseau par application de bruit local peut être plus précise pour simuler certains bruitages en conditions réelles et cela peut surtout participer à améliorer la robustesse du réseau et donc la fiabilité finale du système.
La détection automatisée de défauts dans le contrôle qualité est un réel enjeu manufacturier. Dans le cadre de la métallurgie, il existe une immense variété de défauts de “coulé”: les bavures, les trous, etc. ce qui peut rendre la tâche d’automatisation difficile comme démontré précédemment. Cependant, l'automatisation par l’IA de cette tâche industrielle en vaut la peine puisqu’elle peut permettre d'améliorer la qualité des produits finis et de réduire les coûts de production.
Avec l’aide d’une série d’évaluations présentées auparavant et réalisées avec l’aide de Saimple, il a été possible de détecter un problème de biais dans le jeu de données et de le résoudre en permettant la supervision d’une data augmentation.
Dans ce cas d’étude, même si dans l’ensemble le modèle détecte correctement les pièces non conformes, les évaluations ont permis de se rendre compte que les cas de défauts appartenant à d’autres catégories que le type “bavure” ne sont pas correctement classifiés. Une possible surreprésentation des défauts de type “bavure” peut en être la raison et la data augmentation est une solution pour résoudre ce biais, à condition de l’effectuer efficacement.
Les fonctionnalités mises en avant dans les évaluations ont été : l’identification visuelle des features servant au modèle pour ses prises de décision de classification (relevance), le taux de certitude de la classification mesurée par rapport à sa résistance au bruit (dominance), l’introduction de bruit local et la supervision de data augmentation.
Saimple permet donc de réussir en toute sécurité l’automatisation de tâches par l’intelligence artificielle, en permettant d’évaluer les performances d’un algorithme au cours de son développement tout en renforçant sa robustesse, en explicitant son comportement et finalement en prouvant sa fiabilité.
Si vous êtes intéressés par Saimple et que voulez en savoir plus sur le use case ou encore si vous voulez avoir accès à un environnement démo de Saimple:
contactez nous : support@numalis.comEcrit par Noëmie Rodriguez & Baptiste Aelbrecht & Camille Jullian & Jacques Mojsilovic