AI算法创新赛-人车目标检测竞赛总结03

news2024/11/18 7:45:57

团队简介

AI0000032 团队成员均为从事计算机视觉领域的企业员工,热爱技术,勇于挑战,致力于更通用目标检测算法的研究与落地。团队由三人组成,队长何正海 主要负责整体方案设计与模型的量化工作,余洋主要负责模型训练与调优,段富 治主要负责数据分析与处理。

摘要

基于 TPU 平台对真实场景下采集的行人和车辆图片进行目标检测与识别。人机非目标检测是计算机视觉技术在智能交通领域的一项重要落地应用,同时也 是交通实时监控、车流量管理和车辆辅助控制的基础。实际的应用场景通常面临 算法精度和性能的权衡,因此基于 TPU 平台实现人机非目标检测题目要求使用 算能提供的低功耗的 TPU 算力实现精度更高、速度更快的人机非检测算法。

为实现人机非检测算法在 TPU 平台的部署,我们的实施方案主要包括以下 4 个步骤:

  1. 方案选择。通过对赛题分析,模型在TPU平台上的推理性能分占较大部分,因此我们选择了侧重于实时目标检测的 YOLO[1]系列算法作为最终 部署的模型。

  1. 模型优化。为了弥补YOLO算法在精度上的差距,我们使用了基于CNN 与基于 Transformer 架构的两个大网络,以半监督的方式在不影响模型复 杂度的情况下提升小网络的精度。

  1. 模型量化。使用自动量化工具[2]对训练完成的模型进行int8量化,并以特征相似度为指标进行多次迭代优化,得到混合精度的 bmodel。

  1. 部署测试。将量化后的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).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/349875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOV5输出的txt里面有什么猫腻(用于图像分类竞赛中提升图像信息密度)

背景概括: kaggle最近举办了一场医学乳腺癌检测的比赛(图像分类) 比赛官网地址 给的数据是dcm的专业的医学格式,自己通过DICOM库转为png后,发现该图像胸部不同的患者乳腺大小不一,简言之乳腺的CT有效图在…

MySQL性能调优与设计——MySQL中的索引

MySQL中的索引 InnoDB存储引擎支持以下几种常见索引:B树索引、全文索引、哈希索引,其中比较关键的是B树索引。 B树索引 InnoDB中的索引自然也是按照B树来组织的,B树的叶子节点用来存放数据。 聚集索引/聚簇索引 InnoDB中使用了聚集索引&…

LeetCode 141. 环形链表

原题链接 难度:easy\color{Green}{easy}easy 题目描述 给你一个链表的头节点 headheadhead ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 nextnextnext 指针再次到达,则链表中存在环。 为了表示给定链表中的…

python编写webapi读取mdb数据使用json格式响应客户端请求

想做个自动应答机器人,通过webapi提供服务,原理:判断关键字,到数据库查询相关内容,以json格式反馈给客户端。 1、创建autoreply数据库,创建reply表,表中包含kename(短文本&#xff…

积水在线监测仪——积水点、易涝点水位监测设备

一、设备概述 积水在线监测仪是一款用于城市积水点、易涝点等场景的水位监测设备,设备采用电池供电,无需另外供电,安装方便,使用简单。可以时监测水点、易涝点水位情况,当水位数据超过阈值后触发告警上传,…

MybatisPlus实现分页效果并解决错误:cant found IPage for args!

前言 早就知道MybatisPlus对分页进行了处理,但是一直没有实战用过,用的是自己封装的一个分页组件,虽不说麻烦吧,但是也不是特别简单。 写起来还是比较复杂,但是最近这个组件有了点小小的bug,我决定是时候…

2023年进入互联网行业好找工作吗?

俗话说:选择大于努力。年后求职小高峰,大家在找工作的时候选择肯定也多了。 说真,不是人人都有铁饭,普通家庭的孩子想要在2023年进入互联网行业去找工作可能吗? 01 有一点大家要清楚,2022年是进入过一个寒…

【Linux】变量定义规则、shell 格式、空格注意事项汇总

文章目录1. 空格问题号用于赋值用于比较2. 变量2.1 变量命名的格式要求2.2、shell变量中的注意事项2.3、变量的使用方法2.4、变量的类型(1)自定义变量(2)环境变量(3)位置变量(4)预定…

【高并发-用户中心】读多写少的系统如何优化

本博客纯属个人总结,非原创。喜欢技术交流的,可关注博主,武汉有后端开发群,可支持内推,了解武汉行情等。 如何对读多写少的系统进行高并发优化? 比如:用户中心是一个读多写少的系统&#xff0…

Linux定时备份MySql数据库

一、创建文件 cd / mkdir mysqlbackup vi mysqlbackup.sh然后将下面的代码更改后复制上去即可。 #!/bin/bash mysqldump -uroot -ppassword database > /mysqlbackup/database__$(date %Y%m%d_%H%M%S).sqlpassword指的是MySql的密码,database指的是所要备份的…

【C++算法】dfs深度优先搜索(上) ——【全面深度剖析+经典例题展示】

💃🏼 本人简介:男 👶🏼 年龄:18 📕 ps:七八天没更新了欸,这几天刚搞完元宇宙,上午一直练🚗,下午背四级单词和刷题来着,还在忙一些学弟…

leaflet: 禁止拖拽、禁止zoom(双击、滚轮、键盘)、禁止tap(076)

第076个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中设定各种禁止状态,这里设置了禁止拖拽、禁止zoom(双击、滚轮、键盘)、禁止tap。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共73行)相关A…

linux高级命令之多进程的使用

多进程的使用学习目标能够使用多进程完成多任务1 导入进程包#导入进程包import multiprocessing2. Process进程类的说明Process([group [, target [, name [, args [, kwargs]]]]])group:指定进程组,目前只能使用Nonetarget:执行的目标任务名…

电商导购CPS,京东联盟如何跟单实现用户和订单绑定

前言 大家好,我是小悟 做过自媒体的小伙伴都知道,不管是发图文还是发短视频,直播也好,可以带货。在你的内容里面挂上商品,你自己都不需要囤货,如果用户通过这个商品下单成交了,自媒体平台就会…

【刷题笔记】--搜索二维矩阵 II

题目: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。 每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16…

设计师都在看的全球设计网站,你居然还不知道!

设计师需要拥有无限的创意和熟练的技巧,并且对行业的前景和客户的心理有一定的了解。要能达到“陌生化”之前,肯定是有知识储备,专业能力的前提要求,以及创新能力。 今天为大家整理了多个优秀全球设计网站,这些博客内…

大家都在聊的自动化办公到底是什么?

自动化办公无非是excel、ppt、word、邮件、文件处理、数据分析处理、爬虫这些,下面就详细介绍一下!文章最后分享了很不错的python学习教程,适合零基础初学的小伙伴,希望可以对你有所帮助!! excel自动化 我…

linux基本功系列之grep命令

文章目录前言一. grep命令介绍二. 语法格式及常用选项三. 参考案例3.1 搜索文件中以root开头的文件3.2 搜索文件中出现的root3.3 搜索除了匹配行之外的行3.4 匹配的部分使用颜色显示3.5 只输出文件中匹配到的地方3.6 输出包含匹配字符串的行,并显示所在的行数3.7 统…

Unity CircleLayoutGroup 如何实现一个圆形自动布局组件

文章目录简介实现原理Editor 编辑器简介 Unity中提供了三种类型的自动布局组件,分别是Grid Layou Group、Horizontal Layout Group、Vertical Layout Group,本文自定义了一个圆形的自动布局组件Circle Layout Group,如图所示: Ra…

Maven的安装步骤(保姆级安装教程)

一、安装本地Maven 选择你需要的maven版本下载:官网下载传送门 我使用的是3.6.1版本:maven-3.6.1-bin.zip 二、安装 把下载好的maven压缩包解压到一个没有中文,空格或其他特殊字符的文件夹,如: 三、配置环境变量…