Розпізнавання товарів у руках: система для магазину без кас
Ми стикалися із запитами на кшталт: «Як зробити магазин без кас, щоб система розуміла, що покупець взяв із полиці?». Технічно це не одна модель, а синхронізована робота детекції рук, трекінгу та розпізнавання на десятках потоків. Amazon Go вирішив це завдання за 4+ роки до комерційного запуску — ми пропонуємо реалістичний pipeline для рітейлу середнього розміру. Наш досвід у computer vision для рітейлу — понад 5 років, а гарантії точності підтверджені pilot-проєктами. У цій статті ми розберемо, як побудувати таку систему з нуля: від детекції контакту рука-товар до ідентифікації SKU в асортименті з тисяч позицій. Ми використовуємо сучасні нейромережеві архітектури, MLOps-інструменти для продакшн-експлуатації та metric learning для ефективного масштабування асортименту. Результат — скорочення втрат від крадіжок та помилок інвентаризації на 30–50%, що в грошовому вираженні може становити до 1.5 млн грн на рік на один магазин середньої площі. Втрати від необлікованих товарів можуть сягати 2–3 млн грн на рік для магазину середньої площі, і наша система окупається за 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 з 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 місяців.
Оцінимо ваш проєкт: зв'яжіться з нами для безкоштовного аудиту планування — надішлемо технічну пропозицію та приблизні терміни. Замовте проєкт та отримайте консультацію інженера. Ми також допоможемо з вибором конфігурації камер та серверів під ваш бюджет. Зв'яжіться з нами, щоб обговорити деталі.







