PIXOR实时3D目标检测

PIXOR实时3D目标检测

论文题目:PIXOR: Real-time 3D Object Detection from Point Clouds
论文年份:2018年
论文来源:
PIXOR: Real-time 3D Object Detection from Point Clouds

论文代码:
下面是pytorch版本:
philip-huang/PIXOR

论文提出:作者考虑了对点云数据直接进行处理,对点云数据体素化,对点云数据直接进行3D卷积后,认为这些操作需要更多的是对原始数据的预处理,并且3D卷积带来的计算量也是非常的大,并且由于点云数据的稀疏特点,并不是太适合直接使用。但是,经过考虑后,对于将点云数据映射到BEV(Bird`s Eye View)鸟瞰图上,对于数据的信息损失不多,而且还保留的目标的高度信息,综上考虑作者还是决定使用BEV图进行3D目标检测,并且给出检测目标的边界框(bounding-box)。

相关的3D目标检测综述:
基于卷积神经网络的目标检测
1、Imagenet classifica- tion with deep convolutional neural networks
2、Faster r-cnn: Towards real- time object detection with region
proposal networks

单级目标检测(single-stage object detection) 1、You only look once: Unified,real-time object detection.
2、Ssd:Single shot multibox detector
3、Densebox: Unifying land- mark localization with end to end object detection
4、Focal loss for dense object detection
基于点云数据的目标检测
1、Voting for voting in online point cloud objectdetection
2、Learning spatiotemporal features with 3d convolutional networks.
3、PointNet: Deep learning on point sets for 3D classification and segmentation
如果对PointnNet感兴趣,可以看我的另一个文章
你可skr小机灵鬼:PointNet论文及代码(一)

4、Multi-view 3d object de- tection network for autonomous
driving.

PIXOR网络结构
1、为什么叫做PIXOR
ORiented 3D object de- tection from PIXel-wise neural network predictions,这是论文中作者对该网络的简称,全称是:基于像素级神经网络预测的三维目标识别。
2、网络输入(Input Representation)
作者对网络的输入,做过一些考虑,比如,voxel处理以及直接对raw point cloud使用3D卷积,前者在3D目标检测中经常的使用,对于后者,作者认为,一方面,3维坐标系维度要比2D的图片数据更高,而且相比较而言计算量会更大,这对网络的计算、速度以及准确度都会产生影响,因此作者决定使用BEV进行目标检测。
3、Network Architecture
PIXOR网络是全卷积的网络,并且该网络没有使用Faster RCNN中提出的region proposal network,Faster r-cnn: Towards real- time object detection with region proposal networks(Faster RCNN论文链接),PIXOR网络的输出则是:网络在单个阶段输出像素级的预测,每个预测对应一个3D对象估计。
Anchors的发明让很多网络模型对于目标的检测精度得到很大的提升,但是,在这个网络模型中并没有使用到目标的多个Anchors的定义,反而则是,直接编码而不使用预定义的对象锚,并且也有很好的效果和计算速度。网络模型的整体结果如下
PIXOR网络结构

PIXOR网络模型结构
4、网络的两个子网络(backbone+header)
1、backbone主干网络(下图中橙色背景部分)(特征提取)
特征提取网络
正如卷积网络计算一样,该部分的主要作用就是用来对输入的数据进行卷积计算,然后产生相应的特征矩阵,Faster RCNN网络的设计会对产生的feature输入到RPN网络进行计算,最终得到相关的分类和预测结果等信息,但是,该网络的对于目标的检测任务交给的是header自网络,而不是RPN网络。
2、header网络(目标预测)
header网络(分类和预测)
5、网络细节
5.1 Backbone子网络
首先考虑的问题就是,卷积的计算会让物体变得更加“模糊”,卷积网络更加使用到图像中,这是由于图像的一个个的像素组成,但是当卷积遇到了点云数据,就会出现一个问题,由于点云中的物体很小,当使用0.1m的离散化后,一个典型的车辆的大小会占有18*40个像素,并且文中提到,当经过16轮的down-sampling后,仅仅就只有覆盖到了3个像素,在这个过程中丢失了大量的信息。
文中提到的方法,第一种是考虑使用更少的池化层,但是这样会导致最终得到的特征图的每个像素的接受域减少,从而限制了表达能力。另一种方法就是考虑,扩大卷积,但是这样会出现像论文(Deconvolution and checker- board artifacts)中提到的重叠区域出现的问题。
PIXOR网络的解决办法则是:网络依然采用的是16轮的向下采样,但是做了两个改变

1、在较低的层次上添加更多的通道数较少的层,以提取更多的细节信息。
2、采用了一个类似于Feature Pyramid Networks for Object Detection
​(特征金字塔)的自顶向下的分支,它将高分辨率的feature map与低分辨率的feature map结合起来,从而对最终的feature representation进行上采样。

正如backbone网络结构图中所展示的,骨干网络一共有5个部分

第一个:包括两个卷积层,参数为:channle-32,stride-1
第二个到第五个都是由残差层组成。
残差层的网络具体参数:
为了对特征图进行向下采样,每个残差块的第一次卷积的步长为2。总的来说,下采样系数是16。为了向上采样特征图,添加了一个自顶向下的路径,该路径每次向上采样2个特征图。然后通过像素求和将其与相应分辨率的自底向上的特征映射相结合。使用了两个上采样层,得到了最终的特征图,其中包含了相对于输入的4个下采样因子。

5.2 Header子网络
header子网络担任的任务则是,对目标进行识别和对目标进行定位。因此,header子网络设计的简单,并且高效。
header子网络左下方的输出,是一个1 channel的输出分支,用来进行分类,使用的激活函数是sigmod激活函数。
header子网络右下方的输出,是一个6 通道的特征图,用来进行回归任务。
对于方向bounding box的定义
作者将每个对象作为一个参数化的边界框b{θ,xc、yc、w、l},与每个元素对应的航向角(范围内(−π,π)),对象的中心位置,和对象的大小。其中xc和yc是目标相对在2D图片上的中心位置(目标的中心位置,通过中心位置就可以判断为题的准确大小:这是因为目标的宽(w)和长(l)给出了,因此知道目标的中心位置就可以对目标进行定位和检测)。目标的检测的bounding-box给出的示例图,如下
方向bounding-box

oriented bounding box相关参数定义
参数解释
图中红色的点:代表的是一个正样本的位置,并且,我们可以很简单的看到这个正样本距离目标的真正的中心位置还是有一定的差距,因此作者定义的学习目标为:**{cos(θ),sin(θ), log(dx), log(dy), log(w), log(l)}
θ:需要进行解码使用,解码为:atan2(sin(θ),cos(θ))
坐标(dx,dy):表示的是正样本的点距离真正的目标的中心位置的偏差(offset)
(w,l):代表目标物体的size大小

6、网络训练等

  • 损失函数:使用的是多任务损失(参考faster rcnn中的多任务损失),进行计算。

分类任务使用的是 sofrmax多元分类。回归任务使用 smooth损失,相比较L1损失smooth更加的平滑,并且减小梯度消失。PIXOR对于所有的位置都使用到了分类损失,但是针对于正样本的正位置使用回归损失。

  • 损失函数定义:
    损失函数定义
  • 从损失函数中可以看到,分类任务使用的是交叉熵损失,用来判断两者之间的差距,从而进行优化;回归任务使用的是smooth L1损失,从该损失函数就可以看出,该损失函数要比L1损失函数更加平滑,并且从下图中的对比也可以看出
    L1,L2与Smooth L1损失之间的函数图像
  • 使用Focal Loss稳定训练过程
    7、实验部分

1、benchmark:KITTI官方数据集
2、PIXOR也进行了消融实验(ablation):这里介绍一下消融实验:简单的理解为,将网络中的部分去掉再次进行训练,查看结果如何(更加具体可以询问度娘)。本文在三个方面进行了消融实验:优化,网络架构,速度,这三个方面。
3、将PIXOR应用到一个新的大规模自动驾驶车辆检测数据集中,验证了其泛化能力。 实验细节部分如下图:
实验细节
网络性能评价指标:
AP(Average Precision)平均精度:使用0.7的IoU(Intersection-Over-Union)作为评价指标。
指标的变化曲线图,反映在,(论文引用:The Pascal Visual Object Classes (VOC) Challenge),召回率的变化曲线图中,下图所示
召回率曲线变化图

8、消融实验部分

消融实验的设置:
val集合:其他网络训练的方法的性能存放集合。
val-dev集合:数据不和train以及val数据集数据重复的部分。该集合主要 存放的是消融实验的实验结果。
评价指标:0.7 IoU以及0.5-0.95的IoU

消融实验涉及的部分主要有一下几点:

  • Optimization(优化)
    • 分类损失
      可以看到,在分类损失使用的是focal的损失时,网络的平均精度普遍高于分类损失使用的是交叉熵损失。
      分类损失和回归损失更改后模型的性能
    • 回归损失

在回归损失中,默认的选择是使用smooth L1损失,但是,文中提出了一种新的损失–decoding
loss,输出目标首先被解码成有方向的盒,然后根据四个盒角的(x, y)坐标直接根据ground-
truth计算平滑的L1损耗。更改为decoding loss后模型的性能,参考上图。

  • 取样策略&数据增强

当对稠密的目标进行训练的时候,一个问题出现了,那就是如何对正样本和负样本进行定义。考虑到之前得一些方法,是基于IoU以及proposal得,但是PIXOR是proposal-free的方法。因此,作者提出了一个更加直接的方法,来对方法中的正样本和负样本进行定义,即,ground-truth内部的点是正样本,外部的全部认为是负样本。这确实够直接的,但是这样做的优点也是存在,提升计算速度,并且准确度也是比较合适的。一个问题的解决,随之出现另一个问题,该方法虽然方便直接,但是,对于靠近目标边界的点就会产生很大的回归目标方差,这个好解决,直接忽略这些点就可以了。
再具体一点,文中的取样策略,对ground-truth boxes进行缩放,文中分别选择0.3和1.2进行缩放,并且选择性忽略位于这两个缩放范围内的点。性能图,如下,可以看到处理后的结果还是有提升的,但是提升并不是很大。
数据增强处理后的模型性能图

  • Network Architecture(网络结构)
    • Backbone部分
      该部分就是对PIXOR中的骨干网络的模型进行更换,然后对比不同的实验性能。更换的模型有:vgg16-half、resnet-50、pvanet 以及resnet-lidar,对比实验结果如下图。
      更换backbone后性能对比图
    • Header部分
      header部分对网络的更改在于权重共享部分,分为三类:完全共享权重、部分共享以及不共享,如下图
      fully-shared weights、partially-shared、non-sharing
      更换后网络模型的性能指标如下:
      性能指标对比图
    • Speed(速度)
      pass
    • Failure Mode
      在下图中展示了PIXOR的一些检测结果,并发现了一些故障模式。一般来说,如果没有观测到激光雷达点,PIXOR就会失败。在更长的范围内,我们几乎没有对象的证据,因此对象定位变得不准确,导致在更高的借据阈值下出现错误的借据。(来自原文的翻译)
      Failure mode
      9、大规模场景下的实验
      直接总结,文中提到在ATG4D,下可以运行10fps的速度。
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 常用的 3D 目标检测模型有: 1. VoxelNet:基于卷积神经网络的模型,可以进行立体感知和目标检测。 2. PointPillars:利用点云数据进行立体感知和目标检测的模型。 3. AVOD(Average Viewpoint Feature Aggregation for 3D Object Detection):基于多视角特征聚合的 3D 目标检测模型。 4. F-PointNet:使用自然场景点云数据进行 3D 目标检测的模型。 5. SECOND(Squeeze-and-Excitation Contextual Feature Learning for Point Cloud Based 3D Object Detection):使用压缩和激活特征学习的 3D 目标检测模型。 ### 回答2: 3D目标检测技术是基于深度学习的一种计算机视觉技术,用于从3D场景中定位和识别物体。以下是一些被广泛使用且性能良好的3D目标检测模型: 1. PointRCNN:点云目标检测模型,利用点云数据实现目标检测和定位,能够处理稀疏的点云数据。 2. VoteNet:基于点云的3D目标检测模型,结合了语义分割和投票机制,能够更好地处理遮挡和小目标。 3. PIXOR:使用了一个二维滑动窗口和一个二维卷积神经网络,能够将点云数据映射到二维网格中进行目标检测。 4. SECOND:兼容点云和图像数据,将3D目标检测问题转化为在两个不同的视角检测目标。 5. PointPillars:将点云数据转化为Bird's Eye View,并利用3D卷积神经网络进行目标检测。 6. PV-RCNN:结合了点云和视觉特征,利用点云和RGB图像的信息进行目标检测,相较于单独使用点云或图像,能够提高检测性能。 这些模型在各自的数据集上表现出色,能够实现高效准确的3D目标检测。然而,每个模型都有其适应的场景和数据类型,因此在选择合适的3D目标检测模型时需要考虑数据特点和需求。 ### 回答3: 在3D目标检测领域,有一些常用而且在实践中证明有效的模型。 1. Frustum PointNets:这是一种基于深度学习的3D目标检测模型,能够对点云数据进行处理并预测物体的边框、类别和姿态等信息。它结合了2D图像和点云信息,通过提取点云中的具体目标,进一步进行目标检测和姿态估计。 2. PIXOR:这是一种基于点云的3D目标检测模型,将点云数据转化为稀疏性图像,然后使用卷积神经网络(CNN)进行目标检测。它能够对比较密集的点云进行有效的检测,并能够对多目标进行处理。 3. MV3D:这是一种多视角的3D目标检测模型,结合了图像和点云信息,并使用多视角投影技术将二者统一。它能够通过多个视角的信息来提高目标检测的精度和鲁棒性。 4. F-PointNet:这是一种光流注意力机制的3D目标检测模型,通过引入光流信息来提高点云特征的表示能力。它能够更好地处理运动目标,并能够在场景中检测到难以分类的物体。 5. VoxelNet:这是一种基于3D体素表示的目标检测模型,通过将点云数据转化为3D体素网格,然后使用3D卷积进行目标检测。它能够对密集和稀疏的点云数据进行有效的处理,并具有较好的鲁棒性和准确性。 这些模型在3D目标检测领域中被广泛应用,并取得了较好的效果。随着技术的不断发展,相信还会出现更多优秀的模型来进一步提高3D目标检测的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值