Найти в Дзене

Как автоматически находить пустые полки и нарушения раскладки: обзор методов и метрики

Задача обнаружения пустот на торговых стеллажах относится к классу задач визуального контроля заполнения. На первый взгляд, решение выглядит тривиальным: найти области, где отсутствуют объекты. Однако на практике простейшие методы упираются в высокий уровень ложноположительных срабатываний, вызванных неоднородностью освещения, бликами и схожестью фона с целевым признаком. Первый прототип строился на выделении «белых пятен». Использовалась бинаризация в HSV-пространстве: пороговое отсечение по каналу Value (V > 220) и низкая дисперсия в локальном окне (текстурный признак). Метод давал recall до 0.65, но precision падал ниже 0.4 из-за светлых элементов упаковки. Следующая итерация — анализ выпадов из общего вида полки. Строилась эталонная гистограмма распределения цветов и градиентов вдоль горизонтальной оси. Пустота детектировалась как зона, где градиент интенсивности между соседними окнами превышал 2.5 сигмы. Это помогло отсечь статичные блики, но не решало проблему при изменении ракур
Оглавление

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

Этап 1. Эвристические подходы (и их ограничения)

Первый прототип строился на выделении «белых пятен». Использовалась бинаризация в HSV-пространстве: пороговое отсечение по каналу Value (V > 220) и низкая дисперсия в локальном окне (текстурный признак). Метод давал recall до 0.65, но precision падал ниже 0.4 из-за светлых элементов упаковки.

Следующая итерация — анализ выпадов из общего вида полки. Строилась эталонная гистограмма распределения цветов и градиентов вдоль горизонтальной оси. Пустота детектировалась как зона, где градиент интенсивности между соседними окнами превышал 2.5 сигмы. Это помогло отсечь статичные блики, но не решало проблему при изменении ракурса съёмки.

Этап 2. Переход к обучению на размеченных данных

На текущий момент основной рабочий метод — YOLOv11, дообученная на датасете из 12 тысяч аннотированных изображений полок. Ключевое нововведение: модель детектирует не «отсутствие объектов», а специфический паттерн — пустоту как класс объектов. Аннотации включают три основных типа дефектов заполнения: сквозные пустоты до задней стенки, частичное отсутствие фасада (глубина < 5 см от линии ряда) и кластеризованные сдвиги товара.

Метрики и улучшения:


Базовая YOLOv11-nano показывала mAP@0.5 на уровне 0.82. После добавления предварительного этапа локализации полок точность повысилась до 0.93. Предобработка работает следующим образом: отдельная лёгкая модель (YOLOv8s-tiny) выделяет bounding boxes стеллажей, которые затем служат маской для основного детектора. Это исключило ложные срабатывания на межстеллажных проходах и витринных отражениях.

Этап 3. Постобработка и фильтрация

Операциональная точность достигнута за счёт двух дополнительных фильтров:

  • Пространственный фильтр: игнорируются пустоты площадью менее 1.5% от длины полки.
  • Контекстный фильтр: отслеживание регулярности текстурного градиента вдоль ряда; если соседние справа и слева боксы имеют высокую уверенность (>0.9) в классе «товар», вероятность ложного срабатывания снижается на 18%.

Данный пайплайн внедрён в нескольких складских и розничных системах мониторинга. Отправьте заявку и команда samur-ai.ru проведет пилот на вашем объекте.