一直想对yolov5做一个总结,趁着现在不忙,总算是有机会了。正题开始:
yolov5网络结构部分
一:输入部分处理
1、数据增强—Mosaic数据增强
-Mosaic借鉴Cutmix数据增强技术,使用4张图像进行拼接,使得模型在更小范围内识别到目标。
步骤:
1.随机选取图片拼接基准点坐标,随机选取4张图片
2.四张图片根据基准点。进行尺寸和缩放比例调整,放到指定尺寸的大图上
3.根据每张图像的尺寸变换方式,将映射关系对应到图片标签上
4.根据指定的横纵坐标,对大图进行拼接。处理超过边界的检测框坐标
使用数据增强的优点:
1.丰富数据集的多样性
2.增强模型的鲁棒性和泛化能力
3.有助于小目标检测效果的提升
4.增强BN归一化效果:数据变多,训练时会增加batch_size,BN计算的均值和方差会接近于整体数据的均值和方差
2、自适应锚框计算
v3和v4版本的自适应锚框计算,需要在训练之前使用单独的代码得到。而v5是把这个功能嵌入到训练代码里了,在每次训练开始时,v5会根据数据集的不同,自行计算自适应锚框。
自适应锚框计算步骤:
1.获取数据集中所有目标的框的尺寸
2.把每张图像进行等比例resize到指定大小
3.将目标框从相对坐标改到绝对坐标(坐标乘以缩放后的宽高)
4.保留宽高大于等于2个 像素的框,过滤框
5.使用k-means算法聚类得到n个anchors
6.使用遗传算法随机对anchors的宽高进行变异。如果变异后的效果好,就把变异后的结果赋值给anchors,否则就跳过,默认变异1000次。v5使用anchor_fitness方法计算得到的适应度fitness,再进行评估。
3、自适应图片缩放
在常用的目标检测算法中,不同的图片长宽都不相同,因此常用的方式是将原始图片统