Обнаружение наличия / отсутствия простых компонентов на печатной плате с помощью обнаружения объектов - PullRequest
0 голосов
/ 23 апреля 2020

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

Для этой задачи я попробовал концепцию обнаружения областей интересов, которые в этом случае являются компонентами, которые я хочу проверить. Я перешел к подходу, использующему API обнаружения объектов Тензорного потока , который обучил бы модели обнаружению компонентов, которые я хотел проверить, используя аннотированные изображения. В этом случае все изображения содержали только присутствие компонента.

Результаты были очень хорошими при использовании проверочных изображений, но, к сожалению, дает много ложных срабатываний (случаи, когда компонент отсутствует, но он все еще записывает поле на его области), иногда с вероятностью 99% + (исключая мой шанс отфильтровать эти случаи), а с другой стороны, есть случаи, которые он вообще не может найти, с человеческой точки зрения, очень четкий компонент.

Получив эти результаты, я попытался обучить модель как положительным, так и отрицательным случаям (наличие / отсутствие), надеясь, что она узнает разницу между ними. Опять же, ложные срабатывания появились, на этот раз с меньшей частотой, но, учитывая, что мой набор проверки очень мал (около 10 изображений), в глобальной ситуации эта частота ошибок может быть очень высокой, что исключает возможность использования модели в производство.

После нескольких итераций экспериментов я начинаю замечать, что модель очень нестабильна по своим результатам для использования в производстве. Является ли этот подход лучшим способом решения проблемы такого типа?

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

enter image description here enter image description here

Я уже пробовал использовать все модели, поддерживаемые API, который включает в себя несколько типов fast_rcnn и ssd. Тот, который я придерживаюсь, с лучшим обменом временем обучения и результатами, является более быстрым_rcnn_resnet101 с обучением COCO как предварительное обучение.

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Обратная связь с вашим подходом и обсуждение другого подхода для решения описанной проблемы.

  1. 8 изображений в ваших тренировочных данных, в основном правила любой подход глубокого обучения или управления данными (именно поэтому ваша модель не показывает надежность, для которой вы sh).

Заберите: если вы хотите придерживаться подхода, основанного на данных, вам нужно записать больше данных

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

Уберите: локализуйте весь объект в изображении, а затем обрежьте области интереса и сделайте проблема индивидуальной (в любом случае, вы можете использовать общую магистраль - извлечение функций, если вы хотите оптимизировать под GPU).

Вы говорите об ограничениях по времени вывода, вы также говорите о 8 обучающих образцах и 10 проверочных образцах, это крик классическим c подходам обработки изображений. Простые ручные установки порогов для сегментации или обнаружения больших двоичных объектов (см. Opencv) могут помочь в создании функций, которые позволяют создавать функции, позволяющие определить, находится ли деталь на месте или отсутствует, при этом требуется очень мало времени на обработку.

Заберите: Ваш молоток для глубокого обучения может показаться красивым, но при обращении с винтами вы можете использовать отвертку classi c.

0 голосов
/ 27 апреля 2020

Это слишком долго для комментария, поэтому я публикую его как ответ: -

Это вызов, но вы можете попробовать несколько вещей: -

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

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

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

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

Таким образом, у вас будет хорошее, хорошо работающее решение, которое, вероятно, будет хорошо работать в соответствии с его входными данными.

В будущем, Вы можете просто установить конвейерную ленту. Пояс будет нести продукт и остановится на точном упоре для сканирования камеры, а затем перейдет к следующему продукту, тем самым автоматизируя вашу сборочную линию.

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

С уважением,
Нил Гупта

...