单目3d detection算法记录

发布于:2025-03-19 ⋅ 阅读:(15) ⋅ 点赞:(0)

1、centernet object as points

这篇文章的核心单目3d检测主要是利用中心点直接回归出3d模型的所有属性,head共享整个backbone,其中3d属性包括:2d目标中心点、2dw和h、2d offsets、3doffsets、3d dimmession、rot还有depth。

其中对应的depth是根据kitti中的外参矩阵来进行计算得到的,同时推理的也是全局角度,如下所示:

KITTI 数据集 参数—— tracking devkit中的rotation_y和alpha角_hacker_G的博客-CSDN博客_kitti数据集参数这篇文章详细的地解释了kitti的角度参数的计算和使用,后续可以从自己的pad上面将对应的理解进行补齐。depth参数我记得没记错的用的是相机坐标系的z坐标直接进行gt然后回归。注意centernet用的是sigmod的一个函数计算来作为回归方式。

 最难以理解的其实是角度的回归方式,实际方法是先将角度按照左右手坐标系分为正负角,然后将【-180, 180】划分为4个bin,然后将同时回归出4个bin的中心角的差值,具体的向量是[0,0,0,0,delta, delta, delta, delta],即先softmax是认为哪个bin里面,然后在计算这个角度中心值的差值,这样当然如果bin值越仔细则回归的回归越准确。计算损失函数则也是计算softmax和回归的cos值损失。

这是第一篇以点回归3d的目标的paper,缺点也很明显,①3d detection使用的是2d center ②角度回归依旧不准确

2、SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation。

paper:https://arxiv.org/pdf/2002.10111.pdf

参考文章:单目3d检测-smoke解析 - 知乎

核心思想:

    干掉centernet中的2d模块,认为2d模块是与3d模块会有抑制作用的,因此只保留了3d模块,然后基于3d centerpoint直接回归其他的3d属性,然后基于解耦的loss来进行训练,得到3d的结果

 

 然后学习的目标也是用8维的delta来预测减小学习的难度,最终目标是(x,y,z,l,w,h,θ),预测目标是

 前面的delta_z是距离即depth的偏移量,从数据集中统计出平均值,

 

smoke的角度可以在后续的推导中慢慢再理清,此处不细说了。 

loss:

直接计算Lcls+3个尺寸的回归loss

知乎的这篇文章写的很好,建议参考。

 3、monodle:Delving into Localization Errors for Monocular 3D Object Detection

 核心思想:1、2d与3d的center point确实存在不可忽略的差异,应该使用3d的投影点;2、现有的技术远处的gt估计不准,丢掉太远的目标。3、提出一个whl优化的3d iou loss,使其不受定位精度的影响。

idea来源:通过使用gt来逐步替换预测值,用来判断到底是哪个模块存在问题:

 1、使用gt替换location(xyz)后,性能直接逼近lidar,因此发现location是影响单目3d的主要因素

2、使用gt替换depth,性能与gt替换location相差接近40,


网站公告

今日签到

点亮在社区的每一天
去签到