Anomaly Detection
La détection d’anomalies signale les points de données, les événements ou les régions d’image qui s’écartent des motifs normaux. Types d’anomalies, principales méthodes, inspection visuelle et code.
La détection d'anomalies consiste à identifier les points de données, les événements ou les régions d'image qui s'écartent d'un modèle établi de comportement normal. On l'appelle également détection des valeurs aberrantes et, en vision industrielle, souvent détection de défauts ou inspection visuelle automatisée. Les anomalies sont rares, variées et souvent inédites. La plupart des méthodes apprennent donc à reconnaître le comportement normal à partir de données principalement normales, attribuent à chaque nouvelle entrée un score d'anomalie indiquant son écart par rapport au modèle, puis signalent les scores qui dépassent un seuil. Les applications comprennent la détection de rayures et de bosses sur les lignes de production, des transactions frauduleuses par carte, des intrusions réseau, des défaillances de machines et des signes suspects en analyse d'images médicales.
Types d'anomalies#
- Anomalies ponctuelles : Une valeur ou une image isolée qui diffère fortement des autres, par exemple une transaction 50 fois supérieure aux dépenses habituelles d'un client.
- Anomalies contextuelles : Des valeurs normales dans un contexte et anormales dans un autre. Une température extérieure de 30 °C est ordinaire à New York en juillet, mais inquiétante en janvier.
- Anomalies collectives : Des séquences ou des groupes qui sont anormaux ensemble, même si chaque élément semble normal pris séparément, comme une série de tentatives de connexion depuis plusieurs pays en une minute, chacune étant banale isolément.
Fonctionnement de la détection d'anomalies#
Les méthodes diffèrent par la façon dont elles modélisent les données normales :
- Règles statistiques : Signalent les valeurs qui s'écartent de la moyenne d'un nombre défini d'écarts-types ou qui se situent en dehors d'une plage définie par l'écart interquartile.
- Distance et densité : Signalent les points éloignés de leurs plus proches voisins ou situés dans des régions peu denses, comme le fait le facteur local de valeurs aberrantes.
- Isolement : Un Isolation Forest divise les données au moyen de coupes aléatoires ; les anomalies sont isolées après moins de coupes que les points normaux.
- Modèles à une classe : Une machine à vecteurs de support (SVM) à une classe apprend une frontière autour des données d'entraînement et signale les points qui se trouvent à l'extérieur.
- Reconstruction : Un autoencodeur entraîné uniquement sur des données normales reconstruit correctement les entrées normales, mais mal les anomalies. L'erreur de reconstruction sert donc de score d'anomalie.
- Méthodes visuelles fondées sur des caractéristiques : PatchCore stocke dans une banque mémoire des caractéristiques de patchs d'images sans défaut, extraites par un réseau préentraîné sur ImageNet. Il attribue ensuite un score à chaque patch de test selon sa distance au patch stocké le plus proche et atteint une AUROC au niveau de l'image pouvant aller jusqu'à 99,6 % sur le benchmark MVTec AD.
scikit-learn distingue la détection de valeurs aberrantes, où les données d'entraînement contiennent déjà certaines anomalies, de la détection de nouveauté, où les données d'entraînement sont propres et seules les nouvelles entrées sont évaluées. Le script ci-dessous entraîne un Isolation Forest sur les relevés d'une machine en bon état et évalue quatre nouveaux relevés :
import numpy as np
from sklearn.ensemble import IsolationForest
# 1,000 readings from a healthy machine: temperature (C) and vibration (mm/s)
rng = np.random.default_rng(0)
normal = rng.normal([60, 2.0], [3, 0.3], size=(1000, 2))
# Learn what normal looks like, then score new readings
detector = IsolationForest(random_state=0).fit(normal)
new = np.array([[61, 2.1], [59, 1.8], [75, 2.0], [60, 4.5]])
labels = detector.predict(new) # 1 = normal, -1 = anomaly
scores = detector.decision_function(new) # below 0 = anomaly
for (temp, vibration), label, score in zip(new, labels, scores):
status = "anomaly" if label == -1 else "normal"
print(f"{temp:.0f} C, {vibration:.1f} mm/s -> {status} (score {score:+.3f})")Les deux relevés proches de la moyenne d'entraînement obtiennent des scores de +0,080 et +0,076 et ne sont pas signalés. Le relevé de surchauffe à 75 °C obtient un score de −0,139, et celui présentant des vibrations plus de deux fois supérieures à la normale un score de −0,152 ; les deux sont donc signalés, même si le modèle n'a jamais vu d'exemple de l'une ou l'autre panne.
Détection visuelle des anomalies#
L’inspection visuelle suit l’une de deux approches selon qu’il est possible de collecter et d’annoter les défauts. Lorsque les types de défauts sont connus et que des exemples existent, des modèles de détection d’objets ou de segmentation d’instances, entraînés sur des classes comme rayure, bosse et fissure, localisent et nomment chaque défaut. Un modèle YOLO26 de détection ou de segmentation, ajusté finement sur de telles classes, renvoie une boîte ou un masque, une classe et un score de confiance pour chaque défaut trouvé dans une image. Lorsque les défauts sont rares ou imprévisibles, les méthodes à une classe s’entraînent uniquement sur des images de pièces conformes et signalent tout ce qui diffère, ce qui permet aussi de détecter des types de défauts auxquels personne n’avait pensé. Le jeu de données MVTec AD, qui contient plus de 5 000 images réparties dans 15 catégories d’objets et de textures et dont les ensembles d’entraînement ne comprennent que des images sans défaut, est un benchmark de référence pour ce cas ; Ultralytics Platform l’héberge également comme jeu de données de détection pour l’approche supervisée. Des bibliothèques open source comme Anomalib implémentent PatchCore et des méthodes similaires.
Les détecteurs d'anomalies sont évalués à l'aide de métriques indépendantes du seuil, comme l'aire sous la courbe ROC (AUC), ainsi qu'avec la précision et le rappel au seuil choisi, qui reflètent les fausses alertes et les anomalies manquées que les opérateurs constateront réellement. Comme les anomalies sont rares, le seuil est souvent défini à partir des scores obtenus sur des images de validation normales, par exemple le score que seulement 1 % des pièces conformes dépassent.
Détection d'anomalies et notions connexes#
- Détection d'objets : Repère des instances appartenant à un ensemble fixe de classes annotées. Un détecteur d'objets entraîné sur des défauts ne détecte que les types de défauts sur lesquels il a été entraîné.
- Dérive des données : Modification, au fil du temps, de la distribution de tout un flux d'entrées, comme une semaine d'images plus sombres. La détection d'anomalies attribue un score à chaque entrée individuellement.
- Détection des données hors distribution (OOD) : Signale les entrées qui diffèrent des données d'entraînement du modèle afin que celui-ci puisse s'abstenir ou transmettre le cas à une personne ; il s'agit de détection de nouveauté appliquée aux entrées d'un modèle déployé.
- Détection des changements : Compare des images d'une même scène prises à différents moments, comme des images satellite avant et après une inondation, afin de repérer les changements.










