Инженер собрал машину, сортирующую Lego

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

Конструктор Lego настолько популярен, что отдельные фанаты скупают кубики десятками килограмм. На торговых площадках в интернете конструктор продаётся на развес, причём рассортированные по цвету и форме детали стоят дороже, чем несортированные. Цена редких деталей доходит до 100 долларов за килограмм, более распространённые кубики продаются по 10-15 долларов. Некоторые даже зарабатывают на этом: покупают несортированные наборы, сортируют их вручную и продают дороже, чем купили.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Инженер и программист Жак Маттей обожает Lego; он собирает конструктор с тех пор, как себя помнит, но необходимости сортировать большие объёмы деталек у него до поры не возникало. Пока однажды он не узнал про описанную выше схему заработка на сортировке и не решил попробовать. Вечером он сделал несколько ставок на сетевых аукционах Ebay, а с утра обнаружил, что выиграл сразу все. В результате в гараже у Маттея оказалось две тонны Lego всевозможных форм и расцветок.

Тогда Маттею и пришла в голову идея собрать сортирующий механизм. Камера, установленная над конвейером, должна была сканировать детали, определять их цвет и конфигурацию, а механизм в конце конвейера — отправлять их в разные приёмники.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

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

Jacques Mattheij
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Разобравшись с подачей деталей, Маттей установил над конвейером недорогую камеру с увеличением, подключенную к компьютеру. Сортирующий механизм в конце ленты выглядит как ряд воздушных насосов, установленный вдоль ленты; когда деталь проходит мимо сопла, стоящего напротив корзины с такими же деталями, насос срабатывает, и кирпичик сдувает с конвейера в корзину. Главное — точно рассчитать время, когда деталь пройдёт мимо нужного насоса.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Но сложнее всего было, конечно, написать алгоритм распознавания. Несколько недель ушло только на то, чтобы программа сама обрабатывала изображения, вписывала большие детали в кадр и отличала цвет Lego от цвета фона.

В наборах Lego детали тысяч разных форм, а оттенков — больше сотни. Чтобы научить компьютер распознавать каждую из комбинаций цвета и формы, Маттей перепробовал несколько разных подходов. Подключить библиотеку для компьютерного зрения OpenCV оказалось недостаточно: алгоритм различал только базовые формы и цвета.

Jacques Mattheij
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

После библиотеки Маттей попробовал сортировать Lego с помощью байесовского классификатора — метода, который помогает, например, отделять полезные письма от спама. Иженер выделил 18 ключевых характеристик кубиков, по комбинации которой машина могла присвоить детали значение, соответствующее конкретной разновидности деталей. Это сработало, и после обучения программа научилась определять тип деталей с впечатляющей точностью — но очень медленно.

РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ

Ускорить процесс помогла нейросеть: перепробовав несколько разных, Маттей остановился на TensorFlow от Google Brain Team; чтобы система работала ещё быстрее, инженер подключил нейросеть не через ЧПУ механизма, а через мощную игровую видеокарту GTX1080 Ti Nvidia. Предыдущие работы заняли месяцы, с нейросетью дело пошло быстрее: уже через несколько дней система заработала — правда, она умела определять только несколько типов деталей, но быстро училась распознавать новые Lego сама, Маттею оставалось только исправлять неизбежные ошибки.

Нажми и смотри

По мере того, как нейросеть училась, ошибок становилось всё меньше. Сейчас система самостоятельно сортирует огромные партии Lego; ошибки случаются только тогда, когда нейросеть сталкивается с новыми для себя детальками. Когда нейросеть освоит все возможные формы и цвета, Маттей планирует наконец поручить ей сортировку всех двух тонн Lego, и продать сортированные наборы и наконец заработать.