论文速读系列二:YOLO3D、PIXOR、HDNET、Voxel-FPN、Fast Point RCNN


如有错误,恳请指出。


参考网上资料,对一些经典论文进行快速思路整理

1. YOLO3D

paper:《YOLO3D: End-to-end real-time 3D OrientedObject Bounding Box Detection from LiDARPoint Cloud》

思路:
1)将点云进行网格化投影到bev视图上,构建最大高度特征图与密度特征图(参考MV3D),所有原始特征channels=2
2)与2d检测(yolov5)使用聚类设计先验框的尺寸不同,yolo3d这里使用每个类别标注框的平均值作为3d先验框的尺寸
3)使用步骤1构建的特征图输入到yolov2的网络结构中,比如原始特征图为608x608x2,这里输出的特征图为38x38x3x11进行anchor-based的feature map训练。这里解释一下,38x38表示特征图尺寸,3表示kitti数据集的3个类别也就是3中anchor尺寸,11表示一个3d框的xyzhwlθ信息+3个类别概率+1个置信度预测

总结:
yolo3d的思想非常简单,结构和特征提取方面也没有啥改进,只是相较于3d多了高度信息z、高度尺寸h、以及方向θ的预测。损失计算上,回归全部统一采用均方误差(mean squared error)
在这里插入图片描述

原文:“The total loss shown in Eq. (9) is calculated as the scaled summation of the following terms: the mean squared error over the 3D coordinates and dimensions (x, y, z, w, l, h), the mean squared error over the angle, the confidence score, and the cross entropy loss over the object classes.”


2. PIXOR

paper:《PIXOR: Real-time 3D Object Detection from Point Clouds》
结构图:
在这里插入图片描述

PIXOR是一个One-Stage、anchor-free的网络结构。但只在2d俯视图上预测,并不是完全的3d检测,用xywlθ对框进行参数表述。

思路:
1)在构建特征图时不再考虑高度(height)与密度(density)特征,只考虑occupancy以及intensity特征。对点云场景进行grid划分,每个gird计算一个intensity feature,以及切片获取每层的occupancy feature,考虑到上下边界会有越界点,所有再增加2个channels。所以,在特征图尺度为LxW上,2个额外channels+1个intensity特征+H/dH个occupancy特征,channels大小为(H/dH + 3)。
2)俯视图下构建的特征图通过2d CNN来进行特征提取,随后输出两个分支,其中分类分支输出channels=1(后跟softmax函数),应该是只考虑车这个单一类别;回归分支输出channels=6(后不跟非线性函数),6个回归参数分别是:cos(θ), sin(θ), dx, dy, w, l。也就是说,这里的方向被分解为两个相关值进行预测(Complex-YOLO也使用类似的方法,其用复数IM与Re表示)。

扫描二维码关注公众号,回复: 14615981 查看本文章

总结:
类别上用focal loss,回归上使用smooth-l1损失,损失比较普通。比较新的点就是将方向拆分成两个变量进行表示,简化损失直接进行回归,转为为:θ=arctan(sin(θ),cos(θ))。


3. HDNET(PIXOR++)

paper:《HDNET: Exploiting HD Maps for 3D ObjectDetection》
结构图:
在这里插入图片描述

HDNET同样是一个One-Stage、anchor-free网络结构,可以视为是在PIXOR基础上使用高清地图辅助点云检测所进行的改进,这就意味着其同样是一个不完整的3d检测架构。不过,HDNET首次考虑到道路坡度影响。

特征构建过程,考虑道路坡度影响以及道路区域先验信息:
在这里插入图片描述

思路:
1)为了避免点云因为道路坡度的影响,这里利用从高清地图中获得对应点位置的zi,利用点云高度位置z与高清地图高度位置zi的绝对值|z - zi|作为新的点云高度位置。随后过程与PIXOR一致,构建成俯视图上channels大小为(H/dH + 3)的特征图。
2)假设只考虑道路上的信息,这里可以利用高清地图提供的道路区域作为先验知识,将其二值化(binary channel)构建出一个新的道路掩码特征图(semantic road prior),将其与上述得到的特征图进行concat作为信息channels补充。
3)预测信息为:(p, cos(2θ), sin(2θ), dx, dy, log w, log l),其中通过周期为π的(cos(2θ), sin(2θ))来参数化对象方向,所以这里是不分前向后向,同时也不分高度信息与高度定位,作了极大的任务简化处理,不算是一个完整的3d检测任务。其余的操作类似PIXOR。

总结:
在PIXOR基础上利用了高清地图的先验信息进行额外处理(比如消除坡度影响,利用道路区域的二值掩码特征)比较新颖。在损失上提到了一个细节,训练之前会将回归目标归一化为具有零均值和单位方差。如果不存在高精度地图的情况,那么就先栅格化点云,然后用U-net在俯视图中做road segmentation和ground estimation(也就是在线估计高精度地图)

但是HDNET既不区分前向后向,也不预测分尺寸高度与位置高度,作了极大的任务简化处理,不算是一个完整的3d检测任务。只是一个俯视图上带方向的2d检测(PIXOR、Complex-YOLO、HDNET均是)。


4. Voxel-FPN

paper:《Voxel-FPN: multi-scale voxel feature aggregationin 3D object detection from point clouds》
结构图:
在这里插入图片描述

Voxel-FPN是一个One-Stage、anchor-based网络结构(在消融实验中隐约提及到对车辆设计的先验框尺寸,但也没有具体介绍)。论文写得不清不楚,很多细节都没有展示出来,detect head结构也没有介绍,文章写的是voxel-based的方法,但实际提出来的流程图上却又是pillars-based的操作(如下图),比较乱。里面的SSD也不知道具体是指什么操作。
在这里插入图片描述

思路:(我自己的一个臆测流程)
1)采用VoxelNet的方式设置S=0.16、2S、4S等不同voxel尺寸对原始3d点云进行体素化,每个voxel采用VFE层对随机采样的K个点进行point-wise特征聚合,获得一个3d的特征图。
2)之后的才做可能是对z轴上的特征进行拼接转化为2d。如果这样做的话其实可以看成是类似pointpillars的方法,将点云信息构建成是一个俯视图上的2维特征图,pillars也可以进行多尺度的构建。
3)获得了不同尺寸上的2d特征图,之后进行经过一个类似PAN的双塔结构,先下采样再与上采样回去的特征进行element-wise addition操作,获得多尺度的特征图
4)对每个尺度的特征图分别接一个detect head,进行分类与回归预测。这里的回归方式与SECOND完全一致,包含3个损失部分:class score loss(类别分类损失)、regression loss(回归预测损失)、direction loss(框二值方向分类损失)

总结:
消融实验显示S+2S的两尺度融合效果最好,表示不是所有的特征都应该被组合,如果可以搜索一个特征组合策略比较重要。但从结果来看,结合FPN的效果是有提升的(尽管不知道为何单独SSD效果要比RPN-FPN效果好)。对于多尺度融合上,3d特征与2d特征一样均可以实现,不过3d需要进行稀疏卷积等操作可能需要较大的计算量,如何在计算量不太大增加性能还可以继续研究,3d特征的稀疏FPN结构可以尝试,不知道会不会比2d要好。

paper中提别提到:“It inspires us that feature representation does not hold the principle “the more, the better” and most important features should be carefully selected to obtain the best performance, remaining a skillful task.” 意思就是特征表示并不遵循“越多越好”的原则,应该仔细选择最重要的特征,以获得最佳性能。那么,如何选择最重要的特征,自适应权重分配等注意力机制问题就可以派上了用场。


5. Fast Point RCNN

paper:《Fast Point R-CNN》(2019ICCV)
结构图:
在这里插入图片描述

Fast Point RCNN是一个Two-stage,anchor-based网络结构,同时使用2d与3d卷积提取特征。随后利用候选框投影获得原始点云信息与卷积提取的信息,利用这两种特征进行后续融合编码对候选框进行修正。其中融合部分的网络如下图所示。
在这里插入图片描述

思路:
1)与VoxelNet类似将点云空间栅格化,不过VoxelNet中每个voxel的点采用35个,Fast Point RCNN这里说明采用6个点并使用8通道的MLP层足够表示特征。随后利用3d卷积将z轴尺度下采样为1,随机可以进行2d卷积操作增大感受野。随后上采样回去,进行多尺度特征融合,获得最后的特征图。
2)利用VoxelRPN获取的特征图上生成候选框(anchor-based),投影到bev视图中。一方面获取bev候选框上的所有点信息(Nx4);另一方面需要找到Box中的点在VoxelRPN生成的feature map中的对应位置,用插值获取VoxelRPN上相应网格的特征信息(NxC)。在进行下一步处理时,需要对原始点云特征进行规范化,以保证平移和旋转不变性(没有具体说明,可能是利用相对位置信息来进行规范化)。
3)后续提出RefinerNet对原始点云数据特征与VoxelRPN提取特征进行融合,具体操作见上图。利用最后聚合出来的vector进行候选框修正。
4)一阶段rpn损失组成部分与VoxelNet、SECOND等anchor-based算法类似;二阶段head部分回归的是候选框中心到8个角的偏移,有点不一样,具体细节需要看代码实现了。
在这里插入图片描述

总结:
前期利用3d+2d卷积提取到体素化点云的特征从而生成候选框思路普普通通,后续利用候选框投影回去bev视图获取相关区域的点云原始特征来补充rpn上的特征,对来自rpn区域的卷积特征以及bev后续区域上的原始点云特征进行注意力融合(处理过程类似PointNet),结果上说明了这种3d卷积+2d卷积是可行的,可以用来改善PointPillars的pillar-based特征处理方法。

此外,Fast Point RCNN的处理速度的15FPS,也不算很快…


猜你喜欢

转载自blog.csdn.net/weixin_44751294/article/details/128227855