3D目标检测-二阶段方法(region proposal-based Methods)之基于多视角的方法(Multi-view based)解读

本文聚焦3D目标检测中基于多视图的region proposal-based方法,介绍了MV3D、AVOD、ContFuse等多种算法。阐述了各算法的优势、流程及缺点,如MV3D利用鸟瞰图优势但不适合小目标,AVOD实现编码降维等,为3D目标检测提供了多视角的技术参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3D目标检测–region proposal-based Methods–Multi-view based

Methods:
1.MV3D(2017 CVPR)
 鸟瞰图的优势:首先,物体在投影到鸟瞰图时保持了物理尺寸,因此具有较小的尺寸差异,这与前视图/RGB图平面的情况不同。其次,鸟瞰图中的物体占据不同的空间,从而避免了遮挡问题。第三,在道路场景中,由于物体通常位于地面上,垂直位置的变化很小,鸟瞰位置对于获得准确的三维边界盒更有优势。在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

算法流程:
 输入的鸟瞰图包含M个高度图切片,一个密度图和一个强度图,因此是一个(M+2)通道的图片;输入的主视图为三通道,包含一个高度图,一个距离图和一个强度图。通过3D RPN对鸟瞰图生成3D候选框,再将这些3D候选框分别映射到三个视图中,分别与相应视图的特征图输入到ROI Pooling层中,因此每个候选框得到三个尺寸相同的向量。在后续的R-CNN方法中,对于每一个候选框,在每个全连接层前都其对应的三个向量进行逐元素mean操作(即deep fusion)。
缺点:
 这种RPN体系结构并不适合BEV中的小目标。在卷积特征提取器向下采样时,小目标在深层的特征图中只占很少的像素点,导致没有足够的数据来提供具有辨别力的特征。
2. AVOD(2018 IROS)
动机:
 MV3D在卷积特征提取器向下采样时,小实例在最终的特征图中只占一个像素的一小部分(下采样导致小目标信息丢失),导致没有足够的数据来提取有效特征。本文的RPN体系结构的目标是将来自RGB图像和BEV图的全分辨率特征融合到RPN中。(利用FPN)
在这里插入图片描述
在这里插入图片描述
算法流程:
(1)首先利用两个FPN结构分别提取RGB图像特征和BEV图像特征,之后利用1×1卷积降维,然后利用RPN结构得到候选框,并通过crop and resize操作使他们变成相同尺寸的向量(不用ROI Pooling),最后通过逐元素求均值融合。
(2)将一中得到的3D候选框映射到RGB特征图和BEV特征图中并分别进行crop and resize操作得到特征向量,将其进行逐元素求均值融合,并用来预测分类、边界框回归和方向估计结果,将预测结果作用在一中生成的3D候选框上并经过NMS操作得到最终结果。这里作用在3D候选框上的两次NMS都是先将3D候选框映射到BEV上,对相应的2D候选框进行筛选,保留的候选框再转回3D。
注:
 MV3D只是给出了8个顶点,没有考虑3D边界框的几何约束关系。此外,MV3D中8个顶点需要一个24维(3x8)的向量表示,而AVOD只需要一个10维(2x4+1+1)的向量即可,实现了编码降维。
在这里插入图片描述

3.ContFuse(2018 ECCV)
动机:
 之前基于点云和RGB图像的方法一般先在RGB视图中生成region,然后使用激光雷达进行最终的目标定位。但是这些方法不能够对图像和点云进行联合推理。因此,3D检测的性能收到了2D图像检测的约束。
在这里插入图片描述
(上图中的LIDAR Stream输入为BEV图像)
在这里插入图片描述

算法流程:
 ContFuse的主要创新点是将RGB特征转换到BEV图视角,然后再与点云数据对应的BEV特征进行continuous fusion。
首先根据K近邻在2D BEV平面中找到与目标点距离最近的k个点(图中五个彩色小圆圈),然后反投影到3D空间内,再将这k个点投影到RGB图中,并找到每一个点所对应的图像特征(图中与小圆圈颜色对应相同的方块),最后将这些图像特征和3D offset合并到一起送到MLP中,输出BEV中对应位置的目标特征。(BEV特征与RGB特征的融合)
 利用转换后的RGB特征与ResNet提取的BEV特征逐层相加,最后一层的融合结果用来生成3D目标框。

4.MMF(2019 CVPR)
输入处理:
 点云数据首先通过栅格化处理为体素,也就是一个batch×channel×W×L×H的Tensor,然后将其高度与channel数合并之后,得到BEV俯视图,就可以把这个Tensor变为一个4维Tensor,就可以用处理图像的CNN进行处理。
在这里插入图片描述
(1)Point-wise fusion
 与AVOD方法相同。
(2)ROI-wise fusion
 利用RPN筛选出前景框后,将相应的ROI中来自BEV的特征和RGB的特征级联,精细预测边界框回归。
(3)Online Mapping
 在BEV表示的点云后加入U-net,做Ground Estimation,得到俯视图中的路面高度,然后使用路面高度与真实的点云做差,得到每个点相对于路面的高度。就可以认为这样做是减去了路面高度的起伏对3D Object Detection的影响。这个思想在HDNet中已经出现过了。
(4)Depth Completion
使用RGB图像得到的feature map,通过双线性插值和卷积层预测深度图像,从而可以得到稠密的深度信息,以补充点云稀疏的深度信息。这种稠密的深度信息可以转化为稠密的伪点云,从而进行Point-wise fusion。

5.SCANET:SPATIAL-CHANNEL ATTENTION NETWORK FOR 3D OBJECT DETECTION(2019 ICASSP)
解决的三个问题:
(1) 第一个问题是现有的三维目标检测方法不能提取多尺度和全局上下文特征来编码局部和全局信息。
(2) 第二个问题是现有的许多方法无法充分地恢复特征提取器中由于连续下降采样而造成的空间信息减少。
(3) 最后一个问题是需要一种更好的融合方案来融合二维点云投影和RGB图像的特征。
在这里插入图片描述

算法流程:
 采用和MV3D相同的紧凑表示方法将点云数据映射到BEV中,形成了一个六通道的BEV映射,其中前五个通道编码高度信息,最后一个编码强度信息。对于高度通道,本文将点云分成五个切片,每个切片产生一个高度图,表示每个单元中点的最大高度。对于强度通道,本文将其计算为整个点云的每个单元中点的数量。将全分辨率的BEV特征图和RGB特征图均值融合,之后利用RPN生成3D候选框,再将3D候选框投影到BEV图像和RGB图像平面中并分别经过ROI Pooling层得到7×7的特征向量,利用本文提出的融合策略融合相应的特征向量并预测分类和目标框回归。
在这里插入图片描述

 空间通道注意力,简单结构ESU(用于恢复分辨率,无图)、

融合策略:
 首先通过element-wise mean操作将BEV图和RGB图中的特征合并,然后将它们级联起来作为下一步的输入,这样可以使不同的视图特征之间有更多的交互。
在这里插入图片描述
6.RT3D(2018 RAL)两阶段2D检测改进
在这里插入图片描述

算法流程:
 将点云投影为3通道BEV图像:将一个grid cell的max{z}, ave{z}, min{z}(z为cell中点的z坐标)分别作为3-channel。利用2D RPN生成候选框。
 由于在经过ROI Pooling层后进行分类预测和目标框回归时,对每个ROI都进行多次卷积计算量很大,因此利用pre-ROI Pooling convolution,把卷积放到ROI Pooling之前,即先卷积再ROI pooling,这样节约了计算量但是精度会下降。因此使用pose-sensitive feature map提升精度,将每个ROI分成4份(左上、右上、左下、右下)分别进行ROI Pooling,最后将不同部位特征拼接为一个特征图来预测类别、边界框回归和方向(∆x,∆y,∆z, w, l, h)
在这里插入图片描述

### 3D Object Detection ROI Head Implementation and Usage In three-dimensional (3D) object detection frameworks, Region-of-Interest Heads (ROI Heads) play an essential role similar to their counterparts in two-dimensional (2D) detectors like Faster R-CNN[^2]. An ROI Head processes candidate regions generated by a region proposal network or other means, refining these proposals into final bounding boxes with associated class labels. For 3D object detection, the input data typically includes point clouds from LiDAR sensors or depth images. The process involves several stages: #### Feature Extraction A backbone network extracts features from raw sensor inputs such as voxelized point cloud grids or multi-view images. These extracted features serve as the basis for subsequent processing steps within the ROI Head. #### Proposal Generation Proposals are generated either through dedicated networks designed specifically for 3D space—such as PointPillars—or adapted versions of traditional 2D methods applied across multiple views or slices of volumetric representations. #### Refinement via ROI Pooling/Align Operations Once proposals have been identified, they undergo refinement using operations analogous to those found in standard 2D implementations but tailored towards handling spatial information inherent in 3D datasets. This often entails applying pooling techniques that aggregate local descriptors around each proposed box location before feeding them into fully connected layers responsible for classification and regression tasks. Here’s how this might look implemented in Python code targeting PyTorch-based architectures commonly employed in modern deep learning pipelines: ```python import torch.nn.functional as F from torchvision.ops import roi_align class ROIPooler(nn.Module): def __init__(self, output_size=(7, 7), sampling_ratio=2): super().__init__() self.output_size = output_size self.sampling_ratio = sampling_ratio def forward(self, feature_maps, rois): """ Args: feature_maps (Tensor): A tensor containing all feature maps. Shape should be [batch_size, channels, height, width]. rois (List[Tensor]): List of tensors where each element corresponds to one image, holding N RoIs given as [batch_index, x1, y1, z1, x2, y2, z2]. Returns: Tensor: Pooled features corresponding to provided RoIs. Shape will be [total_num_rois, channels * H_out * W_out], assuming `output_size` was specified appropriately during initialization. """ pooled_features = [] # Iterate over individual batches/images contained within 'rois' for img_idx, per_image_roi in enumerate(rois): # Select relevant slice(s) from full set of feature maps based on current batch index selected_feature_map = feature_maps[[img_idx]] # Perform alignment operation ensuring correct mapping between original coordinates & grid cells post-extraction aligned_boxes = convert_to_normalized_coordinates(per_image_roi[:, 1:], h=feature_maps.shape[-2], w=feature_maps.shape[-1]) # Apply ROI Align function directly available within torchvision library result = roi_align(selected_feature_map, boxes=[aligned_boxes], output_size=self.output_size, spatial_scale=1., sampling_ratio=self.sampling_ratio) pooled_features.append(result.flatten(start_dim=1)) return torch.cat(pooled_features) def convert_to_normalized_coordinates(boxes, h, w): """Convert absolute coordinate values into normalized form suitable for use with ROI align.""" new_boxes = boxes.clone() new_boxes[..., :2] /= w new_boxes[..., 2:] /= h return new_boxes ``` This example demonstrates basic functionality required when implementing custom ROI heads suited for working with 3D objects represented via structured grids derived from point clouds or stereo vision systems. Note that actual deployment scenarios may require additional considerations depending upon specific application requirements and hardware constraints present at runtime.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值