Anomaly Detection
Обнаружение аномалий выявляет точки данных, события или области изображения, отклоняющиеся от нормальных закономерностей. Типы аномалий, основные методы, визуальный контроль и код.
Обнаружение аномалий — это задача выявления точек данных, событий или областей изображения, отклоняющихся от установленного шаблона нормального поведения. Её также называют обнаружением выбросов, а в промышленном компьютерном зрении часто называют обнаружением дефектов или автоматизированным визуальным контролем. Аномалии встречаются редко, отличаются друг от друга и часто имеют ранее неизвестный характер. Поэтому большинство методов учатся распознавать норму на преимущественно нормальных данных, присваивают каждому новому входному объекту оценку аномальности, отражающую его отклонение от нормы, и отмечают объекты, оценка которых превышает порог. Такие методы применяют для обнаружения царапин и вмятин на производственных линиях, мошеннических операций по банковским картам, сетевых вторжений, неисправностей оборудования и подозрительных находок при анализе медицинских изображений.
Типы аномалий#
- Точечные аномалии: Отдельное значение или изображение, сильно отличающееся от остальных, например транзакция, сумма которой в 50 раз превышает обычные расходы клиента.
- Контекстные аномалии: Значения, нормальные в одном контексте и аномальные в другом. Температура воздуха 30 °C обычна для июля в Нью-Йорке, но тревожна для января там же.
- Коллективные аномалии: Последовательности или группы объектов, которые вместе выглядят аномально, хотя каждый объект по отдельности кажется нормальным. Например, множество попыток входа из разных стран за одну минуту, каждая из которых сама по себе не вызывает подозрений.
Как работает обнаружение аномалий#
Методы различаются тем, как они моделируют нормальные данные:
- Статистические правила: Отмечают значения, отклоняющиеся от среднего более чем на заданное число стандартных отклонений, или выходящие за диапазон, определённый межквартильным размахом.
- Расстояние и плотность: Отмечают точки, далёкие от ближайших соседей или находящиеся в разреженных областях, как это делает локальный фактор выброса.
- Изоляция: Isolation Forest разделяет данные случайными разрезами; аномалии изолируются за меньшее число разрезов, чем нормальные точки.
- Одноклассовые модели: Одноклассовый метод опорных векторов (SVM) обучается строить границу вокруг обучающих данных и отмечает точки за её пределами.
- Реконструкция: Автоэнкодер, обученный только на нормальных данных, хорошо восстанавливает нормальные входные данные и плохо — аномальные. Поэтому ошибку реконструкции используют как оценку аномальности.
- Визуальные методы на основе признаков: PatchCore сохраняет в банке памяти признаки фрагментов изображений без дефектов, извлечённые сетью с предварительным обучением на ImageNet, и оценивает каждый тестовый фрагмент по расстоянию до ближайшего сохранённого. На эталонном наборе MVTec AD метод достигает AUROC на уровне изображения до 99,6%.
scikit-learn различает обнаружение выбросов, когда в обучающих данных уже есть некоторые аномалии, и обнаружение новизны, когда обучающие данные чистые и оцениваются только новые входные данные. Скрипт ниже обучает Isolation Forest на показаниях исправного оборудования и оценивает четыре новых показания:
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})")Два показания, близкие к среднему обучающей выборки, получают оценки +0,080 и +0,076 и проходят проверку. Показание при перегреве до 75 °C получает оценку −0,139, а показание, где вибрация более чем вдвое превышает норму, — −0,152, поэтому оба помечаются как аномальные, хотя модель не видела ни одного примера этих неисправностей.
Визуальное обнаружение аномалий#
Визуальный контроль выполняют одним из двух способов — в зависимости от того, можно ли собрать и разметить дефекты. Если типы дефектов известны и есть примеры, модели детекции объектов или сегментации экземпляров, обученные на классах вроде царапин, вмятин и трещин, находят каждый дефект и определяют его тип. Модель детекции или сегментации YOLO26, дообученная на таких классах, возвращает для каждого найденного на изображении дефекта рамку или маску, класс и оценку уверенности. Если дефекты редкие или непредсказуемые, методы с одним классом обучаются только на изображениях исправных деталей и отмечают всё, что от них отличается; это позволяет обнаруживать и типы дефектов, о которых никто не предполагал. Набор данных MVTec AD, включающий более 5000 изображений в 15 категориях объектов и текстур и только изображения без дефектов в обучающих наборах, служит стандартным бенчмарком для этого подхода. Ultralytics Platform также предоставляет его как набор данных для детекции при обучении с учителем. В библиотеках с открытым исходным кодом, например Anomalib, реализованы PatchCore и похожие методы.
Качество детекторов аномалий оценивают с помощью метрик, не зависящих от порога, например площади под ROC-кривой (AUC), а также точности и полноты при выбранном пороге, которые отражают ложные срабатывания и пропуски, с которыми столкнутся операторы. Поскольку аномалии редки, порог часто задают по оценкам на нормальных валидационных изображениях, например выбирают оценку, которую превышают только 1% исправных деталей.
Обнаружение аномалий и смежные понятия#
- Обнаружение объектов: Находит экземпляры из фиксированного набора размеченных классов. Детектор объектов, обученный обнаруживать дефекты, находит только те типы дефектов, на которых он обучался.
- Сдвиг данных: Изменение распределения целого потока входных данных с течением времени, например неделя изображений с более низкой яркостью. Обнаружение аномалий оценивает входные данные по отдельности.
- Обнаружение данных вне распределения (OOD): Отмечает входные данные, непохожие на обучающие данные модели, чтобы модель могла воздержаться от ответа или передать задачу человеку. Это обнаружение новизны, применённое к входным данным работающей модели.
- Обнаружение изменений: Сравнивает изображения одной и той же сцены, сделанные в разное время, например спутниковые снимки до и после наводнения, чтобы найти изменения.










