YOLOv9理性解读 | 网络结构&损失函数&耗时评估
YOLOv9理性解读 | 网络结构&损失函数&耗时评估
YOLOv9是由台北中研院和台北科技大学等机构的研究团队推出的新一代目标检测算法,由Yolov4、Yolov7的作者之一Wang Chien-Yao主导研发。本文将从网络结构、损失函数、耗时评估等多个维度,深入解读YOLOv9的核心创新和实际应用效果。
1. 论文核心内容
YOLOv9是在YOLOv7的基础上进行的改进,主要针对现有方法存在的两个问题:
- 现有方法过于关注如何设计一个更好的损失函数,而忽视了网络结构对信息获取和预测效果的影响;
- 现有方案忽略了在特征提取过程中会损失大量信息的问题。
针对以上两个问题,论文提出了两个主要创新点:
- 提出了一个轻量级的网络结构:Generalized Efficient Layer Aggregation Network(GELAN)
- 提出PGI(Programmable Gradient Information):解决网络随着深度增加而损失大量信息的问题。
1.1 GELAN
GELAN是通过将ELAN中的卷积组替换成带有RepConv的CSPNet实现的,相当于增加网络的宽度。这种设计虽然可以增加梯度流,但可能会牺牲卷积的连贯性,对板端部署不够友好。
source:Ding X et al.
1.2 PGI(Programmable Gradient Information)
PGI是一种附属的监督框架,包含三个部分:
- 主分支:推理过程只用主分支,不会增加额外计算;
- 附属可逆分支:解决网络深度带来的信息丢失问题;
- 多级附属信息:解决深度监督带来的错误累积问题。
source:Wang C Y et al.
2. 网络结构详解
- GELAN就是中的RepNCSPELAN,将原始ELAN中的卷积组换成带有RepConv的CSPNet block;
- CBFuse就是文中提到的Multi-level Auxiliary Information,将不同层的特征图通过上采样到同一尺寸后再相加,再输出预测结果;
- 网络的输出与YOLOv8类似的解耦头,有类别和box分支,其中box不是直接进行边界框回归,而是将回归任务转化成分类任务。
source:Zhi Tian et al.
3. 正负样本匹配策略与损失函数
3.1 正负样本匹配策略
样本匹配使用TaskAlign策略,根据分类与回归的分数加权的分数去选择正样本。
3.2 损失函数
- 分类损失:BCE Loss
- 回归损失:DFL Loss + CIoU Loss
4. 耗时评估与初步使用建议
4.1 AX650耗时
YOLOv9-c在ax650单帧平均耗时26ms。YOLOv9-C是第三大的模型,稍微小一点的模型M,S相较于v8并没有显著的优势。
4.2 其他评价
- 训练时间翻倍,论文中提到的监督方式基本上多了一倍的网络结构
- 同规模下推理时间增加(由于split操作的引入)
- 用split的方式看似丰富了所谓的梯度流,减少了参数量,但是大大增加了推理的时间,尤其对于端设备来说,这会导致推理的各种不连续性。
4.3 总体评价
- 相较于之前的YOLOv8,YOLOv9指标并没有显著的提升;
- v9以牺牲耗时为代价,换来部分指标提升,整体网络结果对于板端部署并不友好,耗时可能会相较于项目中使用的模型会偏高;
- 在耗时允许范围内,使用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