
YOLOv8 商品识别从标注到部署我踩了这 10 个坑这是整个售货柜系统最核心的一环。摄像头拍到的画面里哪一瓶是可乐、哪一瓶是雪碧、用户到底拿了什么——全靠 YOLOv8。这篇文章从数据标注到模型部署全部讲清楚附带我踩过的十个坑。大家好我是黒漂技术佬。前三篇聊了决策、架构和硬件。这一篇正式进入 AI 算法——用 YOLOv8 做商品识别。如果你做过目标检测这篇文章能帮你省掉两周踩坑时间如果你没做过我尽量用大白话讲清楚。一、先看结果模型到底能做到什么水平训练完的 YOLOv8n 模型部署到 RK3588 上指标数值准确率mAP0.598.7%推理速度RK3588 NPU30fps支持商品种类20 种可乐、雪碧、矿泉水、红牛……模型大小6.2MB.rknn 格式单帧推理耗时3ms在真实场景柜内灯光、不同角度、部分遮挡下识别准确率稳定在 95% 以上。足够商用。二、完整流程从零到部署数据采集 → 数据标注 → 模型训练 → 模型转换ONNX → RKNN→ 边缘部署每一步都有坑我一个一个讲。三、踩坑 1-3数据采集和标注坑 1照片不是随便拍的我一开始拿手机对着货架拍了 200 张照片就开训结果模型在实际柜子上一塌糊涂——因为柜子里的灯光角度和手机拍的不一样。正确做法把摄像头装进柜子里用程序自动采集。写个脚本每隔 2 秒拍一张换不同商品摆放位置、不同光照条件采够 1000 张。importcv2importtime capcv2.VideoCapture(0)foriinrange(1000):ret,framecap.read()cv2.imwrite(fimages/{i:04d}.jpg,frame)time.sleep(2)坑 2标注工具选错白干两天我一开始用的 LabelImg手动框了 1000 张图手都酸了。后来发现用Roboflow 在线标注AI 辅助预标注效率提升十倍。更重要的是 Roboflow 能直接导出 YOLO 格式不用自己写转换脚本。坑 3标注标准不统一同一瓶可乐横放、竖放、被遮挡一半——怎么框团队里两个人标注标准不一样模型训练出来一团糟。规范只框可见部分被遮挡超过 50% 的不标紧贴商品边缘不要留白每个类别至少 100 个标注框四、踩坑 4-6模型训练坑 4用 3090 还是云服务器我第一反应是买张 3090——但一张一万多原型验证阶段不值得。最后用的是AutoDL 云 GPUA5000 一小时两块五训练一个模型总共花了不到 50 块钱。推荐方案先用云 GPU 跑通批量训练时再考虑买卡。坑 5不调参直接跑模型过拟合第一次训练看 loss 降到 0.01高兴坏了。结果测试集上一跑准确率只有 60%。调参经验参数推荐值说明epochs100-150多了过拟合少了欠拟合batch size16RK3588 推理对 batch size 不敏感learning rate0.01 → 0.001余弦退火衰减mosaic1.0数据增强增强泛化能力坑 6类别不均衡20 种商品可乐卖了 200 瓶气泡水卖了 5 瓶。训练数据如果不均衡模型会对稀有商品完全瞎猜。解决方案对低频商品做过采样保证每个类别训练样本不少于 100 张。五、踩坑 7-10模型转换和部署坑 7ONNX 导出算子不兼容YOLOv8 默认导出的 ONNX 包含一些算子比如 Swish 激活函数RKNN 工具链不支持。解决方案用 Ultralytics 官方导出脚本指定 opset12关闭动态输入yoloexportmodelyolov8n.ptformatonnxopset12imgsz640dynamicFalse坑 8RKNN 量化精度损失FP32 转 INT8 量化后准确率从 98% 掉到 85%——因为校准数据集没选好。解决方案用柜内真实拍的照片做校准数据集200 张就够。量化后准确率恢复到 97%。坑 9NPU 推理线程安全RK3588 有三个 NPU 核心我开了多线程同时推理结果程序随机崩溃——RKNN 的 Python API 不是线程安全的。解决方案用单线程 队列模式或者每个线程绑定不同的 NPU 核心rknn.init_runtime(core_maskRKNNLite.NPU_CORE_0)# 绑核 0坑 10部署后模型不更新模型训好了部署到柜子上结果三个月后换了新包装的商品识别率暴跌。解决方案建立持续迭代机制——每周从柜子上收集低置信度的图片补充进训练集每月发一版新模型OTA 推送到设备。六、成本和时间环节时间成本数据采集3 天0柜子已有数据标注2 天0Roboflow 免费版够用模型训练1 天50 元云 GPU模型转换3 天踩坑时间边缘部署1 天0合计10 天50 元七、给你的建议数据比模型重要。多花时间在数据采集和标注上模型那部分用 YOLOv8 默认配置就能出好结果先用云 GPU 验证别一上来买显卡RKNN 转换是最难的一步做好踩坑一周的心理准备建立持续迭代机制模型不是训一次就完事的下一篇预告下一篇讲《纯视觉售货柜如何解决「拿错商品」的 99% 误判》——重力传感器双校验、ROI 区域提取、时序帧对比把误判率从 10% 降到 0.1%。互动你做目标检测踩过什么坑评论区分享我汇总进下一篇 关注我下周二晚八点更新。