目录
3.2、CSP结构(Cross Stage Partial Network——跨阶段部分网络)
4.1、FPN(Feature Pyramid Network)
4.2、PAN(Path Aggregation Network)
参考:https://blog.csdn.net/nan355655600/article/details/107852353
该博主写的确实不错
1、网络结构
具体详细的网络结构可视图显示可用netron在线网站查看,网站链接:Netron(开个梯子)
具体如何在线显示Yolov5之前的用cfg文件,从Yolov5开始网络文件就变成了yaml,所以要pt->onnx->netron的折中方式,先使用Yolov5代码中export.py脚本将pt文件转换为onnx格式,再用netron工具打开即可。
与yolo v3网络结构的不同:
(1)输入端:Mosaic数据增强、自适应锚框计算
(2)Backbone:Focus结构,CSP结构
(3)Neck:FPN+PAN结构
(4)Prediction:CIOU_Loss
2、输入端
2.1、Mosaic数据增强
采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接。
小目标的AP一般比中目标和大目标低很多。而Coco数据集中也包含大量的小目标,纯在的问题的是小目标的分布并不均匀。针对这种情况,采用Mosaic数据增强方式。
2.2、自适应锚框计算
在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框groundtruth进行比对,计算两者差距,再反向更新,迭代网络参数。
Yolov5在Coco数据集上初始设定的锚框
Yolov5中将计算锚框的功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。
2.3、自适应图片缩放
不同图片的长宽不相同,常用方式是将图片统一缩放到一个标准尺寸,而缩放填充后,两端的黑边大小都不同,如果填充的比较多,则存在信息冗余,影响推理速度。
Yolov5代码在datasets.py的letterbox函数中进行了修改,对原始图像自适应的添加最少的黑边。
3、Backbone
3.1、Focus结构
切片操作
简单而言就是把608*608*3的输入图像切片成4个304*304*3的图像——304*304*12的特征图,再经过卷积就变成了304*304*32。
YOLO v5不同版本,最后使用的卷积核数量不一样。
3.2、CSP结构(Cross Stage Partial Network——跨阶段部分网络)
4、Neck
采用FPN+PAN结构
FPN主要解决了多尺度目标检测中的小目标检测问题,通过特征金字塔结构增强了特征图的语义信息。而PAN则进一步通过双向特征融合,不仅保留了FPN的语义增强优势,还特别提升了模型对小目标的定位能力。
4.1、FPN(Feature Pyramid Network)
FPN结构是一种自顶向下的特征金字塔结构,它通过在深层(高语义但低分辨率)和浅层(低语义但高分辨率)特征之间建立横向连接来增强特征图的语义信息。这种结构使得在不同尺度上都能进行有效的目标检测。FPN的核心在于它能够从底层特征图向上构建一个特征金字塔,同时通过上采样和融合操作,使得高层的语义信息得以传递到低层,从而在保持高分辨率的同时增强了特征图的语义表达能力。
4.2、PAN(Path Aggregation Network)
PAN结构则是在FPN的基础上进一步发展而来,它不仅包含自顶向下的路径,还引入了自底向上的路径,实现了特征的双向融合。PAN通过这种方式,不仅传递了高层的语义信息,还加强了低层的定位信息,使得网络能够更准确地检测到不同尺寸的目标。PAN的设计理念是在FPN的基础上,进一步通过自底向上的路径聚合,将低层的定位特征传递给高层,从而增强整个特征金字塔的定位能力。
5、输出端
5.1、Bounding box损失函数
Yolov5采用CIOU_Loss
v是衡量长宽比一致性的参数
5.2、nms非极大值抑制
Yolov5仍采用加权nms方式
能把漏检的部分给检测出来。