【3D目标检测】Boosting Monocular 3D Object Detection with Object-Centric Auxiliary Depth Supervision

概述

本文是基于单目图像的3D目标检测方法。
【2021】【MonoPixel】

研究的问题:

  • 如何获得更好的深度信息从而提升网络的检测性能

解决的方法:

  • 提出object-centric auxiliary depth loss,使用原始点云而非深度标注作为监督信号学习精确的深度值(旨在减少深度误差,尤其是前景区域的深度误差)。在推理时,不产生深度图而是检测目标的中心然后产生中心周围的深度值。
  • 引入了目标深度分解以及深度不确定性,前者指的是更改了深度回归的目标,后者指的是输出深度分布而非深度值。

细节

背景

单目3D检测算法的分类:

  • 单纯基于图像输入。可以分为:基于anchor的方法(两阶段的、一阶段的)以及基于关键点检测的方法(CenterNet系列)
  • 基于图像和深度图的方法。可以分为:直接提取深度图特征的方法以及基于伪点云的方法

基于深度图的检测算法的基本流程

  • 在深度估计数据集上训练一个深度估计网络(或者直接拿一个成熟的深度估计网络)
  • 使用该深度估计网络在3D数据集中预测深度图
  • 将深度图或者它的其他表示(伪点云、RGB-D图像)作为目标检测网络的额外输入

基于深度图的检测算法存在的问题

  • 深度估计网络并不能准确预测前景目标的深度。因为存粹的深度估计任务要求的是对整张图片的深度估计都很准确,而3D目标检测任务中的深度估计中其实更关注的是前景部分的深度,而深度估计网络一般直接用的是预训练模型,在3D检测任务中参数并不会更新,所以这一点深度估计网络是学不到的。
  • 从深度估计网络估计的深度值是确定性的,而深度的估计应该是一个不确定的值,也就是应该是一个分布。
  • 使用两个分离的网络进行深度估计和3D对象检测在内存和计算方面都非常低效

3D置信度:在回归的目标参数上添加不确定性的概率检测在最近也很流行。MonoPair和UR3D探索了回归深度之后的不确定性,MonoDIS探索了3D置信度

网络结构

整体的结构和SMOKE那种基于关键点检测的网络一样,核心的不同在于它在训练的时候加入了点云作为深度的额外监督信号,因此除了原先的3D边界框损失,多了一部分点云引入的深度损失;另外还有一些不同就在于检测头部分对深度回归目标的分解了以及深度不确定性。
在这里插入图片描述

深度不确定性

首先深度不确定性讲的其实就是深度值越大越不可信,深度值越小越可信,相当于是方差,方差越大越不可信,方差越小越可信。具体的原因可以参考【3D目标检测】基于伪雷达点云的单目3D目标检测方法研宄中全局置信度的内容。
但着实看不太懂深度不确定性标签是怎么做的。

解构深度回归的目标

以往的工作都是按照数据集提供的标注将到目标中心的距离作为深度回归的监督信号,但其实3D边界框的深度标注是通过点云获得的,具体方式:点云能返回一个到目标表面的距离 d s d_s ds,而目标表面到目标中心的距离 d s 2 c d_{s2c} ds2c可以有边界框的偏航角以及尺寸计算得到(有点复杂,但是问题不大),这两个距离加起来,就是到目标中心的距离了,也就是深度值。
在这里插入图片描述
在这里插入图片描述
因此我们同时回归 d s d_s ds d s 2 c d_{s2c} ds2c这两个目标,而不是回归最后的结果 d c d_c dc
为什么要解构深度回归的目标?因为要引入点云作为额外的监督信号,而点云给出的距离是 d s d_s ds而不是最终的 d c d_c dc
为什么要引入点云?因为单纯基于3D边界框的话,一个目标只有一个深度监督信号,也就是目标中心点的深度值,而引入点云就可以得到大量的深度监督信号。我们的目标就是借助大量的深度监督信号替身目标中心点的深度值预测,从而提升边界框位置的预测,按照Delving into Localization Errors for Monocular 3D Object Detection的思想,提高定位性能可以大幅度提高检测的性能。

像素级别的深度监督

在KITTI的汽车类别中,前景的像素占比在11.42%,剩下都是背景,因此作者设计了一个以目标为中心的深度损失函数。
具体做法就是:先用3D边界框的标注对点云进行mask,得到前景部分的点云,然后将所有的点云投影到图像平面上得到深度图(图b),将前景部分的点云投影到图像平面上得到深度mask(图c),然后将深度图按10m的距离间隔划分并进行采样得到标准化的深度分布(图d)。
在这里插入图片描述

深度部分的损失主要是包含三方面,一是边界框中心的损失,二是前景部分的损失,三是背景部分的损失
在这里插入图片描述
这部分是边界框中心的损失,其实就是对边界框中心的深度值预测作L1正则化,在这个基础上添加了 θ 2 \theta ^2 θ2,这个就是本文提到的深度不确定性,它讲的其实就是深度值越大越不可信,深度值越小越可信。放到损失函数中,越大就越倾向于右边的对数,越小就倾向于左边的L1范数。
在这里插入图片描述
这部分是前景对应的损失,这个L1范数是希望前景部分的预测深度和我们制作的mask深度图尽可能一致,另外两项和上面的 θ 2 \theta ^2 θ2性质一样?不懂了
还有这个背景部分的损失,要是这里m=bg,按照作者指示函数的定义,直接等于0了??实在是不懂了+1
在这里插入图片描述

### 零样本昼夜域适应的目标检测技术与实现 零样本昼夜域适应(Zero-Shot Day-Night Domain Adaptation, ZSDNDA)是一种新兴的技术领域,旨在解决目标检测模型在不同光照条件下的泛化能力问题。具体而言,在白天训练的模型通常难以直接应用于夜间场景,反之亦然。这种跨域差异被称为“域偏移”,而ZSDNDA试图通过无监督学习方法来缓解这一挑战。 #### 技术背景 传统的域适应方法依赖于源域和目标域之间的标注数据配对,但在实际应用中获取这些标签可能非常昂贵甚至不可行。因此,研究者提出了基于生成对抗网络(GANs)、特征对齐以及自监督学习的方法来减少域间差距[^1]。例如,CycleGAN被广泛用于图像风格转换任务,可以将日间的图片转化为具有夜景特性的合成图,从而增强模型对于夜晚环境的理解力。 #### 方法概述 一种典型的解决方案涉及以下几个方面: - **图像翻译模块** 使用如UNIT或MUNIT这样的双向映射框架,该部分负责创建逼真的日夜互换样例集作为中间桥梁连接两个原本不兼容的空间分布[^2]。 - **共享编码器设计** 构建一个能够提取通用语义表示的深层神经网络结构,使得同一物体无论处于何种照明条件下都能激活相似区域响应模式[^3]。 - **分类分支调整** 对现有主流探测架构(比如Faster R-CNN,YOLOv5)稍作修改引入额外损失函数项鼓励预测结果趋向一致即使输入来自完全不同视觉表象体系下也应保持稳定输出性能表现良好状态^4]^. 以下是简化版伪代码展示如何构建这样一个系统: ```python import torch.nn as nn class ZeroShotDayNightAdapter(nn.Module): def __init__(self): super().__init__() self.image_translator = UNIT() # Image style translator (e.g., CycleGAN/UNIT) self.shared_encoder = SharedEncoder() self.detector_head = DetectorHead() def forward(self, x_day=None, x_night=None): if x_day is not None: z_shared = self.shared_encoder(x_day) translated_x = self.image_translator.translate_to_night(z_shared) elif x_night is not None: z_shared = self.shared_encoder(x_night) translated_x = self.image_translator.translate_to_day(z_shared) detections = self.detector_head(translated_x) return detections ``` 上述代码片段定义了一个基础类`ZeroShotDayNightAdapter`, 它包含了三个主要组件:image translator、shared encoder 和 detector head。 这些组成部分共同协作完成从原始图像到最终边界框坐标的整个流程处理工作 ^5].
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值