无人便利店背后的“最强大脑”——基于计算机视觉的全栈技术拆解与实战

136 阅读4分钟

无人便利店背后的“最强大脑”——基于计算机视觉的全栈技术拆解与实战

一、行业速描:从 Amazon Go 到“楼下小店”的五年跃迁

  • 2022 年,Amazon Go 以“Just Walk Out”引爆概念;
  • 2024 年,上海 50 家与罗森合作的 AI 小店已实现 99.9 % 结算准确率;
  • 2025 年,浙江移动在温州将漏付识别率再提 50 %,并把云端训练收敛时间缩短到小时级。

技术路径上,纯计算机视觉(Camera-Only)因更低的运营成本与更易扩张的部署边界,正成为主流。下文将围绕“单目 RGB 摄像头 + 边缘 GPU”这一最轻量可落地的硬件组合,给出完整工程方案。


二、系统总览:感知 → 决策 → 执行 的闭环架构

层级功能关键技术典型硬件
感知层顾客身份 & 商品识别人脸/行人 Re-ID、目标检测+跟踪6×2K 摄像头、Jetson Orin Nano
决策层购物事件生成多目标多摄像头关联、时空行为推理TensorRT 优化后的 YOLOv8+ByteTrack
执行层自动结算、风控无感支付、异常行为告警微信小程序/支付宝当面付、云端风控 API

三、感知层:商品检测与跟踪的 PyTorch 端到端实现

3.1 数据准备

  • 采集:在店内 360° 吊装 6 路 2K 相机,连续采 3 天,约 200 万张图;
  • 标注:使用 CVAT 标注 120 类 SKU(含遮挡、模糊、光照极端样本);
  • 增强:Albumentations 随机透视 + HSV + CutOut,提高模型对货架变形的鲁棒性。

3.2 训练 YOLOv8-seg(检测+分割联合训练)

# yolov8_train.py
from ultralytics import YOLO

model = YOLO("yolov8n-seg.pt")          # 预训练权重
data_yaml = "sku120_seg.yaml"           # 类别、路径配置
model.train(
    data=data_yaml,
    epochs=200,
    imgsz=640,
    batch=128,                          # 4×A100 80G
    project="sku120",
    name="yolov8n_seg",
    hsv_h=0.015,
    hsv_s=0.7,
    hsv_v=0.4,
    degrees=5,
    translate=0.1,
    scale=0.5,
    fliplr=0.5,
    mask_ratio=4,
)
  • 结果:mAP@0.5 = 0.973,单张推理 1.8 ms(FP16,Jetson Orin Nano)。

3.3 多目标跟踪(ByteTrack)

# track.py
from ultralytics import YOLO
import cv2

model = YOLO("sku120/yolov8n_seg/weights/best.engine")  # TensorRT
tracker = model.track(source="rtsp://192.168.1.101", tracker="bytetrack.yaml")
for result in tracker:
    frame = result.plot()
    cv2.imshow("live", frame)
    if cv2.waitKey(1) & 0xFF == 27:
        break
  • 关键参数:
    track_buffer = 30(丢失 30 帧后删除轨迹),match_thresh = 0.9(高 IoU 阈值防止 ID-Switch)。

四、决策层:从“看到”到“算明白”的购物事件引擎

4.1 时空关联模型

输入:

  • 顾客轨迹 T = {t₁, t₂ … tₙ},
  • 商品轨迹 P = {p₁, p₂ … pₘ};

规则:
IoU(t_handbox, p_box) > 0.2cosine(v_hand, v_p) > 0.8 且持续时间 > 0.5 s,则触发 Take 事件。

伪代码:

def generate_event(t, p):
    iou = compute_iou(t.hand_box, p.box)
    vel_sim = cosine_similarity(t.hand_vel, p.vel)
    if iou > 0.2 and vel_sim > 0.8 and t.dt > 0.5:
        return Event(type="Take", customer=t.id, sku=p.sku_id)

4.2 状态机去抖

  • 防止顾客“反复拿放”造成重复扣款;
  • 状态:Idle → Reach → Hold → Drop → Idle;
  • 只有 Hold→Idle 且 Hold 状态持续 1 s 以上,才最终写库。

五、执行层:无感支付 + 异常风控

5.1 支付流程

  1. 顾客首次刷脸 → 微信人脸开放平台返回 openId;
  2. 离店时汇总订单 → 调微信支付“合单支付”接口,一次扣款;
  3. 失败订单自动转“代扣模式”或站内提醒。

5.2 异常行为检测(基于 Slow-Fast R-CNN)

  • 数据集:自建 1200 段异常视频(吃、偷、破坏);
  • 训练:3D-CNN 双流网络,GPU 训练 2 天,mAP = 0.91;
  • 部署:
from mmaction.apis import init_recognizer, inference_recognizer
config = "slowfast_r50.py"
checkpoint = "slowfast_r50.pth"
model = init_recognizer(config, checkpoint, device="cuda:0")
results = inference_recognizer(model, "clip_001.mp4")
if results.pred_score[0] > 0.7:  # 偷吃
    push_alert(results.pred_label, camera_id)
  • 告警链路:钉钉群机器人 → 云端值班中心 → 本地语音播报。

六、边缘部署:从 .pt.engine 的 Jetson 全量化流程

步骤工具命令结果
1torch2trtpython export.py --weights best.pt --device 0 --fp16best.engine 28 MB
2DeepStreamdeepstream-app -c ds_config.txt6 路 25 FPS,显存 2.5 GB
3Systemdsudo systemctl enable vision.service掉电自启

七、真实运营指标(家福伴东莞某店,2025-06 数据)

  • 日均订单:318 单
  • 结算准确率:99.92 %
  • 货损率:0.3 %(传统店 2.1 %)
  • 人力成本:↓ 82 %(仅保留 1 人补货)

八、结语与展望

当视觉算法在边缘 GPU 上以 25 FPS 长期稳定运行,当“拿了就走”变成社区街角 20 m² 小店的日常,无人便利店才真正从“概念”走向“民生”。下一步,我们将:

  1. 接入 视觉大模型 做新品零样本识别;
  2. 利用 数字孪生 在云端仿真货架陈列,提前预测 GMV;
  3. 探索 AIGC 导购屏,按顾客情绪即时生成促销文案。