| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【自动驾驶论文阅读笔记——精读RetinaTrack】 -> 正文阅读 |
|
[人工智能]【自动驾驶论文阅读笔记——精读RetinaTrack】 |
[阅读心得] 自动驾驶经典论文——RetinaTrack写在前面本文提出了一种在RetinaNet上进行调整的多目标跟踪网络RetinaTrack,提出了“将检测和跟踪分离开来 【论文】RetinaTrack: Online Single Stage Joint Detection and Tracking 1. Abstract提出了一种专注于自动驾驶领域的多目标跟踪网络,RetinaTrack。该网络基于RetinaNet进行修改,以获得实例级的embedding向量,简洁但有效地将检测任务和跟踪(ReID)任务联合起来。最终,RetinaTrack在自动驾驶数据集Waymo Open上取得了SOTA的性能。 2. Introduction本章主要讨论了两个问题: 3. RetinaTrack3.1 OverviewRetinaTrack的整体结构如上图所示,整个网络的输出是检测结果(location+classfication)和跟踪结果(ReId embeddings)。其以目标检测网络RetinaNet为原型,其结构主要分为FPN和post-FPN部分,而本工作的主要改动在post-FPN部分,其改动的主要目的是能够适应跟踪任务的instance level embeddings形式的输出。 3.2 RetinaNet首先,之所以选择RetinaNet作为基础进行改进,是因为RetinaNet网络本身适合自动驾驶场景下的多目标跟踪任务:1)满足实时性;2)精度达到SOTA;3)结构设计对小目标友好 Y i , k c l s ( F i ) = S i g m o i d ( C o n v ( C o n v ( 4 ) ( F i ; θ c l s ) ; ? k c l s ) ) ( 1 ) Y_{i,k}^{cls}(F_i) = Sigmoid(Conv(Conv^{(4)}(F^i;\theta^{cls});\phi_k^{cls})) (1) Yi,kcls?(Fi?)=Sigmoid(Conv(Conv(4)(Fi;θcls);?kcls?))(1) Y i , k l o c ( F i ) = C o n v ( C o n v ( 4 ) ( F i ; θ l o c ) ; ? k l o c ) ( 2 ) Y_{i,k}^{loc}(F_i) = Conv(Conv^{(4)}(F^i;\theta^{loc});\phi_k^{loc})(2) Yi,kloc?(Fi?)=Conv(Conv(4)(Fi;θloc);?kloc?)(2) 其中,
i
i
i代表FPN的不同层,
k
k
k代表不同的anchor,
θ
,
?
\theta, \phi
θ,?表示网络的参数。 3.3 Modifying: Per-Anchor + Embbeding-Branch1. 问题提出 F i , k = C o n v ( m 1 ) ( F i ; θ k ) F_{i,k} = Conv^{(m_1)}(F_i;\theta_k) Fi,k?=Conv(m1?)(Fi?;θk?) Y i , k c l s = S i g m o i d ( C o n v ( C o n v ( m 2 ) ( F i , k ; θ c l s ) ; ? c l s ) ) Y_{i,k}^{cls} = Sigmoid(Conv(Conv^{(m_2)}(F_{i,k};\theta^{cls}); \phi^{cls})) Yi,kcls?=Sigmoid(Conv(Conv(m2?)(Fi,k?;θcls);?cls)) Y i , k l o c = C o n v ( C o n v ( m 2 ) ( F i , k ; θ l o c ) ; ? l o c ) Y_{i,k}^{loc} = Conv(Conv^{(m_2)}(F_{i,k};\theta^{loc}); \phi^{loc}) Yi,kloc?=Conv(Conv(m2?)(Fi,k?;θloc);?loc) Y i , k e m b = C o n v ( m 3 ) ( F i , k ; θ e m b ) Y_{i,k}^{emb} = Conv^{(m_3)} (F_{i,k}; \theta^{emb}) Yi,kemb?=Conv(m3?)(Fi,k?;θemb) 由公式可知: 3.4 Training Loss + Label Assign1. Loss 2. Label Assign 3.5 Inference这部分主要讲轨迹管理策略。建立一个track store,每次去检测评分最高的100个结果与轨迹进行匹配,匹配策略为贪心算法Greedy Bipartite Match,匹配依据为IOU+余弦距离。 4. Experiment4.1 Architectual
3)推理时间不可避免的增加了,因为这种设计明显增大了参数量 4.2 Compare with SOTA
5. Analysis本工作主要的贡献在于,类似JDE网络,提出了一种基于RetinaNet的跟踪网络,并且主要改进了post-FPN的结构,使其对Embbeding的生成任务更加友好了,一定程度上环节了检测任务和Embbeding任务之间的矛盾,这是其他工作所没有考虑到的。所以,这是一个根据MOT实际任务特点做multi-task的尝试。另外,这篇工作也是将MOT的应用场景从比较主流的pedestrain转移到了autodrive上,比较有新意。 但是本文虽然声称是将Detect和Track进行融合,但是实际上是对Detect和REID进行融合,后面仍然使用常见的Association方式进行跟踪轨迹管理,可能仍然比较少的利用到了时序信息,车辆运动规律等先验?后续可以考虑在这些方向进行改进? 6. 一些其他思考——对比YOLOP受到师兄启发,这一篇工作做和我上一篇整理的工作YOLOP,很相似,都是将目标检测中的经典网络迁移到自动驾驶领域进行改进的工作,但是我认为二者之间还是存在一些区别。 YOLOP只做到了将三个任务融合在一起,这本身对于自动驾驶来说就是一个有意义的工作,但是其各个任务并没有针对自动驾驶领域的特点做特定的改进或调整,比如车道线的几何约束?三个任务的目标之间的约束关系等?也就是说,单从结构和设计思路来看,YOLOP本身并不针对自动驾驶,而只是“恰好”应用在了这个领域 参考资料 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 22:47:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |