不用激光雷达,照样又快又准!3D目标检测之SMOKE

向大家介绍一篇CVPR 2020 Workshop的文章:SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation。

0. 动机

3D目标检测用于估计目标的类别、位置和姿态,与2D目标检测相比,3D目标检测更具有挑战性。有很多工作研究使用激光雷达进行3D目标检测,激光雷达成本较高、寿命较短,与之相比,相机成本低、寿命长,且易于安装。

很多基于单目相机做3D目标检测的算法都是多阶段(multi-stage)的,即基于2D目标检测网络得到的2D框,在后面添加额外的分支预测3D框,亦或者是产生点云作为点云检测网络的输入,这种方法的弊端是:2D框检测的少许偏差可能会引起3D框检测的较大偏差。

作者提出了一个直接预测3D目标框的单阶段端到端算法,包含1个分类分支和1个回归分支,计算量小,易于训练且精度高。

1.建模

使用单目相机做3D目标检测,可以提炼为:输入RGB图像

分别表示输入图像的宽度和高度,输出图像中目标的类别 和3D框

使用 表示3D框 ,其中 表示目标的高、宽、长;

表示目标在相机坐标系中的坐标,单位为米;角度 表示3D框的航向角。

需要特别指出的是,要准确地预测3D框,需要知道相机内参


2. 网络结构


网络的总体结构如下图所示:

2.1 Backbone

使用与论文《Objects as points》类似的DLA-34作为Backbone,输出特征图的长和宽分别为输入图像的1/4。

与之不同的是,作者将网络中的BN(BatchNorm)替换为GN(GroupNorm),实验表明使用GN能减小网络性能对batch size的敏感程度,还能减少训练时间。


2.2 关键点检测分支

将目标3D框的中心点在图像平面的映射点

定义为关键点,关键点检测分支的目标就是寻找输入图像中的关键点。

在训练时,需要根据3D框确定关键点的位置,若知道相机内参 和目标3D框的中心点

根据如下公式求得关键点:

参考论文《Objects as points》中的做法,使用高斯函数作为关键点检测分支的学习目标。使用

表示3D框的8个顶点在图像中的位置,则

表示在图像中包围3D框的最小长方形,通过

确定高斯函数的标准差。

2.3 回归分支

使用向量

编码目标的3D框,它们的含义是:

  • 表示深度偏移;

  • 对下采样产生的量化误差进行补偿;

  • 分别表示高、宽、长的残差(residual dimensions);

  • 用于确定角度

相比于直接学习3D目标框各个属性的值,学习偏移量更容易训练。

因为要使用8个标量组成的向量 确定3D框,那么回归分支输出的feature map尺寸为

用于控制feature map的尺寸。

下面讲述网络输出的向量 与3D框属性的关系。

根据深度偏移量可以求得目标的深度值,公式如下:

上式中的

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值