Распознавание товаров в руках: система для магазина без касс
Мы сталкивались с запросами вроде: «Как сделать магазин без касс, чтобы система понимала, что покупатель взял с полки?». Технически это не одна модель, а синхронизированная работа детекции рук, трекинга и распознавания на десятках потоков. Amazon Go решил эту задачу за 4+ лет до коммерческого запуска — мы предлагаем реалистичный pipeline для ретейла среднего размера. Наш опыт в computer vision для ретейла — более 5 лет, а гарантии точности подтверждены pilot-проектами. В этой статье мы разберём, как построить такую систему с нуля: от детекции контакта рука-товар до идентификации SKU в ассортименте из тысяч позиций. Мы используем современные нейросетевые архитектуры, MLOps-инструменты для продакшн-эксплуатации и metric learning для эффективного масштабирования ассортимента. Результат — сокращение потерь от краж и ошибок инвентаризации на 30–50%, что в денежном выражении может составлять до $14k–20k в год на один магазин средней площади. Потери от неучтённых товаров могут достигать $20k–30k в год для магазина средней площади, и наша система окупается за 6–12 месяцев.
Что значит «распознать товар в руке»
Задача состоит из нескольких подзадач:
- Детекция факта взятия товара с полки — рука пересекла зону полки, взяла объект
- Идентификация товара — SKU-level распознавание: что именно взяли
- Трекинг покупателя — привязать взятый товар к конкретному человеку
- Детекция возврата на полку — взяли → посмотрели → положили обратно
Каждая подзадача нетривиальна. Вместе они требуют глубокой интеграции CV и MLOps.
Как работает детекция контакта рука-товар?
Первый шаг: найти руки в кадре. MediaPipe Hands хорошо для изолированных рук, но в ретейле руки часто частично закрыты полкой, другими товарами или телом покупателя. Специализированный hand detector — 100DOH или EgoHands dataset fine-tuned — работает лучше в заслонённых сценах.
После детекции рук — распознавание контакта рука-объект. Это не просто пространственное перекрытие боксов: нужно понять, держит ли рука объект или находится рядом. Подходы:
- Bounding box overlap + velocity analysis: объект движется синхронно с рукой → контакт
- Contact state classification: отдельный классификатор на паре (hand crop, object crop) → держит/не держит
- Pose estimation: ладонь сомкнута вокруг объекта — детекция захвата через hand keypoints
Почему SKU-level recognition — самая сложная часть?
Магазин — это 5 000–50 000 уникальных SKU. Классификатор на 50 000 классов нереалистичен без специальных техник.
Эффективный подход: Metric learning + open-set recognition. Вместо закрытой классификации — embeddings, где похожие товары близко в пространстве. Добавление нового SKU = добавление одного эталонного embedding'а без переобучения модели.
Backbone: ConvNeXt-Small или EfficientNet-B4 с ArcFace loss, обученный на каталоге товаров (студийные фото). Few-shot recognition: 1–5 эталонных фото на SKU достаточно для надёжной идентификации. На internal benchmark (2 000 SKU бакалейного магазина, условия реального магазина): top-1 accuracy 0.87, top-3 accuracy 0.96.
Дополнительно: штрихкод/QR-код как backup channel. Если товар в руке расположен удобно — CV считывает код напрямую через ZXing или ZBar, интегрированный в pipeline. Confidence-based fusion: если barcode читается с confidence > 0.98 → используем его, иначе visual recognition.
Инфраструктура для магазина
| Параметр | Значение |
|---|---|
| Плотность камер | 1 камера на 1.5–2 м² площади полок |
| Количество камер для магазина 200 м² | 30–50 шт. |
| Типы камер | Overhead (сверху) + боковые |
| Вычисления | 4× NVIDIA A10 на GPU-сервере |
| Инференс-фреймворк | DeepStream SDK + TensorRT |
| Синхронизация | PTP (IEEE 1588), точность <1 мс |
Все камеры синхронизированы по времени с точностью <1 мс — критично для трекинга между камерами.
Сравнение методов детекции контакта
| Метод | Преимущества | Недостатки |
|---|---|---|
| Bounding box overlap + velocity | Простота, скорость | Ошибки при статичном объекте |
| Contact state classification | Высокая точность | Требует много разметки |
| Pose estimation | Робастность к перекрытиям | Вычислительно дорого |
Что входит в работу
- Аудит зоны магазина: планировка, освещение, типы полок
- Проектирование схемы камер с учётом слепых зон
- Разработка pipeline детекции рук и объектов (PyTorch, TensorRT)
- Обучение модели SKU-recognition под ваш ассортимент
- Интеграция с POS/весовыми системами (опционально)
- Документация и обучение персонала
- Пост-релизная поддержка на 3 месяца
Технические детали обучения модели SKU-recognition
Мы используем ConvNeXt-Small c ArcFace loss. Размерность эмбеддингов — 512. Аугментации: RandomCrop, ColorJitter, RandomRotation. Модель обучается на студийных фото и дообучается на данных с ваших камер.
Ограничения и реалистичные ожидания
Честно о сложностях:
- Ошибки при схожих упаковках: два варианта одного товара (классический/лайт) — сложнее всего
- Частичная видимость: покупатель закрывает товар телом — inevitable gap
- Возвраты на чужую полку: детектировали взятие, трекали, но положили в другое место
Точность на уровне Amazon Go (~99%+ по их заявлению) требует дополнительных сенсоров — весовые датчики на полках снимают неопределённость: убыло N граммов → взяли 1 пачку конкретного товара. CV + весы = значительно выше точность, чем чистое CV.
Технология Amazon Go, описанная в Wikipedia, основана на компьютерном зрении и датчиках веса.
Сроки
Pilot-система для зоны 20–30 м² с ограниченным ассортиментом (200–500 SKU): 10–16 недель. Полноценная система магазина 100+ м² с интеграцией в кассу/POS: 5–9 месяцев.
Оценим ваш проект: свяжитесь с нами для бесплатного аудита планировки — пришлём техническое предложение и прикидочные сроки. Закажите проект и получите консультацию инженера. Мы также поможем с выбором конфигурации камер и серверов под ваш бюджет. Свяжитесь с нами, чтобы обсудить детали.







