【Make YOLO Great Again】最终版本YOLOv1-v7全系列大解析(汇总篇) - 知乎
yolov1和v2的结构比较简单,v2相对v1去掉了全连接层用global average pooling替代
YoloV3相对前两个版本最大的改动是引入了残差单元连接(CSPdarkent53)和多尺度预测(FPN)。这也是yolo系列算法第一次引入neck结构。在Anchor的部分引入了autoanchor的操作,用kmeans聚类的办法算出图片所有聚类框的类型。
Yolov4引入SPP(spatial pyramid polling)和PAN模块。SPP模块添加在卷积层后可以让使得任意大小的特征图都能够转换成固定大小的特征向量。PAN Path Aggregation Network模块则可以在对物体进行实例分割的基础上提取空间信息生成mask。
对比v3,FPN的特征提取是自上向下,对于大目标来说路径过长。PAN为自下向上,通过底层和顶层的shortcut可以极大缩短路径。
yolov4的PAN与原版不同的一点是在自适应池化层中采取了concat的相邻层连接操作而非addition。这样做的好处是保留了尽可能多的不同层上的特征,提高了预测的准确性。
YoloV5相比v4,将CBL(conv-bn-leakyRelu)替换成了CSP_v5结构。是将原输入分成两个分支,分别进行卷积操作使得通道数减半,然后一个分支进行Bottleneck * N操作,然后concat两个分支,使得BottlenneckCSP的输入与输出是一样的大小,这样是为了让模型学习到更多的特征。
V5的Auto anchor结构可以让模型自适应数据中的anchor类型。具体是用Kmeans算法算出数据中anchor的聚类。
V5可以通过配置不同的参数来获得不同复杂度的模型。同时也尝试了混合精度训练和模型EMA策略。
混合精度训练能在尽可能减少精度损失的情况下利用FP16加速训练,并使用FP16存储模型权重,在减少占用内存的同时起到了加速训练的效果。
模型EMA(Exponential Moving Average)策略将模型近期不同epoch的参数做平均,提高模型整体检测性能以及鲁棒性。
YOLOv5中的CSP结构_tt丫的博客-CSDN博客 ,CSP结构有两种。
Yolov6基于RepVGG引入了Rep-PAN结构,替换CSPblock为Rep-block,替换backbone的卷积层为Repconv。通过卷积层和BN的合并以及卷积层之间的合并(3*3和1*1的合并)提高运行速度。推理时可转化成单路结构提高推理速度。
RepVGG:使VGG样式的ConvNets再次出色 - 知乎
Yolov6和YoloX都对检测头进行解耦,YOLOx使用了三个Decoupled Head(解耦头),分别聚焦cls(分类信息),reg(检测框信息)和IOU(置信度信息)。v6在此基础上精简了结构,将回归和分类的head中的两个3*3卷积变为一个。
为了进一步提升回归精度,YOLOv6使用了SIoU检测框回归损失函数来优化网络的学习过程。
YOLOv4中的CIoU Loss虽然考虑到检测框与ground truth之间的重叠面积、中心点距离,长宽比这三大因素,但是依然缺少了对检测框与ground truth之间方向的匹配性的考虑。SIoU Loss通过引入了所需回归之间的向量角度,重新定义了距离损失,有效降低了回归的自由度,加快网络收敛,进一步提升了回归精度。
yolov7
两个结构:E-LAN和MP-conv结构
SPPCSP模块在SPP模块基础上在最后增加concat操作,与SPP模块之前的特征图进行融合,更加丰富了特征信息。
MP-conv结构
分两线对图片进行长宽减半操作,增加通道数,运算速度更快。
PAN模块引入E-ELAN结构,使用expand、shuffle、merge cardinality等策略实现在不破坏原始梯度路径的情况下,提高网络的学习能力。
v7引入辅助头负责正负样本的分配使用YOLOv5的正负样本分配策略分配正样本,使用YOLOx的正负样本分配策略确定正样本。