Успех глубокого обучения для решения сложных проблем в наши дни ни от кого не скрывается. Глубокое обучение помогает автоматизировать проблемы во всех сферах жизни. В этой статье я представляю приложение YOLOv5, алгоритма, основанного на глубоком обучении, для обнаружения пустого инвентаря в продуктовых магазинах.

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

Требования

Для этого проекта нам понадобятся:

  1. YOLOv5, отличная работа Гленна Джохера, присутствует на https://github.com/ultralytics/yolov5
  2. Набор данных SKU, представленный на https://retailvisionworkshop.github.io/detection_challenge_2020/
  3. Даже лучше, если у вас есть набор данных о вашем магазине.
  4. LabelImg, отличный и простой в использовании инструмент для аннотации, находится по адресу https://github.com/tzutalin/labelImg
  5. Инструмент увеличения ограничивающего прямоугольника (если вы хотите расширить уже аннотированные изображения и не добавлять аннотации к другим изображениям), представленный на
    https://github.com/mukopikmin/bounding-box-augmentation

Процесс

Во-первых, мы собираемся использовать набор данных SKU. Набор данных SKU специально предназначен для обнаружения товаров на полках продуктовых магазинов и в холодильниках. Артикул содержит все изображения и аннотации для каждого товара на полке. Но для нашего приложения аннотации к товарам на полках не нужны. Мы хотим обратного. Потому что мы будем использовать только те изображения, на которых инвентарь был пуст, для любого продукта (ов) на полке.

Аннотация

Для аннотации мы используем инструмент LabelImg, чтобы аннотировать пустоты в любом изображении нашего приложения, как показано ниже:

Дополнение

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

Для расширения, как только вы закончите аннотировать изображения с помощью вышеуказанного инструмента LabelImg, поместите все изображения и их файлы аннотаций (.xml) во «входную» папку загруженного выше репозитория Bounding Box Augmentation. Затем выполните следующую команду:

pipenv run python augment.py

По умолчанию это увеличивает каждое изображение и его аннотацию, присутствующую во «входной» папке, до 10 раз. Чтобы увеличить это, можно изменить AUGMENT_SIZE в файле augment.py в репозитории.

Обучение

Для обучения модели детектора пустот я использовал YOLOv5 и обучил модель yolov5m для 300 EPOCHS на графическом процессоре NVIDIA GeForce RTX2080 объемом 12 ГБ. Данные, которые я использовал, включали несколько изображений полок продуктовых магазинов и около 100 изображений из набора данных SKU, которые я аннотировал сам и увеличил в 10 раз. Всего у меня было 1254 изображения. Оценка [email protected] составила 0,82.

Результаты

Результаты логического вывода обнаружения пустот на полке следующие:

Разработчики также могут сохранять координаты пустот в базе данных и сравнивать их с новыми данными, скажем, через 2 часа, чтобы узнать, сохраняются ли предыдущие пустоты или нет. Если они сохранятся, то этим пустотам следует уделить приоритетное внимание, и они позволят магазинам узнать, какие товары требуют срочного внимания и которые не пополнялись долгое время. Для этой задачи необходимо вычислить IoU (пересечение по объединению) просто нового и предыдущего пустых боксов, и если оно больше 0,5, то это означает, что пустота сохраняется и существовала в течение некоторого времени. На следующем изображении красные прямоугольники означают «сохраняющиеся пустоты», а синие прямоугольники означают «новые пустоты».

Вывод

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

Специальная благодарность

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