1. yolov8和yolov5结构图对比可发现,yolov5中的C3模块全部替换成梯度流更加丰富的C2f模块。YOLOv8 参考了 C3 模块的残差结构以及YOLOv7的 ELAN 思想,设计出了 C2f 结构。
2. 耦合头换成了解耦头
耦合头的设计是在网络的末尾,通过一系列的卷积和全连接层,同时预测不同尺度的边界框位置、尺寸和类别。这种设计使得YOLOv5可以在不同尺度上并行地进行目标检测,即使用一层卷积同时完成分类和定位任务。
解耦头的设计是将分类和检测头分离,两条并行的分支分别取提取类别特征和位置特征,然后各用一层1×1卷积完成分类和定位任务。以提高目标检测的准确性。
Decoupled Head不仅是模型精度上会提高,同时网络的收敛速度也加快了,使用Decoupled Head的表达能力更好,增强了模型的鲁棒性,可以更好地建模位置和类别之间的关系,提高目标检测性能。
3.Anchor-Based换成Anchor-free
anchor也叫做锚,预先设置目标可能存在的大概位置,然后再在这些预设边框的基础上进行精细化的调整。而它的本质就是为了解决标签分配的问题。
目标检测领域的发展从anchor-free到anchor-base,现在又有回到anchor-free的趋势。
anchor-free和anchor-based是两种不同的目标检测方法,区别在于是否使用预定义的anchor框来匹配真实的目标框。Anchor-Based
在同一个像素点上,生成多个不同大小和比例的候选框,覆盖几乎所有位置和尺度,每个参考框负责检测与其交并比大于阈值 (训练预设值,常用0.5或0.7) 的目标,然后通过anchor中有没有认识的目标和目标框偏离参考框的偏移量完成目标检测,不再需要多尺度遍历滑窗,极大的提升了速度。
在训练过程中,模型学习预测每个锚框的偏移量(相对于真实目标框的偏移),以调整它们以更好地匹配目标的位置。模型还负责为每个锚框预测目标类别。
通常,在预测结束后,采用NMS非极大值抑制来排除高度重叠的锚框,以确保每个目标只有一个最终的检测结果。
优点:
适用于多尺度和多宽高比的目标。
对于密集目标排列的情况,锚框可以提高检测性能。缺点
对于目标数量较少的情况,锚框设计可能浪费计算资源。
对于小目标检测较为困难。Anchor-free
无锚框在构建模型时将其看作一个点,即目标框的中心点。不依赖于预定义的锚框,而是直接预测目标的中心点。直接学习目标框的位置,通常通过回归目标框的四个顶点坐标来实现。
同样,模型负责为每个目标预测其类别,在预测结束后,采用NMS进行后处理。
优点:
相对简洁,无需设计大量的锚框。
更适合小目标检测。缺点
对于多尺度和多宽高比的目标,可能性能较差。
在密集目标排列的情况下,容易出现定位不准确的问题。
4.正负样本分配策略
采用了TAL(Task Alignment Learning)动态匹配,而不是之前的IOU 匹配策略。
5、最后10 epoch关闭masic增强。