yolo v5 数据集标注
安装labelimg软件
1.进入虚拟环境
2.pip install labelimg
3.直接输入labelimg就可以打开软件
conda activate your-name
pip install labelimg
labelimg
labelimg软件设置
这边数据格式一定要设置成yolo
; 开始标注
这个部分看labelimg使用(2.1-2.2部分)
yolo v5 数据集处理
1.标注完成后的图和生成的txt文件一一对应
2.数据集的格式
YOLO
├─ images
├─ test
├─ train
└─ val
└─ labels
├─ test
├─ train
└─ val
3.在data目录下创建一个 data.yaml
的文件
train: d:\Users\zlx\Desktop\yolo\image\train
val: d:\Users\zlx\Desktop\yolo\image\val
nc: 10
names: ['准备', '直拳','摆拳','勾拳','鞭拳','肘击','横踢','前蹬','侧踹','膝法']
yolo v5 模型训练
1.在models下建立一个 yolov5s.yaml
的模型配置文件,如图:
nc: 10
depth_multiple: 0.33
width_multiple: 0.50
anchors:
- [10,13, 16,30, 33,23]
- [30,61, 62,45, 59,119]
- [116,90, 156,198, 373,326]
backbone:
[[-1, 1, Focus, [64, 3]],
[-1, 1, Conv, [128, 3, 2]],
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]],
[-1, 9, C3, [256]],
[-1, 1, Conv, [512, 3, 2]],
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]],
[-1, 1, SPP, [1024, [5, 9, 13]]],
[-1, 3, C3, [1024, False]],
]
head:
[[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 6], 1, Concat, [1]],
[-1, 3, C3, [512, False]],
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, 'nearest']],
[[-1, 4], 1, Concat, [1]],
[-1, 3, C3, [256, False]],
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]],
[-1, 3, C3, [512, False]],
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]],
[-1, 3, C3, [1024, False]],
[[17, 20, 23], 1, Detect, [nc, anchors]],
]
2.训练
在训练前先确认一下以下文件都有:
运行以下代码开始训练:
如果使用cpu训练的话,对应的改成
--device cpu
python train.py --data data.yaml --cfg yolov5s.yaml --weights pt/yolov5s.pt --epoch 300 --batch-size 16 --device 0
所有训练结果都保存在
runs/train/
递增的运行目录中,例如 runs/train/exp2
, runs/train/exp3
等等。其中模型在
runs/trains/exp2/weights
中 best.pt/last.pt
,在exp2中还有各种指标图的图片。在模型结束之后,可以在runs/trains中找到三张图,分别表示我们模型在验证集上的召回率、准确率和均值平均密度。
P_curve.png
、 PR_curve.png
、 R_curve.png
如果你的目录下没有这样的曲线,可能是因为你的模型训练一半就停止了,没有执行验证的过程,你可以通过下面的命令来生成这些图片。
python val.py --data data/data.yaml --weights runs/train/exp_yolov5s/weights/best.pt --img 640
遇到的问题
第一次使用wandb,选择1创建个账号,然后选择2输入 key就可以了。
按照提示打开链接:You can find your API key in your browser here: https://wandb.ai/authorize
登录并获取key,输入到终端: Paste an API key from your profile and hit enter:
配置成功(重新训练发现错误消失):Appending key for api.wandb.ai to your netrc file: /home/zlx/.netrc
2.OSError:[WinError 1455]页面文件太小,无法完成操作。
参考这个博主的解决方案
3.UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa4 in position 4: illegal multibyte sequence
解决方案:
在
labelImg-master\libs\yolo_io.py
中
classesFile = open(self.classListPath, 'r')
self.classes = classesFile.read().strip('\n').split('\n')
改为:
classesFile = open(self.classListPath, 'r',encoding='gbk')
self.classes = classesFile.read().strip('\n').split('\n')
在这里我最开始的解决方案是改成UTF-8,后面又报了一个错我尝试的改成gbk就可以了。所以图片没改过来。
模型使用
模型的使用全部集成在了 detect.py
目录下,你按照下面的指令指你要检测的内容即可
python detect.py --weights runs/train/exp_yolov5s/weights/best.pt --source 0
python detect.py --weights runs/train/exp_yolov5s/weights/best.pt --source file.jpg
python detect.py --weights runs/train/exp_yolov5s/weights/best.pt --source file.mp4
python detect.py --weights runs/train/exp_yolov5s/weights/best.pt path/
python detect.py --weights runs/train/exp_yolov5s/weights/best.pt 'https://youtu.be/NUsoVlDFqZg'
python detect.py --weights runs/train/exp_yolov5s/weights/best.pt 'rtsp://example.com/media.mp4'
若需要训练中文标签
1.修改utils/general.py文件
with open(data, errors='ignore') as f:
修改为:
with open(data, encoding="utf-8",errors='ignore') as f:
2.修改utils/metrics.py文件
sn.set(font_scale=1.0 if self.nc < 50 else 0.8)
修改为:
sn.set(font="SimHei",font_scale=1.0 if self.nc < 50 else 0.8)
3.utils/plots.py文件
在plots.py文件的开头添加
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
Original: https://blog.csdn.net/qq_45672807/article/details/124736594
Author: 郑琳潇
Title: yolo v5 数据标注和训练
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/627819/
转载文章受原作者版权保护。转载请注明原作者出处!