若该文为原创文章,转载请注明原文出处。
一般情况下,大部分人的电脑都是没有cpu的,cpu也是可以训练的,但花费的时间太长,实际200张图片,使用CPU训练300轮花了3天,本章记录使用云服务器来训练自己的数据集。
使用的云服务器是AutoDL,一直在使用,性价比还是比较高的。
AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDL
一、准备数据集
数据集可以自己拍照,也可以网上找,博主在网上找到了一份疲劳驾驶行为的图片,直接拿过来用了,共有2千多张。
准备好数据后需要数据标注,数据标注是大部分人工智能算法得以有效运行的关键环节。数据标注的过程是通过人工贴标的方式,为机器系统可供学习的样本。yolov5标注使用的是labelimg软件。
需要数据集,下方评论或@博主。标注数据是在本地电脑操作,标注后才把数据上传到云服务器训练
二、labelimg
1、激活环境
conda activate yolo
2、安装labelimg
使用pip 安装
pip install labelimg
安装后,在终端输入labelimg启动软件
3、标注
标记完成的数据请按照下面的格式进行放置,方便程序进行索引。
colo128
├─ images
│ ├─ test # 下面放测试集图片
│ ├─ train # 下面放训练集图片
│ └─ val # 下面放验证集图片
└─ labels
├─ test # 下面放测试集标签
├─ train # 下面放训练集标签
├─ val # 下面放验证集标签
3.1 打开图片及设置标注文件保存的目录并设置自动保存,这里需要主要选择yolo格式
3.2 开始标注,画框,标记目标的label,crtl+s保存,然后d切换到下一张继续标注,不断重复重复
标注完成后,把colo128打包压缩下,准备上传到服务器。
三、训练数据集
1、注册AutoDL
自行注册,云服务可以按时收费,也可以其他方式,自己选择。
2、创建实例
配置选择,选择的是3090,也可以其他,我比较喜欢就是直接选择好社区镜像,就给你创建好环境
创建后开启,可以通过多种方式登录,为了方便,直接使用JupyterLab
3、上传数据集和下载YOLOV5-5.0
删除环境自带的yolov5版本,然后下载yolov5-5.0版本,并上传到服务器,可以直接拖进去,并把标注好的数据也一并上传。
4、修改配置文件
博主是 基于colo128配置文件训练的,这里需要修改两个文件
修改文件一:复制yolov5-5.0/data/colo128.yaml为pilao_coco128.yaml
# 修改一:数据集路径
train: ../coco128/images/train2017/ # 128 images
val: ../coco128/images/train2017/ # 128 images
# number of classes
# 修改,原本是80,修改成3
nc: 3
# 修改二:class names即标注的类,数据集标注了3类,所以修改成3类,colo128是80类
# class names
names: [ 'closed_eye','closed_mouth','open_eye']
修改文件二:复制yolov5-5.0/models/yolov5s.yaml为pilao_yolov5s.yaml
注意不一定是yolov5s.yaml,这是训练时参考的模型,可以是其他的,自行了解
# parameters
# 修改,原本是80,修改成3
nc: 3 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
5、训练
python train.py --img 640 --batch 16 --epochs 300 --data ./data/pilao_coco128.yaml --cfg ./models/pilao_yolov5s.yaml
看到进度,已经在运行了,训练了大概3个多小时。
最后可以在runs/train/expX/weights目录下看到生成了两个pt文件
6、测试
python detect.py --source data/images/zidane.jpg --weights runs/train/exp2/weights/best.pt
路径自行修改。