1. 项目背景与核心需求
自助售货机商品检测系统是近年来智能零售领域的热门研究方向。我在本科毕业设计中选择了这个课题,主要解决传统售货机在商品识别环节存在的几个痛点问题:首先是商品误识别率高,特别是在光线条件复杂的环境下;其次是补货效率低下,需要人工频繁盘点库存;最后是缺乏实时数据反馈,无法为运营提供决策支持。
这个系统的核心功能模块包括:商品图像采集、特征提取与匹配、库存状态更新以及异常情况报警。整套方案基于计算机视觉技术实现,通过摄像头捕捉商品图像,利用深度学习算法进行识别,最终将结果反馈给售货机控制系统。相比传统方案,这种视觉识别方案具有非接触、高精度和可扩展性强等优势。
2. 系统架构设计
2.1 硬件选型与搭建
硬件部分我选择了树莓派4B作为主控板,搭配800万像素的OV5647摄像头模块。选择树莓派主要考虑到其性价比高、社区支持完善,而且GPIO接口丰富便于扩展。摄像头安装在售货机内部,采用俯视角度拍摄商品货道,确保能够完整捕捉商品顶部特征。
为了适应不同光照条件,我还增加了LED补光模块,通过光敏电阻实现自动亮度调节。整个硬件系统采用12V电源供电,通过降压模块为各组件提供合适的工作电压。在安装时特别注意了摄像头的防抖措施,避免因售货机震动导致图像模糊。
2.2 软件系统架构
软件部分采用模块化设计,主要分为以下几个子系统:
-
图像采集模块:负责控制摄像头定时拍摄,默认设置为每5分钟采集一次全货道图像,当检测到货道状态变化时立即触发拍摄。
-
图像处理模块:基于OpenCV实现图像预处理,包括去噪、增强、ROI提取等操作。
-
商品识别模块:采用改进的YOLOv5模型进行目标检测,识别商品种类和位置。
-
库存管理模块:维护商品库存数据库,记录每次识别结果并计算剩余数量。
-
通信模块:通过WiFi将库存数据上传至云端服务器,同时接收远程控制指令。
3. 核心算法实现
3.1 商品检测模型训练
商品识别是整个系统的核心,我对比了多种目标检测算法后选择了YOLOv5s模型。训练数据采集自实际售货机环境,包含10类常见商品(饮料、零食等),每类商品在不同光照、角度下拍摄了约200张图像。通过数据增强(旋转、加噪、亮度调整等)将训练集扩充到5000+样本。
模型训练在Colab平台完成,使用预训练权重进行迁移学习。经过200个epoch的训练后,在测试集上达到了96.3%的mAP。针对售货机场景特别优化了小目标检测性能,通过调整anchor box尺寸和增加特征金字塔层数,将小商品(如口香糖)的识别准确率从82%提升到91%。
3.2 图像预处理流程
原始图像采集后会经过以下处理流程:
-
光照补偿:使用Retinex算法消除光照不均,特别是解决货道深处的阴影问题。
-
透视校正:通过霍夫变换检测货道边缘,对图像进行透视变换,消除拍摄角度带来的形变。
-
背景分割:采用改进的GrabCut算法分离商品区域和货道背景,减少干扰。
-
锐化增强:使用非锐化掩模(USM)增强商品边缘特征,提升后续识别准确率。
这些预处理步骤在实际测试中将识别准确率提升了约15%,特别是在光线条件较差的环境下效果显著。
4. 系统集成与测试
4.1 硬件软件联调
系统集成阶段主要解决了几个关键问题:
-
同步问题:通过硬件触发信号确保摄像头拍摄与补光灯亮起严格同步,避免运动模糊。
-
实时性优化:在树莓派上部署TensorRT加速的YOLOv5模型,使单帧处理时间从380ms降低到120ms。
-
电源管理:设计低功耗模式,在空闲时关闭非必要外设,使系统平均功耗控制在5W以内。
4.2 场景测试与优化
在实际售货机环境中进行了为期两周的连续测试,主要评估指标包括:
-
识别准确率:在正常光照条件下达到98.2%,弱光环境下(<50lux)为94.5%。
-
响应时间:从触发拍摄到完成识别平均耗时1.3秒,满足实时性要求。
-
稳定性:连续运行336小时无故障,温度控制在安全范围内。
测试中发现的主要问题是商品密集堆放时的遮挡问题,通过增加多角度拍摄和引入3D重建技术部分解决了这个问题。
5. 关键问题与解决方案
5.1 商品相似度问题
某些包装相似的饮料(如不同口味的同品牌产品)容易混淆。解决方案是:
-
增加局部特征检测,重点识别包装上的文字和图案差异。
-
引入RFID辅助识别,在易混淆商品上粘贴微型标签。
-
建立商品位置先验知识库,结合销售记录提高识别准确率。
5.2 环境干扰问题
售货机内部的反光和灰尘会影响图像质量。采取的应对措施包括:
-
安装偏振镜消除反光。
-
定期自动清洁机制,使用微型气泵吹扫镜头。
-
动态背景建模,实时更新背景参考图像。
6. 系统扩展与优化方向
在项目后期,我还探索了几个有潜力的优化方向:
-
多模态融合:结合重量传感器数据,当视觉识别不确定时参考重量信息。
-
自适应学习:建立商品外观变化模型,自动更新识别特征库。
-
边缘计算:将部分计算任务下放到摄像头端,减轻主控板负担。
-
预测补货:基于历史销售数据和当前库存,预测补货时间和商品种类。
这个毕设项目让我深刻体会到,一个看似简单的商品检测系统背后涉及到计算机视觉、嵌入式开发、物联网等多个领域的知识。最大的收获是学会了如何将学术论文中的算法落地到实际工程场景,并根据具体需求进行调整优化。