通过形状先验引导的3D目标检测方法(Disp R-CNN解读)

来源丨AI 修炼之路

问题,我们提出在不需要雷达点云的情况下,使用统计形状模型生成密集视差伪真值,这使得我们的系统具有更广泛的适用性。在KITTI数据集上进行的实验表明,即使在训练时不使用雷达数据,Disp R-CNN 也达到了具有竞争力的性能,在平均精度方面比以前的先进方法高出20%。

代码开源:https://github.com/zju3dv/disprcnn

一、引言

三维目标检测方法以估计的视差图为输入,将其转换为深度图或点云来检测目标。然而,由于视差估计网络是为一般的立体匹配而设计的,而不是为三维目标检测任务,所以这些架构有两个主要的缺点

  • 首先,视差估计过程是在全图像上进行的,在低纹理或非lamberterian表面,如车辆表面,往往不能产生准确的视差,而这些区域正是我们需要进行3D边界框估计的区域。

  • 此外,由于图像中感兴趣的前景物体通常比背景物体占用更少的空间,视差估计网络和3D检测器在目标检测不需要的区域花费了大量的计算时间,导致运行速度较慢。

在这项工作中,我们的目标是探索如何用一个专门用于3D目标检测的视差估计模块来解决这些缺点。我们认为,从网络特征学习和运行效率的角度来看,在全图像上估计视差是次优的。为此,我们提出了一个名为 Disp R-CNN 的框架,该框架通过一个用于实例级视差估计的网络来检测三维物体。视差估计只在包含感兴趣对象的区域执行,从而使网络聚焦于前景对象,并学习适合于3D对象检测的类别特定的形状先验。

总的来说,本文的贡献如下:

  • 提出了一种基于「实例级视差估计」的立体三维目标检测框架,该框架在精度和运行速度上均优于目前最先进的基线。

  • 提出了伪标签的生成过程,为实例视差估计网络提供监督,并指导它事先学习物体形状,有利于三维目标检测。

二、方法

给定一对立体图像,目标是检测所有感兴趣对象实例的三维边界框。如下图所示,我们的检测管道由三个阶段组成:首先检测每个对象的二维边界框和实例掩码,然后仅估计属于对象的像素的视差,最后使用3D检测器从实例点云预测三维边界框。

605c3d529b8bd9f2c41c43d7bef7dfe3.png

2.1 Stereo Mask R-CNN

Stereo Mask R-CNN 由两个阶段组成。第一阶段是 Stereo R-CNN 中提出的区域建议网络的立体变形,其中来自左右图像的对象候选框从同一组锚生成,以确保左右感兴趣区域(RoIs)之间的正确对应。第二阶段使用 Mask R-CNN 中提出的 RoIAlign 从特征地图中提取对象特征,接下来是两个预测头,生成「2D边界框、分类分数」「实例分割掩码」

2.2 实例视差估计网络

视差估计模块负责立体三维目标检测中三维数据的恢复,其精度直接影响到三维检测性能。iDispNet只将目标RoI图像作为输入,只对前景像素进行监督,从而捕获特定类别的形状先验,从而产生更准确的视差预测。

正式地说,一个像素p的全帧视差定义为:

7f3f131e9910ed7ffa4686428e47d09b.png

其中, 和 分别表示点 p 在左右视图中的水平像素坐标。通过 Stereo Mask R-CNN 获得的 2D 边界框,我们可以从完整图像中裁剪出左、右RoIs,并将它们在水平方向上对齐。将每个 的宽度设置为较大的值,以使两个roi共享相同的大小。

一旦 ROIs 对齐,左边图像(参考)像素 p 的视差位移从全帧视差变为实例视差,定义为:

a8dc634abd2a426352c75a5914f06b93.png

其中, 和   分别表示两个视图中边界框的左边界坐标。我们的目标本质上是了解每个属于感兴趣对象 p 的实例差异 而不是 。这种裁剪和对齐的过程如下图所示。

1102d4cb9a2741bd389966d9400b2572.png

将左右两幅图像中的所有 ROI 调整为共同大小 H × w。对于实例分割掩码给出的属于一个对象实例 的所有像素 p,定义实例视差的损失函数为:

ae77d859507cca5431957daab77d5b88.png

其中, 为点 p 预测的实例视差, 是实例视差真值。 和 表示两个视图中二维边界框的宽度,|O| 表示属于对象的像素数。

一旦 iDispNet 输出实例视差 ,我们就可以计算出属于前景的每个像素 p 的3D位置,作为接下来的3D检测器的输入。三维坐标(X, Y, Z)推导如下:

32787c25fece60ef73c865b5c23128ce.png

其中,B 是左右相机之间的基线长度, 为相机中心对应的像素位置, 分别为水平焦距和垂直焦距。

2.3 Pseudo Ground-truth Generation

训练立体匹配网络需要大量密集视差地面真值,而大多数3D目标检测数据集都不提供这些数据,因为手动标注很困难。

得益于iDispNet只需要对前景预测,我们提出了一种在不需要LiDAR点云的情况下,为真实数据生成大量密集视差伪真值(Pesudo-GT)的有效方法。生成过程通过「特定类别的形状先验模型」来实现,从该先验模型可以重构对象形状并随后将其渲染到图像平面以获得密集的视差真实值。

我们使用体积截断符号距离函数(TSDF)作为形状表示。对于形状变化相对较小的一些刚性物体类别(如车辆),该类别的TSDF形状空间可以用低维子空间来近似。形式上,用子空间的基V表示,它由训练形状的前导主成分得到,平均形状表示为µ,实例的形状可以表示为:

646434d7fc7e2807ac83038f4f87957c.png

其中 是形状系数,K 是子空间的维度。

给定一个实例的三维边界框ground-truth和点云,可以通过「最小化以下代价函数」来重建实例的形状系数z:

627f340867f2668922ed22366c40936c.png

其中 φ(x, z) 为三维点x在形状系数z定义的TSDF体积中的内插值,P 为实例对应的点云,|P| 为点云中的点数。只有 z 在优化过程中被更新。直观地说,这个代价函数最小化点云到由 TSDF 的零点定义的物体表面的距离。点云可以从现成的视差估计模块或选择性的激光雷达点获得。

由于上述代价函数不限制物体形状的三维维度,我们提出以下维度正则化项,以减少物体溢出三维边界框的发生:

4fdcf68777612a57000d20b500f7515c.png

其中, 表示在一个卷中定义在3D边界框之外的所有体素。尺寸正则化可视化如下图所示:

409730398236e733fd8bda4f77bc3ea2.png

为了将形状系数限制在一个适当的范围内,使用以下正则化项来惩罚优化形状与平均形状的偏差:

3430778f3ce935fae7072892d69d5f24.png

其中,σ 是第k个主成分对应的第k个特征值。

综合以上各项,总成本函数为:

fa0930d21511012a95c724877830a12e.png

最后,根据优化后的物体形状渲染实例视差伪标签 可以根据优化后的物体形状进行渲染如下:

01d08ebe47bc3481326da8edf2c09dfa.png

其中,M表示移动立方体操作,该操作将TSDF体积转换为三角形网格。π表示生成像素级深度地图的网格渲染器。下图显示了渲染视差伪标签的一些示例:

9d42f5d8610a5902ada241e8cdca35ab.png

2.4 3D detection network

在我们的实现中,PointRCNN被用作3D对象检测器。与传统方法输入整个场景的点云不同,我们使用由实例视差转换的实例点云作为PointRCNN的输入。输入点云子样本减少到768个。

三、实验

3.1 KITTI上3D目标检测

KITTI目标检测基准包含7481幅训练图像和7518幅测试图像。为了评估训练集,我们将其分为训练和验证集,分别包含3712和3769张图像。目标被分为三个层次: 简单,中等和困难,这取决于他们的二维边界框大小,遮挡,和截断程度。

如下表所示,在KITTI简单模式下,我们的方法获得了超过23.57%的改进 ,IOU值为0.7。这种巨大的改进来自 pseudo-GT,即使在训练时没有LiDAR真值,它可以提供大量的训练数据。

ab1454640007c2b7cfb8153f9956abd7.png

如下表所示,本文的方法比 PL*(AVOD)在 IOU=0.7,简单模式和中等模式下的 分别高7%和5%。并且,在简单模式下 提升4%。

7178bd63a8f9c545b5b3c7a7954eb151.png

下图展示了物体检测、实例视差估计和视差伪标签的一些定性结果:

87c186493dabf2b3edaed42256a7c756.png

3.2 消融研究

如下表所示,以伪标签作为真值,我们的iDispNet比全帧PSMNet获得更小的视差和深度误差。使用稀疏的激光雷达点作为真值,我们的iDispNet仍然比全帧方法PSMNet和最先进的深度立体方法GANet性能更好,尤其是在对象深度RMSE误差方面。

f808b980155e1b17bf7cf3f98bfe9e80.png

比较第二行和第三行,结果表明:重复使用从RPN中提取的特征限制了估计视差图的质量,这导致iDispNet的端到端版本给出次优结果。

下图显示了实例视差估计的一些定性结果以及与全帧视差估计的比较。全帧PSMNet无法捕捉车辆的平滑表面和锐边,因此导致以下3D探测器难以从不准确的点云预测正确的边界框。「相比之下,由于实例视差估计和视差伪GT的监督,我们的iDispNet提供了更准确和稳定的预测。」

63867530584fb2bc8a7f27f749f7b5f7.png

3.3 运行时间

显示了我们的方法与其他立体方法的运行时间比较。我们的方法需要0.425s,几乎超过了所有以前的立体方法。具体来说,我们的方法0.17s用于二维检测和分割,0.13s用于实例视差估计,0.125s用于从点云进行三维检测。这种效率归因于「仅估计ROI中的视差和仅从实例点云中估计3D边界框,这大大减少了搜索空间」

c7df256a0181db4aaa19d0a8ed4bef46.png

3.4 失败案例

下图展示了一些故障案例,我们的3D对象检测方法最有可能在「距离太远」的对象上失败,如图7(a)所示,或者在图7(b)所示的「强遮挡或截断」情况下失败。原因是这些对象上的3D点太少,检测器无法预测正确的边界框。我们的伪GT生成最有可能在「形状异常」的物体上失败,如下图(c)中的汽车,它比其他汽车短得多。

53b47e24b9c56b7061041b592143fbe4.png

四、总结

本文提出了一种基于立体图像的三维目标检测方法。关键思想是仅在检测到的二维边界框中估计实例级别的像素级视差,并基于从实例视差转换而来的实例点云检测对象。为了解决训练数据的稀缺性和稀疏性,我们提出将从CAD模型中学习到的形状先验知识整合起来,生成伪GT视差作为监督。在KITTI数据集的3D检测基准上的实验表明,我们提出的方法在很大程度上优于现有的方法,特别是在训练时没有激光雷达监控的情况下。

最后放一张我在电脑上跑的实验结果:

f743a278a79f314dc915627638f025aa.png

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

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.相机模型与标定(单目+双目+鱼眼)

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

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

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

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

7a0ee2ba8715d26b2f5785e8dfd22f17.png

▲长按加微信群或投稿

2edae4d9c9a55a7a95b5199f3f8d80d4.png

▲长按关注公众号

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

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

788427266b6cf3eac42e47b5925d91f6.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值