基于YOLOV8的无人商店商品识别与计价系统
基于YOLOV8的无人商店商品识别与计价系统
随着图像识别技术的迅速发展,全球零售行业正在逐步实现自动化和智能化。本文基于该现状,设计并实现一个基于YOLOv8的商品识别与计价系统,该系统以无人商店常见的113种零售商品为基础,模拟了智能售货柜和自助收银机两种零售模式,实现了商品实时精确识别与自动计价功能。
研究背景与意义
近年来,随着人工智能图像识别技术的迅速发展,全球零售行业正在逐步实现自动化和智能化。无人商店全自动售货成为时下零售行业的热点,其核心在于通过技术手段减少或消除对人工的依赖。无人商店自动售货不仅能降低人力资源成本,还能节省消费者排队等待时间,从而显著提升消费者的消费体验。而无人商店售货中最重要的环节是商品的自动识别与计价,它确保了交易的准确性和效率。
无人售货最早的表现形式是自动贩卖机,它通过精密的机械传动结构,实现了消费者与平台的物理交流。在这种模式下,用户购买多件商品,需要多次付款,且存在商品无法掉落的问题。这种贩卖机虽然在早期市场占据了一席之地,但其制造成本相对较高,空间利用效率低,且商品容量较为受限,在市场上发展势头高开低走。取而代之的是现下的智能售货柜、自助收银机。智能售货柜能自动识别用户取走了哪些商品,并完成自动计价。自助收银机能对放在平台上的商品进行自动识别计价。自助收银机、智能售货柜有效降低了人力、物力成本。突破了商品种类受限的约束,提供了更为丰富的产品选择。这两种无人零售模式允许商家轻松扩展业务,不受地理位置的限制。无论是在繁忙的商业区还是在偏僻的区域,都可以根据需求灵活部署这些设备。这两种模式主要有三种类型:称重识别、无线射频、基于计算机视觉的商品识别。其中,基于计算机视觉的商品识别,能够精确识别各种复杂场景下的商品,有效解决光照、拍摄角度、拍摄距离等不同环境条件对采集的图像的影响,有效应对商品摆放拥挤和相互遮挡等情况,实现自动化、高准确率的商品识别。
数据集
收集第六届“信也科技杯”图像算法大赛提供的公开数据集,并进行有效性检验,去除重复无效的图片。该数据集是VOC格式(使用 XML 文件标注标签信息),而支持 YOLOv8训练的label格式为 YOLO 格式(图片标签文件格式为 TXT)。因此需要label转化为 TXT 格式。同时为了更好的训练模型与验证模型,将训练集按照 7:2:1的比例划分为训练集、验证集、测试集。各部分的图像数量如表3.2所示。
数据集 | 训练集 | 验证集 | 测试集 | 总计 |
---|---|---|---|---|
图像数量 | 3789 | 982 | 542 | 5313 |
对数据集中出现的商品类别进行分类统计,一共113种类别,各类别具体数量如图3.2所示。从图中可以看出,各部分商品分布较为均匀,除了极少数常见商品出现较多之外,在整体上符合数据集均匀分布的特征。而出现较多的商品多为常用、畅销和利润较高的产品,这是智能售货柜零售场景下的正常现象,考虑到智能售货柜的运营特性,商品种类的这种分布实际上反映了市场需求和消费者偏好的真实情况。这种略带偏差的分布模式无需调整,故无需对数据集进行分布上的处理。
实验环境
在autodl平台租用服务器进行模型的训练,使用NVIDIA CUDA 11.8和cuDNN库以充分利用硬件加速,加快模型训练的过程。环境信息如表3.3所示。
类别 | 内容 | 参数信息 |
---|---|---|
软件 | Pytorch | 2.0.0 |
CUDA | 11.8 | |
Cudnn | 8700 | |
OS | Linux Ubuntu发行版 | |
硬件 | GPU | NVIDIA GeForce RTX 4090(24GB) |
CPU | 12 vCPU Intel(R) Xeon(R) Platinum 8352V CPU @ 2.10GHz | |
内存、硬盘 | 90GB、80GB |
实验中最终设置的超参数如表3.4所示。
参数名称 | 参数设置 |
---|---|
batch_size(批次大小) | 32 |
epochs(迭代轮次) | 80 |
image size(输入图像大小) | 640 |
ptimizer(优化器) | Adam |
momentum:(动量) | 0.937 |
lr0(初始学习率) | 0.01 |
lrf(学习率因子) | 0.01 |
mosaic(数据增强参数) | 1.0 |
hsv_h:、hsv_s、hsv_v(颜色空间变换) | 0.015、0.7、0.4 |
前置工作完成后进行模型的训练,由于超参数中包含了图像增强相关参数(如mosaic、hsv、flip up-down等),训练过程中会自动进行数据增强,图3.1为一次运行时(batchsize=32)经过数据增强得到的增强图片。
训练结束时,三类损失函数均在70轮次左右时收敛(在最后十个轮次时自动关闭数据增强)。从图3.5可以看出,当confidence在0.6附近时,F1-Confidence Curve最高,在这个置信度阈值下,模型在精确率和召回率之间达到了平衡。训练完成后,在测试集上评估模型的泛化能力。
在验证集上,所有类别的mAP50达到98.3%,mAP50-95达到91.6%,精确率达到96.6%,召回率达到96.6%,;在测试集上,mAP50为97.5%,mAP50-95为91.5%,精确率为94.6%,召回率为96.1%,在测试集上的表现接近验证集,具体如表3.5所示。经过评估,模型在测试集上的表现良好,说明该商品识别模型具有良好的泛化能力。实验表面该商品识别模型可以运用于自动识别计价场景中。后文运用该商品识别模型,进行计价系统的开发。
类别 | Pression | Recall | mAP50 | mAP50-95 | F1 |
---|---|---|---|---|---|
验证集 | 0.966 | 0.966 | 0.983 | 0.916 | 0.966 |
测试集 | 0.946 | 0.961 | 0.975 | 0.915 | 0.962 |
商品识别与计价系统界面
项目代码后续会上线,可以关注一下。