三维目标检测_rgbd 三维目标检测 - CSDN
精华内容
参与话题
  • 转载:https://blog.csdn.net/wqwqqwqw1231/article/details/90693612
    展开全文
  • 三维目标检测算法总结

    千次阅读 2019-08-21 15:21:35
    仅仅实现图像层次的识别是不够的,这在无人驾驶系统、增强现实技术等领域表现的尤为突出,计算机视觉的更高层次必然是准确的获得物体在三维空间中的形状、位置、姿态,通过三维重建技术实现物体在三维空间的检测...

    文中有参考微信文章,侵删!!

    经典的计算机视觉问题是通过数学模型或者统计学习识别图像中的物体、场景,继而实现视频时序序列上的运动识别、物体轨迹追踪、行为识别等等。然而,由于图像是三维空间在光学系统的投影,仅仅实现图像层次的识别是不够的,这在无人驾驶系统、增强现实技术等领域表现的尤为突出,计算机视觉的更高层次必然是准确的获得物体在三维空间中的形状、位置、姿态,通过三维重建技术实现物体在三维空间的检测、识别、追踪以及交互。近年来,借助于二维图像层面的目标检测和识别的性能提升,针对如何恢复三维空间中物体的形态和空间位置,研究者们提出了很多有效的方法和策略。
    相比2D目标检测问题,进行物体在3D空间的位置估计对于实际应用场景更有意义。通过估计实际位置,自主驾驶的车辆和机器人可以准确的预判和规划自己的行为和路径,避免碰撞和违规。同时,3D目标检测问题也面临更多的挑战,主要的区别在于不仅要找到物体在图像中出现的位置,还需要反投影到实际3D空间中,需要有绝对的尺寸估计。对于视觉3D目标估计,采用扩展图像目标检测算法的深度学习模型对于3D检测具有重要帮助,但是加入空间几何关系的约束是非常必要的前提,不仅可以提升检测精度,也可以去除可能的无意义的错检。而如何结合稠密匹配算法以及3D重建中的集束调整技术,对于进一步提升3D目标检测精度必然具有重要作用。
    三维目标检测在自主驾驶汽车视觉感知系统中占有重要地位。现代自动驾驶汽车通常配备多个传感器,如激光雷达和摄像头。激光扫描器的优点是深度信息准确,而相机可以保存更详细的语义信息。通过图像、雷达、深度相机等信号可以检测和识别三维场景信息,从而帮助计算机确定自身与周围物体的位置关系,做出正确的运动交互和路径规划。从相机得到图像信息,需要正确计算图像点与三维点的对应关系,而雷达和深度相机可以直接得到点云或者点的空间位置。可以将三维目标检测数据按照输入数据分为图像数据和点云数据,按照传感器类型分为单目相机、双目相机、多目相机、雷达扫描、深度相机和红外相机。一般而言,由多目相机组成的立体视觉系统或者激光雷达可以实现更准确的3D推理信息,但单目RGB相机设备更方便,更便宜。使用单目摄像头进行三维物体检测是经济型自动驾驶系统合理选择。
    三维目标检测算法按照数据划分为三个类别,即单目图像,多视图图像(视图或立体数据),点云。基于单视图的方法,例如,[1],使用单目摄像头完成三维目标检测。基于多视图的方法,例如,[2],可以使用从不同视图的图像中得到的视差来获得深度图。基于点云的方法,例如[3,4,5,6],从点云获取目标信息,是比较直观和准确的三维目标检测方法,由于点的深度数据可以直接测量,三维检测问题本质上是三维点的划分问题。相比于使用雷达系统或者深度相机,使用摄像机系统成本更低,但是需要进行图像点的反投影,计算点在空间中的位置。除此之外,相比于点云数据,图像恢复深度可以适用于室外大尺度场景,这是普通深度相机所不能达到的。
    1、单目图像
    由射影几何学,仅仅依赖一副图像是无法准确恢复物体的三维位置,即使能得到相对位置信息,也无法获得真实尺寸。因此,正确检测目标的3D位置最少需要多个相机或者运动相机组成的立体视觉系统,或者由深度相机、雷达等传感器得到的3D点云数据。
    对于特定类型目标,基于机器学习的方法使得通过单目相机进行物体3D检测成为可能。原因是特定类型目标往往具有很强的先验信息,因此依靠给真实物体做标注,联合学习物体类别和物体姿态可以大概估计出物体3D尺寸。不过,为了更好的估计物体的3D位置,更好的方法是结合学习的方法充分融合射影几何知识,来计算物体在真实世界中的尺度和位置。
    A. Mousavian在CVPR2017提出了一种结合深度神经网络回归学习和几何约束的3D目标(主要针对车辆)检测和3维位置估计的算法[7]。论文中对车辆的三维姿态和位置进行建模,需要知道车辆在场景中的位置和车辆相对于摄像机的角度,以及车辆的尺寸大小。回归计算方位角和物体尺寸,利用投影公式,计算中心点向量。
    GS3D[1]是基于引导和表面的三维车辆检测算法,由香港中文大学Buyu Li等完成,其思想为:首先预测二维检测框和观测角度;然后基于场景先验,生成目标的粗糙边界框,再将边界框重投影到图像平面,计算表面特征;最后通过子网络,由重投影特征进行分类学习,得到精细化的三维检测框。
    通过2D探测器有效地确定预测对象的粗糙边界框。虽然粗糙,但可以接受。其精确度可以指导确定空间位置,尺寸(高度,宽度,长度)和物体的方向等。提取不同可见表面的特征,然后加以合并,因此结构信息被用来区分不同的三维边界框。将传统回归的形式重新表述为分类的形式,并为其设计了质量敏感的损失函数。主要贡献在于,基于可靠的二维检测结果,GS3D是一种纯单目摄像头的方法。可以有效为物体获取粗糙边界框。粗糙边界框提供了对象的位置大小和方向的可靠近似,并作为进一步优化的指导;利用投影在二维图像上的三维框的可见表面的结构信息,然后利用提取的特征解决模糊问题;设计比较之后发现基于质量敏感的损失的离散分类的效果要更好。
    基于YOLO的三维目标检测:YOLO-6D[8]是一种使用一张2D图像来预测物体6D姿态的方法。但是,并不是直接预测6D姿态,而是通过预测3D编辑框在二维图像上的1个中心点和8个角点,然后在有九个点通过PNP算法计算得到6D姿态。把预测6D姿态问题转为了预测9个坐标点的问题。而在2D的目标检测中,我们实际上也是需要预测坐标点xy的。那么,我们能不能把目标检测框架拿来用呢?很显然是可以的。所以这篇文章就提出基于yolo的6D姿态估计框架。
    2、双(多)视图图像
    对于双目立体视觉,进行合理的双目匹配,通过相机之间的相对位置计算,可以得到比单目视觉更强的空间约束关系,因此结合已有的物体先验知识,可能得到比单目相机更准确的检测结果。
    基于3DOP的3D目标检测[9]采用类似于Fast R-CNN的二步检测算法。对于具有2幅成对图像的双目立体视觉图像。首先,采用Yamaguchi在ECCV2014年发表的方法[10]计算每个点的深度图像,由此生成点云数据,后续的处理是基于点云做为处理和输入数据。然后,采用Struct-SVM优化的方法选择3D检测的候选3D框y。最后,通过R-CNN方式,对每个候选框进行分类评估和位置回归。在此处考虑像素的深度数据,为了处理深度数据,可以直接在输入图像中增加深度数据图像,也可以采用双分支架构的判别和回归网络。但是这种双分支训练时需要更大的显存。
    基于立体视R-CNN的3D目标检测算法是扩展 Faster-RCNN网络框架到双目立体视觉进行3D目标检测的方法[11]。方法的关键步骤是对左右图像的自动对齐学习,以及通过稠密匹配优化最终的检测结果。由左右视图图像经过2个相同的Faster-RCNN中的RPN结构计算左右视图中匹配的推送(proposals)矩形框stereo-RPN。RPN主干网络采用Resnet-101或者FPN。与Faster-RCNN中的RPN相比,stereo-RPN同时计算了可能的2D框,并且对左右视图的2D框进行了配对(association)。
    3、点云
    三维点云数据是由无序的数据点构成一个集合来表示。在使用图像识别任务的深度学习模型处理点云数据之前,需要对点云数据进行一些处理。目前采用的方式主要有两种:一种是将点云数据投影到二维平面。此种方式不直接处理三维的点云数据,而是先将点云投影到某些特定视角再处理,如前视视角和鸟瞰视角。同时,也可以融合使用来自相机的图像信息。通过将这些不同视角的数据相结合,来实现点云数据的认知任务。比较典型的算法有MV3D和AVOD。一种是将点云数据划分到有空间依赖关系的voxel。此种方式通过分割三维空间,引入空间依赖关系到点云数据中,再使用3D卷积等方式来进行处理。这种方法的精度依赖于三维空间的分割细腻度,而且3D卷积的运算复杂度也较高。不同于以上两种方法对点云数据先预处理再使用的方式,PointNet是直接在点云数据上应用深度学习模型的方法。
    PointNet系列论文首先提出了一种新型的处理点云数据的深度学习模型,并验证了它能够用于点云数据的多种认知任务,如分类、语义分割和目标识别。PointNet的关键流程为:输入为一帧的全部点云数据的集合,表示为一个n×3的张量,其中n代表点云数量,3对应xyz坐标;输入数据先通过和一个T-Net学习到的转换矩阵相乘来对齐,保证了模型的对特定空间转换的不变性;通过多次mlp对各点云数据进行特征提取后,再用一个T-Net对特征进行对齐;在特征的各个维度上执行max-pooling操作来得到最终的全局特征;对分类任务,将全局特征通过mlp来预测最后的分类分数;对分割任务,将全局特征和之前学习到的各点云的局部特征进行串联,再通过mlp得到每个数据点的分类结果。
    受到CNN的启发,作者提出了PointNet++,它能够在不同尺度提取局部特征,通过多层网络结构得到深层特征。PointNet++关键部分包括:采样层,组合层和特征提取层。上述各层构成了PointNet++的基础处理模块。如果将多个这样的处理模块级联组合起来,PointNet++就能像CNN一样从浅层特征得到深层语义特征。对于分割任务的网络,还需要将下采样后的特征进行上采样,使得原始点云中的每个点都有对应的特征。这个上采样的过程通过最近的k个临近点进行插值计算得到。
    PointNet和PointNet++主要用于点云数据的分类和分割问题,Frustum-PointNet(F-PointNet)[12]将PointNet的应用拓展到了3D目标检测上。目前单纯基于Lidar数据的3D目标检测算法通常对小目标检测效果不佳,为了处理这个问题,F-PointNet提出了结合基于图像的2D检测算法来定位目标,再用其对应的点云数据视锥进行bbox回归的方法来实现3D目标检测。从KITTI数据集的检测结果来看,得益于精确的基于图像的2D检测模型,F-PointNet对小目标的检测效果确实处于领先地位。F-PointNet由2D目标检测模型和3D分割和回归网络构成,并非为端到端的模型。可以考虑将其组合成一个端到端的网络。
    基于点云数据,PointRCNN[6]实现了纯粹使用点云数据完成三维目标检测任务。PointRCNN是香港中文大学发布的3D目标检测框架,整个框架包括两个阶段:第一阶段使用自下而上的3D提案产生,第二阶段用于在规范坐标中修改提案获得最终的检测结果。Stage-1阶段子网络不是从RGB图像或者将点云投影到鸟类视图或者体素中,而是通过将整个场景的点云分割为前景点和背景点,以自下而上的方式直接从点云生成少量高质量的3D提案。Stage-2阶段子网络将每个提案的池化的点转换为规范坐标,更好地学习局部空间特征,这个过程与Stage-1中学习每个点的全局语义特征相结合,用于Box优化和置信度预测。对KITTI数据集的3D检测基准的广泛实验表明,该架构优于只是用点云作为输入具有显著边缘的最先进方法。
    用于点云的目标检测方法,精度较高的还有港中文&商汤科技发表的Part-A2 Net[14],而海康威视的Voxel-FPN[13]单论mAP只能说勉强接近SOTA水平,但论文mAP与FPS的Trade-off,50 FPS的速度,还是强压其他算法的。

    参考文献
    [1] Li B , Ouyang W , Sheng L , et al. GS3D: An Efficient 3D Object Detection Framework for Autonomous Driving[J]. 2019.
    [2] X. Chen, K. Kundu, Y. Zhu, H. Ma, S. Fidler, and R. Urtasun. 3d object proposals using stereo imagery for accurate object class detection. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017.
    [3] C. R. Qi, W. Liu, C. Wu, H. Su, and L. J. Guibas. Frustum pointnets for 3d object detection from rgb-d data. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2018.
    [4] Y. Zhou and O. Tuzel. Voxelnet: End-to-end learning for point cloud based 3d object detection. In The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2018.
    [5] J. Ku, M. Mozifian, J. Lee, A. Harakeh, and S. Waslander. Joint 3d proposal generation and object detection from view aggregation. IROS, 2018.
    [6] Shi S , Wang X , Li H . PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud[J]. In IEEE CVPR, 2019.
    [7]A. Mousavian, D. Anguelov, J. Flynn, J. Kosecka, “3d bounding box estimation
    using deep learning and geometry”. In CVPR 2017, 5632-5640.
    [8] Tekin B , Sinha S N , Fua P . Real-Time Seamless Single Shot 6D Object Pose Prediction[J]. 2017.
    [9]A. Mousavian, D. Anguelov, J. Flynn, J. Kosecka, “3d bounding box estimation using deep learning and geometry”. In CVPR 2017, 5632-5640.
    [10]K. Yamaguchi, D. McAllester, and R. Urtasun, “Efficient joint segmentation, occlusion labeling, stereo and flow estimation,” in Proc. Eur. Conf. Comput. Vis., 2014, pp. 756–771.
    [11]P. Li, X. Chen, S. Shen. “Stereo R-CNN based 3D Object Detection for Autonomous Driving”. CVPR 2019.
    [12] Qi C R , Liu W , Wu C , et al. Frustum PointNets for 3D Object Detection from RGB-D Data[J]. 2017.
    [13] Wang B , An J , Cao J . Voxel-FPN: multi-scale voxel feature aggregation in 3D object detection from point clouds[J]. 2019.
    [14] Shi S , Wang Z , Wang X , et al. Part-A^2 Net: 3D Part-Aware and Aggregation Neural Network for Object Detection from Poin Cloud[J]. 2019.

    展开全文
  • Frustum PointNets for 3D Object Detection from RGB-D Data (有代码,级联的方法) 目录 Frustum PointNets for 3D Object Detection from RGB-D Data 简要说明 ...问题:通常的三维目标(用...

    Frustum PointNets for 3D Object Detection from RGB-D Data

    (有代码,级联的方法)

    目录

    Frustum PointNets for 3D Object Detection from RGB-D Data

    简要说明

    Contributions(不对应原文)

    具体方案

    实验

    代码学习


     

    简要说明

    • 问题:通常的三维目标(用图像获得,3D体素)检测方法忽略了3D目标的自然状态和3D数据的不变性;
    • 方案:直接在raw点云上进行操作;
    • 进入新的问题:如何高效的在较大的尺度的3D点云空间中定位目标物体;
    • 方法:利用有效、成熟的2D目标检测器结果融合到点云空间中实现3D目标检测;
    • 效果:在选取的区域内直接操作点云:效率较高,但对强遮挡的同类目标效果欠佳;

    Contributions(不对应原文)

    Ø使用2D目标检测结果,生成3维的锥形建议区域实现3D目标检测,省略直接在大范围的空间中检索,也提升了目标的识别准确度;

    Ø从原始点云中直接分割出3D目标的mask和回归3D bounding box

    Ø该方法具有较高的检测精度和较高的执行效率;

    具体方案

    降低搜索区域的方法:1)通过2D目标检测,提取3D的目标锥形点云区域;2)两个变化的PointNet网络模型实现分割和目标检测;分割是实现的实例分割,回归网络来估计目标的三维框的位置;

    由于投影矩阵是已知的,这样就可以从二维图像区域得到三维截锥了;

     

    • 看图说话:

    包含三个模块:1)锥形建议区域;2)3D实例分割;3)3D模态目标估计;

    锥形建议区域

    由于现在的3维的传感器相对于2维图像传感器效果较差,因此选用图像进行目标的识别和二维目标区域定位;已知一个投影矩阵,二维的区域就可以变换为平头锥形的三维区域;该区域内所有的点视为平头锥点云;由于锥形会朝向不同的方向,因此本文将其变换到垂直于图像的平面,对这些椎体进行标准归一化,作者说有助于提升目标的旋转不变性(原因简单:多种目标旋转过来的进行学习,测试过程中能够检测来自多个方向)。

    2维目标检测模型在ImageNet上和MS-COCO上进行了预训练,然后在KITTI 2D 上进行微调;

     

    3维实例分割

    有了2D目标检测区域和锥形的目标区域如何得到目标对应3D点云

    • 虑到目标在3D的自然状态下是自然分离的,使用3维的实例分割得到粗略的目标3D点云;
    • 本文方法一个锥形体只分割出一个点云对象,被完全遮挡的点云视为背景;
    1. 从深度图中直接估计3D目标;3D bounding box;
    2. 考虑到目标在3D的自然状态下是自然分离的,3D点云分割是比图像上的更加容易和更加自然的;基于这种事实,本文使用3D的实例分割;这也就是为什么要使用3维的实例分割。类似于mask-RCNN分割(是不是目标);通过3D实例分割可以得到粗略属于该目标的点云;

     

    使用一种基于PointNet的网络进行实例分割,在得到这些分割的目标点后,我们进一步对其坐标进行归一化,以提高算法的平移不变性。我们下一步在Amodal 3D Box Estimation中进一步计算中心位置;

     

    Amodal 3D Box Estimation:

    分割出的掩模中心坐标可能距离真实比较, 因此,使用轻量级回归PointNetT-Net)来估计整个目标的真实中心,使预测的中心更加准确

    通过T-Net进行基于学习的3D对齐,即使我们根据质心位置对齐了分割的对象点,我们发现掩模坐标框架的原点(图4(c))可能距离模块框还很远。 因此,使用轻量级回归PointNet(T-Net)来估计整个物体的真实中心,然后变换坐标,使预测的中心成为原点图4(d)。

    最后的输出参数(3个位置,2个航向,4个尺度的大小;

    • center (cx, cy, cz)
    • size (h, w, l)*4
    • heading angle (theta)*2

     

    多任务损失:

    依次为:实例分割损失、中心估计损失两个(c1是对于T-Net的,c2box中心回归损失)、航向角预测和回归两个、尺度预测和回归两个,一个角损失(定义的如下);

    引入新的正则化损失(Corner Loss):定义8个角和Ground truth的距离偏差之和;

    带**的P是 翻转的ground truth;

    实验

    分为三个部分:

    1对比其他方法

      数据集:KITTISUN-RGBD

    2Ablation Study

         锥形建议区域旋转归一化、目标点云中心归一化 Corner loss 等组件的影响

    3主观实验结果

         主观结果分析和Open Problem

    1.对比其他方法

    • KITTI的结果

    测试集上的3D的目标检测性能;

    测试集上的鸟瞰图上定位准确度;

    验证集上的结果(左是3D检测,右是鸟瞰图定位)

     

    • 在SUN-RGBD上的结果

    2. In-depth分析验证所提方法(总之有用,否者也不会加进来)

    1. 与三维检测的替代方法相比
    2. 点云归一化的影响
    3. 回归损失公式和角落损失的影响

     

    3.定性实验

    看图6. 为了说明在有遮挡的时候还能呈现出较好的结果;另外,抛出了open的问题:1大小和方向估计不准确;2)一个锥形体有两个同一类的目标(本文是单类别的方法,无法处理)

    代码学习

    请参阅如下博文:

    https://blog.csdn.net/ShuqiaoS/article/details/82754126

    展开全文
  • 目录Part-A2 NetPart-aware Stage将点云体素化主干网络Sparse ConvolutionSubmanifold Sparse ConvolutionUp samplingRPN Head主干网络的输出需要注意的一点Part-aggregation StageRoI-aware point cloud ...

    文章 Part-A2 Net: 3D Part-Aware and Aggregation Neural Network for Object Detection from Point Cloud

    该文章的作者与PointRCNN同一作者,在PointRCNN在KITTI数据集登顶之后,又一篇3D Object Detection的文章。目前该文章还没有放出代码,所以先读一下了解一下其中思想。

    Part-A2 Net

    该文章提出了part-aware和part-aggregation module,并使用这两个模块,组成了Part-A2 Net,完成3D Object Detection任务。我们就按照着论文的写作顺序来记笔记。首先先介绍一下整体的网络框架,如下图:
    在这里插入图片描述

    整个网络分为如下两个模块,part-aware和part-aggregation。可以对比着Faster-RCNN来进行理解,part-aware stage就相当于主干网络和RPN,它的输出就是一个4维度feature map和Proposals。Part-aggregation stage就相当于RoI Pooling和后面的Classifier的这部分。

    Part-aware Stage

    将点云体素化

    就是将整个空间栅格化,然后对每一个格子生成feature。生成这种feature的方式文中引用了VoxelNet,使用全连接层和max pooling对栅格内的点云进行自动地特征提取得到每个栅格的feature。我认为也可以参考PIXOR,手动的设置每个栅格内的feature。

    VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection (CVPR2018)
    PIXOR: Real-time 3D Object Detection from Point Clouds (CVPR2018)

    主干网络

    主干网络类似于U-net的形式,先通过步长为2的一些卷积层将输入降采样至1/8的大小,然后再通过Upsampling上采样至原来的分辨率,这样就得到了Voxel-wise的feature,这作为其中的一部分输出。

    构成主干网络的卷积,下采样和上采样的具体模块与在CV中的CNN的模块均不相同,这一点主要是因为体素化后的输入是一个四维tensor,有长宽高+feature的四个维度,所以使用的是3D的卷积。接下来就具体了解一下这些模块。

    Sparse Convolution

    这个模块主要对应CV中的步长为2的卷积层,起到pooling的作用。可以参考下面这篇引文:
    SECOND: Sparsely Embedded Convolutional Detection

    使用Sparse Convolution的主要目的是因为体素化后对点云的表示方法是稀疏的。可以想象,位于天空中的栅格和位于障碍物后面的格子中是不包含激光点的,这种格子的特征数值为0,导致栅格整体来看是稀疏的。对于稀疏的栅格做普通的卷积,要做大量对数据为0的栅格做乘加操作,而这种乘加操作的结果仍然为0,所以直观的讲,对于空栅格做卷积,只是在进行计算,而不提取任何特征,输出与输入均为0,而且由于体素化后大量栅格是空着的,所以大量的操作是无用的。所以在sparse convolution中,只对不为0的栅格做乘加操作,可以极大的减少操作数量。在这种思想的指导下,sparse convolution重新组合卷积操作中的乘加操作,使用table记录哪些栅格不为空,从而针对性地计算,可以大大减少计算量。这种操作的输出与正常的convolution的输出是一样的,只是对于稀疏的输入来说,可以大大减少运算数量。所以步长为2的sparse convolution也好理解,就是正常convolution的理解方法,无非是计算量减小。

    Submanifold Sparse Convolution

    这个模块主要对应CV中CNN的卷积层,可以参考下面这篇引文:
    3D Semantic Segmentation with Submanifold Sparse Convolutional Networks

    引文中提到,对于上述sparse convolution有个问题是,随着经过sparse convolution的层数增多,栅格稀疏的性质变的越来越弱。这个问题很好理解,就单对一个不为空的格子而言,经过sparse convolution(其实也就是convolution)的操作,它的影响为卷积核的大小。也就是说,对于convolution的输出的某个格子而言,只要其感受野内有一个不为空的格子,这个格子就不为空。这样子,稀疏的性质是以指数的速度减弱的。

    针对上述问题,Submanifold Sparse Convolution做法就是对于输出的某个格子而言,只有其在输入中的那个对应的格子不为空,这个格子才不为空。Submanifold Sparse Convolution的操作引文中只介绍了stride为1的convolution,经过padding可以做到输入和输出的tensor大小一样。经过Submanifold Sparse Convolution的操作,输出不为空的格子的位置是与输入不为空的格子的位置是一样的,数量也是一样的。这样就解决了稀疏性质减弱的问题。

    这种操作就与普通的convolution不同了,而是对一些在convolution中输出中不为空的格子将其强制为空了。

    Up sampling

    具体结构见下图,在concat之前对lateral features做了类似于残差网络的操作,在concat之后也做了类似的操作,这一块比较好理解。Channel Reduction还需要重新看一下。
    在这里插入图片描述

    RPN Head

    文中RPN Head引用了如下文章:
    SECOND: Sparsely Embedded Convolutional Detection

    在引文中,RPN Head是使用了类似于SSD Head的方式,在使用RPN Head之前,网络将四维的tensor中的feature维度和高度维度合并,变成了3维tensor,相当于在鸟瞰图中一样的位置的格子中的feature进行了拼接,这在本文中的解释RPN的地方提到了。引文中RPN Head网络的结构如下:
    在这里插入图片描述

    主干网络的输出

    主要输出两个量,一个是voxel-wise的label,也就是图中的Segmentation,负责表示这个voxel是否属于前景。另外一个量为预测这个voxel在proposal中的位置,是图中的Part Prediction。具体Part Prediction的表示方法见论文3.1节。

    需要注意的一点

    文中是用体素的形式表达了整个空间的数据,但在文中也说,其实每个体素也可以认为是体素中心的那个点,每个体素对应的特征向量也可以认为是对应体素中心的那个点的特征向量。也就是说,上面这些对体素的操作,也可以是认为是对由体素生成的规则的点云的操作。这也就是为什么在part-aggregation stage一开始的pooling叫做RoI-aware point cloud pooling。

    Part-aggregation Stage

    RoI-aware point cloud pooling

    得到了proposal,将proposal切成141414个栅格,在每个栅格会包含Part-aware Stage中的一些点(其实也是体素中心),然后对这些包含的点的predicted part location和segmentation label做mean pooling,对其feature做max pooling。这个max pooling具体还得再看一下code中是怎么定义max,文中讲的不是很详细。在网络结构图中pooling这一部分画的非常形象。

    feature aggregation

    我把pooling后面这一块称为feature aggregation,其实就是一系列卷积操作,其中包括concat操作将上面pooling的两种feature合并,具体见论文3.3节。

    Loss

    具体详见原文,讲的已经很清楚了。
    在这里插入图片描述

    实验部分

    首先作者介绍了在Part-aware Stage中的part locations prediction的效果,作者提出了一个类似于L1loss的评价标准,统计平均误差,在验证中发现,part locations prediction的平均误差在6.28cm/米,这种效果已经非常好了。

    在Ablation studies中作者讨论了如下几个方面:

    • part-aware and aggregation是否起到了作用:作者通过去掉part locations prediction这部分,使用coordinates进行代替,效果变差,证明了part locations prediction的作用。作者通过去掉part-aggregation stage的部分,直接在part-aware stage的输出做预测,也就是把NMS加在了proposal上,效果对比不如在A2上的提升明显。
    • RoI-aware Pooling的作用:对比了PointRCNN中的Pooling方法,效果提升不错,但这很容易理解,fixed size本身就存在问题。
    • Pooling之后的网络:修改了不同的网络结构,效果提升不大
    • RoI pooling size:分的栅格约细,对于约难的问题处理约好,但对于简单的问题,可能会产生干扰。

    我的思考

    • 文章中part locations prediction的回归是使用Cross Entropy Loss的,但这种回归的方式一般应该选用L1或者L2,这一点不符合常理。
    • RoI pooling这一块可以按照RoI Align pooling的形式做改进,在做part locations prediction的时候可以用插值的方式
    • submanifold sparse convolution和 sparse convolution(就是普通的convolution)的组合成主干网络的问题。为什么要在降采样的时候用convolution,而普通的卷积用submanifold sparse convolution,我觉得这一点上的设计可以再做做albation study。
    展开全文
  • PointRCNN:三维目标检测

    万次阅读 热门讨论 2020-07-12 22:51:30
    PointRCNN是CVPR2019录用的一篇三维目标检测论文。 摘要 本文中提出了一种PointRCNN用于原始点云的3D目标检测,整个框架包括两个阶段:第一阶段使用自下而上的3D提案产生,第二阶段用于在规范坐标中修改提案获得...
  • 三维目标检测算法原理 输入输出接口 Input: (1)图像视频分辨率(整型int) (2)图像视频格式(RGB,YUV,MP4等) (3)左右两边的车道线位置信息摄像头标定参数(中心位置(x,y) 和5个畸变系数(2径向,2切向,...
  • 3D目标检测框架VoteNet Charles R. Qi,Or Litany,何恺明,Leonidas J. Guibas等 当前主流的3D目标检测方法,很大层度上受2D检测器的影响。充分利用2D检测器提取3D建议框,或将3D点云转换为规则的网格或利用2D...
  • 点击上方“3D视觉工坊”,选择“星标”干货第一时间送达前言这是一篇来自CVPR2020的研究工作,于2020/4/9日开源,如下图所示,目前被接收的文章有在KITTI上的有四篇,分别是...
  • VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection 理解了PointPillars这篇文章后,看这篇文章就清晰多了,这个清晰表现在两个方面,1)PointPillars这篇文章具体是如何将点云变为伪图像...
  • 三维点云目标提取总结

    万次阅读 多人点赞 2015-09-28 11:25:54
    介绍关于三维激光点云的一般性应用以及三维激光点云的目标识别。
  • 三维点云数据集—目标检测、分类、匹配

    万次阅读 多人点赞 2019-01-11 14:25:02
    三维点云数据集 做三维点云处理,常常因为数据烦恼,因此想把所用过下载过的数据集整理一下,若有不准确或者更多的资源,欢迎万能的网友们提点并告知(持续更新)。。。 1. The Stanford 3D Scanning Repository...
  • opencv应用实例-实战视频教学

    万人学习 2018-12-17 17:54:06
    并且对这些案例的算法流程及相关接口进行详细说明与讲解,涉及到的opencv具体案例有鸟瞰图、肤色检测、颜色聚类、模板匹配、人眼检测、camshift目标跟踪、三维重建sfm。
  • 三维重建:SLAM的尺度和方法论问题

    万次阅读 2019-04-24 16:06:44
    在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由于单视频的信息不完全,因此三维重建需要利用经验知识.。而多视图的三维重建(类似人的双目定位)相对比较容易, 其方法是先对摄...
  • 机器视觉学习系列一:线结构光三维测量重建

    万次阅读 热门讨论 2015-06-28 16:43:05
    采用线结构光进行三维重建,用三维点云数据进行相应公差计算; 选用硬件:basler相机一只,stackyale激光器一只,精密一维移动平台一台(记得好像是北京的路科锐威的),棋盘格标定版一个(好像是深圳
  • 多视图3D目标检测学习笔记

    万次阅读 热门讨论 2017-04-12 18:04:14
    参加滴滴无人驾驶算法大赛,在多方面参考了几篇目标检测和多视角检测融合等文献,最终团队确定了一下两篇论文作为比赛的参考: A Unified Multi-scale Deep Convolutional Neural Network for Fast Object Detection...
  • 大规模三维场景重建的尺度增大,因此相对于整个重建过程的粒度也从点到特征点到目标物体级别,对场景进行语义标记成为重要的工作。 场景语义标记的传统方法: 其他:机器人在线场景感知问题,场景识别问题。 .....
  • 图像分割与三维重建

    千次阅读 2015-12-09 12:55:21
    根据需要选择一定的特征量或指定特定的测量准则来检测图像中不同区域的一致性,根据检测出来的区域一致性将图像区别成不同区域,从而可以更加方便地进行进一步的分析和理解。 <2>.医学图像分割方法: a.基于图像...
  • 点云目标检测-综述2019.04

    千次阅读 2019-04-27 20:32:59
    说明:美团无人配送团队主笔,摘录自智车科技公众号 激光雷达成像原理 通常采集到的360°的数据被称为一帧,上面的例子中一帧数据在理论上最多包含32*(360/0.2)=57600个点,在实际情况中如果雷达被放置在车的上方...
  • (长按识别上方二维码,报名第29届IEEE IV大会 )...YOLO,其通过一个特定的复杂的回归策略来估计笛卡尔空间(Cartesian space)中的多类三维立方体,从而扩展YOLOv2(一种用于RGB图像的一个快速二维标准目标检测...
  • 动态目标实时三维重建-结构光方案 动态目标 三维重建 Stripe boundary codes for real-time structured-light range scanning of moving objects 我们提出了一种新的实时结构光扫描方法。在分析现有...
1 2 3 4 5 ... 20
收藏数 52,348
精华内容 20,939
关键字:

三维目标检测