Détection d'anomalies industrielle avec Halcon pour une inspection automatisée des défauts

  1. Pourquoi la détection d'anomalies révolutionne le contrôle qualité ?

Dans un environnement de production manufacturière, identifier les défauts tels que des rayures, des taches ou des imperfections sur des pièces à grande échelle présente un défi majeur. Le contrôle visuel humain est coûteux, sujet à la fatigue et manque de constance. Les solutions de vision industrielle traditionnelles, basées sur des règles fixes ou des modèles, peinent à reconnaître des types de défauts inédits ou des formes de défauts très variables.

La fonctionnalité d'détection d'anomalies (Anomaly Detection) intégrée aux outils d'apprentissage profond de Halcon apporte une réponse novatrice. Son principe fondamental est contre-intuitif : le modèle peut être entraîné principalement, voire exclusivement, sur des images de produits conformes (OK). L'absence ou la rareté d'échantillons de défauts (NG) n'est plus un obstacle bloquant, ce qui correspond parfaitement à la réalité des lignes de production où les produits sains dominent largement et où les défauts peuvent être imprévisibles.

On peut conceptualiser le processus comme l'éducation d'un modèle à reconnaître la "normalité". En lui présentant une multitude de pièces correctes présentant des variations acceptables (éclairage, position, texture de surface), il apprend à modéliser la distribution des caractéristiques normales dans un espace de features. Lors de l'inférence, une nouvelle image est projetée dans cet espace. Toute caractéristique s'éloignant significativement de la distribution apprise est alors considérée comme une anomalie, donc un potentiel défaut. Cette apprcohe simule le jugement intuitif d'un opérateur expérimenté qui "sent" qu'une pièce n'est pas conforme.

Cette méthodologie est particulièrement efficace pour les défauts rares, de morphologie diverse ou difficilement codifiables par des règles, comme les micro-rayures sur des composants électroniques ou les marques aléatoires sur des textiles. L'intégration de quelques images NG pendant l'entraînement, si disponibels, peut affiner le modèle, mais la force de l'approche réside dans sa nature non-supervisée ou semi-supervisée, réduisant drastiquement le coût d'entrée d'un projet.

  1. Mise en œuvre pratique : configuration d'un projet de détection

2.1 Préparation des données et environnement

La qualité et la représentativité des données d'entraînement sont cruciales. Halcon impose une structure de dossier spécifique. Il est recommandé d'organiser les fichiers de la manière suivante pour une gestion claire :

RacineProjet/
├── Images/                  # Dossier principal des images
│   ├── Conforme/            # Images de produits conformes (OK)
│   │   ├── piece_001.tiff
│   │   ├── piece_002.tiff
│   │   └── ...
│   └── NonConforme/         # (Optionnel) Images de produits défectueux pour l'évaluation
│       ├── defaut_001.tiff
│       └── ...
└── DatasetTrait/            # Dossier de sortie pour le dataset prétraité (généré automatiquement)

Un point essentiel : les images du dossier Conforme doivent couvrir les variations normales attendues du processus (positions légères, textures naturelles du matériau, écarts d'éclairage minimes). Un ensemble d'entraînement trop uniforme conduira à un modèle trop sensible, rejetant des pièces conformes comme défectueuses.

Voici un exemple de code d'initialisation, restructuré et commenté :

* Définition des chemins et paramètres fondamentaux
CheminImages := 'C:/ProjetVision/Donnees/Images'
SousDossiersImages := ['Conforme', 'NonConforme']
CheminSortie := 'C:/ProjetVision/Donnees/DatasetProcesse'

* Dimensions de prétraitement (doivent être multiples de 20 : 40, 80, 160, 320, 640)
ResLargeur := 160
ResHauteur := 160
* Un compromis vitesse/précision. Pour des défauts très fins, envisager 320.

NiveauComplexite := 20 * Plage de 1 à 100. Un modèle plus complexe peut capturer plus de subtilités mais risque le surapprentissage.

* Création de la configuration du dataset
create_dict (ConfigDataset)
set_dict_tuple (ConfigDataset, 'image_sub_dirs', SousDossiersImages)
* Chargement des métadonnées du dataset
read_dl_dataset_anomaly (CheminImages, [], [], [], ConfigDataset, DatasetCharge)

2.2 Partitionnement du dataset

Pour évaluer objectivement les performances du modèle, il est impératif de séparer les données en sous-ensembles distincts. L'xeemple suivant illustre une répartition courante :

* Pourcentage de répartition
RatioEntrainement := 70
RatioValidation := 15
RatioTest := 15

* Séparation effective des données
split_dl_dataset (DatasetCharge, RatioEntrainement, RatioValidation, [])
* Cette opération attribue à chaque échantillon un rôle (entraînement, validation ou test).
* Le dataset 'DatasetCharge' est maintenant prêt pour les étapes suivantes d'entraînement et d'évaluation.

Cette étape garantit que l'évaluation finale du modèle se fera sur des données jamais vues pendant l'apprentissage, fournissant une estimation fiable de ses performances en conditions réelles de production.

Étiquettes: détection d'anomalies vision industrielle apprentissage profond inspection par défauts Halcon

Publié le 4 juillet à 07h38