YOLOv5的更新速度真的很快,运行最新的code可能会出现这样的errors:
下面就开始《YOLOv5从入门到部署之:配置与初始化超参》的内容了。
1 网络配置文件
Yolov5的配置文件为yaml类型,yolov5*.yaml文件通过yolo.py解析文件配置模型的网络结构。yaml文件配置网络的好处是十分的方便不需要像Yolov3的config设置网络一样进行叠加,只需要在yaml配置文件中的参数进行修改即可。为了更好的了解和修改yolov5的配置文件下面以yolov5s.yaml文件为例介绍网络配置文件的参数。
Yolov5s.yaml
(1)模型的深度和宽度
1 2 3 4 |
# parametersnc: 80 # number of classesdepth_multiple: 0.33 # model depth multiplewidth_multiple: 0.50 # layer channel multiple |
width_multiple:模型的宽度 控制卷积核的数量 ,卷积核的数量 = 数量 * width。
1 2 3 4 |
# anchors anchors: - [10,13, 16,30, 33,23] # P3/8 检测小目标 10,13是一组尺寸,一共三组 - [30,61, 62,45, 59,119] # P4/16 - [116,90, 156,198, 373,326] # P5/32 检测大目标 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# YOLOv5 backbone backbone: # from 第一列 输入来自哪一层 -1代表上一层, 4代表第4层 # number 第二列 卷积核的数量 最终数量需要乘上width # module 第三列 模块名称 包括:Conv Focus BottleneckCSP SPP # args 第四列 模块的参数 # [from, number, module, args] [[-1, 1, Focus, [64, 3]], # 0-P1/2 [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 卷积核的数量 = 128 * wedith = 128*0.5=64 [-1, 3, BottleneckCSP, [128]], 模块数量 = 3 * depth =3*0.33=1 [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 [-1, 9, BottleneckCSP, [256]], 模块数量 = 9 * depth =9*0.33=3 [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 [-1, 9, BottleneckCSP, [512]], [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 [-1, 1, SPP, [1024, [5, 9, 13]]], [-1, 3, BottleneckCSP, [1024, False]], # 9 ] |
a、Focus:对特征图的切片操作,模块参数args分析:[[-1, 1, Focus, [64, 3]] 中的[64, 3] 解析得到[3, 32, 3] ,输入为3(RGB),输出为64*0.5 = 32,3是卷积核 3*3
d、SPP:采用1×1,5×5,9×9,13×13的最大池化的方式,进行多尺度融合。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# YOLOv5 head head: [[-1, 1, Conv, [512, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], 上采样 [[-1, 6], 1, Concat, [1]], #cat backbone P4 [-1, 6]代表cat上一层和第6层 [ -1, 3, BottleneckCSP, [512, False]], # 13 第13层 [-1, 1, Conv, [256, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], 上采样 [[-1, 4], 1, Concat, [1]], #cat backbone P3 [-1,4]代表cat上一层和第4层 [-1, 3, BottleneckCSP, [256, False]], # 17 (P3/8-small) 第17层 [-1, 1, Conv, [256, 3, 2]], [[-1, 14], 1, Concat, [1]], #cat head P4 [-1,14]代表cat上一层和第14层 [-1, 3, BottleneckCSP, [512, False]], # 20 (P4/16-medium) 第20层 [-1, 1, Conv, [512, 3, 2]], [[-1, 10], 1, Concat, [1]], #cat head P5 [-1,10]代表cat上一层和第10层 [-1, 3, BottleneckCSP, [1024, False]], # 23 (P5/32-large) 第23层 [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) ] #Detect [17, 20, 23] 代表输入的层数17和20和23 |
2 初始化超参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# Hyperparameters for VOC finetuning python train.py --batch 64 --weights yolov5m.pt --data voc.yaml --img 512 --epochs 50 lr0: 0.0032 #学习率 lrf: 0.12 # 余弦退火超参数 momentum: 0.843 # 学习率动量 weight_decay: 0.00036 # 权重衰减系数 warmup_epochs: 2.0 #预热学习 epoch warmup_momentum: 0.5 #预热学习率动量 warmup_bias_lr: 0.05 #预热学习率 box: 0.0296 # giou损失的系数 cls: 0.243 # 分类损失的系数 cls_pw: 0.631 #分类BCELoss中正样本的权重 obj: 0.301 # 有无物体损失的系数 obj_pw: 0.911 # 有无物体BCELoss中正样本的权重 iou_t: 0.2 # 标签与anchors的iou阈值iou training threshold anchor_t: 2.91 # 标签的长h宽w/anchor的长h_a宽w_a阈值, 即h/h_a, w/w_a都要在(1/2.91, 2.91)之间anchor-multiple threshold anchors: 3.63 # 下面是一些数据增强的系数, 包括颜色空间和图片空间 fl_gamma: 0.0 hsv_h: 0.0138 # 色调 hsv_s: 0.664 # 饱和度 hsv_v: 0.464 # 明度 degrees: 0.373 #旋转角度 translate: 0.245 # 水平和垂直平移 scale: 0.898 # 缩放 shear: 0.602 # 剪切 perspective: 0.0 # 透视变换参数 flipud: 0.00856 # 上下翻转 fliplr: 0.5 # 左右翻转 mosaic: 1.0 #进行mosaic的概率 mixup: 0.243 #进行mixup的概率 |
(2)训练超参数:
–data 设置数据的配置文件 –cfg 设置网络结构的配置文件 –weihts 加载预训练模型的路径
3 Next
本站上原创文章未经作者许可,不得用于商业用途,仅做学习交流使用,本站免责声明。转载请注明出处,否则保留追究法律责任的权利。《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
数据科学与编程 » YOLOv5从入门到部署之:配置与初始化超参
数据科学与编程 » YOLOv5从入门到部署之:配置与初始化超参