В мире логистики и грузоперевозок огромное значение придается сохранности груза. Склады обязаны обеспечить целостность и сохранность груза во время хранения, так как любые повреждения влекут за собой потерю доверия клиентов и ощутимые штрафы. Эта проблема решается качественной инспекцией груза и ведением отчетности о его состоянии, — процесс, который можно облегчить с помощью искусственного интеллекта.
Когда заказчик обратился к нам с задачей разработать систему для автоматизации процесса приемки грузов на склад, основными требованиями к системе были:
фиксировать поступление грузов на склад;
определять тип упаковки;
выявлять дефекты и повреждения на поверхности грузов;
измерять габариты и вес объектов;
подсчитывать количество грузовых мест;
вести отчет о принятом грузе и перечне повреждений.
Используя технологии компьютерного зрения и машинного обучения, мы смогли создать систему автоматизированной инспекции груза, соответствующую всем указанным требованиям. И в данной статье мы расскажем о ней подробнее.
Стенд
Инспекция груза проводится с помощью прямоугольной металлической конструкции, которую мы называем «стенд». На вершине каждой из сторон стенда закреплены камеры, обеспечивающие круговую съемку. Посередине конструкции установлены весы для взвешивания груза.
Когда на склад поступает новый груз, его размещают на весах и взвешивают, пока камеры делают снимки с каждой стороны. На экране стенда отображается информация о статусе выполнения операций системы (например: установка груза, сбор данных, снятие груза с весов).
Для правильной работы системы работник склада должен следовать сигналам на экране. Собранные данные затем сохраняются в системе и связываются с уникальным QR-кодом груза. После сбора и обработки данных груз снимают с платформы весов, и процесс инспекции на этом заканчивается.
После инспекции в карточке груза будет храниться информация обо всех его внешних дефектах, типе его упаковки, габаритах, весе и количестве грузовых мест в его составе.
Разработанная нами система обеспечивает:
Круговой обзор (360°) груза: фотофиксация груза с помощью камер.
Определение веса: взвешивание каждого груза для точного учета.
Нахождение дефектов: система обнаруживает и классифицирует повреждения на упаковке или самом товаре.
Определение габаритов: измерение размеров груза (длина, ширина, высота) с точностью до нескольких сантиметров.
Определение типа упаковки.
Считывание QR-кода, штрих-кода и Data Matrix для уникальной идентификации грузов в любых ERP-системах заказчиков.
Расчет количества грузовых мест: определение количества отдельных единиц внутри партии груза.
Хранение карточек груза: система автоматически собирает и хранит все данные о грузах в едином формате, что позволяет быстро получить необходимую информацию.
Автоматическая генерация отчетов: cистема автоматически формирует подробные отчеты о состоянии каждого груза.
Мы использовали:
Label Studio — интерфейс для работы модератора с открытым исходным кодом.
Datapipe — ETL с автоматическим трекингом зависимостей данных, с помощью которого производится интеграция новых данных и обучение модели.
YOLOv5 – YOLOv8 — модели компьютерного зрения, используемые в проекте для детекции и сегментации.
Django Administration — интерфейс администратора с открытым исходным кодом.
Начало: обучение моделей
Главным вызовом в создании нашей системы стала работа с данными. Компания стремительно развивается, устанавливая стенды на складах новых клиентов. С каждым новым клиентом будут появляться новые виды упаковок и дефектов, требующих распознавания. Мы осознавали, что наши модели должны будут становиться «умнее», чтобы выполнять работу правильно. А значит, нам необходима гибкая система, способная адаптироваться к постоянным изменениям, обучаясь на новых данных.
Для решения этой задачи мы выбрали ETL-библиотеку Datapipe, которая легла в основу нашего пайплайна обучения благодаря своим уникальным возможностям: трекингу зависимостей и инкрементальной обработке данных. С ее помощью мы проводим дообучение наших моделей на новых данных.
Трекинг зависимостей определяет, какие именно данные подверглись изменению, а инкрементальная обработка данных позволяет Datapipe обрабатывать только новые или обновленные данные и тем самым снижает нагрузку на систему и ускоряет работу пайплайна.
Инспекция груза: как это работает
Пайплайн обработки данных системой выглядит так:
Сбор данных: взвешивание и фотосъемка груза.
-
Изображение груза загружается в пайплайн системы и проходит обработку в двух независимых друг от друга блоках моделей:
Сегментация: определение типа упаковки и границ груза.
Детекция: поиск дефектов.
Объединение результатов обработки: результаты сегментации и детекции объединяются для получения полной картины состояния груза.
Обработка данных: анализ результатов сегментации и детекции груза для дальнейших расчетов.
3D-визуализация: система использует снимки груза для построения его трёхмерной модели.
Определения габаритов груза и подсчет грузовых единиц. На основе 3D-модели система рассчитывает размеры груза и количество грузовых единиц.
1. Сбор данных
Когда груз поступает на склад, его идентифицируют путем сканирования QR-кода, и все дальнейшие данные: вес, тип упаковки, габариты, дефекты и так далее, — будут привязаны к этому коду. Так мы контролируем информацию о грузе на каждом этапе его обработки и транспортировки.
После взвешивания и фотосъемки изображения груза поступают в систему и отображаются на экране интерфейса администратора. Изображения обрабатывают двумя независимыми блоками моделей: для сегментации груза и для детекции дефектов.
2. Сегментация груза
После загрузки изображений в пайплайн системы, их подвергают обработке моделью сегментации, чтобы определить тип упаковки груза: картонные коробки, рулоны, деревянные ящики и так далее, — всё это называется классами упаковки.
Основные классы упаковки делятся на микрокрассы и макроклассы.
Микроклассы упаковки:
«Картонные коробки»;
«Другое»;
«Мешки»;
«Без упаковки»;
«Деревянные ящики»;
«Бочки»;
«Рулоны»;
«Деревянная обрешетка».
Макроклассы упаковки:
«Покрытые пленкой картонные коробки»;
«Покрытые пленкой мешки»;
«Покрытые пленкой деревянные ящики»;
«Покрытые пленкой бочки»;
«Покрытые пленкой деревянные обрешетки»;
«Покрытые пленкой рулоны».
Посредством сверточных нейронных сетей YOLOv8 разбивает изображение на небольшие участки и обрабатывает их с помощью специальных фильтров. Эти фильтры ищут простые признаки, например края, углы или текстуры, которые могут помочь распознать, что изображено на участке.
После того как сеть проанализировала все участки изображения и выделила важные признаки, она определяет, какие части изображения относятся к разным классам упаковки.
3. Детекция дефектов
На этапе детекции система ищет дефекты на упаковке, такие как повреждения, разрывы или деформации. Для этого используем технологию компьютерного зрения YOLOv5. Мы обучили модели используя более семи тысяч изображений разных дефектов.
На данный момент система распознает следующие дефекты:
«Порвана пленка — дырка»;
«Порвана пленка — болтающиеся куски»;
«Открыто — щель в грузе»;
«Открыто — пленка не закрывает груз сверху»;
«Порвано»;
«Проткнуто»;
«Замятый мешок»;
«Замятая коробка»;
«Подозрение на недостачу»;
«Подозрение на недостачу — нестандартное число грузов в верхнем ряду»;
«Сломана паллета»;
«Мокро».
Во время обработки изображения YOLOv5 разбивает его на множество небольших участков и для каждого из них определяет:
Bounding box (bbox) — координаты границ дефекта на изображении;
Class — тип дефекта;
Score — вероятность того, что найденный дефект относится именно к этому классу.
Наши модели детекции и сегментации работают независимо друг от друга. Мы знаем, как выглядит упаковка груза и знаем, какие дефекты имеются на грузе. Но мы хотим знать, где именно на поверхности груза расположены дефекты. Для этого система объединяет результаты прогнозов двух моделей, совмещая информацию о классе упаковки с координатами обнаруженных дефектов. То есть координаты дефектов отправляются в координатную систему для дальнейшей обработки и синхронизации с данными сегментации. Сопоставив координаты, система определяет точное расположение дефектов на поверхности груза.
4. Определение габаритов груза и количество грузовых единиц
Для определения размеров груза создается 3D-визуализация объекта на основе его изображения. У нас есть изображение после сегментации с размеченным контуром груза (полигоном), а также информация о глубине для каждой точки, то есть о расстоянии от камеры до объекта. Используя эти данные и вектор трансформации, мы можем построить 3D-модель объекта в несколько шагов:
Калибровка камеры. Для начала нам нужно откалибровать камеру. Для этого на стенде устанавливаются ArUco-маркеры с известными 3D-координатами (например, на полу их Z-координата равна нулю). Эти маркеры помогают связать 2D-координаты изображения с реальными координатами в пространстве. Система находит ArUco-маркеры на изображении, определяет их местоположение в координатной системе изображения и использует эти данные для того, чтобы откалибровать камеру.
Преобразование координат. Для каждой точки изображения, где известна глубина, система преобразует 2D-координаты в 3D с помощью вектора трансформации, который был рассчитан при калибровке камеры. Вектор трансформации — это набор параметров, который позволяет преобразовать координаты из системы координат камеры (СК камеры) в мировую систему координат (СК мира). Если глубина некорректна (например, равна 0), точка не используется.
Создание облака точек. После того как все точки на изображении были преобразованы в трёхмерные координаты, они формируют облако точек — набор пространственных координат (X, Y, Z), которые представляют трёхмерную форму груза. Это облако точек отражает внешние контуры объекта и его форму.
С помощью фильтрации и обработки 3D-облака точек система определяет габариты груза. Сначала она выбирает только часть точек, чтобы облегчить расчеты. Затем удаляет те точки, которые находятся слишком далеко друг от друга или выходят за пределы нужного периметра. После этого система корректирует положение груза, чтобы точно измерить его по осям. В конце она убирает лишние данные и вычисляет размеры по самым крайним точкам.
Для подсчета количества грузовых единиц система сравнивает и объединяет данные с нескольких камер. Она анализирует ограничивающие рамки вокруг объектов и отслеживает их движение, чтобы понять, какие объекты на разных изображениях — это один и тот же груз. Таким образом, система точно подсчитывает количество грузов.
5. Контроль качества и дообучение моделей
Сфера логистики и складских услуг постоянно предъявляют новые требования моделям машинного обучения. По мере роста компании растет и число ее клиентов, а вместе с ними и типы упаковок и дефекты, которые нужно распознавать системе. В таких условиях модель, обученная только на старых данных, начинает «теряться», выдавая неточные результаты.
Решением этой проблемы является дообучение модели. То есть готовую модель обучаем на данных о новых видах дефектов или упаковок. Для этого мы используем Datapipe — ETL-библиотеку, с помощью которой система легко и просто обрабатывает новые данные. Благодаря инкрементальной обработке, Datapipe «видит» новые или изменившиеся данные и аккуратно добавляет их в общий массив, не затрагивая незадействованные участки данных. Это всё равно что обновлять коллекцию фотографий, просто добавляя фотографии, вместо того чтобы перефотографировать весь альбом.
Для контроля качества работы нашей системы инспекции мы создали процесс мониторинга и регулярного дообучения моделей. Он состоит из нескольких этапов:
Сбор данных. Наша компания располагает сетью стендов, которые установлены как у клиентов, так и в нашей лаборатории. Эти стенды непрерывно собирают данные для анализа.
Еженедельный анализ. Каждую неделю специалисты просматривают все собранные данные и ищут любые ошибки и отклонения в работе моделей. Это позволяет нам вовремя заметить проблемы и принять меры.
-
Идентификация ошибок. Во время анализа мы выделяем ошибки, которые могут повлиять на точность моделей. Обычно они делятся на несколько основных типов:
Неточные размеры: модель ошибается в определении размеров объектов.
Недостаточная детекция дефектов: модель не распознает все возможные дефекты.
Ошибки сегментации типов грузов: модель путает разные типы грузов и неправильно их классифицирует.
Маркировка данных. Все найденные ошибки мы отмечаем специальными тегами. Это помогает структурировать данные и подготовить их для дообучения.
Дообучение моделей. После того как все ошибки размечены, мы используем эти данные для дообучения моделей.
Процесс дообучения позволяет адаптировать модель под специфические условия или задачи, которые не были охвачены в исходной обучающей выборке. Например, один из клиентов заказчика использует зеленые транспортировочные паллеты для перевозки грузов. Изначально модель не обучалась находить их, но благодаря системе дообучения это достаточно легкий процесс. Когда мы добавляем эти новые данные, Datapipe автоматически обновляет модель.
Оценка качества. После дообучения модели проходят повторный мониторинг, чтобы оценить улучшения и гарантировать их устойчивость в работе.
Этот циклический процесс помогает поддерживать высокое качество работы моделей и своевременно устранять возникшие проблемы.
6. Метрики качества моделей
Для оценки производительности модели необходимо регулярно анализировать её ключевые метрики. Для этого рассчитывают следующие показатели:
Precision и Recall — для оценки точности и полноты детекции объектов.
F1-score как гармоническое среднее Precision и Recall показывает, насколько точно и полно модель распознаёт данные. Чем ближе значение к 1, тем лучше работает модель.
Взвешенный (weighted) и макро (macro) F1-score — для общей оценки работы модели: взвешенный F1-score учитывает частоту каждого класса, показывая, как модель справляется с каждым из них, а макро F1-score оценивает точность по каждому классу независимо от их частоты.
Для мониторинга метрик мы используем платформу Metabase. Она удобна в использовании и прекрасно подходит, чтобы отслеживать показатели качества работы моделей в динамике.
Обратите внимание на рост графика «зеленые паллеты» после этапа дообучения: показатель F1-score сразу же вырос до 0,7–0,8, что свидетельствует об эффективности подхода и высокой производительности моделей.
Преимущества автоматизированной системы инспекции груза
1. Объективность
Человек субъективен в своих суждениях, а также подвержен таким факторам, как усталость и невнимательность, что влияет на качество проводимой им проверки. ИИ-система применяет единые стандарты и критерии оценки к каждому грузу. Она анализирует груз строго на основе полученных данных и настроенных параметров, тем самым минимизируя риск ошибок или нарушений безопасности.
2. Экономичность
Несмотря на первоначальные вложения в оборудование и настройку автоматизированной системы, в долгосрочной перспективе она оказывается более выгодной, чем использование человеческого труда. Ее внедрение сокращает затраты на обучение персонала, минимизирует ошибки и снижает вероятность простоев из-за человеческого фактора. Также система легко масштабируется.
3. Безопасность
В некоторых отраслях грузы могут содержать опасные материалы, представляющие угрозу для здоровья. Особенно это актуально при работе с химикатами и легко воспламеняющимися веществами. Малейшее повреждение упаковки в таких случаях может привести к серьезным последствиям. Поэтому автоматизированная проверка грузов гораздо безопаснее, чем осмотр вручную.
Заключение
Наша команда успешно справилась с поставленными задачами и создала систему автоматизированной инспекции груза. С помощью компьютерного зрения и машинного обучения наша система собирает все необходимые данные о грузе и формирует отчет о его состоянии. А постоянное дообучение моделей позволяет системе работать стабильно и адаптироваться под новые требования заказчиков.
Благодарим команду разработчиков, воплотивших проект в реальность:
Андрей Татаринов, СЕО и СТО epoch8.co и AGIMA.AI.
Инженерная команда: Арсений Корягин, Александр Козлов, Дмитрий Лесничий, Тимур Шейдаев, Ренат Шакиров, Лев Евтодиенко, Александр Коротаевский.
leon-mbs
перцептроны используются давно прсто до этого хайпа никто не лепил каждый раз приставку ИИ. все остальное обычная логика которую выполняла любая серьезная програма логистики еще до хайпа вокруг ИИ