126 банок в ряду, 1012 — на паллете: как мы внедрили подсчет банок в реальном времени для компании «Вастега»

  • Банки

Заказчик

Компания «Вастега» — белорусский производитель консервированных овощей, грибов и маслин. Каждый год предприятие выпускает 70 миллионов банок с продуктами, которые продаются в 17 000 торговых точек России и Белоруссии. Продукция компании стоит на полках магазинов X5 Retail Group, Ашан, Монетка, Магнит, Пятерочка, Перекресток, Окей, Дикси, Светофор, Метро, Лента.

Задача

Внедрить автоматический подсчет банок на паллетах с помощью видеокамер.

Результат

Видеосчетчик помогает операторам точнее контролировать количество банок на паллетах и снижает процент ошибок во время упаковки.

  • Банки

Содержание

Ситуация

Упаковка продукции на производстве автоматизирована. Станок привозит банки на поддон и ставит в несколько рядов. Но иногда магнитная головка станка не цепляет одну-две банки. Например, железная крышка не успела примагнититься, и весь ряд уехал, а банка осталась. Тогда на поддоне оказывается меньше банок, чем должно. Если оператор не заметил вовремя пустое место, ряд закрывается картонкой, сверху добавляются следующие слои и в итоге упакованная паллета уезжает в «Ашан» или «Пятерочку». И уже в магазине на приемке товара обнаруживается недостача.

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

Задача

Заказчик обратился к нам, чтобы автоматизировать подсчет банок на паллетах с помощью видеокамер. 

На производстве операторы следят за количеством банок на паллете. Видеоподсчет должен упростить их работу и помочь точнее контролировать количество продукции в каждом ряду.

Решение

Перед началом проекта мы попросили заказчика прислать на WhatsApp видео с производства. Это стандартный шаг: чтобы настроить программу и показать клиенту тестовый результат, нужна реальная 30-секундная запись. Однако, получив видео, мы засомневались, получится ли справиться с задачей.

Олег Халилов, руководитель проектов

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

Тестовый подсчет до старта проекта

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

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

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

Проверочное видео с тестовым подсчетом банок. Синяя рамка — зона подсчета. Когда магнитная плита уезжает влево, алгоритм начинает считать продукцию по мере ее появления в кадре

Внедрение видеосчетчика и обучение нейросети

Установка видеосчетчика проходила в несколько этапов. Заказчик установил камеры над зоной подсчета и записал ролики с движением продукции. Мы взяли кадры из видео, разметили их и обучили нейросеть распознавать банки.

Разметка объектов — трудоемкая, утомительная и скучная работа. Но и самая важная, потому что благодаря ей машина научилась отличать поддоны от банок.

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

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

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

Непредвиденные сложности

Кроме неподвижных банок в кадре, были и другие сюрпризы на проекте.

Обнуление счетчика

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

Поддон наполняется банками примерно за 10 минут. В одном ряду стоит 126 или 127 банок — в зависимости от слоя. Всего слоев на паллете собирается 8, а банок — 1012. Считать количество банок нужно в каждом ряду. Когда поддон заполняется и уезжает, счетчик должен обнуляться. Заказчику не нужны исторические данные о посчитанных изделиях в прошлом месяце. Ему нужно начинать подсчет заново каждые 10 минут.

Обычно для такой задачи используют QR-код. Сотрудник показывает в камеру лист А4 с кодом и счетчик сбрасывается.

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

С помощью QR-кода мы хотели настроить обнуление счетчика. Но потом отказались от этой идеи и пошли другим путем

Однако решение оказалось крайне неудобным:

— у сотрудников и без того большая загрузка, они могут банально забыть про картонку;

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

В целом картонка с кодом выглядела лишней на производстве. Тогда мы пошли другим путем. В алгоритм нейросети к классу «Банка» добавили класс «Поддон» и научили его определять пустые паллеты. В результате QR-коды стали не нужны. Теперь, как только в кадре появляется новый поддон, алгоритм его распознает и обнуляет счетчик.

После обучения нейросеть научилась понимать, что большой желтый квадрат — это пустой поддон. Если он есть в кадре, счетчик сбрасывается

Ложные срабатывания

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

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

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

Нейросеть спутала крепеж с продукцией и посчитала его за отдельную банку

Тот же крепеж, прикрытый квадратным колпачком. Алгоритм не сбивается

Коварный гофрокартон

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

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

Вместе с Александром, сотрудником заказчика, мы записывали специальные постановочные видео. Александр ставил банки на картон в разных местах, двигал их палкой вправо-влево, а мы делали скриншоты и дополнительно обучали алгоритм.

Два оттиска внизу на картоне алгоритм принял за банки и тоже посчитал

Чтобы исключить ошибки, мы снимали постановочное видео с разными банками, расставленными в хаотичном порядке…

…и заново обучали нейросеть распознавать продукцию

Результаты

Видеосчетчик помог операторам не пропускать неполные ряды банок и снизить количество ошибок во время упаковки.

Команда. Проект реализовали 2 человека: ИТ-специалист на стороне заказчика и специалист Neti.

Стоимость. В ценах декабря 2023 года ориентировочная смета проекта выглядит так:

Компьютер с видеокартой — 100 тысяч рублей

Две видеокамеры — 19 тысяч рублей

Телевизор 50 дюймов в цех — 27 тысяч рублей

Гонорар Neti — 70 тысяч рублей

Итого: 211 тысяч рублей

Срок. Около месяца прошло от первого общения с заказчиком до внедрения счетчика на производстве.

Олег Халилов, руководитель проектов

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

Проект компании «Вастега» был нестандартным. Много времени заняла разметка, эксперименты с QR-кодами и решение непредвиденных сложностей. Опираясь на полученный опыт, сегодня мы бы сделали его быстрее: от одной до двух недель.