Применение искусственного интеллекта (ИИ) или машинного обучения (МО) в производстве — распространенная, но сложная тема. Компании платят миллионы долларов своим поставщикам, которые могут использовать AI|ML для эффективного поиска дефектных единиц в производственной линии.

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

AOI — Automated Optical Inspection — это автоматизированная визуальная проверка производства печатных плат, при которой камера автономно сканирует тестируемое устройство на наличие катастрофических отказов и дефектов качества. Он широко используется в производственном процессе, потому что это бесконтактный метод испытаний». — Википедия

AOI на основе ML

AI|ML теперь везде. Нет сомнений в том, что использование глубокого обучения в компьютерном зрении для AOI является тенденцией в производственной среде. Интегрируя AI | ML, мы можем значительно снизить количество ошибок, возникающих при традиционном сравнении изображений с использованием AOI. Между тем, с помощью AI|ML можно улучшить производительность и производственные операции, а количество ручных операций сократить.

Сколько стоит решение AOI на основе машинного обучения?

Это зависит. Согласно моему расследованию, полное комплексное решение может стоить до 5 миллионов долларов в год. Стоимость непомерно высока для стартапа или вашей компании с бюджетными ограничениями.

«Можем ли мы создать собственное решение AOI?» Многие предприниматели думали об этом, но им было трудно взломать алгоритм машинного обучения. В следующем разделе я объясню, как вы можете использовать модель с открытым исходным кодом или предварительно обученную модель для создания собственного алгоритма AOI.

Построение алгоритма машинного обучения для AOI

Основываясь на моем исследовании, существует множество моделей с открытым исходным кодом или предварительно обученных моделей, которые вы можете использовать, например ResNet50 или EfficientNet. Далее я использую одну из популярных моделей классификации под названием VGG-16 для построения алгоритма АОИ.

Ниже приводится отличное резюме VGG-16 из другого технического блога.

«VGG16 — это модель сверточной нейронной сети, предложенная К. Симоняном и А. Зиссерманом из Оксфордского университета в статье «Очень глубокие сверточные сети для крупномасштабного распознавания изображений». Точность модели достигает 92,7 % в тестах Top-5 в ImageNet, который представляет собой набор данных из более чем 14 миллионов изображений, принадлежащих к 1000 классам. Это была одна из известных моделей, представленных на ILSVRC-2014. Это улучшение по сравнению с AlexNet за счет замены больших фильтров размером с ядро ​​(11 и 5 в первом и втором сверточных слоях соответственно) несколькими фильтрами размера ядра 3 × 3 один за другим. VGG16 обучался несколько недель и использовал графические процессоры NVIDIA Titan Black…».

https://mubaraqsanusi.medium.com/vgg-16-pretrained-model-9cd600fd75e2 от Mubaraq Sanusi

В своем исследовании я использовал только 10 изображений в качестве обучающих данных в VGG-16. И результат очень многообещающий. В следующем разделе я поделюсь результатами своего эксперимента. В выводе я подал входное изображение и использовал алгоритм KNN для вычисления показателя достоверности. Существует множество базовых алгоритмов, помимо KNN. Я не специалист по ML. Я использовал Переполнение стека и сослался на то, что предложили другие люди.

С помощью приведенного выше основного алгоритма я могу спроектировать и построить алгоритм AOI следующим образом:

Модель базовой классификации AOI

На следующей диаграмме показано, как я разработал свою модель классификации.

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

Я использовал 8 изображений яблок, как показано ниже, для обучения модели.

Для тестовых данных я использовал 2 набора — положительные изображения (ОК) и отрицательные изображения (НГ). С изображениями в порядке я получил показатели достоверности от 0,944 до 0,977. С изображениями NG я получил оценку достоверности от 0,85 до 0,91. В результате я могу легко установить пороговое значение 0,93, чтобы определить, является ли входное изображение нормальным или нет.

Микромодель

Если проверка требуется в изображении со сложной компоновкой, обучение всего изображения не сможет найти четкую границу между OK и NG. В этом случае мне нужно ввести обучение микромодели, в котором я тренировал модель с интересующими меня областями области интереса (ROI) и объединял все результаты тестов для вычисления окончательного NG/OK.

Ниже представлена ​​схема микромодели.

С помощью микромодели я могу эффективно улучшить показатель достоверности изображения OK и идентифицировать изображение NG. В следующем эксперименте я извлек ROI, область винта, из тренировочного изображения. Я сделал то же самое для остальных 10 изображений и точно так же определил ROI. Вот образцы в моей добыче:

Я использовал изображения ROI вместо целых изображений для обучения модели. Чтобы протестировать модель, я использовал соответствующие изображения ROI из входных изображений. Результат меня очень устраивает. Для изображений OK, изображений с правильным винтом, я получил показатель достоверности от 0,82 до 0,879. Для изображений NG, изображения с отсутствующим винтом, я получил около 0,6557. С помощью приведенного выше эксперимента я могу установить порог 0,80 для идентификации изображений OK и NG.

Ниже приведены 2 примера изображений, которые я использовал для тестирования микромодели.

Заключение

Используя VGG-16 или другие предварительно обученные классификаторы, вы можете быстро создать решение AOI на основе ML, подобное моему. Конечно, это не идеальное решение по сравнению с поставщиками, предоставляющими профессиональные услуги, но оно сэкономило бы вам миллионы долларов, если бы у вас были ресурсы для создания собственного решения.

В этой статье я только объяснил основной алгоритм, который я построил на основе классификаторов с открытым исходным кодом, например VGG-16. Если вы хотите построить целостное решение, не хватает многих компонентов. Например, вам понадобится приложение для аннотации и приложение для обучения моделей, развертывания и применения логического вывода. Однако это должно быть относительно просто. Я не эксперт по машинному обучению, даже не считаю себя инженером машинного обучения, но я сохраняю свою страсть к изучению машинного обучения и пытаюсь применить его на практике. Я надеюсь, что эта статья поможет и будет полезна для вашего случая.

Рекомендации

https://www.geeksforgeeks.org/vgg-16-cnn-model/

https://mubaraqsanusi.medium.com/vgg-16-pretrained-model-9cd600fd75e2

https://en.wikipedia.org/wiki/Automated_optical_inspection

https://aoi-spi.com

https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

https://stackoverflow.com/

https://www.tensorflow.org/api_docs/python/tf/keras/applications/resnet50/ResNet50

https://ai.googleblog.com/2019/05/efficientnet-improving-accuracy-and.html