yolov5及其算法改进
- 1、YOLOV5目标检测简介
- 2、前处理
- 2.1、自适应 Anchor 计算
- 2.2、自适应计算 Anchor 的流程如下:
- 2.3、图像自适应
- 3、YOLOV4与YOLOV5的架构区别
- 3.1、SiLU激活函数
- 3.2、CSPBlock结构图
- 3.3、yolov5的spp改进
- 4、正负样本匹配与损失函数
- 4.1、坐标表示
- 4.2、正负样本匹配
- 4.3、损失函数
1、YOLOV5目标检测简介
YOLOv5 是一个基于 Anchor 的单阶段目标检测,其主要分为以下 5 个阶段:
1、输入端:Mosaic 数据增强、自适应Anchor计算、自适应图像缩放;
2、Backbone:提取出高中低层的特征,使用了 CSP 结构、SPPF、SiLU 等操作;
3、Neck:使用 FPN+PAN 结构,将各层次的特征进行融合,并提取出大中小的特征图;
4、Head:进行最终检测部分,在特征图上应用 Anchor Box,并生成带有类别概率、类别
得分以及目标框的最终输出向量;
5、损失函数:计算预测结果与 Ground Truth 之间的 Loss。
2、前处理
2.1、自适应 Anchor 计算
在 YOLOv3、YOLOv4 中,训练不同的数据集时,计算初始 Anchor 的值是通过单独的程序运行的。但 YOLOv5 中将此功能嵌入到代码中,每次训练时会自适应的计算不同训练集中的最佳 Anchor 值。
2.2、自适应计算 Anchor 的流程如下:
1、载入数据集,得到数据集中所有数据的 w、h;
2、将每张图像中 w、h 的最大值等比例缩放到指定大小,较小边也相应缩放;
3、将 bboxes 从相对坐标改成绝对坐标(乘以缩放后的 w、h);
4、筛选 bboxes,保留 w、h 都大于等于 2 像素的 bboxes;
5、使用 k-means 聚类得到 n 个 Anchors;
6、使用遗传算法随机对 Anchors 的 w、h 进行变异,如果变异后效果变得更好就将变异后的结果赋值给 Anchors,如果变异后效果变差就跳过。
2.3、图像自适应
在常用的目标检测算法中,不同的图像长宽都不相同,因此常用的方式是将原始图像统一缩放到一个标准尺寸,再送入检测网络中。
如图所示,YOLOv5 作者认为,在项目实际应用时,很多图像的长宽比不同,因此均直接进行缩放填充后,两端的灰边大小会不同,而如果填充的比较多,则存在信息的冗余,也可