单目3D目标检测网络SMOKE解读

论文: SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation
代码: https://github.com/lzccccc/SMOKE

0 引言

现有的单目3D目标检测基本都是2阶段的, 首先基于2D目标检测生成目标的2D候选区域, 然后针对获取到的2D候选区域预测目标的位置姿态等。 论文认为2D检测是不必要的, 甚至会引入不必要的噪声。 如果已知目标的3D属性和相机的内参, 根据几何投影关系是可以得到2D属性的, 反之亦然。论文就是基于这一特点, 直接基于图像平面上的关键点预测,得到3D检测结果。

1 网络介绍

整个网络结构非常简单, 包括一个backbone特征提取网络和检测头, 检测头包括两个并行的分支, 其中一个分支用于关键点坐标回归, 另一个分支用于3D框的回归。
在这里插入图片描述

1.1 backbone网络

backbone网路采用了DLA-34的网络, 这个网络的主要特点就是做一些特征的聚合。 用一些基础的特征提取网络加一些特征聚合的操作应该也能取得不错效果。作者对backbone网络做了2点改进: 1)把普通的卷积层换成可变形卷积, 2)用GN替换BN, 因为GN 对batch_size 不敏感。

1.2 检测网络

检测网络主要包括2个并行的分支, 一个预测关键点, 另一个预测一些用于3D框计算的基本变量, 然后把这2个分支的结果进行综合就可以得到3D框的信息。

1.2.1 关键点分支

网络整体框图中叫关键点分类,其实这个叫法不是很准确, 实际应该是回归。 至于类别分类, 这篇文章没有做, 因为只关注了KITTI数据中car这一类。 关键点回归分支预测3D框的中心点在图像平面的投影[ x c x_c xc, y c y_c yc]。

1.2.2 回归分支

回归分支主要预测了计算3D框的一些基础变量, 总共有8个:
在这里插入图片描述
具体细节可以参见论文。 有了这8个变量, 在加上关键点分支预测的中心点坐标, 再结合相机内参和几何投影关系, 就可以重建3D框的信息。

  1. 计算深度
    在这里插入图片描述
    其中 δ z \delta_z δz是通过回归得到的, 是深度偏移量, 再根据预设的参数做一个尺度缩放和平移, 就得到真实的深度值。 文中的预设值是给定好的, 应该是根据统计得出的。

  2. 计算3D框的中心点
    根据预测的中心点[ x c x_c xc, y c y_c yc], 上面计算得到的深度, 以及回归分支预测的偏移量, 以及相机的内参矩阵直接计算得到。

在这里插入图片描述
3)计算3D框的3维尺寸
在这里插入图片描述
其中 h ˉ , w ˉ , l ˉ \bar{h}, \bar{w}, \bar{l} hˉ,wˉ,lˉ是预设的物体尺寸大小,其他的变量是通过回归分支预测的。

  1. 计算方向
    在这里插入图片描述
    其中 α \alpha α是回归分支预测得到的。 值得注意的是, 作者这里为了预测一个角度值, 预测了2个变量 s i n α , c o s α sin\alpha,cos\alpha sinαcosα。 但消融试验说明, 预测这样一个向量是有收益的。
    在这里插入图片描述
    至此, 就完全确定了一个3D框的位置, 大小和方向。

2 总结

SMOKE的网络结构非常简单, 在特征图上直接用2个并行的回归分支预测了10个变量, 用这10个变量, 结合相机内参, 根据几何投影关系计算3D框的信息。 几何关系的计算部分比较复杂。

其实有个疑问, 既然这样, 可以更简单粗暴一点, 直接回归3D框的信息, 不用先预测2D平面上的关键点, 在根据相机内参和投影关系投影到3D。 只是这样简单粗暴的回归, 效果可能不会好。

3 参考

[1] 最新发布!SMOKE 单目3D目标检测,代码开源!
[2] 单目3d 检测 smoke 网络
[3] Apollo 7.0障碍物感知模型原型!SMOKE 单目3D目标检测,代码开源!

### 单目3D目标检测开发环境配置 单目3D目标检测是一种基于单一摄像头输入来估计物体三维位置的技术,在自动驾驶、无人机导航等领域具有广泛应用。为了成功搭建单目3D目标检测的开发环境,可以参考以下方法。 #### 依赖安装 在构建开发环境之前,需确保基础工具链已准备就绪。通常情况下,这涉及一系列必要的软件包和库文件。例如,对于Python项目而言,可能需要安装一些常见的编译器及相关依赖项: ```bash apt install build-essential zlib1g-dev libbz2-dev libncurses5-dev \ libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget ``` 上述命令涵盖了C/C++编译器以及多种标准库的支持[^3]。通过执行此脚本可有效减少后续可能出现的兼容性问题。 #### 软件框架选择 当前存在多个成熟的开源解决方案可供选用,其中包括但不限于MMDetection3D与OpenPCDet两大主流平台。前者不仅适用于处理传统二维图像数据,同时也能够很好地解析来自激光雷达传感器获取到的密集型点云资料;后者则更加专注于纯点云形式下的三维度量分析任务[^1]。然而针对特定应用场景——比如利用无人飞行载具所捕捉下来的鸟瞰视角影像,则推荐考虑CARLA Drone方案及其配套资源集合[^2]。 #### Python虚拟环境设置 建议创建独立隔离的工作区以便管理不同版本间潜在冲突情况的发生。具体操作如下所示: ```bash python3 -m venv smoke_env source smoke_env/bin/activate pip install --upgrade pip setuptools wheel ``` 这里我们采用`venv`模块生成了一个名为`smoke_env`的新实例,并激活它之后更新了内部的核心组件至最新状态。 #### 主体程序部署 以SMOKE为例说明整个流程的关键环节。首先克隆官方仓库地址并切换分支指向稳定发行版标签页签处: ```bash git clone https://github.com/OpenPerceptionX/SMOKE.git cd SMOKE git checkout tags/v0.1.0 ``` 接着按照文档指引完成剩余部分设定工作,主要包括PyTorch深度学习引擎适配确认、CUDA驱动程序验证等方面的内容描述。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值