【论文解读】SMOKE 单目相机 3D目标检测(CVPR2020)

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介:  SMOKE是一种用于自动驾驶的实时单目 3D 物体检测器。为什么会注意这边文章呢?是因为这两天发布的百度Apollo 7.0 的摄像头障碍物感知,也是基于这个模型改进的;于是令我产生了一些兴趣。

前言

SMOKE是一种用于自动驾驶的实时单目 3D 物体检测器。为什么会注意这边文章呢?是因为这两天发布的百度Apollo 7.0 的摄像头障碍物感知,也是基于这个模型改进的;于是令我产生了一些兴趣。

论文名称:SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation

论文地址:https://arxiv.org/pdf/2002.10111.pdf

开源地址:https://github.com/lzccccc/SMOKE

环境搭建:https://guo-pu.blog.csdn.net/article/details/122243245

image.gif

本文创建一个基于docker的SMOKE开发环境;SMOKE模型效果如下。

image.gif



 一、论文动机

1.1 对于已有的两阶段单目3D目标检测框架:

       a、基于2D目标检测网络生成目标的2D候选区域;

       b、针对获取到的目标的“2D patch特征预测目标位姿;

深度学习中的patch是做什么的?参考链接:https://www.zhihu.com/question/312883184


1.2 SMOKE

       a、论文认为其中的2D检测对于单目3D检测任务来说是冗余的,且会引入噪声影响3D检测性能。

       b、若已知相机内参和目标的3D属性,反过来是可以推测出目标的2D检测框的

       (即:基于3D box在图像平面上的投影点求取满足条件的最小外接矩形即可)

本论文抛弃了2D候选区域生成这一步,提出了一个基于关键点预测的一阶段单目3D检测框架SMOKE(Single-Stage Monocular 3D Object Detection via Keypoint Estimation),直接预测目标的3D属性信息。


二、单目3D目标检测

针对单张RGB图像,宽度 W、高度 H、通道数 3

给出其中每个目标的类别标签 C3D边界框 B;其中B 可以用7个参数表示hwlxyzθ

(hwl) 表示目标的高度、宽度和长度;

(xyz) 表示目标中心点在相机坐标系下的坐标;

θ 表示目标的航向角。

需要加水相机的内参矩阵已知。


三、SMOKE 整体框架

输入图像经过DLA-34 Backbone进行特征提取。

网络主要包含两个分支:关键点分支和3D边界框回归分支。

image.gif


四、SMOKE的 Backbone(主干网络)

目录

4.1Deep Layer AggregationDLA-34网络(基础)

4.2Deformable Convolutional ,可变形卷积(改进点)

5.3Group Normbalization,组归一化(改进点)


4.1 DLA

 Deep Layer AggregationDLA,一种网络特征融合方法。(CVPR 2018)

image.gif

目的:更好地融合空间特征和语义信息;即:融合浅层的底层信息和深层的语义信息。

论文地址:https://arxiv.org/pdf/1707.06484.pdf

开源代码:https://github.com/ucbdrive/dla

DLA-34

论文中采用DLA-34作为主干网络进行特征提取,以便对不同层之间的特征进行聚合

网络中主要做了两点改动如下:

1、 将所有的分层聚合连接替换为可变形卷积;

2、将所有的BN层用GN(GroupNorm)替换,因为GNbatch size大小不敏感,且对训练噪声更鲁棒,作者在实验部分也对这一点进行了验证。

Deep Layer Aggregation 解读参考:https://zhuanlan.zhihu.com/p/364196632

Deep Layer Aggregation 解读参考2https://zhuanlan.zhihu.com/p/127949403


4.2 可变形卷积

Deformable Convolutional ,可变形卷积( ICCV 2017

论文地址:https://arxiv.org/pdf/1703.06211.pdf

开源地址:https://github.com/msracver/Deformable-ConvNets

指卷积核在每一个元素上额外增加了一个参数方向参数,这样卷积核就能在训练过程中扩展到很大的范围。

image.gif

a)是传统的标准卷积核,尺寸为3x3(图中绿色的点);

b可变形卷积,通过在图(a)的基础上给每个卷积核的参数添加一个方向向量(图b中的浅绿色箭头),使的卷积核可以变为任意形状;

c)和(d)是可变形卷积的特殊形式。

传统的卷积核通常是固定尺寸、固定大小的(例如3x35x5,它对于未知的变化适应性差,泛化能力不强。

例如:同一CNN层的激活单元的感受野尺寸都相同,但是不同的位置可能对应有不同尺度的物体,这些层需要能够自动调整尺度或者感受野的方法。

image.gif

可变形卷积的卷积核可以根据实际情况调整本身的形状,更好的提取输入的特征。

即:卷积核的形状是可变的,也就是感受野可以变化,但注意感受野的元素是“不变”的。

参考:https://blog.csdn.net/LEEANG121/article/details/104234927


4.3 Group Normbalization

Group NormbalizationGN)是一种新的深度学习归一化方式,它解决了BN式归一化对batch size依赖的影响。

image.gif

BatchNormbatch方向做归一化,算N*H*W的均值

LayerNormchannel方向做归一化,算C*H*W的均值

InstanceNorm:一个channel内做归一化,算H*W的均值

GroupNormchannel方向分group,然后每个group内做归一化,算(C//G)*H*W的均值


五、SMOKE的 3D检测网络

此部分主要包括关键点检测、3D边界框回归分支。

5.1 关键点检测

在关键点分支中,图像中的每一个目标用一个关键点进行表示。这里的关键点被定义为目标3D框的中心点在图像平面上的投影点,而不是目标的2D框中心点

image.gif

设关键点坐标为(𝑥𝑐,𝑦𝑐)(x_c,y_c),则其与目标在相机坐标系下的位置(𝑥,𝑦,𝑧)(x,y,z)之间的关系表示如下边公式:

image.gif

补充理解篇(相机模型

image.gif

image.gif

参考:视觉SLAM十四讲 高翔https://www.bilibili.com/video/BV1Z5411t7oB?p=4


5.2 3D边界框回归分支

由于公式乱码,直接复制我的论文分享PPT了。

image.gif

即:

image.gif

关于深度z的参数,参考如下:

image.gif



六、损失函数

image.gif


七、训练细节

image.gif



八、实验结果

8.13D目标检测、鸟瞰图、2D目标检测

8.2、消融实验

9.3、模型效果

image.gif


image.gif


image.gif


9、SMOKE百度Apollo7.0中应用

image.gif



相关文章
|
传感器 机器学习/深度学习 自动驾驶
自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲
自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲
4947 0
自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲
|
存储 数据采集 传感器
一文多图搞懂KITTI数据集下载及解析
一文多图搞懂KITTI数据集下载及解析
14807 3
一文多图搞懂KITTI数据集下载及解析
|
机器学习/深度学习 传感器 算法
单目3D目标检测 方法综述——直接回归方法、基于深度信息方法、基于点云信息方法
本文综合整理单目3D目标检测的方法模型,包括:基于几何约束的直接回归方法,基于深度信息的方法,基于点云信息的方法。万字长文,慢慢阅读~ 直接回归方法 涉及到模型包括:MonoCon、MonoDLE、MonoFlex、CUPNet、SMOKE等。 基于深度信息的方法 涉及到模型包括:MF3D、MonoGRNet、D4LCN、MonoPSR等。 基于点云信息的方法 涉及到模型包括:Pseudo lidar、DD3D、CaDDN、LPCG等。
2376 2
|
存储 传感器 数据可视化
3D目标检测数据集 KITTI(标签格式解析、3D框可视化、点云转图像、BEV鸟瞰图)
本文介绍在3D目标检测中,理解和使用KITTI 数据集,包括KITTI 的基本情况、下载数据集、标签格式解析、3D框可视化、点云转图像、画BEV鸟瞰图等,并配有实现代码。
3548 1
|
并行计算 计算机视觉 Docker
单目3D目标检测——SMOKE 环境搭建|模型训练
本文分享SMOKE最新的版本的环境搭建,以及模型训练;环境关键库版本:pytorch 1.12.0、CUDA 11.3、cudnn 8.3.2、python 3.7、DCNv2。
604 0
|
数据可视化 计算机视觉
单目3D目标检测——SMOKE 模型推理 | 可视化结果
本文分享SMOKE的模型推理,和可视化结果。以kitti数据集为例子,对训练完的模型进行推理,并可视化3D框的结果,画到图像中。
381 0
|
传感器 机器学习/深度学习 人工智能
超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于单目、双目和伪激光雷达数据的相关算法,下面展开讨论下~
超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
|
机器学习/深度学习 传感器 编解码
【多传感器融合】BEVFusion: 激光雷达和摄像头融合框架 NeurIPS 2022
BEVFusion提出一个融合多摄像头和激光雷达数据的框架,可用于3D检测。在自动驾驶领域,通过独立处理并融合摄像头和激光雷达数据,可以显著提升3D对象检测的准确性和稳健性,尤其是在激光雷达可能出现故障的真实场景中。
3522 57
【多传感器融合】BEVFusion: 激光雷达和摄像头融合框架 NeurIPS 2022
|
存储 并行计算 计算机视觉
Fast-BEV的CUDA落地 | 5.9ms即可实现环视BEV 3D检测落地!代码开源
Fast-BEV的CUDA落地 | 5.9ms即可实现环视BEV 3D检测落地!代码开源
992 0
|
数据可视化 PyTorch 算法框架/工具
单目3D目标检测——MonoDLE 模型训练 | 模型推理
本文分享 MonoDLE 的模型训练、模型推理、可视化3D检测结果。
341 0