YOLOv5学习记录
众所周知
YOLOv5是基于PyTorch框架开发的,为了使用YOLOv5我们首先要去做好一些前置工作
1.安装YOLOv5
(1)打开Github在右上角搜索栏搜索yolov5
(2)点开第一个项目
(3)我此次使用的版本是6.0所以在左边的master中点开Tags选择我想要的版本
(4)然后再右边点击绿色的Code,然后Download ZIP,下载压缩包
2.配置环境
(1)解压后使用pycharm或者vscode打开yolov5文件,作者使用也推荐用pycharm编译器,相对于VSC,pycharm一些库可以直接导入,VSC奇怪的报错真的很难绷
(2)在pytorch官网下载与你配置对应版本的Pytorch
进入官网点击上方Get Started
选择版本,复制下方的Run this Command
复制进入终端中等待下载
(3)做完以上的任务后环境大体配置成功了,可以点击上方的虫子图标进行Debug查看自己是否有哪个库没有安装好,这些通常都可以在网上找到答案,每个人的情况各不相同
这边可以看看我学长写的一篇blog,里面有提到部分问题以及对于参数的推荐 点我
3.训练
(1)获得训练样本(打标)
将收集到的图片进行打标,这里使用的工具是make sense
具体操作可以参考 blog
训练样本的去处还是可以在我学长的 blog 找到
(2) 开始训练
这里简单放两个我遇到的错误情况
1.torch的版本有问题
如果你是GPU训练并出现上面的报错,检查一下解释器选项中torch和torchvision是不是都是cuda版本,如果不是可能需要重新安装pytorch
参考解决方案
2. memory error
通常出现这种报错就是在train.py中batch调太高了,调低就ok
3.根本没有进入训练,最后在runs文件夹中exp只有统计样本数量
这种情况是训练失败了,这是因为安装了新版本的 Pillow (10)删除了该getsize 功能,可以对Pillow的版本降级处理,在终端输入下面的指令
pip install Pillow==9.5
3.训练成功的情况
如图,可在看到有confusion_matrix(混淆矩阵),F1_curve,召回率,准确率等图片,还有results,模型打标后的部分结果
然后就可以根据result的曲线判断是否过拟合亦或是欠拟合,对参数进行修改重新训练,附带一张查到的对参数的翻译
lr0: 0.01 # 初始学习率 (SGD=1E-2, Adam=1E-3)
lrf: 0.2 # 循环学习率 (lr0 * lrf)
momentum: 0.937 # SGD momentum/Adam beta1 学习率动量
weight_decay: 0.0005 # 权重衰减系数
warmup_epochs: 3.0 # 预热学习 (fractions ok)
warmup_momentum: 0.8 # 预热学习动量
warmup_bias_lr: 0.1 # 预热初始学习率
box: 0.05 # iou损失系数
cls: 0.5 # cls损失系数
cls_pw: 1.0 # cls BCELoss正样本权重
obj: 1.0 # 有无物体系数(scale with pixels)
obj_pw: 1.0 # 有无物体BCELoss正样本权重
iou_t: 0.20 # IoU训练时的阈值
anchor_t: 4.0 # anchor的长宽比(长:宽 = 4:1)
# anchors: 3 # 每个输出层的anchors数量(0 to ignore)
#以下系数是数据增强系数,包括颜色空间和图片空间
fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5)
hsv_h: 0.015 # 色调 (fraction)
hsv_s: 0.7 # 饱和度 (fraction)
hsv_v: 0.4 # 亮度 (fraction)
degrees: 0.0 # 旋转角度 (+/- deg)
translate: 0.1 # 平移(+/- fraction)
scale: 0.5 # 图像缩放 (+/- gain)
shear: 0.0 # 图像剪切 (+/- deg)
perspective: 0.0 # 透明度 (+/- fraction), range 0-0.001
flipud: 0.0 # 上下翻转概率 (probability)
fliplr: 0.5 # 左右翻转概率 (probability)
mosaic: 1.0 # 进行Mosaic概率 (probability)
mixup: 0.0 # 进行图像混叠概率(即,多张图像重叠在一起) (probability)