自动售货机商品识别YOLO模型训练实战:从6万张图片到98%识别率的完整复盘~YH

做AI视觉开门柜,核心就两件事:硬件跑得动,模型认得准。本文不讲理论,只讲数据准备、训练策略、部署优化这些实战细节。

一、数据准备:6万张图是怎么来的

很多人的第一反应是:"直接用公开数据集不就完了?"

公开数据集确实有,但自动售货机场景比较特殊------商品密集摆放、互相遮挡、光照条件差、SKU五花八门。公开数据集根本不适用。

我们的数据来源:

实景采集:在20台测试设备上部署数据采集功能,用户真实购物时自动记录视频和识别结果,持续采集了3个月,积累了约4.5万张真实场景图片。

主动补拍:针对数据不足的SKU和场景(夜间、遮挡、极端角度),专门组织补拍,约1.2万张。

合成数据:用图像合成技术生成了一些数据------把商品抠出来随机贴在背景上,约3000张。合成数据对提升模型泛化能力有一定帮助。

数据标注:找了8个标注人员,标注了全部6万多张图片。每张图标注商品类别和边界框,总共标注了41万个目标。

最终训练集6万张,验证集3000张,测试集3000张。覆盖SKU 300多种------饮料、零食、泡面、文具、日用品都有。

二、模型选型:YOLOv11n为什么是最佳选择

我们对比了YOLOv5s、YOLOv8n、YOLOv11n和轻量级方案。

YOLOv5s:推理速度只有15FPS,在RK3588上跑不太动。淘汰。

YOLOv8n:推理速度20FPS,精度尚可。YOLOv11n发布后性价比更高。淘汰。

YOLOv11n:推理速度23FPS,mAP@0.5约89.7%,模型体积不到45MB。最终选择。

轻量级方案(如MobileNet+SSD):精度只有80%出头,远不够用。淘汰。

三、训练策略:让模型适应售货机场景

训练过程分了四步:

第一步:用COCO预训练权重初始化,冻结主干网络,只训练检测头。这一步很快,1个epoch就能看到效果。

第二步:解冻全部网络,用较小学习率(1e-4)微调整个模型。这一步最耗时,但也是精度提升的关键。

第三步:数据增强训练------Mosaic增强、随机遮挡、随机亮度调整、随机旋转。专门加入遮挡和低光照的数据增强,模拟售货机真实场景。

第四步:用实际测试中表现不佳的图片做hard negative mining,重新训练一个epoch,专门处理难样本。

整个过程在单张RTX 3090上跑了大约5天。

四、夜间识别准确率为什么掉到91%?怎么解决的

白天自然光下准确率96%以上,夜间补光条件下只有91%-93%。这是最头疼的问题。

原因分析:夜间LED补光不均匀,有的区域过亮有的过暗;商品包装的反光材质在补光下产生眩光;模型对低光照条件下的特征提取能力不足。

我们的解决方案:

数据侧:在训练数据中加入大量低光照样本(亮度降低到原始图像的30%-50%),让模型适应低光环境。

硬件侧:调整LED补光灯的安装位置和角度,从顶部直射改为两侧45度照射,减少眩光。同时通过RK ISP的tuning工具调整白平衡和曝光参数。

算法侧:在推理管道中加入图像预处理------自动对比度拉伸,提升暗部细节。

最终结果:夜间准确率从91.3%提升到了95.8%。加上重力辅助校验后,端到端准确率稳定在98%以上。

五、SKU变化怎么处理?新增一种饮料要重新训吗?

零售场景的SKU变化非常频繁。今天上新一款饮料,明天下架一款零食。每次新增SKU都要重新训练模型的话,运维成本太高了。

我们的方案是两步走:

核心模型识别商品的大类(饮料、零食、日用品)和粗略特征(包装颜色、形状、大小)。在大类内再做增量学习,用少量样本(10-20张)训练一个轻量级分类器,区分同一大类的不同SKU。

新增SKU时只需要采集20张图片,用增量学习更新分类器即可,不需要重新训练整个模型。整个过程约30分钟,不需要重新部署。

实测:增量学习的分类准确率约92%,加上核心模型的初筛,整体准确率损失不到1%。

六、模型蒸馏:让轻量级模型学会大模型的本事

RK3588虽然算力够,但同时也跑着视觉推理、Android系统、支付模块、广告播放。YOLOv11n已经是最轻量级的版本,但23FPS的推理速度占用了大部分NPU资源。

我们尝试了模型蒸馏------用YOLOv11m(更大的模型)作为教师模型,蒸馏出更轻量的学生模型。

蒸馏结果是学生模型推理速度从23FPS提升到38FPS,mAP下降约2个百分点。速度换精度,对某些场景(要求更低功耗、更长续航)有价值。

七、总结

核心经验:模型精度不是瓶颈,数据质量和场景适配才是。

YOLOv11n在RK3588上的精度完全够用(白天96%,夜间95.8%),配合重力感应辅助校验后稳定在98%以上。真正需要花时间的是:

数据采集的覆盖率(光照、角度、遮挡、SKU、背景)。硬件ISP调优(曝光、白平衡、降噪、补光均匀性)。边缘端推理的稳定性(降频、延迟、内存泄漏)。

如果你正在做类似项目,建议把80%的精力放在数据、硬件和工程上,模型本身反而是最好解决的问题。

相关推荐
_codemonster1 小时前
手语识别及翻译项目实战系列--认识CSL2018数据集
人工智能·深度学习
ACP广源盛139246256731 小时前
2026 PCIe互连芯片@ACP#国产替代格局解析:芯动科技领跑高端交换芯片赛道
大数据·网络·数据库·人工智能·分布式·嵌入式硬件
DevNo1 小时前
2026年校园AI课堂系统应用观察与选型思路
人工智能
SeaTunnel1 小时前
Apache SeaTunnel 提交一个任务都经过了什么?
java·大数据·服务器·apache·etl·seatunnel
Canace1 小时前
用 AI 写了一天代码,为什么反而更累了?
前端·人工智能·ai编程
longxingiot1 小时前
智慧农业大田与大棚物联网监测应用
物联网
代码代码快快显灵1 小时前
MYSQL-DAY2
数据库·mysql
动物园猫1 小时前
课堂行为目标检测数据集:6类别、2,000张图像 | 目标检测
人工智能·目标检测·计算机视觉
.冰块.1 小时前
P-SAN 实战:CentOS7 搭建 iSCSI Target 共享块存储
linux·服务器·iscsi