1. 项目背景与核心需求
自助售货机商品检测系统是近年来零售自动化领域的热门研究方向。作为一名刚完成相关毕业设计的工科生,我想分享整个项目从构思到落地的完整流程。这个系统主要解决传统售货机存在的两大痛点:商品缺货无法实时感知,以及货道卡货导致的交易失败问题。
市面上90%以上的老旧售货机仍采用机械式检测,通过弹簧位移或光电开关判断商品状态。这种方式误报率高(约15%),且无法识别具体商品品类。我们的方案采用计算机视觉+重量传感的融合检测,将误报率控制在3%以内,同时实现SKU级别的库存管理。
2. 技术方案选型与论证
2.1 视觉检测模块设计
核心采用YOLOv5s轻量化模型,相比Faster R-CNN推理速度提升4倍(在Jetson Nano上达到22FPS)。训练数据集包含:
- 自采数据:6类常见饮料瓶的2000张多角度图像
- 数据增强:添加模拟货道网格遮挡、反光等干扰
关键参数调优过程:
- 输入分辨率从640×640降至320×320,mAP仅下降2.1%但推理速度提升60%
- 使用迁移学习,在COCO预训练模型基础上fine-tune 50个epoch
- 针对易混淆品类(如不同口味的同品牌饮料),添加难例挖掘策略
实际部署中发现,货道内部的光照条件对检测效果影响极大。我们最终在每层货道加装6500K色温的LED补光灯,使检测准确率从81%提升至94%。
2.2 重量传感系统实现
采用HX711称重模块搭建分布式检测网络:
- 每个货道独立安装称重板(量程5kg,精度±2g)
- 建立商品重量特征库(包含空载/满载的基准值)
- 动态阈值算法处理温度漂移问题
实测数据表明,重量检测对瓶装饮料的识别准确率可达98%,但对袋装零食(如薯片)因包装充气程度不同,准确率降至85%。这正是需要视觉辅助的关键场景。
3. 系统集成与调试
3.1 硬件部署要点
- 结构改造:在原有货道加装3D打印的摄像头支架,确保视角覆盖全部商品
- 电路设计:采用RS-485总线连接多个称重模块,解决长距离传输问题
- 防抖处理:在称重模块底部添加硅胶缓冲垫,消除电机振动干扰
3.2 软件架构设计
python复制# 核心处理流程伪代码
while True:
weight_data = read_hx711() # 重量采集
if weight_changed(weight_data):
trigger_camera() # 视觉触发
img = capture_image()
detections = yolo_infer(img)
stock_update(detections, weight_data) # 融合判断
多线程处理框架中,重量检测作为高优先级中断,视觉分析作为后台任务。这种设计使系统响应时间控制在300ms以内。
4. 典型问题与解决方案
4.1 商品粘连误判
现象:相邻商品接触时被识别为单个物体
解决措施:
- 在YOLO训练集中添加大量粘连样本
- 结合重量数据进行二次校验(如检测到1瓶重量但识别出2个bbox)
4.2 称重模块漂移
现象:长期使用后出现基准值偏移
应对方案:
- 每日自动执行零点校准(凌晨2点售货机闲置时段)
- 设置硬件复位电路,异常时强制重新初始化
4.3 网络通信延迟
在早期测试中,云端库存同步有时延导致超卖。最终采用本地优先策略:
- 本地数据库实时扣减库存
- 异步上传至云端
- 冲突时以本地数据为准
5. 项目优化方向
经过三个月实地测试,总结出以下改进空间:
- 增加红外深度传感器,解决透明包装商品的视觉检测难题
- 引入时序分析,通过重量变化曲线识别商品掉落过程
- 开发自适应学习功能,自动更新商品特征库
这个项目让我深刻体会到,工业级应用不仅需要算法精度,更要考虑环境适应性。比如货道内的高频振动会导致重量数据波动,必须通过硬件滤波+软件算法双重处理。建议后续开发者预留至少40%时间用于现场调试,实验室环境下的性能指标往往与实际差距较大。