Data augmentation

Cette étude de cas va mettre en avant la détection d'un biais de mesure et l'apport d'une réponse par la data augmentation.

Saimple : détection d'un biais de mesure

Les biais de mesure peuvent intervenir dans n’importe quel jeu de données et ils ne sont pas simples à détecter. Saimple aide à détecter ces biais et la data augmentation peut être une solution pour les résoudre.

Effectivement, l’augmentation des données est un élément clé pour enrichir artificiellement les ensembles de données. Cependant, il faut se méfier car toutes les augmentations de données ne sont pas bénéfiques pour le réseau. Savoir faire la différence entre une bonne et une mauvaise augmentation de données est aussi un défi. Saimple aide à faire la différence et à comprendre l'impact de chaque augmentation de données sur les modèles d'apprentissage profond.

1. Présentation de l’étude de cas :

Un objectif initial de ce cas d'utilisation était de comparer les performances d'un modèle sur des données générées par rapport à des données du monde réel. Pour ce faire, l'étude s’est portée sur l’utilisation d’images de pièces mécaniques comme données. Les images sont regroupées en 4 catégories (qui seront les classes du modèle) :

1 - 'nut' : écrous, de formes diverses.

2 - 'bolt' : vis et boulons de différentes formes et longueurs.

3 - 'washer' : quelques rondelles.

4 - 'locatingpin' : goupilles d'arrêt de différentes formes et longueurs.

Toutes les images du jeu de données initial sont des représentations 3D de pièces mécaniques, il n'y a pas d'images de "pièces réelles". Le jeu de données contient 1904 images de chaque classe.

Exemple de quelques représentations de pièces mécaniques constituant l'ensemble de données

En utilisant cet ensemble de données, nous avions l'intention de mettre en évidence un biais d'échantillonnage. Cependant, en analysant les résultats, nous avons réalisé qu'il y avait également un biais de mesure dans les données. Nous allons montrer ici comment nous l'avons découvert et résolu avec Saimple.

Définitions :

- Biais de mesure : Ils sont liés aux outils de mesure utilisés pour collecter les données. L'acquisition des données avec un seul outil, ou le stockage des données, peut introduire un biais de mesure. Par exemple, si des photos sont prises avec un seul type d'appareil photo, et que cet appareil inclut un filigrane sur chacune des photos, un biais de mesure peut se produire.

- Biais d'échantillon : Un biais d'échantillon peut se produire lorsque les données de formation ne reflètent pas la réalité ou l'environnement dans lequel le modèle doit être évalué. L'exemple le plus évident de ce type de biais est un modèle de détection des visages qui n'a été entraîné que sur des images d'hommes blancs ; le modèle serait biaisé car il ne représente pas les femmes ou les différentes ethnies.

Construction du modèle :

Dans ce cas d'utilisation, nous allons essayer de classer des images selon 4 classes, en utilisant un réseau de neurones convolutif.

L'apprentissage sur le jeu de données initial semble être efficace. Après 10 époques, le modèle atteint presque 95% de précision sur les données de validation.

2. Analyses et résultats :

Dans un premier temps, nous testons les performances du modèle sur les images du jeu de données. En testant sur 6 images pour chaque classe, nous obtenons les résultats suivants : la précision sur 24 images est de 87.5%. Le réseau est donc plutôt performant. Cependant, nous constatons qu'il a du mal à faire la différence entre des classes qui sont similaires (repérage d'une goupille et d'une vis par exemple).

Nous allons maintenant regarder les résultats du modèle sur des données réelles. Nous allons récupérer des images sur Google.

La précision sur 24 images d'internet est de 20,8%. Le modèle ayant 4 classes, on peut dire que le modèle n'est pas du tout performant, en effet, un algorithme classant les images de manière aléatoire obtiendrait les mêmes performances. Le modèle n'est donc pas adapté aux images "réelles". Essayons d'en déterminer la cause grâce à Saimple.

Étude de la relevance avec Saimple :

Grâce à Saimple, nous pouvons observer les masques de relevance et comprendre quels pixels sont importants pour la décision du réseau neuronal. Ce faisant, nous remarquons d'étranges modèles de relevance.

Masques de relevance pour les écrous

Sur tout type d'images (images réelles et images 3D issues ou non du jeu de données) on remarque que la relevance forme des sortes de taches sur l'image, mais ne prend pas du tout en compte la partie mécanique. De plus, les prédictions du modèle ne sont bonnes qu'avec les images provenant du jeu de données. On peut donc supposer qu'il existe un biais de mesure dans les images. Les images peuvent avoir été filigranées pour des raisons de copyright.

Détection de biais :

Nous effectuons d'abord deux vérifications qui pourraient révéler la présence du filigrane :

- Recherche de tatouage sur les LSBs :

Le filigrane d'image sur le LSB (Least Significant Bit) est un filigrane invisible, nous allons donc vérifier que les images ne possèdent pas ce type de filigrane. Pour ce faire, nous créons des fonctions en python permettant de décomposer l'image selon ses 8 bits, du moins significatif au plus significatif. Visuellement, nous ne remarquons rien d'anormal sur les différentes couches, nous supposons donc qu'il n'y a pas de watermarking sur les LSBs.

- Application de filtres aux images :

Nous essayons ensuite de faire varier les différentes composantes de l'image (contraste, luminosité, couleurs, etc.) pour voir si des marques ressortent. Là encore, rien n'est détecté à l'œil nu.

 

Nous ne trouvons rien et nous essayons donc d'adapter le jeu de données afin de contourner ce biais de mesure.

- Transformation du jeu de données en niveaux de gris :

On suppose tout d'abord que le biais provient des composantes RVB de l'image (filigrane sur une ou plusieurs composantes RVB). Nous allons donc convertir les images en niveaux de gris afin de supprimer la composante RVB. Nous créons ensuite un second jeu de données contenant les mêmes images mais converties en niveaux de gris. Avec Saimple, nous vérifions à nouveau les masques de relevance, pour voir s'il y a encore des taches ou si la partie mécanique est finalement correctement analysée.

Masques de relevance de vis – jeu de données en niveaux de gris

Les résultats obtenus sont légèrement meilleurs (30% de précision sur des données réelles). De plus, les premiers points de relevance semblent être corrects. Par contre, nous remarquons que le biais de mesure est toujours présent. Plus on prend de points, plus les taches apparaissent. Le passage en échelle de gris a légèrement amélioré les performances du modèle et réduit le biais de mesure mais ne l'a pas complètement éliminé. Le passage à l'échelle de gris n'a peut-être pas éliminé le biais car ce changement ne se fait qu'avec une opération linéaire (échelle de gris = 0,299R + 0,587G + 0,114 B).

 

- Transformation de l'ensemble de données en noir et blanc :

On tente ensuite de convertir le jeu de données en images noires et blanches. Cette conversion élimine complètement le biais dans les canaux RVB.

Masques de relevance d’écrous – jeu de données noir et blanc

Cette conversion améliore à nouveau les performances du modèle sur les données du monde réel (45% de précision), mais la précision sur les images 3D est plus faible (environ 80% contre 90% précédemment). Les résultats de prédiction sur les images réelles sont donc meilleurs, mais il est difficile d'imaginer que le réseau puisse atteindre de meilleures performances.

En effet, nous perdons beaucoup d'informations avec cette conversion, chaque pixel de l'image est converti de 3 canaux avec 256 valeurs possibles (valeurs de 0 à 255) en un canal avec seulement deux valeurs possibles (0 ou 255). Cette représentation n'est donc pas viable et n'est pas représentative du monde réel.

 

Cependant, les résultats de relevance obtenus via Saimple démontrent que le biais de mesure initialement présent dans les données a été complètement supprimé. En effet, les taches n'apparaissent plus.

Utilisation de la data augmentation :

Certains filigranes d'images invisibles peuvent être supprimés via des opérations utilisées pour faire de l'augmentation de données (rotations, retournements, etc.). Nous essayons donc d'utiliser un jeu de données "augmenté" pour entraîner notre modèle. Nous appliquons ensuite les transformations suivantes à l'ensemble de données :

- nous retournons les images de manière aléatoire.

- nous appliquons une rotation entre 0° et 20° sur les images.

- nous décalons les images en hauteur et en largeur sur un intervalle de [ -0.2 × taille image ; 0.2 × taille image ].

 

L'apprentissage du réseau est plus long car il y a plus de données à traiter en raison de l'augmentation des données. Après 15 époques, le modèle atteint une précision de 86 % sur les données de validation ; les performances sont meilleures mais pas aussi bonnes qu'avec les données de base. Ceci est dû au fait que le modèle est maintenant plus proche de la réalité. Le modèle précédent avait une meilleure précision mais il était erroné, influencé par un biais, ayant par exemple des cas faux positifs. Et, en analysant la relevance sur Saimple, on remarque que le biais de mesure a été complètement éliminé.

Masques de relevance de boulon – set de données augmentées

La relevance du modèle formé avec l'augmentation des données semble beaucoup plus cohérente. Saimple révèle le bénéfice de l'augmentation de données effectuée. Ce modèle est beaucoup plus utilisable que celui entraîné sur des images en noir et blanc. En revanche, le modèle a du mal à classer les images réelles, en raison d'un autre biais : le biais d'échantillonnage.

3. Conclusion :

Le modèle qui a appris avec l'augmentation des données semble être le plus intéressant car il permet de supprimer le biais de mesure sans perdre d'information. En revanche, ces modèles restent soumis au problème du biais d'échantillonnage. Ce problème sera également traité en utilisant Saimple dans un autre cas d'usage.

Dans ce cas, Saimple a permis de détecter un biais de mesure et de s'assurer que le modèle n'était plus soumis à ce biais, en proposant des analyses de relevance tout au long du processus d'apprentissage.

Il a également permis de vérifier si l'augmentation des données était bénéfique ou non, en permettant de montrer l'impact direct de l'augmentation des données sur le modèle.

 

 

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.com

Annexes

crédit image : fabio (unsplash)

Numalis

We are a French innovative software editor company providing tools and services to make your neural networks reliable and explainable.

Contact us

Follow us