团队简介
AI0000032 团队成员均为从事计算机视觉领域的企业员工,热爱技术,勇于挑战,致力于更通用目标检测算法的研究与落地。团队由三人组成,队长何正海 主要负责整体方案设计与模型的量化工作,余洋主要负责模型训练与调优,段富 治主要负责数据分析与处理。
摘要
基于 TPU 平台对真实场景下采集的行人和车辆图片进行目标检测与识别。人机非目标检测是计算机视觉技术在智能交通领域的一项重要落地应用,同时也 是交通实时监控、车流量管理和车辆辅助控制的基础。实际的应用场景通常面临 算法精度和性能的权衡,因此基于 TPU 平台实现人机非目标检测题目要求使用 算能提供的低功耗的 TPU 算力实现精度更高、速度更快的人机非检测算法。
为实现人机非检测算法在 TPU 平台的部署,我们的实施方案主要包括以下 4 个步骤:
方案选择。通过对赛题分析,模型在TPU平台上的推理性能分占较大部分,因此我们选择了侧重于实时目标检测的 YOLO[1]系列算法作为最终 部署的模型。
模型优化。为了弥补YOLO算法在精度上的差距,我们使用了基于CNN 与基于 Transformer 架构的两个大网络,以半监督的方式在不影响模型复 杂度的情况下提升小网络的精度。
模型量化。使用自动量化工具[2]对训练完成的模型进行int8量化,并以特征相似度为指标进行多次迭代优化,得到混合精度的 bmodel。
部署测试。将量化后的bmodel移植到BM1684平台,测试模型性能并优化,最终的方案在复赛 mAP 为 73.71,推理耗时 50.3ms,获取了第三名 的成绩。
关键词
人机非目标检测,TPU,模型量化
1.赛题介绍
本次赛题 A 榜提供的数据集中包含 3018 张真实场景下的行人和车辆图片,其中训练集包含 2885 张带有标签的图片,测试集包含 133 张不带有标签的图片, 用于初赛前期提交测试。B榜另外提供了 102 张不带有标签的图片,用于初赛最 终提交和复赛提交测试。参赛者需要在训练集上自行训练网络,检测并识别测试 集中三类目标:行人、机动车和非机动车。初赛最终得分计算公式为:score = mAP ∗ 100,分数高者为优;复赛最终得分计算公式为score = mAP ∗ 100 + (1000 − i_time) ∗ 0.1。其中 mAP(mean Average Precison)即各类别APIoU = 0.5 的平均值,APIoU = 0.5为 IoU 阈值为 0.5 的平均精度;i_time 为测试集图片推理 的平均时间,单位为 ms。
2.解题思路
由复赛得分计算公式可知,精度分(mAP 得分)和性能分上限均为 100。根据初赛经验,大网络精度分在 80+,而 TPU 上的推理时间只要在 200ms 以内即可达到 80+的性能分。且最终得分提高 1 分需要 mAP 提高一个点或者推理时间减少 10ms,后者实现难度更低。因此我们的方案主要侧重于性能分,在低耗时的条件下寻找其他提高精度分的途径。
2.1.方案选择
复赛初期,我们选择了较为熟悉的 YOLOv5 作为训练框架,分别使用 YOLOv5s、YOLOv5m、YOLOv5l,选取 640、960 和 1280 分辨率,不同超参数训练策略进行实现,训练精度如下表,根据本地验证集 mAP 和 int8 耗时进行取舍,最后确定 YOLOv5m 以 960x960 分辨率(后文记为 YOLOv5m_960)训练 300epoch 得到的模型为最终部署模型。不同网络的验证集精度如表 1 所示:
2.2.模型优化
沿用初赛时的数据集划分,我们将 2885 张训练集按 9:1 划分为训练集 2596 张和验证集 289 张,因为初赛在 2596 张训练集上的模型精度高于全量数据,因此后续我们仍采用相同策略。
由于 YOLO 更侧重于实时性,精度要低于偏向于高精度的大网络,所以我们选择了初赛训练过的两个大网络 Cascade_RCNN_SwinB_p4_w7[3](记为 M1) 和 DINO_5Scale_SwinB_p4_w7[4](记为 M2),用半监督的方式提高YOLOv5m_960(记为 M3)的精度。前者是以 SwinB[5]为 backbone的 Cascade R-CNN 检测器,后者是一种完全基于 Transformer 的检测算法,并加入了去噪训 练策略优化训练流程。M1 和 M2 与 YOLO 检测算法的精度、计算量和参数量如 表2所示。
这里选择多个网络主要有两点想法:一是初赛虽然两者的 mAP 都比较高,但由于结构不同,最后预测框的分布存在较大差异,希望能起到模型融合的效果; 二是考虑到数据集图片数量较少,通过这种与数据增广正交的方式增加训练数据。 半监督策略实施步骤如下,详见表 3:
1. 首先在A榜训练集上训练得到M1、M2和M3;
2. 利用M1和M2分别在A榜训练集、A榜测试集以及B榜测试集共2831
张图片上进行推理,得到两份伪标签数据;
3. 将两份伪标签数据与 A 榜训练集加在一起得到 8258 张数据集,重新训 练M3得到M4;
4. M4 在 A 榜训练集上微调得到最终模型 M5,并比较 M3、M4 和 M5 的 精度。
值得注意的是,推理时并没有为了保证高 precision 选取高置信度,而是尽量使模型的推理结果与训练集的标注分布保持一致。这里我们分别测试了 [0.1:1.0:0.1]共 9个阈值,最后选取检测框个数和训练集标注框个数最接近的阈值,实验效果较好,其中 M1 阈值为 0.5,M2 阈值为0.3。如表 1 所示,M4 相比 M3 mAP 有 2.9 个点的大幅提升,而 M4 和 M5 精度相同,最终选择 M5 作为部署模型。
2.3.模型量化
为与测试时的数据分布保持一致,从训练集中挑选 200 张图片作为量化数据集。我们实验对比了 YOLOv5m_640 模型自动量化和直接转为 fp32 的 bmodel 两 种方式并提交测试,结果如图 1 所示。自动量化后的模型在耗时从 53.99ms 降到 35.88ms 的情况下 mAP 反增 0.19 个点(因为前几次提交并未给出得分明细,图 中耗时为所有测试集图片在本地推理的平均时间),因此后续均采用自动量化策略。
以 feature_similarity 为量化评价指标,使用 bmnnsdk2-bm1684_v2.7.0 SDK 中 的自动量化工具迭代 200 次,得到 M5 的 bmodel。模型除了后处理部分使用 fp32, 其他部分均使用 int8 推理,feature_similarity 为 0.9908。
2.4.部署测试
在 YOLOv5m 640 分辨率的 baseline 基础上,依次增加半监督训练、分辨率 调整至960、iou和obj阈值从0.001调整至0.0001的策略进行改进。使用BMCV 库对图像处理过程加速,修改 YOLOv5 CPP demo,进行推理测试,得到最后的 提交结果。上述几次提交得分如图 2 所示,因为第一次提交结果时没有加上前后处理时间,除去该因素,半监督策略提高 2 个多点,与本地验证集实验结果一致。
3.比赛总结
感谢北京算能科技有限公司这次举办的 AI 算法创新赛,给我们提供了学习和实践的机会。同时感谢算能提供的云平台,让我们能亲身体会从训练模型到 TPU 落地部署的整个流程。此次比赛留下最深印象的是算能的自动量化工具,能 根据不同的评价标准搜寻最优量化策略并自动迭代优化,使得模型在无损的情况 下推理效率成倍的增长。但是自动量化的耗时比较久,没有进度条显示,希望能 进一步完善。同样还有大网络利用伪标签的方式提升小网络的策略也带来了可观 的分数涨幅。但由于各种因素限制,本次比赛没有探索更多策略和尝试新的想法, 希望能有机会学习其他团队的方案。
参考文献
[1] Jocher, G. (2020). YOLOv5 by Ultralytics (Version 7.0) [Computer software]. https://doi.org/10.5281/zenodo.3908559
[2] https://sophgo-doc.gitbook.io/bmnnsdk2-bm1684/
[3] Cai, Z., & Vasconcelos, N. (2018). Cascade r-cnn: Delving into high quality object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 6154-6162).
[4] Zhang, H., Li, F., Liu, S., Zhang, L., Su, H., Zhu, J., ... & Shum, H. Y. (2022). Dino: Detr with improved denoising anchor boxes for end- to-end object detection. arXiv preprint arXiv:2203.03605.
[5] Liu, Z., Lin, Y., Cao, Y., Hu, H., Wei, Y., Zhang, Z., ... & Guo, B. (2021). Swin transformer: Hierarchical vision transformer using shifted windows. In Proceedings of the IEEE/CVF International Conference on Computer Vision (pp. 10012-10022).