Рассказываем, как RDL by red_mad_robot помогли АО «Арнест» решить проблему неполной комплектации продукции при работе конвейера с помощью компьютерного зрения.  АО «Арнест» больше пятидесяти лет производит и упаковывает косметическую продукцию и товары бытовой химии известных брендов. В арсенале предприятия 600+ товаров, которые продаются в 50 000 городов России, стран СНГ и Европы.  Каждый второй аэрозольный распылитель в России производится на площадях АО «Арнест», а в 2018 году был выпущен 3,5-миллиардный баллон.  Эти баллоны иногда выпадали с автоматической конвейерной ленты, поэтому «Арнест» сталкивался с недокомплектацией коробов и, как следствие, недовольством предприятий-заказчиков.  Перед rdl by red_mad_robot стояла задача найти решение, которое бы минимизировало недовложение продукции. Команда за несколько месяцев разработала систему на основе компьютерного зрения, которая детектирует некомплект упаковки и отправляет управляющие сигналы на конвейер, чтобы устранить проблему.  В октябре 2021 года систему успешно проверили на одной поточной линии. В результате удалось минимизировать недокомплект, а значит и сохранить компании деньги и уменьшить репутационные риски. В перспективе клиент планирует внедрить систему на пяти производственных конвейерных линиях. В статье подробно рассказываем об оригинальном решении автоматизации процесса мониторинга, проектировании, нюансах разработки, тестировании и результатах работы. На автоматическом конвейере аэрозольные баллоны пакуются в картонную тару. Количество предметов в упаковке варьируется от 6 до 24 баллонов в коробке — в зависимости от требований предприятия-заказчика. Вогнутое дно распылителя нужно не для красоты — оно препятствует деформации, делает безопасной транспортировку и использование спрея, ведь содержимое находится под давлением. Эти особенности формы и небольшой вес баллона делают его неустойчивым на ленте: товар может выпасть с движущейся линии, автоматический упаковщик не заметит потерю «бойца» — и коробка будет укомплектована не полностью.  Цель создания системы: автоматизировать мониторинг выпадения баллонов из коробок так, чтобы конвейер моментально останавливался, а оператор мог исправить ситуацию; держать руководителя* в курсе того, сколько неполных коробок за определенное время комплектует конкретная производственная линия.  *руководитель — пользователь системы, которому доступны отчеты по работе. Упаковка баллонов в короб происходит автоматически. На входе в машину упаковки, баллоны формируются в блоки по 6 или 12 штук, а потом под блок «подъезжает» картонная заготовка будущего короба. Специально расположенные направляющие формируют короб, и на выходе из машины получается крепко склеенная групповая упаковка. К сожалению, иногда в момент объединения баллонов и заготовки короба, один баллон может выпасть и на выходе получится короб с недостающей единицей. Мы обратились к red_mad_robot для решения этой проблемы. Необходимо было со 100% точностью выявлять короб с выпавшим баллоном и дать об этом сигнал обслуживающему персоналу.  Олег Питько, начальник цеха наполнения «Арнест» Любые вопросы, влияющие на качество выпускаемой продукции, подлежат глубокому разбору. Мы должны найти коренные причины тех или иных несоответствий и разработать ряд ответных мероприятий. Одной из таких проблем с долгой историей было выявление недокомплекта, которую мы и доверили специалистам rdl by red_mad_robot. Олег Питько, начальник цеха наполнения «Арнест» На конвейерной линии устанавливают камеры слежения, подключенные к контроллеру, который останавливает конвейер, когда баллоны выпадают.  Контроллер передает данные с камер на вычислительный сервер, а обученная нейронная сеть  распознает брак. Если машинное зрение находит некомплект, то сервер отправляет сигнал на контроллер об автоматической остановке конвейера. Оператор устраняет недовложение и снова запускает конвейер. Веб-приложение автоматически формирует и отправляет отчет.  Проект состоял из 3 этапов — проверки гипотезы, прототипа и MVP-версии. Перед проектом провели исследования: нашли ограничения для реализации, собрали данные, выбрали камеру и нейронную сеть Чтобы определиться с методами дальнейшей работы и выбрать оборудование, нужно было побывать на непосредственно объекте, поэтому часть команды выехала на предприятие. Там они осмотрели производственные площади, согласовали организационные моменты и проверили концепцию решения. Перед нами стояла непростая задача, которая требовала решения сразу в нескольких специализациях: Data science, embedded systems и web-разработка. Наибольший риск виделся в определении баллонов, так как они различаются по форме, цвету и количеству в упаковке — это был настоящий вызов. Потребовались нестандартные решения и сплоченная командная работа, чтобы справиться с ним. Тимофей Михайлов, менеджер проектов rdl by red_mad_robot Для первичной съемки на конвейере использовали стереокамеру, которую установили в оптимальном месте для фиксирования выпадания баллонов из короба. Предпроектные исследования выявили несколько ограничений, которые могли повлиять на использование традиционных способов реализации систем компьютерного зрения. Эти ограничения нужно было проверить и при необходимости устранить.  Класс противопожарных датчиков, работающих в УФ-спектре. Это могло препятствовать распознаванию и обнаружению «дефектных» объектов с заданными параметрами (гипотеза не подтвердилась). Особенности монтажа электрических кабелей на производстве. Прежде чем начинать работы, нужно было получить специальные разрешения, чтобы внедриться в закрытую автоматизированную систему производства. Большой объем данных, которые генерирует камера. Нужно было найти решение, которое позволило бы передавать для анализа не весь поток информации, а только релевантные кадры выпадения баллонов.  В первую очередь сняли на видео работу двух конвейерных линий при максимальной скорости — 40 коробок в минуту. 99% съемки оказалось однообразной фиксацие нормального производственного процесса, потому что баллоны при движении сохраняли устойчивость и ничего особенного не происходило. Поэтому сделали вывод, что количество падений — не постоянная величина и зависит от разных причин.  Для первичного обучения модели нейросети выбрали 123 изображения, которые были размечены в программе SuperAnnotate (платформа полуавтоматического аннотирования изображений) по трем классам объектов: крышка баллона; баллон целиком; коробка с упакованными баллонами. Но после первичного осмотра появились сомнения в том, что обычная нейронная сеть сможет распознать ошибку в реальной производственной ситуации. Продукция компании очень разная: баллоны отличаются формой и цветами крышек, которые на стандартной камере воспринимаются набором пикселей. Для измерения предметов в пространстве нужна была улучшенная классическая 3D-камера, которая совмещает функции стереокамеры и датчика глубины. Результаты съемки камеры должны были помочь в дальнейшем обучении и тренировке нейронной сети.  Решили использовать камеру, совмещенную с камерой глубины (камера с двумя типами изображения).  Чтобы результаты опытов были точнее, провели дополнительные испытания и задействовали 3D-камеру Intel RealSense Depth Camera D455: с двумя датчиками для определения глубины сцены,       кадровым затвором, инфракрасным проектором, отслеживанием движения, разрешением 1280х720, трехмерным полем зрения 860.  Датчики глубины камеры располагаются на расстоянии 95 мм друг от друга. Это снижает погрешность до 2% на расстоянии 4 метров. Скорость стереосъемки до 90 fps, апертура (диафрагма) карты глубиной 870х680. Провели работу по разбору методов принятия информации с камеры и собрали тестовые материалы. Использование 3D-камеры позволило видеть не стандартную картинку, а 3D-проекцию предмета, «добраться» до каждого пикселя в изображении нужного баллона. Этот прием позже помог обучить нейронную сеть. Предыдущий опыт команды с распознаванием похожих объектов показал, что для работы нужна модель быстрой нейронной сети, которая позволит различать баллоны по контуру.  Выбрали быструю модель нейронной сети ResNet50 с возможностью распознавания объектов по форме. Для реализации взяли феймворк PyTorch с набором библиотек.  Архитектура состоит из трех блоков: Backbone Network. Извлечение информации из входного изображения в различных масштабах. Region Proposal Network. Обнаружение области объекта с различных масштабов с оценкой достоверности. Box Head. Объединение информации предыдущих блоков, определение границ объектов. Архитектура нейронной сети Методика поиска объектов разноразмерными срезами значительно увеличивает точность распознавания объектов средних и небольших размеров. Срезы пяти уровней (от P2 до P6) последовательно передаются в сеть, на каждом уровне срезы накладываются на входное изображение. Точки Р2, Р3 находят маленькие объекты, точки Р4-Р6 — более крупные.  Мультимасштабная сеть позволяет обнаружить самые миниатюрные объекты — одномасштабный детектор на такое не способен.  Так как заказчик работает с множеством брендов, оформление баллонов разного цвета. Нейронная модель ResNet50 как раз успешно применяется при работе с цветными изображениями, но в нашем случае этого было недостаточно — нужно было настроить модель не только на цвет.  Для этого совместили три канала изображений. Для первого слоя специалисты использовали преобразование в формат изображения различных оттенков серого цвета. Во второй слой поместили карту глубины, полученную со стереокамеры.  Для третьего слоя использовали оператор Лапласа для выделения границ цветного изображения.  На этапе проверки гипотезы точность распознавания крышек  — 77,6%, баллонов — 73,6%, коробов — 66,2%. По результатам тренировки модели средняя точность распознавания достигла 72,5 (целевой показатель от 30% до 95%). Это подтвердило гипотезу успешности модели нейронной сети для решения задачи с недовложением продукции Михаил Степанов, разработчик Data Science в rdl by red_mad_robot, тимлид проекта На этом этап проверки гипотезы закончился, наступило время прототипа. Изготовили защитный корпус и установили камеру, собрали датасет для обучения нейронной сети, создали синтетический датасет, начали разработку веб-приложения.  Чтобы собрать датасет и использовать этот массив данных в дальнейшей работе, нужно было собрать и установить оборудование для постоянного доступа к конвейерной линии. А для монтажа камеры и доступа в сеть извне требовалось решить инфраструктурные задачи — учесть требования производства, класс материалов и защиты,радиосовместимость и прочее. Мы должны были учесть требования взрывобезопасности на производстве, найти оптимальное место расположения, продумать как закрепить и обезопасить устройство. Камеру глубины поместили в герметичный металлизированный корпус и закрепили на кронштейнах.Валерий Ковальский, Hardware/TeamLead в rdl by red_mad_robot Камеру в защитном корпусе установили на специальном кронштейне. Итак, на конвейерной линии установили и подключили 3D-камеру. На этом этапе команда столкнулась с трудностями. 3D-камера использует карту глубины, из-за чего размер 10-минутного видео равен ≈ 10 Гб. Локальная сеть на производстве не передавала такие тяжелые файлы, поэтому каналы передач и нейронную сеть нужно было оптимизировать. Использовали релевантные фотографии. На этапе MVP установили оптический датчик, который позволил делать снимки непосредственно перед закрытием коробки на конвейере. Пока собирали датасет, ни один баллон не выпал. Такая редкая повторяемость «инцидента» определилось как случайное событие, которое может произойти или не произойти. Это усложняло обучение нейронной сети. Воссоздали (смоделировали) реальную ситуацию.  К работе привлекли 3D-дизайнера Михаила Мартьянова. Он создал модель, воспроизвел реальную ситуацию и смоделировал сцену с нужных ракурсов. Методом генерации на выходе точно имитировали снимки выпадения в режиме реального времени.  Эта трудозатратная работа позволила идеально воссоздать нужную ситуацию, чтобы обучить нейронную сеть.  Синтетические данные — это данные, которые были получены в результате моделирования реальных объектов, их свойств с помощью компьютерной графики. Разработанная система в автоматическом режиме генерирует, создает изображения, подобные настоящим. Дополнительно она размечает нужные нам объекты по заданным правилам. Кроме этого программа умеет накладывать шумы, делать цветокоррекцию и имитировать хроматические аберрации (искажения), которые свойственны линзам в реальном мире. Этот подход позволяет не только продолжать обучение нейросети при нехватке вручную размеченных датасетов, но и в целом ускорить процесс развития проекта Михаил Мартьянов, графический дизайнер, специалист 3D-моделирования сцен для создания синтетического датасета При помощи синтетического датасета обученная нейронная сеть стала видеть все больше случаев выпадения баллонов.  Параллельно вели работы по фронтенду — создавали публичную часть веб-приложения, которая показывала пользователю реальную ситуацию и давала взаимодействовать с системой.  Веб-приложение должно быть развернуто в локальной сети с доступом только с рабочих компьютеров. Клиентская часть состоит из интерфейсов: поддержка авторизации пользователей в системе; установки количества баллов для производственной линии (для оператора); формирования отчета о некомплекте для руководителя. Фронтенд- и бэкенд-специалисты начали разработку веб-сервиса. Спроектировали архитектуру аппаратной части системы, изготовили и установили оборудование, создали полную версию веб-приложения, дообучили нейронную сеть Перед тем, как создавать модуль для управления конвейером и сигнализации, разработали архитектуру. Часто сталкиваюсь с нетривиальными проектами, которые требуют нестандартных решений. Этот опыт позволил относительно быстро сформировать рабочую документацию на этот проект, подобрать оборудование, необходимое для его реализации, произвести нужные настройки. Валерий Ковальский, Hardware/TeamLead в rdl by red_mad_robot В рамках разработки аппаратной части системы сконструировали контроллер, содержащий  аналоговую плату и мини-ПК.  Все оборудование смонтировали в шкаф управления. Аналоговая плата функционирует так: принимает физический сигнал от оптического датчика при прохождении короба с баллонами по конвейеру; формирует команду в камеру для фотофиксации. А так работает мини-ПК: принимает сигнал от оптодатчика в цифровой форме; отдает сигнал камере для фотофиксации; передает фотоснимки в нейросеть (на сервер); передает сигнал на остановку конвейера от нейросети в аналоговую плату. В процессе монтажа установили кнопку блокировки и деблокировки — если нужно остановить или запустить конвейер. Установили оптический датчик с фотодетектором, который делал снимки в нужный момент времени, а данные с камеры обрабатывал сервис аналитики.  Тут тоже не обошлось без сложностей, но их удалось успешно решить.  Исходный вес кадров был слишком велик для локальной сети, поэтому их потребовалось сжимать и оптимизировать.  Для анализа нужны были только релевантные кадры. Было важно сократить время между фиксацией кадров с «дефектными» коробами и остановкой конвейера.  До начала проекта при получении команды от нейронной сети временное ограничение для остановки конвейера составляло 0,5 сек. Наша команда добилась снижения этого показателя до рекордных 0,1 сек. На этом этапе мы закончили работы по разработке веб-сервиса — решили задачи по управлению интерфейсом конвейера, системе ролей и доступов, аутентификации и настройке событий.  Главная страница отражает информацию  о конвейерах в системе, количестве выпадений за сутки и числе остановок. В таблице выводится отчет о работе каждого конвейера. Оператор имеет право чтения, а права на редактирование и настройки таблицы есть только у администратора. Реализовали возможность автокалибровки — автоматического распознавания продукции, т.е. система сама определяет разные формы и количество баллонов. Внутри программы создали систему рассылок — отчетов на электронную почту обо всех случаях выпадения баллонов и некомплектах коробов. Можно настроить периодичность для автоматической рассылки или делать ее по инициативе администратора. В веб-сервисе можно посмотреть фотографии каждого выпадения, узнать точное время происшествия, данные оператора, который реагировал на ситуацию, и посмотреть лог системных ошибок. В конце этапа MVP подключили оборудование и успешно проверили его.  Точность распознавания обученной нейронной сетью случаев выпадения баллонов составила 99%. Команда rdl by red_mad_robot разработала комплексную систему компьютерного зрения для предотвращения недокомплекта на производстве.  Короб с баллонами движется по конвейеру, а система считает количество предметов. Если баллонов не хватает или границы предметов выходят за допустимые параметры (например, коробка потеряла форму), то линия останавливается. Оператор получает сигнал о внештатной ситуации и реагирует — формирует коробку правильной формы с нужным содержимым.  Это готовое решение, которое можно сразу применить на любых конвейерных производствах. Систему можно масштабировать на необходимое количество конвейерных линий. Модель протестировали и запустили на одной конвейерной линии. С января 2022 года систему мониторинга планируют расширить на пять производственных конвейеров АО «Арнест». Компьютерное зрение помогает компьютеру видеть и извлекать информацию, анализировать образы.  Эта технология умеет мгновенно «выхватить» брак, незаметный человеческому глазу, и существенно сэкономить время на его устранение.  Систему можно использовать на любом конвейерном производстве-упаковщике штучной продукции с возможностью доработки под конкретные параметры, например: В пищевой промышленности для упаковки взбитых сливок в баллонах, чая, кофе в фигурных банках с неустойчивым дном.  На заводах алкогольных и безалкогольных  напитков с последующей упаковкой в картонные коробы. Жестяные банки энергетиков, газированных напитков имеют конструкционные особенности — вогнутое  дно. Также в  пластиковых формованных бутылках дно изготавливается в форме нескольких объемных арок, что провоцирует падение на конвейере при упаковке.  На парфюмерных и косметических фабриках. В процессе упаковки продукции в баллонах — пены для бритья, мусс для умывания  в виде аэрозольной пены, дезодоранты и антиперспиранты, шампуни, уходовые средства в фигурных пластиковых упаковках, кремы, помады в тубах, блески для губ и др. В химической промышленности (с учетом специфики производства). Лакокрасочные товары в аэрозольных баллонах, строительная, монтажная пена.