目录
前言
随着人工智能技术的快速发展,催生了无人售货机、无人零售店等新型零售模式,利用计算机视觉算法和RFID电子标签,完成扫码开门、商品识别、自助结账等一系列流程,大大简化了购物流程,提高了顾客线下购物体验;文章中我们重点研究计算机视觉部分,利用公开数据集+开源算法YOLOv8,训练商品识别模型,模拟线下无人零售场景。
实验环境
仅供参考:矩池云GPU服务器(NVIDIA GeForce RTX 2080 Ti)
Python 3.10,Pytorch 2.1.1
省钱小技巧:先将数据集上传至矩池云网盘,再租用矩池云服务器,服务器内可直接读取网盘数据,省去数据集上传服务器时间。
一、数据集下载
文章中使用的数据集为kaggle公开数据集,原版是coco格式,我自己处理了一下,转成yolo格式并修复了部分损坏的图片,已上传至百度网盘(25.88G大小)请先下载:百度网盘链接点击下载
train训练集示例:
val验证集示例:
二、使用步骤
1.安装依赖库
安装yolov8(用自己电脑的建议先创建虚拟环境)
pip install ultralytics
2.训练模型
下载的数据集名为coco8.zip,里面包含yolov8预训练模型,运行即可:
unzip /mnt/coco8.zip -d /home # 解压缩(仅供参考)
cd /home/coco8/models # 进入项目目录(仅供参考)
python train.py # 训练
train.py文件预览:
# 参数详细注释:https://docs.ultralytics.com/modes/train/#key-features-of-train-mode
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8s.pt') # load a pretrained model (recommended for training)
# Train the model
results = model.train(
data='../datasets/coco8.yaml', # 数据集配置文件
epochs=30, # 训练次数
imgsz=640, # 图像大小
device=0, # 使用GPU(如果用CPU训练 device=cpu)
batch=-1, # 批次(-1=根据GPU自动调整)
lr0=0.01, # 初始学习率
lrf=0.0001, # 结束学习率
cache=True, # 内存训练(内存不高的设为False用磁盘训练)
# 数据增强
mixup=0.5, # 合成图片
copy_paste=0.5, # 混合图片
bgr=0.5, # 通道颜色
flipud=0.5, # 上下反转
perspective=0.0005, # 随机透视变换
)
训练过程预览:
3.测试模型
mode为训练后模型路径,source为测试图片路径:
yolo predict model=runs/detect/train/weights/best.pt source='../datasets/images/val/20180930-16-45-00-2711.jpg'
测试图片预览:
总结
通过测试可以看出,模型已经可以识别大部分商品,虽然只有30次epoch训练,但耗时仍旧高达20个小时,调试成本比较昂贵,并且单纯提高epoch已很难提升精度,需要尝试调参、数据增强;想深度研究的可以看看Ray Tune自动调节超参。