{"id":14285,"url":"\/distributions\/14285\/click?bit=1&hash=346f3dd5dee2d88930b559bfe049bf63f032c3f6597a81b363a99361cc92d37d","title":"\u0421\u0442\u0438\u043f\u0435\u043d\u0434\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f","buttonText":"","imageUuid":""}

Видеоаналитика для контроля складских операций на основе ИИ - склад под присмотром “большого брата”

Рассказываем как наша ML-команда из Nord Clan работала над MVP-версией системы складского учета на основе машинного зрения и нейронных сетей.

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

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

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

Перед стартом любой подобной разработки мы в первую очередь стараемся понять логический смысл работы будущей программы — какие бизнес-задачи она помогает решить и для чего предназначена. Это позволяет без раскачки быстро вникнуть в суть проекта и сразу увидеть возможные “подводные” камни. А лучше всего об этом можно узнать при личном посещении объекта.

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

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

Рис. 1. Осматриваем склад.

Если одна из ячеек в процессе производства становится пустой – нужно это событие отметить в системе учета. Получив подобный сигнал — погрузчик срочно несется привезти запасы сырья с других складов. Если промедлить — производство может остановиться из-за отсутствия нужных компонентов.

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

О нюансах при разметке ячеек в видеопотоке.

Получив представление о работе склада, а также параллельно с этим засняв видеоматериалы, ML-команда Nord Clan начала чесать репу — как правильно разметить ячейки? На первый взгляд задача несложная, но возникло пару “нюансов”. Помните такой анекдот? 😀

Во-первых, из-за того, что продукция часто перемещается по складу, то нанесенная разметка периодически стирается. На некоторых участках от желтой границы не остается и следа.

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

Рис. 2. За паллетами не видны границы дальних ячеек.

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

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

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

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

Но всё-таки мы не стали использовать этот вариант, а выбрали более простое решение — добавить в настройки программы ручное выделение ячеек. На выходе получилась функция до боли знакомая пользователям, которые рисуют в Paint. Выбор был основан на срочности разработки и ограниченном бюджете на MVP-версию программы. Наш подход к решению задачи при этом полностью устроил Заказчика.

Рис. 3. Тестируем разметку ячеек в видеопотоке в гараже Nord Clan.

Идею удалось быстро реализовать. Все работало идеально. Но ровно до тех пор, пока в один прекрасный вечер кто-то не сдвинул камеру и наша разметка ячеек «уплыла” в сторону. Чтобы подобных »сюрпризов” не появилось уже в конечной версии программы — договорились с Заказчиком, что камеры видеонаблюдения должны быть закреплены на складе неподвижно.

Ячейка наполовину пустая или наполовину полная?

Ячейки разметили. Но появилось еще больше вопросов — как теперь определить пуста ли ячейка? Например, рассмотрим подобные случаи:

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

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

Для решения первой задачи мы уже никак не могли обойтись без использования искусственного интеллекта. Нейронную сеть мы обучали на реальных видео со склада, отснятых при первом посещении предприятия. Дополнительно подключили для тестирования и отработки правильности ее работы — наш гараж. В него, кто сколько смог, принесли из дома разные упаковки — пустые мешки, емкости и т. п. Нейросеть успешно их игнорировала и определяла, что ячейка пуста. Это был успех!

Вторую задачу можно было решить несколькими способами. Наиболее простой – методом сравнения площадей. Допустим, если 51% поверхности поддона располагается в ячейке А, а 49% — в соседних, то логично его и отнести к ячейке А. Но так как разметка в программе наносится вручную, то для повышения точности соотнесения мы использовали более сложный алгоритм на основе решения «задачи коммивояжёра».

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

Также учитываются моменты, когда алгоритм может ложно сработать. На практике мы заметили, что погрузчик, меняя пустой поддон на полный, может производить множество манипуляций «расчищая» себе путь к нужной ячейке. Наглядно этот момент представлен на рис. 4. Чтобы добраться до пустой ячейки А, необходимо сначала переместить товар из соседнего слота Б в слот С, освободив проезд. На короткий промежуток времени возникают ложные события:

- ячейка Б стала пустой, хотя фактически это не так;

- ячейка С стала полной.

Рис. 4. Пример ложного срабатывания.

Подобные события возникают достаточно часто, поэтому в этом моменте и вернулись к алгоритму статистического накопления. Раз в 5 минут программа проверяет пустующие ячейки и если при 3 вычислениях ячейка сохраняет свое состояние, то данные передаются по API в систему учета предприятия.

Разработка завершена. Пора проверять как все работает на практике.

Объединив все алгоритмы под одной крышей — MVP-программой — мы поехали устанавливать систему на склад.

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

Рис. 5. Схема расположения камер на складе.

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

И все заработало!

Рис. 6. Работа системы видеоналитики на складе.

На данный момент решение уже, конечно, успешно протестировано и работает. Заказчик остался доволен MVP-версией. А нам еще раз приятно было вспомнить о наших трудах. И кто знает, где и на каком складе в следующий раз потребуются услуги “большого брата”.

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

0
Комментарии
-3 комментариев
Раскрывать всегда