Это введение в PaDiM, модель машинного обучения, которую можно использовать с ailia SDK. Вы можете легко использовать эту модель для создания AI-приложений с помощью ailia SDK, а также многих других готовых ailia MODELS.

Обзор

PaDiM - это модель машинного обучения для обнаружения дефектных продуктов, опубликованная в ноябре 2020 года. Дефектные товары, например, произведенные на заводской сборочной линии, могут быть обнаружены только на основе изображений обычных продуктов, переподготовка не требуется. Эта современная модель была создана с использованием MVTec AD, набора данных для обнаружения дефектных продуктов.



Методы обнаружения бракованной продукции

Есть три метода обнаружения дефектных продуктов с помощью машинного обучения.

  1. Изучение нормальных и дефектных продуктов (требуется не менее 10000 изображений как нормальных, так и дефектных продуктов)
  2. Обучение только на обычных продуктах (требуется более 10000 изображений обычных продуктов)
  3. Определение с использованием распределения функций изображения только для обычных продуктов (требуется более 240 изображений обычных продуктов)

Метод 1. основан на классической модели классификации, которая обучена обнаруживать нормальные и дефектные продукты на основе таких сетей, как ResNet. GradCam используется для визуализации дефектных участков. В последние годы также используется дистанционное обучение. Однако на заводской сборочной линии можно получить много изображений нормальных продуктов, но не много изображений дефектных продуктов.

Метод 2. был разработан с учетом этой проблемы, и он был обучен с использованием AutoEncoder и других методов только из обычных продуктов. AutoEncoder - это архитектура модели, которая сопоставляет входное изображение с вектором низкой размерности и восстанавливает исходное изображение из этого вектора низкой размерности. AutoEncoder, который обучается только на изображениях обычных продуктов, изучает только особенности обычных продуктов, поэтому даже если вы вставляете изображения дефектных продуктов, он будет выводить изображения обычных продуктов. Используя эту функцию, мы можем обнаружить отклонения, взяв разницу между входным изображением и изображением, восстановленным с помощью AutoEncoder. В последние годы GAN также использовались в комбинации. Однако существует проблема, заключающаяся в том, что модель необходимо переобучать для каждого продукта.

В последние годы метод 3. получил много внимания и использует модели машинного обучения только для извлечения признаков. Данные среднего уровня модели машинного обучения, обученной ImageNet, хорошо характеризуют особенности изображения. Следовательно, входное изображение передается через сеть, такую ​​как ResNet, а данные на среднем уровне извлекаются и используются в качестве функций. Затем выполняется обнаружение дефектного продукта путем взятия разницы между распределением характеристик обычного продукта и распределением характеристик входного изображения.

PaDiM относится к третьему подходу и улучшает архитектуру SPADE, которая требовала кластеризации K-NN и обеспечивала SOTA, несмотря на ее простую архитектуру с только распределением по Гауссу. Точность, рассчитанная AUROC, составляет 97,9%.

PaDiM архитектура

Для обучения PaDiM, WideResNet50 применяется к последовательности изображений обычных продуктов для вычисления карты признаков и вычисления вектора признаков. Для создания векторов признаков используются неглубокие пространственные объекты слоев с 1 по 3. Векторы признаков вычисляются для каждого пикселя в плоскости изображения карты признаков.

Из вычисленного вектора признаков вычислите среднее значение группы изображений нормальных продуктов и вычислите ковариационную матрицу. Ковариационная матрица - это обобщение дисперсии скалярных значений.

Из средней и ковариационной матрицы мы можем вычислить N-мерное нормальное распределение нормального продукта.

На следующем изображении показано вычисление вектора признаков. Введите N изображений обычных продуктов в CNN с разрешением (W, H) = (224,224), вычислите ковариационную матрицу Σ и среднее значение μ для каждого пикселя в плоскости изображения карты признаков.

Результатом обучения будет ковариационная матрица и среднее значение.

Во время вывода PaDiM для входного изображения вычисляются векторы признаков, как во время обучения, а расстояние Махаланобиса вычисляется из предварительно вычисленной ковариационной матрицы и среднего значения. Расстояние Махаланобиса - это обобщение обычного расстояния, которое позволяет нам вычислить несходство двух векторов случайных величин.

Расстояние Махаланобиса рассчитывается для каждого пикселя, затем нормализуется по всему изображению для построения тепловой карты, а максимальное значение расстояния Махаланобиса является уровнем аномалии.

Уменьшение количества операций PaDiM

В качестве способа уменьшения вычислительной сложности PaDiM в документе предлагается уменьшить размерность векторов признаков и использовать CNN различных архитектур. Для уменьшения размерности сравнивались Анализ главных компонентов (PCA) и случайное извлечение, последний показал лучшую производительность.

В другой реализации PaDiM 448-мерный вектор признаков в resnet18 уменьшен до 100 измерений, а 1792-мерный вектор признаков в wide_resnet50_2 уменьшается до 550 измерений с помощью случайного извлечения.

Набор данных о дефектных продуктах

Набор данных MVTec AD использовался для оценки обнаружения дефектов.



Набор данных MVTec AD содержит изображения обычных продуктов в папках train/good и test, остальные - изображения дефектных продуктов. Маска дефектов хранится в папке ground_truth. Эта маска используется для вычисления ROCAUC пикселя.

Из-за своей архитектуры PaDiM уязвим для большого смещения из-за использования неглубоких функций. Следовательно, необходимо центрировать обнаруживаемое изображение.



Поскольку набор данных MVTec AD центрирован с высокой точностью, в статье предлагается модифицированная версия, которая включает случайное кадрирование от 256x256 до 224x224 и случайное вращение на + -10 градусов во время обучения для реальных приложений.

использование

Pytorch

Клонируйте репозиторий PaDiM.



Поместите набор данных в mvtec_anomaly_detection.

Адаптировать CLASS_NAMES в datasets/mvtec.py

CLASS_NAMES = ['grid']

Запустите python3 main.py, который использует около 7 ГБ памяти для Pytorch и занимает около 2 минут для обучения на MacBookPro 13 с использованием набора данных ковров MVTec AD (279 листов).

$ python3 main.py 
| feature extraction | train | grid |: 100%|██████| 9/9 [01:30<00:00, 10.08s/it]
| feature extraction | test | grid |: 100%|███████| 3/3 [00:28<00:00,  9.60s/it]
image ROCAUC: 0.957
pixel ROCAUC: 0.965
Average ROCAUC: 0.957
Average pixel ROCUAC: 0.965

Когда выполнение будет завершено, тепловая карта результатов обнаружения будет сохранена в mvtec_result. Пример результата обнаружения показан ниже. Мы можем обнаружить дефектные ковры и визуализировать дефектные участки.

PaDiM с ailia SDK

Ресурсы находятся в папке PaDiM репозитория ailia MODELS ниже.



Поместите образ нормальных продуктов в папку train. В примере ниже мы используем изображения из папки bottle MVTec AD.

Начните обучение с помощью команды ниже.

python3 padim.py --train_dir train

Результаты обучения будут сохранены в train.pkl, что составляет 127,9 МБ в случае Resnet18. Обнаружение аномалий выполняется с помощью этого файла с помощью приведенной ниже команды.

python3 pading.py -i input.png -f train.pkl -th 0.5

Уровень аномалии отображается на консоли. Чем выше значение, тем больше дефект.

Anomaly score: 25.189980 #defective product
Anomaly score: 8.388268 #normal product used for training
Anomaly score: 11.866211 #normal product not used for training

Дефекты можно визуализировать с помощью output.png

Оптимальные пороги обнаружения аномалий можно рассчитать по изображениям маски в GroundTruth, а рекомендуемые пороги можно вывести, поместив изображения маски, соответствующие именам входных изображений, в папку gt_masks.

INFO padim.py (392) : Optimal threshold: 0.592428

Если изображение маски для GroundTruth не существует, output.png будет пустым.

Поскольку аномальные области нормализованы по максимальному значению степени аномалии для каждого пикселя, выходные данные будут такими, что весь объект будет аномальным в случае нормальных продуктов. Если уровень аномалии всего изображения низкий, игнорируйте изображение аномальной части.

Обратите внимание, что также можно обрабатывать несколько изображений одновременно, указав папку вместо входных изображений.

python3 pading.py -i input_folder -s output_folder -f train.pkl -th 0.5

Другие приложения PaDiM

Помимо обнаружения дефектных продуктов, PaDiM также может применяться для обнаружения аномалий в камерах наблюдения. PaDiM получил оценку AUROC 91,2% по набору данных ShanghaiTech Campus, что превышает показатель CAVGA в 85%.



Связанные исследования

MahalanobisAD вычисляет расстояние Махаланобиса для векторов признаков, полученных путем применения GlobalAveragePooling к EfficientNet B4 карты объектов слоев 1–7. MahalanobisAD вычисляет одно расстояние Махаланобиса для всего изображения. Поскольку расстояние Махаланобиса не вычисляется для каждого пикселя, визуализировать аномалии невозможно. Если необходимы аномалии, тепловые карты могут быть созданы с помощью GradCAM.



Axe Inc. разработал ailia SDK, который обеспечивает кроссплатформенный быстрый вывод на основе графического процессора.

Axe Inc. предоставляет широкий спектр услуг от консультирования и создания моделей до разработки приложений и SDK на основе искусственного интеллекта. По любым вопросам обращайтесь к нам.