MonoCon:使用辅助学习的单目3D目标检测框架(AAAI 2022)

作者丨慕弋云子@知乎

来源丨https://zhuanlan.zhihu.com/p/455897310

编辑丨3D视觉工坊

本文已被收录在单目3D目标检测的综述文章中。如果你对单目3D目标检测的相关概念不甚了解,或想查阅更多文章、了解领域发展,欢迎阅读此文:https://zhuanlan.zhihu.com/p/432135656

基本信息

论文题目:Learning Auxiliary Monocular Contexts Helps Monocular 3D Object Detection

论文链接:https://arxiv.org/pdf/2112.04628.pdf

代码链接:https://github.com/Xianpeng919/MonoCon(22.01.07暂未更新)

概述

这是一篇当前单目3D目标检测的SOTA文章(2022.01.07,16.46%)。其网络结构几乎完全承接于CVPR'21的MonoDLE,只是添加了早就被深度学习领域所研究的「辅助学习」(Auxiliary Learning,以下简称AL)模块,以及一些normalization,以提升主流模型的泛化能力。

注意,这里的泛化能力并不是指数据集之间的泛化,而是单纯从域内的训练集-验证集角度而言,解决其潜在的过拟合问题(具体细节在下文讨论)。这样的设计表面上看就是加了模块、加了trick把点数提了上去,实则有许多玄机值得我们讨论,因此还是决定腾出时间来写一下。

8745509c1fcdd410f44821dc023b2944.png

MonoCon网络结构

Pre-thinking

说实话,几周前拿到这篇文章的时候,由于在忙开题的各种事情,并没有对这篇新出现的SOTA太过关心,也没有什么pre-thinking就开读了。读着读着发现,这好像是一篇披着MonoDLE羊皮的狼,里面纷繁复杂的公式居然很容易看懂诶……

本来以为还有什么精致的网络设计,结果是有点简简单单地MonoDLE + AL的感觉。因此,我认为诸位在看之前可以首先思考一下这两个问题:

·什么是AL,以及这样的模块/结构为什么可以带来点数的提升?

·在设计AL模块的过程中,为什么选择对应的内容作为额外的监督?

问题1,我在看之前对AL是完全不了解的,所以在本文中我会首先对AL的概念做介绍;问题2,实际上也触碰到了问题的核心——这之前我们也是很想利用corner points的,但一直苦于寻找合适的利用方式。这之前也有RTM3D这样利用corner points的文章,但其代码不具有reproducibility,也比较可惜。

Auxiliary Learning

所谓「辅助学习」,实际上是和「迁移学习」、「强化学习」、「流行学习」之类的概念一样,都是学习,都是机器学习的分支。用大白话讲,辅助学习就是在training阶段增加一些网络分支,对其计算loss项,而在infer阶段完全忽略掉它们,以期得到更好的特征表示。这些添加的内容很可能与任务预测的参数并不相关,而单纯是希望网络特征能“具有这个能力”。

如果这样说起来有些抽象,简单举个栗子:比如2D目标检测,一般我们学习到中心点和bbox的长、宽就能得到表示结果了,就能去输出各种指标了。但如果我们对提取的特征接一分支学习场景的深度信息,是否能够带来对目标检测结果的提升呢?毕竟我们人在检测目标时,实际是对深度信息有着良好先验的,或许这样的知识能够帮助我们更好地完成检测任务,这就是AL的思想。

959997b3f6f86e4072789baed11065ad.png

以传统的目标检测任务为例,Auxiliary Learning的示意图

所以,这些被额外添加的分支,事实上只影响了对特征的学习,抽象地说就是让特征具有表征、预测xx的能力。这便与Multi-task Learning的思想十分契合,之前我对多任务学习的理解还不够,现在明白,其实多任务学习并不只是“方便”(一次完成多个任务),而更多地是让网络“有能力”——真正的学霸不会偏科,积分都求不好怎么研究力学?从这个角度讲,我们三次元中的人也应该广泛涉猎,提升自己的能力……

咳咳,扯远了。除了对特征加入更丰富的表达能力外,还有说法是多任务学习也可以有效避免单任务的过拟合,就像dropout之类的操作一样。这一点听起来也有点“玄学”,但本质上其实也是不让特征学习趋向于单一任务,不“走火入魔”,不“钻牛角尖”地关注某个不靠谱的点,而是多吸收百家之长,因此就具有更强的泛化能力。

这里的过拟合、泛化能力并不只是从某一数据集到另一数据集的泛化,包括是在训练集上训练、在验证集/测试集上测试的能力。我曾使用MonoDLE的方法,在训练集上训练,在训练集上测试,AP3D-R40能够达到70%~80%(具体实验结果懒得翻了,欢迎大家自行尝试);而众所周知,现在在验证集上的SOTA也就大概只有15%~20%。

这说明当前的SOTA并没能很好地学习一种泛化特征,学习到一个Pattern,存在严重的过拟合现象。也因此,AL能够非常适合单目3D目标检测任务这样一个多任务学习的工作,本质上它们都是在寻找更好的特征表示。

辅助模块的设计

首先需要指明,本篇MonoCon的整体网络结构都是基于MonoDLE之上搭建的(大概三四月份MonoDLE放出代码,AAAI投稿在九月,效率够快)。包括MonoDLE当中的Samples Coding等trick,虽然在论文中没有提及,但是都有沿用,这一点我专门向作者发了邮件确认。

关于MonoDLE的结构,看起来简单,实际上要把infer时decode的部分也算上就很复杂了,这里我放一张自己组会时做的图,大家可以姑且认为是一个特征提取(DLA-34)+多头(conv2d,512→256→c,c视预测参数的数量而定,为图中绿色数字)分别预测各个参数的结构。

312fbeac2a85b1a457bbe615d1a2d42a.png

根据MonoDLE的代码,得到的网络结构示意图

为了更好地讲解MonoCon的设计,这里对MonoDLE中预测的参数内容做一整理:

1. heatmap

参见CenterNet(https://arxiv.org/abs/1904.07850)等系列文章,其思想是,用一个Gaussian分布将物体转化为一个(如中心点)或多个关键点(如wire-frame图)的表示,这样就可以避免使用anchor等复杂的手段,从而直接建立输入RGB图与heatmap图(Gaussian分布)之间的label关系,用于训练和检测。

你可以看到heatmap的c=3,因为此处的heatmap图是class-specific的(区别于class-agnostic),即每一张RGB图会分别输出3张heatmap,对应于单目3D任务中车、人、骑手三个类别各自的物体。class-agnostic就是c=1,注意这个概念后面要考哦。

显然,生成heatmap GT中的一个Gaussian分布需要一个参考的点,MonoDLE在此尝试了是用2D bbox的中心好,还是3D bbox中心点在2D上的投影好,并通过实验对比发现用3D中心投影点更好,于是以此来生成heatmap的GT。

2. offset_2d、offset_3d:

从heatmap中心到2D bbox中心/3D bbox中心投影点的位移。offset是在2D Image上的xy,所以均是二维的,c=2。(显然,无论在生成heatmap时使用上述两者的哪一个,offset_2d和_3d都会有一者为0,这里似乎存在一定冗余性,有待后续实验探究)

3. size_2d、size_3d

2d bbox的长宽、3d bbox的长宽高,分别对应c=2和c=3。注意,size_2d和offset_2d所共同完成的对2D bbox的预测都不是3D目标检测任务必须输出的内容,然而前序工作基本都学习了这部分知识。

4. depth

3d bbox中心投影点的深度值(也即是3d bbox中心的z坐标)和其对应的不确定性分布的标准差。训练时以Aleatoric Uncertainty loss约束,c=2。

5. heading

局部方向角,此处依循前序工作的multibin策略,将整个 2π 范围的角度分成12个bins,并将回归问题转化为先分类(角度属于哪个bin)再回归(bin中心到角度的残差)的问题,因而c=24。

以上的内容MonoCon都有保留,对应网络中浅蓝色的区域和上方灰色区域内2D Bbox Size的module(深蓝色箭头)。细节上有一点微小的区别就是MonoCon使用的是2D bbox的中心点作为参考点回归heatmap,而非3D bbox中心。

除此之外,MonoCon还设计了4个新模块用于AL,分别是:

1. 9个关键点的投影(projected keypoints)对应的heatmap

9个关键点对应3D bbox的8个corners和中心点。虽然与MonoDLE的参考点设计不同,但事实上你可以理解为,MonoCon采取的思想是“我全都要”:3D bbox中心投影点在此处又以heatmap的方式完成了学习。

这里有个很关键的问题。从MonoDLE的角度讲,我们通过heatmap、offset_3d和depth,就能够计算出3D center在相机坐标系下的坐标,也就能对应地计算出其投影点;如果再结合3D长宽高信息,事实上也可以计算出8个corners的坐标及投影点,那么是否这样的设计就冗余了呢?

这里论文没有给出讨论(可能容易讲不清楚),我个人的看法是,这里是从特征直接学习得到的,和我们分任务监督后计算的是不一样的,也就是说,我新增加了一组参数的约束,让特征在这组参数的计算下能够得到这9个关键点的信息,这样loss会直接影响到特征学习和这组参数(虽然参数在infer阶段会被丢弃,但特征不会),而不是去重新影响另外几个head的参数。

我认为这个观点,如果在论文中真要argue,可能需要对比实验直接加一个新的项做loss好不好,然而这又是不公平的,因为额外的head就会引入额外的参数量,你又如何辩解不是因为增加了可学习参数量而带来的效果呢,更何况这些参数最终还会被丢弃……所以只能姑且根据网络的设计来这样理解了。

最后,注意c=9。这意味着这里的设计就是class-agnostic的了(所以又不是完全的“我全都要”,哈哈),就是说不区分类别都回归对应的corners。在之后的Ablation Study中,作者对比了两种设计方式,并表示agnostic的会更好一些。

2. 对应以上关键点的offset学习

3D center的offset已经在下面学习过了,所以只能学习到8个corners的offset啦,于是这里就是顺理成章的c=16。我只能说,这样的设计至少看似是十分冗余的,但既然他效果好,fine……那就只能解释为exploit更多的label信息了=_=。

3. Quantization Residual

量化残差?为了避免我的理解有偏差,这里把论文原文的部分放上来:

83b2ecb582b937f4977cbe2b6936d3c2.png

MonoCon原文对于量化残差的叙述

根据这段话,我的理解是,这就像是RoI Align一样,因为特征学习时会取整缩小尺度,再放大还原时就会造成微小误差一样,需要再学习一个小的残差对齐。

635e0d06ad7af89e0e5ddfa9c0e9c8b4.png

他这样解释,如果强行理解可能也可以,毕竟这个参数量级,一个4倍取整的规律咱没准也可以回归出来嘛不是,然后我在给作者发的邮件里也问了这个问题,他们说就是按论文上写的这样做的……那大家尽量理解理解。

退一万步讲,我们还是不要忘记设计AL的初心。从早期诸多方法利用预训练的深度模型,获得整个RGB图的深度信息,到现在我们利用直接回归的方法,去anchor-free地预测中心点,本质上我们是在完成一个稀疏GT的深度预测问题。稀疏指的是在相机坐标系下我们只有8个corner的真实坐标(中心点取平均就得到了),深度预测问题是指,现在单目3D问题的痛点主要在于object location,也即3D center的预测上(见MonoDLE)。

如何利用好这些稀疏的GT信息才是我们设计网络的核心,从某种程度上这也正是为什么我们要exploit 8个corners做冗余监督的出发点。介于此,如果以后要尝试更多的模块或利用更多的信息,大概会是往采样上靠,即关键点真正地随机化而非手工设计。当然了,以上只是依循目前的思路,还是有很多其他的路可以走。

Normalization

除了以上辅助模块的设计是独立于MonoDLE的之外,还有两点微小而重要的细节设计与其不同:一是对所有的head添加了normalization,二是将head中间层的数量从256改为了64。

我们来聚焦一下这个head的设计,也即论文中的g函数,其是以数学公式的形式表示的:

0fa0d81b23a825903f963ecd6fe8021a.png

如果你对数学表达式比较头疼,那么可以对照着之前MonoDLE的结构来看,从橙色特征体出发到蓝色和绿色,就是这个数学表达式所对应的内容。当然,在第一次卷积与激活之间,MonoCon加入了AN(Attentive Normalization),以及d的值(蓝色体的厚度)变为了64。

AN是MonoCon这个组里的另外一篇文章(通讯作者都是Tianfu Wu),arxiv编号1908.01259(https://arxiv.org/abs/1908.01259)。我个人对Normalization研究不多,看起来AN就像是BN(BatchNorm)+SE(Squeeze-Excitation)的结合。

很直接地,我们就会想到为什么要用AN?作者在文中对此问题避而不谈,所以在给作者的邮件里我也问了这个问题,其表示,“在他们有限的实验结果中,AN > BN > GN”。而在我自己有限的实验里,GN > BN > 啥也不加,AN还没试是因为他们论文原代码使用的mmcv库,而我在将pytorch版本提升到1.5的过程中遇到了很多瓶颈(如精度下降等)。

令人迷惑的Ablation Study

为什么要把这个Normalization单拿出来提呢?因为实际上AN带来了意想不到的效果提升,请看文中给出的ablation study表格:

9a8c2790a1bd35020bc441f2e1522ad6.png

MonoCon原文中的Ablation Study表格

注意这张表格是validation set上的结果,而test set上的SOTA在15%左右(表格最后的19.01对应着test set的16.46),供参考。之所以说迷惑,是因为你看我这些分析是否成立:

·如果单纯对比MonoDLE和MonoDLE*,AN带来了~3.1%的性能提升。

·如果对比(*)和(a),会发现2D bbox的预测虽然不是3D任务所必须,但不预测会带来~6.5%的下降,侧面说明其作为AL模块的必要性。

·对比(*)和最后的(Ours),会发现设计的另外4个AL模块,在加入AN的基础上又带来了总体~2.3%的提升。

然后就开始离谱了:

·对比(*)和(b),会发现设计的“量化残差”和3D关键点的heatmap作为AL训练时,居然会带来~5.3%的性能下降。

·对比(*)和(c),也会得到类似的结论,再对比(b)和(c),你可能会认为AL模块中offset的学习更加关键一些。

·对比(*)和(d),会发现2D bbox预测的AL,与其他四个模块的AL,某种意义上效果相当。

·对比(g)和(Ours),会发现在AL模块的基础上,AN反而没有那么大的效果了。如果结合MonoDLE原始实验来分析,你也可以说Aux模块带来了~5%的点数提升,AN却只带来了~0.3%的提升。

可能主要还是(b)和(c)的实验结果太迷了,在保有2d bbox的预测下,指标居然会大幅下降。

其他细节

另外在实验设置上,MonoCon也与MonoDLE有很大的不同。这里列一个表格做对比:

fc2cf93bc5d8e76e4fc8cef0749715a5.png

还有一些其他warmup等细节不同,略过。

总结

总的来说,MonoCon其实是一篇非常优秀,很值得我们学习的工作,尤其是AL的应用其实对很多任务都很适用,而且其idea的来源也很自然,是那种我们“本该想到”的工作:之前所有人都在输出2d bbox,而我们只是觉得习以为常了,没有问题为什么,以及多任务学习等很多因素,让AL的应用显得非常朴素、适合。

不过至于之后在此work之上可能会有什么发展,我水平有限就不做判断了,当然我个人觉得可能一个是之前说到的关键点采样化,另一个就是更多地在normalization、loss项等等trick上卷,感觉差不多是这样吧。

水平有限,欢迎各位带着批判的眼光阅读和讨论。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

da68d8d9154d422d63be6dd6a3e85dfe.png

▲长按加微信群或投稿

96620a036c7ea7efadf13a79cf6e407a.png

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列三维点云系列结构光系列手眼标定相机标定激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

9320d84d60dd7b6e649f21436867915a.png

 圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AAAI 2020的教程“可解释人工智能”将重点介绍可解释人工智能的概念、方法和应用。可解释人工智能是指人工智能系统能够以一种可理解的方式解释其决策和行为的能力。该教程将涵盖可解释人工智能的基本原则和方法,包括规则推理、可视化技术、模型解释和对抗性机器学习等。 在教程中,我们将首先介绍可解释人工智能的背景和意义,解释为什么可解释性对于人工智能的发展至关重要。然后,我们将深入探讨可解释人工智能的基本概念和技术,例如局部解释和全局解释。我们还将介绍一些关键的可解释性方法,如LIME(局部诠释模型)和SHAP(SHapley Additive exPlanations),并解释它们的原理和应用场景。 此外,我们还将探讨可解释人工智能在各个领域的具体应用,包括医疗诊断、金融风险管理和智能驾驶等。我们将分享一些成功的案例和实践经验,探讨可解释人工智能在实际应用中的挑战和解决方案。最后,我们还将讨论未来可解释人工智能的发展趋势和挑战,展望可解释性在人工智能领域的重要性和前景。 通过参加该教程,学习者将能够全面了解可解释人工智能的概念、方法和应用,理解其在实际应用中的重要性,掌握一些关键的可解释性技术和工具,并对可解释人工智能的未来发展有一个清晰的认识。希望通过这次教程,能够为学习者提供一个全面而深入的可解释人工智能学习和交流平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值