YOLOv9技术解读:网络结构、损失函数与性能评估
YOLOv9技术解读:网络结构、损失函数与性能评估
YOLOv9是由台北中研院和台北科技大学等机构的研究团队推出的新一代目标检测算法,由王千尧等人提出,他是YOLOv4和YOLOv7的作者之一。YOLOv9在YOLOv7的基础上进行了改进,主要解决了现有方法在网络结构设计和特征提取信息损失方面的问题。本文将对YOLOv9的核心创新、网络结构、损失函数以及性能评估等方面进行详细解读。
1. 论文核心内容
YOLOv9指出当前目标检测方法存在两个主要问题:
- 过分关注损失函数的设计,而忽视了网络结构对信息获取的影响
- 在特征提取过程中会损失大量信息
针对这些问题,YOLOv9提出了两个主要创新点:
- 轻量级网络结构:Generalized Efficient Layer Aggregation Network(GELAN)
- 可编程梯度信息框架(PGI):解决深度网络的信息丢失问题
1.1 GELAN
GELAN是通过将ELAN中的卷积组替换为带有RepConv的CSPNet来实现的。RepConv通过结构参数化思想,在推理时将多路结构转换为单路结构,以节省内存并提高前向处理速度。
source:Ding X et al.
这种增加网络宽度的方式虽然可以增加梯度流,但可能会损失卷积的连贯性,不利于板端部署。
1.2 PGI(可编程梯度信息)
PGI是一种辅助监督框架,包含三个部分:
- 主分支:推理过程只使用主分支,不会增加额外计算
- 辅助可逆分支:解决网络深度带来的信息丢失问题
- 多级辅助信息:解决深度监督带来的错误累积问题
1.2.1 辅助可逆分支
YOLOv9的辅助分支直接从输入开始,构建了一个与主干网络类似的结构,使用自己提取的特征进行预测,从而计算辅助损失。这相当于在训练时增加了权重,因此训练时间也会增加。
source:Wang C Y et al.
1.2.2 多级辅助信息
与YOLOv7不同,YOLOv9在计算辅助头时融合了多种特征图,这有助于减少错误累积。
2. 网络结构详解
- GELAN是YOLOv9中的RepNCSPELAN,将原始ELAN中的卷积组替换为带有RepConv的CSPNet block
- CBFuse实现了多级辅助信息,通过上采样将不同层的特征图融合后再输出预测结果
- 网络输出采用与YOLOv8类似的解耦头,包括类别和边界框分支
解耦头的具体实现是将边界框回归转化为分类任务,通过softmax将向量转换为权重,再与[0,1,2,…, 15]加权得到边界框信息。
source:Zhi Tian et al.
3. 正负样本匹配策略与损失函数
3.1 正负样本匹配策略
YOLOv9使用TaskAlignedAssigner进行样本匹配,通过分类置信度和IoU的加权分数来选择正样本。
3.2 损失函数
- 分类损失:BCE Loss
- 回归损失:DFL Loss + CIoU Loss
4. 耗时评估与初步使用建议
4.1 AX650耗时
根据圈圈虫的测试,YOLOv9-c在AX650上的单帧平均耗时为26ms。较小的模型(如M、S)相较于YOLOv8并没有显著优势。
4.2 其他评价
JerryFxckingWong在知乎上的评价提到:
- 训练时间翻倍,因为监督方式增加了额外的网络结构
- 相同规模下推理时间增加,主要是由于split操作的引入
- 虽然参数量有所减少,但推理时间显著增加,尤其影响板端部署
4.3 总体评价
- 相比YOLOv8,YOLOv9的指标提升并不显著
- 以牺牲耗时为代价换取部分指标提升,整体网络结构对板端部署不友好
- 在耗时允许的情况下,相同量级参数下YOLOv9的指标可能略好,但需要实际业务测试验证
5. 参考资料
[1] Ding X, Zhang X, Ma N, et al. Repvgg: Making vgg-style convnets great again[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2021: 13733-13742.
[2] Wang C Y, Bochkovskiy A, Liao H Y M. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 7464-7475.
[3] YOLOv8:https://github.com/ultralytics/ultralytics/tree/main