Réseau convolutif pour la classification, extrêmement sensible à l'éclairage


8

J'ai formé un réseau convolutionnel pour classer les images d'un composant mécanique comme bonnes ou défectueuses. Bien que la précision du test soit élevée, j'ai réalisé que le modèle fonctionnait mal sur des images qui avaient un éclairage légèrement différent.

Les fonctionnalités que j'essaie de détecter sont subtiles, et l'éclairage semble déclencher le modèle en appelant beaucoup de faux négatifs. La plupart, sinon la totalité, des données de formation et de test provenaient d'images qui ont été prises sous un éclairage diffus. Les nouvelles images sur lesquelles j'ai essayé le modèle ont été prises avec des lumières focalisées.

En espérant que l'égalisation de l'histogramme ( CLAHE ) aiderait, j'ai fait l'égalisation sur les images avant de l'alimenter sur le modèle, je l'ai fait pour la formation ainsi que pour les données de test. Le problème était alors que la précision était élevée, mais le modèle semblait avoir appris une autre corrélation entre les images et les étiquettes. Après l'égalisation, tout dans l'image se détache, les défauts deviennent encore plus subtils et difficiles à détecter même pour l'œil humain.

La prédiction du modèle a changé même lorsque le même composant a été tourné avec le même éclairage mais avec la lumière dans des orientations différentes. Donc, ma question est, que puis-je faire, soit à la fin des données ou avec le modèle, afin qu'il devienne robuste aux changements d'éclairage (ou au même type d'éclairage mais aux changements d'orientation de l'éclairage)?


Est-il possible de collecter plus de données avec des variations d'éclairage? La différence entre un éclairage diffus et direct dans une scène sera difficile à simuler ou à prendre en compte lors du prétraitement.
Neil Slater du

@NeilSlater Oui, je peux collecter plus de données. Je suis plus intéressé à rendre le modèle robuste aux changements d'éclairage, dans une mesure raisonnable. Une chose que j'ai remarquée, c'est que la prédiction du modèle a changé même lorsque le même composant a été tourné sous le même éclairage, mais avec des orientations différentes. Rendre le modèle robuste à différents types d'éclairage peut être difficile, existe-t-il des techniques pour le rendre robuste à différentes orientations d'un même éclairage?
dpk

Il est souvent utile de soustraire la moyenne des images. De plus, dans quelle mesure vos données sont-elles équilibrées? Si dans le jeu de données d'apprentissage 1% est de classe 1, le modèle n'apprendra rien et les classera tous en classe 0.
Alex

@Alex Je n'ai pas essayé la soustraction moyenne. Merci pour la suggestion. De plus, mon ensemble de données est bien équilibré. J'ai 2 classes et chacune représente 50% des données.
dpk

Réponses:


2

Cela s'appelle le sur-ajustement, votre modèle a appris à prédire les étiquettes en fonction de fonctionnalités qui ne sont pas réellement responsables de prédictions particulières, donc lorsqu'elles ne sont pas présentées, il ne parvient pas à prédire correctement. Bien qu'il existe différentes façons de gérer le sur-ajustement (par exemple, le décrochage), vous semblez avoir besoin d'une augmentation de l'image. C'est un moyen simple mais très puissant de former un réseau neuronal robuste. Pour votre cas - simulez simplement différentes conditions d'éclairage en augmentant / diminuant par exemple les valeurs de pixels au hasard pour vos entrées pour les mêmes étiquettes. Il est également courant d'ajouter du bruit aléatoire, des rotations aléatoires, un retournement, etc.

Pour plus d'informations, consultez cette réponse stackoverflow.

De plus, j'ai récemment publié un projet où j'ai utilisé diverses fonctions d'augmentation que vous pourriez trouver utiles. Voir: https://github.com/Naurislv/P12.1-Semantic-Segmentation/blob/master/augmentation.py

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.