YOLOv8相较于YOLOv5有哪些改进?
YOLOv8相比YOLOv5在算法上进行了多项改进,这些改进主要体现在网络结构、损失函数、正负样本分配策略等方面,以下是详细的对比分析:
一、网络结构改进
-
C3模块替换为C2f模块
- YOLOv5中的C3模块被替换为梯度流更加丰富的C2f模块。C2f模块参考了C3模块的残差结构以及YOLOv7的ELAN思想,设计中每个BottleNeck的输入Tensor的通道数channel都只是上一级的0.5倍,因此计算量明显降低。同时,更多的跳层连接和额外Split操作使得梯度流增加,能够明显提升收敛速度和收敛效果。
-
耦合头与解耦头的设计
- YOLOv5中耦合头的设计是通过一系列的卷积和全连接层,同时预测不同尺度的边界框位置、尺寸和类别。而YOLOv8则采用了解耦头的设计,将分类和检测头分离,两条并行的分支分别提取类别特征和位置特征,然后各用一层1×1卷积完成分类和定位任务。这种设计提高了目标检测的准确性,同时加快了网络的收敛速度。
-
网络主干架构的改进
- YOLOv8采用了新的网络主干架构,相比YOLOv5的架构在性能上有所提升。
二、损失函数改进
-
Distribution Focal Loss的引入
- YOLOv8在回归分支中使用了Distribution Focal Loss中提出的积分形式表示法。考虑到真实的分布通常不会距离标注的位置太远,因此Distribution Focal Loss选择优化标签y附近左右两个位置(yi与yi+1)的概率,使得网络分布聚焦到标签值附近。
-
DFL(Distribution Focal Loss)损失的增加
- 为配合Anchor-Free以及提升泛化性,YOLOv8增加了DFL损失。DFL以交叉熵的形式去优化与标签y最接近的一左一右2个位置的概率,从而让网络更快地聚焦到目标位置及邻近区域的分布。
三、正负样本分配策略改进
-
TAL(Task Alignment Learning)动态匹配策略的采用
- YOLOv8采用了TAL动态匹配策略,而不是YOLOv5中的静态分配策略。TAL动态匹配策略根据分类与回归的分数加权的分数选择正样本,能够引导网络动态关注高质量的anchor,从而提高目标检测性能。
四、其他改进
-
Anchor-Free的设计
- YOLOv8是一个无锚(Anchor-Free)模型,它直接预测对象的中心,而不是已知锚框的偏移量。这种设计减少了box预测的数量,并加速了一个非常复杂的推理步骤——非极大值抑制(NMS)。
-
SPPF模块的引入
- YOLOv8中引入了SPPF模块,与SPP模块的作用相同,但SPPF的速度更高。
综上所述,YOLOv8相比YOLOv5在算法上进行了多项改进,这些改进使得YOLOv8在目标检测任务中表现出更高的性能和准确性。