Как решать задачу определения наличия товара на полке по фотографиям с разных ракурсов?
Что проверяют
Умеете ли вы превратить расплывчатую бизнес-задачу в постановку для компьютерного зрения и довести её до метрики, которая важна заказчику. Следом спрашивают, как объединять снимки с разных ракурсов и что делать с новыми товарами в ассортименте.
Как отвечать
Сначала уточните постановку: нужно ли знать только «на полке пусто» или точный SKU и соответствие планограмме. От этого зависит вся архитектура.
Рабочий каркас:
- детекция: товары на полке мелкие и стоят плотно, поэтому классификация всего снимка в 224×224 не годится. Нужен детектор (семейство YOLO, RT-DETR) на снимках высокого разрешения или нарезке на тайлы. Пустые места удобно размечать отдельным классом;
- распознавание SKU: не классификатор на тысячи классов, а эмбеддинги с metric learning и поиск ближайшего по каталогу эталонных фото. Новый товар добавляется фотографией в индекс без переобучения;
- несколько ракурсов: снимки приводятся к общей системе координат полки, через гомографию по краям полок и ценникам или склейку в панораму. Затем детекции с разных кадров сопоставляются по позиции, и решение по слоту принимается голосованием. Так блик или перекрытие на одном кадре не превращаются в ложное «нет товара»;
- метрики: mAP для детектора и отдельно точность и полнота по событию «товара нет» на уровне слота. Для бизнеса дорог пропуск пустой полки, поэтому порог настраивают под полноту.
Проблемы данных стоит назвать сразу: похожие упаковки разных вкусов, смена дизайна, освещение, длинный хвост редких SKU. Для ускорения разметки можно предразметить снимки open-vocabulary детектором вроде Grounding DINO и поправить руками.
Где спотыкаются
Делят данные случайно по снимкам. Фото одной полки попадают и в обучение, и в тест, метрика завышена; делить нужно по магазинам или по датам.
Считают товар дважды, потому что он виден с двух ракурсов. Без сопоставления детекций между кадрами агрегирование ломает подсчёт.
Отчитываются общей accuracy. Пустых слотов мало, и модель, которая всегда отвечает «товар есть», покажет почти идеальную accuracy и не принесёт пользы.