Мы разработали, собрали и интегрировали в операционные процессы складов Ozon устройства для измерения габаритов и веса товаров. Об этом мы писали ранее. Но к идее создания своего решения пришли не сразу.
Как мы пришли к идее создания решения
Зачем вообще надо проверять размеры товаров на складе?
Сотрудники каждого склада, которые хотят выстроить логистические процессы оптимальным образом, должны знать фактические габариты и вес товаров, которые хранятся на его площадях. Совокупность габаритов и веса товара в Ozon называют объёмно-весовыми характеристиками (ОВХ).
Данные об ОВХ товара в системах Ozon первоначально появляются в его карточке, их вносит продавец. Они могут не соответствовать фактическим значениям по многим причинам. Например, крупные продавцы не могут в полной мере обеспечить качественную проверку ОВХ огромного количества товаров. Да и пресловутый человеческий фактор при заполнении карточек никто не отменял.
Маркетплейс на основе этой информации определяет комиссию, формирует задания на размещение товара на складе, оценивает совокупный объём занятого пространства в зоне хранения, планирует загрузки автомобилей и пр. На каждом этапе движения товаров их фактические ОВХ являются важной метрикой.
Проблема некорректных ОВХ в системах Ozon была очень актуальна. А если принять во внимание размеры складов, количество хранимых товаров, широкую географическую сеть объектов компании, то решение этой проблемы становилось критически важным для обеспечения эффективной работы всего маркетплейса.
Но как построить прозрачный, эффективный и точный процесс определения фактических ОВХ разных товаров? Измерять их линейкой и вносить данные в систему вручную — неэффективно, долго, дорого и не особо прозрачно. Поэтому первым шагом нашей команды был анализ возможностей и способов решения проблемы с помощью продуктов, уже существующих на рынке.
Шаг 1. Анализ измерителей на рынке
Изначально задача не казалась сложной, и мы были уверены, что найдём готовое решение. Но все устройства, которые мы находили, не подходили нам по тем или иным критериям.
Критерии, которыми мы руководствовались при выборе решения для измерения ОВХ товаров:
-
Стоимость
Всё банально: чем дешевле стоимость решения, тем больше складов мы сможем оборудовать измерителями при ограниченном бюджете на реализацию проекта. Это важный критерий, но не основной.
-
Скорость измерения
Чтобы понять важность данного критерия, нужно ответить на вопрос: «На каком этапе необходимо проверять фактическое значение ОВХ товара?». Контроль ОВХ необходимо проводить в момент приёмки товаров на складе — до того, как они начали своё движение по цепочке операций на складе. На всех этих этапах важно оперировать реальными габаритами и весом товара.
Скорость приёмки товара — одна из ключевых метрик производительности склада, поэтому важно не тормозить этот процесс. При этом нам достаточно измерить только один экземпляр из поставки товаров одного артикула.
-
Погрешность измерения
На складах Ozon хранятся товары разных габаритов и веса — от наклеек до холодильников. Все они должны быть измерены как можно точнее, так как от этих данных зависят размер комиссии продавца и издержки компании.
-
Простота использования
Интерфейс устройства должен быть простым и интуитивно понятным для работников склада. Работа с устройством должна занимать как можно меньше времени и требовать минимального количества манипуляций.
-
Возможность измерения товаров любых размеров, геометрической формы и из любых материалов
На складах Ozon хранятся абсолютно разные товары — по форме, плотности, материалу и цвету упаковки. Необходимо иметь возможность измерять любой товар с максимальной точностью. Это один из важнейших критериев выбора измерителя.
-
Доступность на рынке, поддержка и техническое обслуживание во время эксплуатации
Устройство должно быть представлено на российском рынке, на данный момент с этим могут возникнуть сложности. Наличие запасных частей, поддержка и техническое обслуживание также были важными критериями при принятии решения. Это сужает количество возможных поставщиков и выбор устройств для масштабного внедрения в производственные процессы компании.
-
Простота интеграции в инфраструктуру компании
Измеритель мало купить, привезти на склад и подключить к сети — необходимо также настроить интеграцию со складскими сервисами, отслеживать состояние устройства и собирать метрики.
Примеры устройств для измерения ОВХ товаров
Ниже рассмотрим типовые примеры устройств, которые представлены на рынке:
Выводы
-
Мы не нашли на рынке подходящего универсального устройства для измерения разных типов товаров. Возможность измерения любого типа товара – это самый важный критерий. Как мы видим, большинство устройств разработано преимущественно для измерения коробок. И найти измеритель, способный точно измерять ОВХ товаров сложной формы, с разной плотностью и разной консистенцией, в разных упаковках, нам не удалось. Примеры товаров: в упаковке из блестящей плёнки или прозрачного пакета, а также товары из разных материалов, например, из стекла или материала черного цвета.
-
У многих устройств в конструкции присутствуют подвижные элементы, что нежелательно. Их наличие усложняет и замедляет процесс измерения, что может приводить к ошибкам. В идеальном случае весь процесс измерения должен быть бесконтактным, занимать несколько секунд и не влиять на производительность операторов склада, так как от скорости измерения зависит их выработка. Любые манипуляции с устройством будут увеличивать продолжительность измерения и вероятность человеческой ошибки.
Таким образом, мы пришли к тому, что необходимо идти в разработку собственного решения. Оно должно уметь измерять все типы товаров, стоить не дороже устройств, представленных на рынке, измерять ОВХ с высокой точностью и скоростью. Как видно из результатов анализа рынка, наиболее подходящим вариантом для измерения товаров сложной геометрической формы является устройство, генерирующее цифровую трёхмерную модель предмета на основе технологий машинного зрения. Но у таких устройств есть сложности с измерением объектов из стекла, товаров в тёмной упаковке, которые мы хотели решить при разработке собственного измерителя.
Поэтому на следующем этапе мы проанализировали существующие технологии построения цифровых трёхмерных моделей объектов.
Шаг 2. Анализ технологий построения 3D-модели объекта
Создание цифровой трёхмерной модели объекта для определения его габаритов имеет ряд преимуществ в сравнении с другими методами измерения:
-
Более детальное представление объекта. Современные технологии позволяют захватывать до миллионов точек на поверхности объекта с очень высоким разрешением, фиксируя даже мельчайшие детали и нюансы формы. В результате получается достаточно точная цифровая 3D-модель.
-
Возможность проанализировать все поверхности объекта со всех сторон. Это актуально для товаров сложной геометрической формы.
Технологии, с помощью которых можно получить 3D-модель
1. Фотограмметрия
Фотограмметрия — это процесс создания трёхмерной модели по фотографиям. Фотограмметрия использует технологии Structure from Motion (SfM) и Multi-view Stereo (MVS).
SfM находит положение и ориентацию камеры для всех снимков, дополняя их 3D-координатами некоторых связующих точек, расположенных на объекте (feature points).
MVS выполняет последующую обработку после SfM. Используя полученные данные, MVS генерирует 3D-модель, что включает в себя создание плотного облака точек, расчёт карт глубины, создание и наложение текстуры.
Для получения качественной модели объекта необходимо сделать несколько десятков фото (чем больше, тем лучше). И каждая фотография должна хотя бы наполовину перекрываться другой. Обработка занимает много времени — она может длиться минуты и даже часы, а также должна выполняться на производительном вычислителе с достаточными ресурсами CPU, GPU и оперативной памяти. Поэтому этот процесс часто переносят в облако.
Также полученные результаты не имеют абсолютного масштаба. Чтобы алгоритму построить модель в правильном масштабе и просчитать размеры, нужно предварительно задать реальное расположение камер или сделать другие привязки различными маркерами.
Модель может быть получена с помощью вращения объекта на поворотном столе, но в таком случае нужно наложить на фото маску объекта, чтобы отбросить ненужные данные.
Для фотограмметрии существует множество как коммерческих продуктов (Agisoft Metashape, 3DF Zephyr, RealityCapture), так и бесплатных (COLMAP, Meshroom, OpenMVG).
2. Структурированный свет
Проектор излучает световые узоры (паттерны), которые деформируются при отражении от объекта. Затем одна или несколько камер распознают 3D-геометрию с помощью триангуляции, поскольку камера и проектор смещены друг относительно друга и это расстояние заранее известно.
Метод позволяет построить 3D-модель объекта с точностью до 0,005 мм. Но для этого нужны точно откалиброванные камера и проектор. Проектор должен фокусироваться на области измерения, а камера — получать чёткое изображение в высоком разрешении. Кстати, в недавней статье автор рассказал, как выжать максимум из своего 3D-сканера.
Существуют несколько разновидностей методов сканирования структурированным светом — от базовых до сложных: подсвет точками, линиями, кодированными последовательностями линий, синусоидами.
Самый простой пример — инфракрасный дальномер Sharp GP2Y0A4. В датчике установлен ИК-светодиод, который проецирует узкий световой луч. Отражённый луч проходит через линзу и попадает на приёмник. Проводимость фотоэлемента зависит от местоположения падающего на него луча.
Энтузиасты могут за копейки собрать 3D-сканер из веб-камеры, лазерной указки и поворотного стола (например, как тут). Однако сканирование на поворотном столе занимает несколько минут, а детализация ограничена тем, что используется одна лазерная линия.
А вот один из самых продвинутых подходов, для которого нужен полноценный проектор: phase-shifting method. Используется синусоидальное изменение яркости подсветки. Достаточно трёх изображений с разной подсветкой, чтобы восстановить глубину.
3D-сканеры, доступные на рынке, бывают ручные и стационарные с поворотным столом. И то, и другое мало нам подходит, так как мы хотим сделать максимально быстрый и автоматизированный процесс. К тому же, они обладают ограниченной зоной сканирования, которая может быть увеличена за счет сменных объективов.
Можно найти бюджетные модели до 100 000 рублей, такие как, например, Revopoint RANGE, но большинство систем непозволительно дорогие и сложные для того, чтобы использовать их массово. Их основное предназначение — CAD-моделирование и 3D-печать, где точность и детализация модели важнее скорости сканирования.
Также 3D-сканеры, работающие с помощью структурированного света, особенно чувствительны к бликам, глянцевым или очень тёмным поверхностям, прозрачным и полупрозрачным объектам. Для сканирования таких объектов их обрабатывают матирующим спреем.
Из других минусов: тяжёлой части с проектором и камерой у стационарных сканеров противопоказаны любые вибрации.
3. Стереозрение
Стереозрение — это метод создания трёхмерных изображений на основе двух камер, расположенных на некотором расстоянии друг от друга, что имитирует принцип работы человеческого зрения. Метод заключается в определении параллакса — разницы в положении объекта на двух снимках, вызванной разным углом обзора. Эта информация используется для восстановления глубины сцены.
Для успешной работы метода камеры должны быть выровнены и точно откалиброваны, чтобы минимизировать искажения и обеспечить максимально точное совпадение изображений.
Метод стереозрения имеет свои ограничения, например, сложности с восприятием гладких и однотонных поверхностей. Эту проблему помогает решить активная подсветка. Проецирование источником света псевдослучайного набора точек создаёт искусственные легкоразличимые особенности на поверхности объекта, значительно облегчая процесс сопоставления точек между парой изображений.
4. LiDAR и ToF-камеры
LiDAR — Light Detection and Ranging
ToF — Time-of-Flight
Принцип работы этих сенсоров основывается на измерении времени полёта света, но они используют разные методы генерации и обработки световых импульсов.
В LiDAR-камерах каждая точка измерения генерируется отдельным импульсом, тогда как в ToF-камерах один импульс используется для освещения всей сцены. Благодаря отдельным импульсам LiDAR-камера с такой же мощностью лазера, как ToF-камера, способна производить измерения с большего расстояния, но сканирование сцены занимает больше времени.
Принцип работы технологий получения карты глубины (технологии 2—4):
5. Глубинное обучение для 3D-реконструкции по фото
Новые исследования демонстрируют методы для 3D-реконструкции, основанные на глубинном обучении. Используются разные подходы, начиная от «улучшения» классической фотограмметрии до генерации модели по одной фотографии. Ещё один пример: метод ShAPO. На вход системе подаётся одно RGBD-изображение, и его достаточно, чтобы найти все объекты на сцене, определить их форму, текстуру и размеры.
Несмотря на эффективность, данная технология пока достаточно сырая и ее применение может быть рискованно. Например, если товара не было в обучающей выборке, то нет гарантии, что его 3D-модель будет сгенерирована корректно. Датасет с трехмерными представлениями сцены или отдельных предметов сложно собирать, поэтому есть проблема с размером обучающей выборки (для решения этой проблемы даже используют текстовые описания предметов, таким образом помогая определить их форму). Также многие методы для 3D-реконструкции с нейронными сетями работают медленно.
Выбор технологии
Нашими главными критериями при выборе технологии получения цифровой модели объекта были:
— скорость сканирования
— возможность работы со всеми типами объектов
— стоимость сенсорного модуля и вычислителя
— наличие готового SDK (как преимущество)
Исходя из описанных критериев можно сделать вывод, что стереокамеры наряду с ToF и LiDAR камерами являются наиболее подходящими технологиями для решения рассматриваемой нами задачи.
Мы решили начать эксперименты с технологии стереозрения, поскольку она лидирует по разрешению, требует небольших аппаратных ресурсов вычислителя и имеет невысокую стоимость сенсора, что делает её самой привлекательной из всех вышеперечисленных.
Можно найти готовые камеры, а можно попробовать собрать свой модуль. Поэтому мы:
1. Собрали собственную стереопару на основе двух промышленных камер Hikrobot MV-CA050-12UC. Выбор камер определялся их наличием в офисе.
2. Провели тесты стереокамеры Intel RealSense. Эти камеры не сложно купить и интегрировать, а для быстрого старта удобно использовать их собственный SDK.
Шаг 3. Эксперименты по получению 3D-модели объекта с помощью стереокамер
1. Своя стереокамера + нейросеть
Указанные выше промышленные камеры мы разместили на напечатанном пластиковом основании, которое установили на штатив.
Расстояние от камеры до объекта измерения составляло примерно 2 м. Фокус был настроен на бесконечность, а диафрагма установлена в минимально возможное (закрытое) положение.
Для построения карты глубины с помощью стереокамеры можно применить нейросети, которые есть в открытом доступе. Они могут справиться даже со сложными поверхностями предметов, когда обычные подходы не работают. Проведя несколько экспериментов с различными моделями нейронных сетей, мы выбрали IGEV-Stereo.
Результаты построения карты глубины этой нейросетью представлены на фотографиях ниже:
В текущий момент технология тестируется на различных конфигурациях камер и используемых фильтрах постобработки для достижения самой высокой точности измерения всех типов объектов. Дообучением нейросети мы не занимались.
Создание устройства на основе использования собственной стереопары не будет быстрым, так как потребует решения некоторых проблем на программном уровне. Например, размывание краёв объекта измерения. Также потребуется мощный вычислитель или GPU, что увеличивает общую стоимость прототипа.
Пример размывания краёв объекта измерения:
Учитывая результаты тестирования собственной стереопары, мы приняли решение все же сделать MVP на модуле из покупных стереопар с использованием SDK от производителя. У такого решения следующие преимущества:
1. Экономия времени на сборку и интеграцию первого прототипа на склад.
2. Возможность переключения со встроенного в SDK алгоритма расчета глубины на свой алгоритм, не меняя камер, в любой момент времени. Как следствие, это позволяет иметь больше возможностей в последующих доработках.
2. Стереокамера Intel RealSense
Оценив доступность и стоимость камер на рынке, мы приняли оптимальное, на наш взгляд, решение — использовать камеры Intel RealSense. Они просты в интеграции и настройке, а также имеют собственный SDK, поэтому они так популярны среди производителей устройств измерения ОВХ.
Мы остановились на стереокамерах Intel RealSense с IR-проекторами, а именно Intel RealSense D415 и D435.
Обе камеры имеют схожие характеристики и выдают изображение глубины с разрешением 1280х720. Но D435 имеет угол обзора примерно 90 градусов, тогда как угол обзора D415 меньше и составляет примерно 70 градусов. За счёт более узкого угла обзора D415 обеспечивает большую детализацию измеряемой области, из чего следует, что эта камера вычисляет расстояние в два раза точнее.
Таким образом, в итоге мы выбрали камеру Intel RealSense D415. Ее подключение не требует больших вычислительных ресурсов, а также для камеры есть удобный кроссплатформенный SDK.
В качестве вычислителя для разработки первого тестового устройства (MVP) взяли Raspberry Pi 4 Model B. Его производительности достаточно для несложных операций обработки изображений и расчета ОВХ, а еще там 4 USB порта, из которых 2 порта USB 3.0 — этого хватает для подключения всей периферии. Ну и активная поддержка комьюнити Raspberry Pi – тоже приятный бонус.
Шаг 4. Выбор конфигурации
Итак, камера и вычислитель выбраны. Следующий важный шаг в проектировании MVP — определить нужное количество камер и их взаимное расположение.
Расположение камер зависит от того, как измерять предмет: в статике или в динамике. Давайте рассмотрим оба варианта.
Вариант 1: измерение в динамике
В этой конфигурации мы либо вращаем предмет на поворотном столе и потом совмещаем снимки с разных ракурсов, либо вращаем саму камеру вокруг предмета.
При таком варианте мы выигрываем в количестве камер — достаточной одной. Но проигрываем в скорости измерения.
Мы провели тесты с использованием поворотного стола для фотосъёмки BM30 Pro. Результаты измерений интерпретировали с помощью RecFusion SDK, который в автоматическом режиме строил 3D-модель и выдавал получившиеся габариты объекта.
Тесты показали следующие результаты.
-
Скорость полного оборота поворотного стола находится в регулируемом диапазоне от 20 до 60 с. Время получения модели товара равно времени поворота стола, а это долго и не соответствует ожидаемой скорости работы устройства.
-
Сложность интеграции поворотного стола и тензодатчиков для измерения веса в одно устройство.
-
Жидкости в прозрачной таре (стекло, пластик) во время движения не находятся в статике, что усложняет детекцию краевых точек поверхности объекта алгоритмом.
-
Ограничения в грузоподъёмности конструкции.
Как выяснилось, экономия, связанная с использованием меньшего количества камер, не перекрывает все минусы данной конфигурации.
Вариант 2: измерение в статике
Метод заключается в съемке неподвижного предмета с разных ракурсов, используя несколько камер. Такая конфигурация выигрывает по точности и скорости измерения. Изображение получается более резким. Исходя из этого, мы выбрали статичную конфигурацию.
Но при такой конфигурации появляются слепые зоны. Это часть поверхности предмета, которую не видно ни с одной камеры. Поэтому очень важно оптимально подобрать положение камер в устройстве, что мы далее и опишем.
Выбор количества камер
Производитель рекомендует для построения полноценной 3D-модели использовать по камере на каждую из 4 сторон. При этом все 4 должны быть направлены в одну точку (источник).
При такой компоновке практически не остаётся слепых зон, и мы ограничены только углами обзора самих камер. Однако стоит помнить о том, что стереокамера — самый дорогой компонент системы. Сократив их количество, мы заметно уменьшим стоимость конечного устройства. Отсюда возник вопрос: какое минимальное количество камер мы можем использовать, сохранив качество и точность измерения?
Мы провели ряд экспериментов и определили, что с помощью двух камер, расположенных по диагонали на противоположных сторонах от измеряемой области под углом 60 градусов, мы сможем реализовать возможность измерения, не сильно проиграв в качестве в сравнении с четырьмя камерами.
Учёт ограниченного угла зрения камер
Угол обзора камер ограничен, поэтому нужно его учесть, чтобы правильно расположить камеры.
Разделяют вертикальный и горизонтальный углы обзора.
Камера D415 имеет два модуля глубины, инфракрасный проектор и цветную камеру.
Нам интересны модули глубины. У них следующие характеристики по углам обзора:
— по горизонтали — 65 градусов,
— по вертикали — 40 градусов.
Расстояние между камерами — 55 мм. Рабочим полем считается именно промежуток, где поле обзора обоих модулей пересекается.
При этом у модулей глубины есть минимальное расстояние, ближе которого результаты измерений невалидны. Оно зависит от расстояния между камерами, угла обзора и программных настроек. В нашем случае минимальное расстояние составляет около 30 см.
Исходя из этого, мы расположили камеры на высоте 800 мм при максимальных размерах сканируемого предмета 450 мм.
Недостатки конфигурации
После проведенных экспериментов на конфигурации с 2 камерами глубины мы выявили следующие слабые места:
1. Измерение объектов небольшой высоты.
2. Измерение объектов в прозрачной и полупрозрачной упаковках.
3. Риск появления слепых зон для объектов сложной геометрической формы.
4. Необходимость дополнительной обработки карт глубины.
5. Блики.
Далее в статье мы рассмотрим решение первых двух проблем, остальные отложим для следующей части.
Измерение объектов небольшой высоты
Полученные карты глубины обладают погрешностью в несколько миллиметров, по ним трудно найти границы объектов небольшой высоты — они почти сливаются с поверхностью измерения. Поэтому мы столкнулись со сложностью точного определения длины и ширины товаров высотой до 50 мм.
Как можно решить эту проблему?
Для измерения таких товаров можно использовать другой алгоритм. Определять длину и ширину по 2D-снимку объекта:
1. На снимке находим объект измерения.
2. Вокруг его контура описываем прямоугольник, из которого получаем длину и ширину.
3. Высоту также определяем по карте глубины
4. Длину и ширину пересчитываем, учитывая высоту, то есть расстояние от камеры до предмета
Снимок можно сделать с помощью стереокамер, которые расположены под углом 60 градусов. При получении изображения в такой конфигурации камер необходимо применить перспективную трансформацию, позволяющую повернуть изображение. Этот способ в теории работает для очень тонких предметов, но чтобы избежать искажения проекции, необходимо установить дополнительную камеру сверху, направленную ровно в центр платформы.
Желательно использовать камеру глубины, но это увеличит итоговую стоимость устройства. Поэтому мы установили обычную недорогую веб-камеру, поскольку при низкой стоимости она обеспечивала требуемое качество фотографий.
Шаг 5. Использование веб-камеры для определения габаритов простых объектов
Для нахождения на снимке контура объекта мы решили попробовать использовать классические методы компьютерного зрения. Один из них — детектор границ Кэнни. Но, как и большинство классических алгоритмов, его сложно сделать универсальным. Например, для случаев, когда предмет слабо контрастирует с подложкой, метод не подходит. Также можно применить Background Subtraction метод, но он не учитывает тени от предмета. Поэтому впоследствии мы перешли на методы машинного обучения.
Мы собрали датасет с фотографиями товаров на платформе, разметили снимки и обучили на полученных данных модель сегментации. За основу взяли YOLOv8m-seg. Начинали с нескольких сотен фотографий, а сейчас модель обучена на более чем 15 000 реальных снимков со склада. В машинном обучении очень важны данные, на которых вы тренируете модель, ведь от этого зависит качество работы нейросети. Нашим преимуществом было использование реальных данных со склада, поскольку они давали максимально репрезентативную выборку товаров.
Пример сегментации товара нейросетью:
Измерение товаров в прозрачной и полупрозрачной упаковках
Есть один недостаток определения размеров реальных товаров с помощью стереокамер, который можно решить с помощью нейронных сетей.
У нас на складах хранятся самые разные товары: текстиль, обувь, игрушки, косметика, декор для дома и другие. Зачастую упаковка таких товаров представлена в виде мягкого полиэтиленового пакета (стрейч-плёнка, воздушно-пузырчатая плёнка) или упаковка с зип-локами. При измерении ОВХ товара нас интересует размер самого товара без учёта пакета. Пакет при измерении будет давать избыточный объём.
Как же реализовать корректное измерение без дополнительных манипуляций оператора с товаром? Доставать товар из пакета перед измерением мы не можем, так как это нарушит целостность заводской упаковки. Поэтому мы разработали и внедрили фичу для определения контура товара внутри прозрачного мягкого пакета и пакетов с зип-локами.
Фичу реализовали с помощью нейросети на базе YOLOv8m-seg. Было собрано 10 000 фотографий реальных товаров с устройств, которые на тот момент уже эксплуатировались на складах. Этот датасет для обучения был размечен двумя классами (товар с пакетом и товар без пакета).
Пример работы фичи (до и после обрезания пакета):
Примеры товаров, габариты которых нужно измерять без пакета:
Заключение
Внедрение автоматического измерителя ОВХ товаров упрощает и удешевляет бизнес-процессы. Анализ рынка измерителей показал, что идеально подходящего готового решения нет. Но с помощью камер глубины можно быстро и недорого собрать устройство, которое будет измерять товары разных геометрических форм и материалов с достаточной точностью.
Использование описанной выше конфигурации камер — две стереокамеры и одна веб-камера — и двух алгоритмов измерения дало отличные результаты. Нам удалось добиться следующих значений основных метрик:
В следующей статье мы подробнее расскажем про алгоритмы и фичи, которые использовали для улучшения качества карт глубины, про интеграцию с системами Ozon и про нашу линейку устройств.