Пустая полка и нулевой остаток — разные события
Для покупателя товара нет, если он не виден на нужной полке. Для учётной системы товар может при этом лежать в подсобке, стоять на другом стеллаже или числиться из-за запоздалого списания. Поэтому камера, которая замечает пробел на выкладке, решает конкретную операционную задачу: быстрее направить сотрудника к месту возможного дефицита. Она не становится новой системой складского учёта и не должна сама менять остаток.
Исследование о мониторинге полок в журнале *Sensors* прямо различает данные кассы об остатке и фактическую доступность товара на полке: упаковки могут находиться в подсобке. Авторы также рассматривают перекрытие обзора покупателями как отдельную техническую проблему. Это хорошая рамка для малого магазина: автоматизировать обнаружение исключения, а не обещать безошибочное «зрение» и полностью автономный заказ поставщику.
Какой сигнал действительно нужен
Начинать разумно не с распознавания всех товаров, а с вопроса, который меняет действие сотрудника. Например: «На закреплённом участке полки любимого покупателями товара появился пустой промежуток дольше пяти минут?» Порог времени здесь — настройка пилота, а не универсальная норма: покупатель или тележка могут закрыть камеру на несколько секунд.
Простейшая схема состоит из неподвижной камеры, выделенных зон полки, локального анализа кадров и задания сотруднику. Система сравнивает видимую заполненность зоны с эталоном или предыдущими кадрами; при устойчивом отклонении создаёт сигнал. Сотрудник проверяет полку и отмечает результат: «пополнено из подсобки», «товара нет в магазине», «перестановка», «ложное срабатывание». Эти ответы нужны для настройки порогов и оценки полезности.
Если требуется назвать точный SKU, задача сложнее. На одной полке похожие упаковки стоят плотно, некоторые видны лишь частично. Работа *Precise Detection in Densely Packed Scenes* и набор SKU-110K показывают именно сложность обнаружения предметов в плотной выкладке. Важная оговорка: в описании SKU-110K каждому объекту назначен один общий класс `object`; успешное обнаружение коробки ещё не означает, что система правильно назвала её артикул. Для привязки к SKU нужны планограмма, каталог изображений или отдельная проверенная модель распознавания.
Что связать с учётом
Минимальный набор данных для пилота — схема полок и камер, список контролируемых товаров, внутренний SKU или GTIN, ожидаемое место товара, текущий остаток и события поступления/продажи. GS1 определяет GTIN как идентификатор торговой единицы; это полезный ключ для каталога, но сам штрихкод обычно не читается с фронтальной фотографии полки. Поэтому соответствие «зона камеры — товар» надо вести явно и обновлять при перестановке.
После сигнала лучше не выполнять автоматическое списание или заказ, а открыть сотруднику карточку: снимок проблемной зоны, время, предполагаемый товар, учётный остаток, последняя поставка, место хранения и два-три действия. Если остаток положительный, первое действие — проверить подсобку или другую выкладку. Если остаток нулевой и полка пуста, уже уместно проверить заказ и срок поставки. Если визуальный сигнал противоречит факту, фиксировать причину, а не «исправлять» одну систему данными другой без проверки.
При отсутствии чистого каталога или стабильной планограммы система может работать на уровне участка: «пустеет секция свежей зелени», без обещания точного артикула. Это менее впечатляюще в презентации, зато ближе к надёжному рабочему процессу. Для весовых овощей и сезонной выкладки точный SKU по изображению особенно ненадёжен: внешний вид и место быстро меняются.
Где разместить обработку и как защитить данные
Для одной-двух камер достаточно сначала проверить запись контрольных кадров и обработку на локальном компьютере магазина или существующем сервере. Поток не обязательно постоянно сохранять: можно анализировать кадры с выбранным интервалом и хранить только короткую историю сигналов. Это снижает расходы на сеть и хранение и упрощает контроль доступа. Точную частоту кадров и требования к ускорителю определяют измерением на собственных изображениях; «нужен GPU» нельзя выводить из рекламного бенчмарка модели.
Камеру стоит направить на товарную зону, а не на лица посетителей. Если люди попадают в кадр, нужны применимые правила обработки изображений, ограничение доступа, срок хранения и оценка необходимости маскирования. Даже локальный контур не снимает этих обязанностей. Для закупки оборудования отдельно проверьте освещение ночью, блики на упаковке, закрывающиеся дверцы холодильника и стабильность крепления камеры. Смена ракурса может сделать старую разметку бесполезной.
Не стоит подключать генеративную языковую модель к каждому кадру. Для устойчивого визуального сигнала обычно нужен специализированный детектор или сравнение зон. LLM может позже формировать понятное описание уже проверенного исключения или помогать сотруднику найти инструкцию, но не добавляет видимости туда, где камера не видит полку.
Пилот и экономика без выдуманной окупаемости
Выберите один стеллаж и 20–30 приоритетных SKU или зон. В течение первой недели сравнивайте сигналы с ручными обходами, не меняя процесс. Затем включите задания сотруднику и фиксируйте время от появления пустоты до проверки и пополнения. Отдельно считайте пропущенные случаи, ложные тревоги, долю сигналов с реальным действием и минуты работы на сигнал. Фото одной полной полки в демонстрации ничего не доказывает — проверять надо обычные дни, часы пик, перестановку и плохой свет.
Модельный расчёт, а не результат конкретного магазина: предположим, сотрудник тратит 15 минут в день на целевой обход одного стеллажа, 30 дней в месяц, полная стоимость часа — 500 ₽. Это 3 750 ₽ в месяц. Если система экономит половину этих минут, верхняя граница экономии труда — 1 875 ₽. Из неё ещё нужно вычесть проверку ложных тревог, камеру, монтаж, вычисления и поддержку. Такая задача окупится не за счёт «магии камеры», а только если есть также измеримое снижение времени отсутствия ходового товара на полке или возможность масштабировать уже проверенную схему на несколько точек. Потерянные продажи без контрольной группы не следует выдавать за доказанную выгоду.
Правило остановки пилота можно задать заранее: если на выбранном стеллаже сотрудник тратит на ложные сигналы больше времени, чем экономит на обходах, сначала улучшайте ракурс, зоны и пороги. Если точность сигналов приемлема, но пополнения не ускорились, узкое место находится в процессе выполнения задачи, а не в компьютерном зрении.
Практический следующий шаг
Составьте карту одного стеллажа, выгрузите список товаров и остатки за две недели, отметьте вручную 30–50 случаев «полка пуста / полка заполнена» в разное время суток. Попросите сотрудника описать, что он делает после обнаружения пустоты. Лишь после этого выбирайте камеру, модель и интеграцию с учётом. Цель пилота — доказать, что сигнал сокращает путь от пустой полки до действия, не создавая очередную панель, которую никто не открывает.
Фото: Raysonho @ Open Grid Scheduler / Grid Engine, Wikimedia Commons, CC0 1.0; сделан центральный квадратный кроп. Фото иллюстрирует торговую полку, а не описанный пилот.
