Comments 13

Не вижу причин использовать нейросеть для отсекания фона. В свое время писал рыбалочного бота для WoW, который отсекал все кроме поплавка на обычных if-ах по изменению среднего цвета в области. Получалось быстро и надежно.

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


И для этого идеально приспособлены платформы на базе ПЛИС, так как позволяют параллельную потоковую обработку в реальном времени гораздо лучше процессоров. На вашем месте я бы сразу начал уходить от RPi, а попробовал бы что-то на базе Zynq-7000 или аналогичных платформ. Вы получите раз в 20 большую производительность на том же OpenCV при том же потреблении и с возможностью скалирования производительности. Благодаря High Level Synthesis вы сегодня можете не бояться VHDL/Verilog — это страшилки из прошлого. В инете полно референсных дизайнов под ваш проект.


Попробуйте. Будете удивлены, насколько это круче работает на ПЛИСах.


ПС. Тьфу ты, не заметил, что перевод.

Первая статья из переводов на хабре, которую дочитал до конца и не почувствовал, что это перевод.
Как вариант, можно сделать свет сбоку, под заданным углом, для создания тени. По ней можно затем попытаться восстановить контур объекта. Есть такая тема в «классических» способах обработки, в частности с геоповерхностей.
Знаю что перевод, но может кому полезно будет. Я фанат Лего и в качестве хобби собираю сортировщик. Автор оригинала не первый кто реализовал рабочий прототип (был ещё Jacques Mattheij), но как и в других областях важна скорость и точность. Я в фоновом режиме собираю свой вариант, моя система должна распознавать 1960 типов деталей (ещё есть цвета), и обрабатывать 3 детали в секунду (Это минимум) тогда в сортировщике есть смысл. И к моему огромному разочарованию, бОльшая часть задачи в механике, оказалось, что выложить детали по одной на конвейер с нужной скоростью крайне сложно. У меня, как и у автора сейчас вибрационный лоток, перед конвейером с камерой, но он не дает постоянной скорости сброса и грохочет на весь дом. Кроме того, детали имеют очень разные размеры от 5мм до 16 см. Так вот интересная задача на машинное обучение для меня превратилась в бесконечное тестирование, лотков, конвейеров, просеивающих решеток и т.д. Прототип который собираю сейчас будет состоять из: 2х наклонных просеивающих решеток(отделяют маленькие детали от больших), от каждой подающий конвейер, после второй каскад конвейеров с ограничением потока и выравниванием (мягкие кисти, заслонки из мягкого пластика и т.д.) потом для каждого конвейера свой вибро лоток(разного размера) и только потом основная камера. При этом подающие и выравнивающие конвейера будут управлять скоростью либо по простому оптическому датчику либо будет отдельная камера и скрипт на OpenCV для постоянной скорости потока деталей.
Нет, у меня есть коллекция lego Technic с каждым годом она растет, а времени все меньше. Что бы оно не пропадало зря все детали рассортированы деталь/цвет по лоткам. И если я уделяю вечер сборке, то по итогу есть какой то узел деталей на 100-200 и 1500+ просто валяются по столу потому что не подошли и творческая мысль так пошла.

А вы не могли бы статью написать? Интересно почитать — судя по вашим комментариям, у вас в этом есть некоторый опыт.

К сожалению это история лени и прокрастинации, с тех пор как я понял что 90% это механика, я тяну резину и писать об этом стыдно. Есть надежда что динамическое управление скоростью конвейера по средствам аналитики потока с помощью OpenCV решит часть проблем. Основная проблема это разнородность деталей. То есть если были только кубики, нескольких размеров, то можно настроить конвейер под этот тип и все хорошо. А быстрый универсальный пока не дается, медленный мне лично не нужен и мало вероятно что нужен другим фанатам Лего. Отдельная задача избавиться от вибро лотка — очень шумно.
На счет съемки, принцип взят из промышленности: из Китая заказана дешевая usb камера на CMOS OV2710 и 8мм фокусное расстояние снимает 640x480 120 кадров. Смотрит строго под 90 к поверхности. Сделана очень яркая (~ 50 ватт светодиодных ламп) конвейер из бумаги снизу подсветка ~12 ватт, то есть все для того что бы не было теней и получить четкие контуры, так же позволяет увеличить скорость затвора, и уменьшить ролингшаттер. Бумага живет где-то месяц и в целом пылит, возможно перейду на полотно и сделаю контурную подсветку.
Вся механика пока что на шаговых двигателях + arduino + ramps 1.4 (Надстройка для 3d принтеров) Конвейера 3d печатные из звеньев. Конструкции из серой ленты, деревяшек, картона и известной матери.

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

По программной части пока что почти ничего, кодер из меня никакой, так что я на возмездной основе привлекаю знакомого. Целевая задача в первом приближении что бы сетка работала на домашней видеокарте, обучение в арендованном облаке. Скорее всего сетки будет две, потому что я на входе физически отделяю большие детали от маленьких(а в маленьких есть очень похожие детали, которые составляют до 30-50% по кол-ву от всех деталей в коллекции) Вначале будем пробовать предобученные сети, и физические и логические методы помощи. Например можно поставить зеркало под 45 к камере и получать на одном фото две проекции детали и ещё несколько вариантов. подобного.

Как видите на статью это не тянет. Если есть вопросы спрашивайте.
К сожалению, я выполняю код распознавания объектов на Raspberry pi.
Это как купить запорожец и жалеть, что двигатель не V8 и слон не помещается.

Only those users with full accounts are able to leave comments. Log in, please.