形状学习策略与不利天气、遮挡和截断等导致的点云质量恶化相结合
Behind the Curtain: Learning Occluded Shapes for 3D Object Detection【AAAI2022】
数据集:KITTI
分析形状缺失的情况
外部遮挡;信号缺失【这边视为能观察到的,只是丢了】,表现为空相素【我的理解是过于稀疏】;自遮挡,远侧部分被近侧遮挡【每个物体都不可避免地会发生自遮挡导致的形状错失】;
创新点:
BtcDet是第一个针对受遮挡影响的对象形状的3D对象检测器
Complete object shapes= observed objects shapes ∪ the occluded object shapes
根据估计的占用概率P(OS)进行目标检测
形状占用网络
assemble the approximated complete shapes
假设:
大多数前景对象类似于数量有限的形状原型;【处理:利用source point来补全target】
H(A,B) →源B是否覆盖目标A的大部分区域 最终A形状=源B中得分最高的Top3+目标A原始的点云。源对象来自训练集的其他帧。
车辆和骑自行车者,大致对称【处理:借助标记的边界框,镜像补充它们】
识别observed objects shapes ∪ the occluded object shapes【是在球面坐标系中完成】
使用均匀间隔的球形网格对点云进行体素化,以便可以通过任何LiDAR点后面的球形体素精确地形成遮挡区域。【就是这个S可能会存在很多voxel中】非空体素若有包含形状S则为1,会形成一个occupancy 的概率。
用了一个占有率网络
Occlusion-Aware Proposal Refinement【plus】
将占有率投影到RPN的各层feature中→feature拼接→ROI pooling→优化的bbox
PIXOR ing
————————————————2022-6-26更新——————————————————
MOT论文
MUTR3D: A Multi-camera Tracking Framework via 3D-to-2D Queries
代码:https://github.com/a1600012888/MUTR3D nuScenes数据集
端到端的多相机3D跟踪框架【解决问题:多相机进行3D跟踪时,会出现检测精度降低、复杂场景中的遮挡和模糊、边界对象丢失】
创新点:模拟一个对象的整个轨迹的3D状态,关联【空间和外观相似性】对象到3D轨迹中。
Metric:评估当前3D跟踪器中的运动模型:平均跟踪速度误差(ATVE)和跟踪速度误差(TVE)。可以测量被跟踪物体的估计运动的误差
自回归的方式逐帧更新自身→解码器头从每帧中的每条轨迹查询中预测一个候选对象,并且在来自同一轨迹查询的不同帧中解码的预测被直接关联→
损失:新查询和旧查询
新真值目标作为查询的回归目标,在新生查询的候选目标之间执行匹配。旧查询:先前帧的活跃查询。、跟踪当前帧中之前出现的目标,它在第一次成功检测到真值目标后被分配。
查询是有生命周期的,在代码中设置阈值。【查询更新:使用来自历史帧的特性来更新跟踪查询。】
两个指标:TVE是在MOTA最高的召回时的平均速度误差【可作为当前3D 跟踪器中运动模型的质量评价】
Time 3D: End-to-End Joint Monocular 3D Object Detection and Tracking for Autonomous Driving
数据集:nuScenes 3D
创新点:3D单目Detection和3D MOT一体;异构线索整合【编码外观 几何特征】
信息跨帧传播、估计相似度以生成三维轨迹、整合世界坐标系中的几何相对关系以估计速度、属性和框平滑度优化。
1单目检测方法:KM3D+其他检测头平行的Re-ID头
2异构线索整合:对外观、几何和运动信息的兼容表示进行了编码
3时空信息流:????
空间信息流:3D探测器的主中心头提取图像中的中心点,+外观特征和几何特征, MLP层连接以生成其输入。
时间信息流模块→多头交叉注意力?
Loss:
单目3D检测损失LMono3D、跟踪损失Ltracking和时间一致性损失LCons
MonoDETR: Depth-guided Transformer for Monocular 3D Object Detection
创新点:去除中心限制,基于深度信息引导的三维物体检测方法
https://github.com/ZrrSkywalker/MonoDETR
数据集:KITTI3D
特征提取:
视觉:多尺度特征图 下采样8 16 32
深度:下采样16。两个 3×3 卷积。对象的同一 2D 框内的像素分配有对象的相同深度标签。对于同时在多个框内的像素,选择离相机最近的物体的深度标签。
视觉编码器3块,深度编码器1块。
每个编码器块由一个自注意力层和一个前馈神经网络 (FFN) 组成
前景深度图方法:参考Categorical depth distribution network for monocular 3d object detection. 深度离散化为 k + 1 个 bin,其中第一个 bin 表示前景深度,最后一个表示背景。线性递增离散化(LID)【更远物体的深度估计固有地会产生更大的误差。[dmin, dmax]】
Depth-guided Decoder【不需要引入额外的深度估计的监督,3D GT boxes的 Z 值→深度值。估计深度属于某一范围得概率,然后根据其属于某一范围得索引返回连续的深度值。】
检测头:
在深度引导变换器之后,深度感知对象→基于 MLP 的头中以进行 3D 属性估计。在推理过程中,输出3D 边界框。分别计算每个查询的损失,将无序查询与真实对象标签匹配。
损失:
六个属性损失:两组。L2D 和 L3D。
第一组外观:对象类别、2D 大小和投影的 3D 中心。
第二组3D 空间属性:由深度、3D 大小和方向组成。【。】【在训练开始时,网络通常预测的 3D 属性不如 2D 属性准确,L3D 的值不稳定会干扰匹配过程。只使用 L2D 作为匹配每个查询标签对的匹配成本。】
————————————————2022-3-23更新——————————————————
SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation
核心内容:单个关键点估计与回归3 d 变量相结合,预测每个被检测物体的3d包围盒
在图像平面上估计投影的三维点。并行地增加一个三维参数回归分支。
损失函数: 3 d 盒子的8个角点【包含一个分类和回归分支。】分离了每个参数在三维包围盒编码阶段和回归损失函数中的贡献
当前方法:会较依赖于(rcnn 、rpn)+一个生成伪点云深度
缺点是:多阶段具有复杂性、引入噪声
改进方向有:几何推理、数据合成、3d-2d后处理
骨干网:DLA-34| 特点:实现深层聚合
采用这个网络的改进: bn替换为gn
3D检测网络:
关键点分支:物体由关键点表示【投影三维中心,图像中的8个点左乘内参矩阵】
回归分支:待回归的参数全部编码成差的方式去学习
损失函数
分类损失cls_loss:采用带惩罚因子的Focal Loss
———————————————2021-11-14更新————————————————————
GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving
作者:香港中文大学;商汤科技 王晓刚团队 CVPR2019
数据集:kitti
解决的问题是:
1仅使用二维边界框进行特征提取时,由于信息缺失,会出现表示模糊的问题。
【一个二维框有多种三维盒子表示。矛盾在于:相同特征输入又要分类器给出不同置信度;残差损失难估计】2 改进回归残差的loss 残差分类
创新点:
在2D检测基础上,高效地获得3D长方体的方法【包含了大小方向的粗信息,该长方体即 “guidance”】
提取3D盒子可见表面的潜在的3D信息,解决仅使用二维盒子的特征时的特征模糊问题。
改进方法:考虑质量感知损失的离散分类方法比直接回归方法具有更好的精度。
流程:
image→CNN检测器→2D box & orientation【2D框检测和方向预测】→3D guidance→guidance投影【2D框和可见表面提取特征】→3Dsubnet→refined 3D box【细化】
2D+O
3D box尺寸估计:汽车的尺寸具有低方差和单峰的特性。可以人为设定尺寸,初始化检测出3D box尺寸。
物体3D盒的顶部中心在2D平面上有一个稳定的投影,非常接近2D边界盒的顶部中点,而3D底部中心有一个类似的稳定投影,位于2D边界盒的上方和附近。
3d box 在相机坐标系下的粗计算:
高h估算已知,归一化后已知。因此d深度已知。
【d相当于一个比例系数现在,可以算出真实的三维空间坐标 3dbox 中心=0.5×(Cb+Ct)】
【这些以后可以得到一个粗位置。】
表面特征提取:
对α的角度进行讨论。前后左右会改变。上面必看到。
对可见的三个面做仿射变换,在指定特征层提取三个面特征加上2d box提取特征融合,最终特征回归真实的3d box。
残差回归改进为分类公式,细化3d box。【将残差值划分区间,计算标准差,以标准差为刻度,作为一个区间划分标志。】区间问题看成多重的二元分类问题。【意思是:如果有一个2Dbox 他不能和gt匹配→证明说他在区间概率为0。置信度低,那就是一个背景】
移位特征部分:【每个残差区间用最相关的投影特征???】
质量感知损失
分类预测的置信度能反映对应类的目标框的质量,目标框越准确得分越高。
重合高的得分高
实验部分:
该方法和DEEP3DBOX方法【学习记录V4】相比,后者的AP高。该方法在2D检测上性能没有调到最好,核心工作是在3D部分。和Mono3D【特征很多很复杂的那篇。陈晓智√学习记录V4】、3DOP【双目的】、DeepMANTA比较。
分析:
该方法不擅长处理图像边界上的对象(通常带有遮挡或截断)。1利用了表面特征中潜在的三维结构信息,消除了仅使用二维边界框所带来的表示模糊。2残差回归问题重新表述为分类。利用质量意识损失增强模型的识别能力。4没有任何额外的数据或标签进行训练。
Deep MANTA: A Coarse-to-fine Many-Task Network for joint 2D and 3D vehicle analysis from monocular image
作者:一些外国人 研究方向是目标检测的 CVPR2017
创新点:
定位车辆部件,特征点→可以预测隐藏部分的位置,23D之间的匹配,恢复3D车辆信息
由粗到细的多任务卷积神经网络。借鉴RPN 网络产生2Dbox 。output:六个任务共享特征向量:region proposal , detection , 2D box regression , part location , part visibility , 3D template prediction.
对图中的3D框的车辆的其他信息打标签
3D形状和模板数据集
数据集很庞大:103个汽车模型,每一个汽车模型都有36个特征部件的三维坐标,还有一个1*3数组代表长宽高信息。
真实的输入图像的每一个车辆建模 【里面有超多信息的】
在2D 和3D中的表示【框和部件】。V是可见性【是否遮挡啥的】
核心方法:Deep MANTA网络部分
从粗糙到精细化的前向传播:【均基于第一个卷积层的feature maps输入】使用三个网络【第一个网络就是RPN;第二三个网络?有点不懂】→结果更精确【原因:1克服大的物体大小变化,提供更高的准确度;2保持高分辨率,用于检测难以检测的车辆;】
多任务预测:第三个网络:每一个bounding box,同时输出其对应的:S,V,T【怎么能一下子输出这么多东西,奇怪???】 NMS去除冗余边框。
网络推断部分:利用一个就是前面的Deep MANTA网络的输出+3D部件数据+3D模板数据【方法:从103中遍历一个最相似的+23D匹配】
损失部分:
LOSS:【需要最小化五个损失函数】三个子网络
net1:LRPN
net2 | net3:+L检测损失函数 【分类损失(是车还是背景)+边框回归损失】
net2 | net3:+L特征部件定位
net3:+Lvis【车辆部件可见性】
net3:+L 模板相似度
【可以看出net3 Loss多:越往后越精细的意思吧】
半自动打标签:需要一个3D CAD的车辆模型数据集。作者手动标记了每一个车辆模型相应的N = 36个特征部件点的位置,并连线得到车辆模型的特征轮廓。对于每一个真实车辆的3D边框,通过算法计算出跟车辆模型的3D边框相似性。
选中最高的进行映射【该车辆模型及相应的特征部件点和轮廓的位置都可以映射到原图像真实车辆的位置去。】
实验部分:
数据集:KITTI
CNN:GoogLenet和VGG16。【预先用ImageNet数据集训练得到初始参数。VGG16效果较好】
NET1:在RPN网络中作者使用了7种长宽比,10种倍数作为参数。【该特征图上每一个点都可以产生70个anchor box。】
对比:【指标:AOS和AP】
第一个是不使用特征改进,且和RPN一样使用最后一层低分辨率的特征图的模型(类似于原先的RPN)
第二个是不使用特征改进,但是使用第一次卷积后的特征图的模型
第三个是Deep MANTA
3D定位正确性:ALP 通过阈值判定法
3D模板预测,特征部件定位,可见性评估:也是设定一些阈值。
3DSSD: Point-based 3D Single Stage Object Detector 2020
文章主要内容:点云数据进行单阶段3D检测的模型,速度快。
https://github.com/dvlab-research/3DSSD
这篇文章的代码写得太好了,很清楚。
前人研究:点云数据投影到图像中、体素表达 缺点是会丢失信息。
现在研究:直接用点云数据
分析了这个PointRCNN的问题【3D Object Proposal Generation and Detection from Point Cloud
这篇文章还没看,但很重要的样子。】第一阶段 获取proposal (SA&FP)前景点 第二阶段 refinement。【要解决耗时长的问题,特别是第一阶段,去除 FP层和第二阶段】
F-FPS方法和D-FPS方法
SA层的下采样步骤中用到了D-FPS方法【这个方法结果基本覆盖了整个场景,缺点就是前景点少了。→F-FPS前景点多+范围大。有利于回归】 SA中会进行特征聚合。【点和点周围的聚合,背景过少,不利于分类】。
→两个方法融合
CG layer【是对SA模块的变形:只用F-FPS中的提取的点作为初始中心点,初始中心点移动到它们对应的实例中→候选点。】预测头之前加入额外层来提取特征。三个步骤:中心点选择、周围点提取和语义特征生成。点集D-FPS 和F-FPS 的点将它们的归一化位置和语义特征group起来作为输入→mlp 层提取特征。
Anchor-Free回归:【2d中的centernet 根据关键点】
每个候选点到对应实例的距离、实例大小以及角度
Anchor-based方法缺点:要生成的anchor太多啦。要设计很多大小和方向的框【2d中的SSD、frcnn都是】
centerness对齐策略:1、点是不是在目标里。2、点到六个面距离,一个公式。 →1×2
【点云的点都在目标表面,他们的中心标记将非常的小且相似,很难从其他点中得出好的预测】
损失函数:分类、回归和shift损失。
基于模板匹配 :打分
3DOP 3D Object Proposals using Stereo Imagery forAccurate Object Class Detection
文章主要内容:输入Stereo图像对作为来估计深度,将图像平面中的像素坐标重新投影回3D空间来计算点云。该方法优势:召回率高,能给出准确率高的对象框。
提出一个生成候选的能量最小化函数。能量最小化函数由 对象大小、地面、深度信息特征【点云密度、到地面的距离、有无遮挡、free space可行驶的区域?】
3Dbbox中圈出高密度的点云区域。限制:点云不能垂直延伸到bbox外,且这个bbox附近点云高度要矮一些。
KITTI图像包含许多小对象、严重遮挡、高饱和区域和阴影。不适用之前的目标检测网络。
能量函数各个分量含义:
pcd:box内体素是不是有点云。【相当于一个比例,这边很奇怪 难道不是box内点云比例越大越好吗?也许可以这么理解,尽可能把他们框起来,如果box全部都有说明box小了】
fs:可行驶空间不能有box 如果一个体素是在box内 那么肯定不会在可行驶区域内【最小化盒子内部的可行驶区域】
Height Prior:box内点云高度越接近这个对象的平均高度。要这个体素内有点云才参与计算。
Height Contrast:表示包围box附近的点云的高度应低于box内点云的高度。【定义附近的概念:+0.6m】
根据这个能量最小化生成2000个框 +nms+贪婪算法 得到最终box
地面估计:RANSAC【迭代的方式从一组包含离群的被观测数据中估算出数学模型的参数】将平面拟合到估计的地面像素来估计地面。
通过SVM来学习权重【这边有点看不明白】,使用IOU作为损失函数。
目标检测和方向估计网络
基于Fast R-CNN在最后一个卷积层之后添加一个上下文分支和一个方向回归损失来扩展这个基本网络,以共同学习对象的位置和方向。
平滑L1损失进行方向回归。
Stereo R-CNN based 3D Object Detection for Autonomous Driving
文章主要内容:检测关联左右图像中的对象,基于关键点【mask r cnn】和box约束的3Dbox估计+密集3D盒子法(让他更精确)。
基于Faster R-CNN的工作。在本文中通过评估多比例特征地图上的锚来修改金字塔特征的原始RPN【Similar with FPN 意思是这边采用多个feature map】。
问题:RPN和FPN对比。
之前知道Faster R-CNN 是由Fast R-CNN+RPN构成的。一张图通过RPN获得一堆proposal,【proposal都是在原图上画个框,映射到一个feature map,池化变成统一尺度,之后再做分类和回归。】
在FPN中,对多个feature map分别做分类和回归,获得到一堆proposal【feature map这次有多张图】
双目的RPN过程
左右特征图concat起来。目标是左右的并集,和anchor IOU大于0.7 IOU小于0.3定义正负标签。
FPN在Faster R-CNN中FPN产生的每一个尺度的feature map都要送进RPN做一次proposal的提取。
六个【我觉得论文这边写错了 这样好奇怪哩 应该是两个uv坐标offset + wh回看之前的是一个点坐标+wh 一共是四个 】
左右候选框都是由同一个 anchor 生成,共享类别置信度得分,它们就可以一一对应起来。我们在左右 RoI上分别使用NMS,选取最高的2000个候选框用于训练。测试时,选取300个候选框。
在RPN之后→RoiAlign的操作→ 获取FPN的左和右featuremap →concat相应的特征→fc层得到对象类别、立体边界框、维度和角度【使用θ表示车辆相对于摄像机框架的方向,使用β表示物体相对于摄像机中心的方位 sin/cos值】
keypoint的检测。Mask R-CNN的结构进行关键点的预测。4个3D keypoint,即车辆底部的3D corner point,同时将这4个点投影到图像,得到4个keypoint 起到一定约束作用。
3D框恢复。是从2D的框和关键点来恢复的。7个点 left左上右下 right左右 +keypoint:推导
Dense 3D Box Alignment:最小化左右视图refine?【这个地方有点不理解,先跳过】
