【论文解读】F-PointNet 使用RGB图像和Depth点云深度 数据的3D目标检测

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
简介: ​F-PointNet 提出了直接处理点云数据的方案,但这种方式面临着挑战,比如:如何有效地在三维空间中定位目标的可能位置,即如何产生 3D 候选框,假如全局搜索将会耗费大量算力与时间。F-PointNet是在进行点云处理之前,先使用图像信息得到一些先验搜索范围,这样既能提高效率,又能增加准确率。论文地址:Frustum PointNets for 3D Object Detection from RGB-D Data 开源代码:https://github.com/charlesq34/frustum-pointnets

 一、基本思路

首先使用在 RGB 图像上运行的 2D 检测器,其中每个2D边界框定义一个3D锥体区域。然后基于这些视锥区域中的 3D 点云,我们使用 PointNet/PointNet++ 网络实现了 3D实例分割和非模态 3D 边界框估计。总结一下思路,如下:

  1. 基于图像2D目标检测。
  2. 基于图像生成锥体区域。
  3. 在锥体内,使用 PointNet/PointNet++ 网络进行点云实例分割。

它是在进行点云处理之前,先使用图像信息得到一些先验搜索范围,这样既能提高效率,又能增加准确率。先看看下面这张图:

在这张图里,左上角的意思是先把图像和点云信息标定好(这个属于传感器的外参标定,在感知之前进行;获取两个传感器之间旋转矩阵和平移向量,就可以得到相互的位置关系)。

左下角是用目标检测算法检测出物体的边界框(BoundingBox),有了边界框之后,以相机为原点,沿边界框方向延伸过去就会形成一个锥体(上图的右半部分),该论文题目里frustum这个词就是锥体的意思。

然后用点云对该物体进行识别的时候,只需要在这个锥体内识别就行了,大大减小了搜索范围。


二、模型框架

模型结构如下:(可以点击图片放大查看)

image.gif

网络共分为三部分,第一部分是使用图像进行目标检测并生成锥体区域,第二部分是在锥体内的点云实例分割,第三部分是点云物体边界框的回归。


三、基于图像生成锥体区域

image.gif

由于检测到的目标不一定在图像的正中心,所以生成的锥体的轴心就不一定和相机的坐标轴重合,如下图中(a)所示。为了使网络具有更好的旋转不变性,我们需要做一次旋转,使相机的Z轴和锥体的轴心重合。如下图中(b)所示。

image.gif


四、 在锥体内进行点云实例分割

实例分割使用PointNet。一个锥体内只提取一个物体,因为这个锥体是图像中的边界框产生的,一个边界框内也只有一个完整物体。

在生成锥体的时候提到了旋转不变性,此处完成分割这一步之后,还需要考虑平移不变性,因为点云分割之后,分割的物体的原点和相机的原点必不重合,而我们处理的对象是点云,所以应该把原点平移到物体中去,如下图中(c)所示。

image.gif


五、生成精确边界框

生成精确边界框的网络结构:

image.gif

从这个结构里可以看出,在生成边界框之前,需要经过一个T-Net,这个东西的作用是生成一个平移量,之所以要做这一步,是因为在上一步得到的物体中心并不完全准确,所以为了更精确地估计边界框,在此处对物体的质心做进一步的调整,如下图中(d)所示。

image.gif

 下面就是边界框回归了,对一个边界框来讲,一共有七个参数,包括:

image.gif编辑

最后总的残差就是以上目标检测、T-Net和边界框残差之和,可以据此构建损失函数。

image.gif


六、PointNet关键点

6.1 F-PointNet使用2D RGB图像

原因是

    1. 当时基于纯3D点云数据的3D目标检测对小目标检测效果不佳。所以F-PointNet先基于2D RGB做2D的目标检测来定位目标,再基于2d目标检测结果用其对应的点云数据视锥进行bbox回归的方法来实现3D目标检测。
    2. 使用纯3D的点云数据,计算量也会特别大,效率也是这个方法的优点之一。

    使用成熟的2D CNN目标检测器(Mask RCNN)生成2D检测框,并输出one-hot 分类向量(即基于2D RGB图像的分类)。

    6.2 锥体框生成

    2D检测框结合深度信息,找到最近和最远的包含检测框的平面来定义3D视锥区域frustum proposal。然后在该frustum proposal里收集所有的3D点来组成视锥点云(frustum point cloud)。


    七、实验结果

    与其他模型对比:

    image.gif

    image.gif

    模型效果:

    image.gif


    八、优点

    (1)舍弃了global fusion,提高了检测效率;并且通过2D detector和3D Instance Segmentation PointNet对3D proposal实现了逐维(2D-3D)的精准定位,大大缩短了对点云的搜索时间。下图是通过3d instance segmentation将搜索范围从9m~55m缩减到12m~16m。

    image.gif

    (2)相比于在BEV(Bird's Eye view)中进行3D detection,F-PointNet直接处理raw point cloud,没有任何维度的信息损失,使用PointNet能够学习更全面的空间几何信息,特别是在小物体的检测上有很好的表现。下图是来自Hao Su 2018年初的课程,现在的KITTI榜有细微的变动。

    (3)利用成熟的2D detector对proposal进行分类(one-hot class vector,打标签),起到了一定的指导作用,能够大大降低PointNet对三维空间物体的学习难度


    九、模型代码

    开源代码:GitHub - charlesq34/frustum-pointnets: Frustum PointNets for 3D Object Detection from RGB-D Data

    作者代码的运行环境:

    系统:Ubuntu 14.04 或 Ubuntu 16.04

    深度框架:TensorFlow1.2(GPU 版本)或 TensorFlow1.4(GPU 版本)

    其他依赖库:cv2、mayavi等。

    代码支持 Frustum PointNets 模型的训练和测试,以及基于预先计算的 2D 检测器输出(kitti/rgb_detections)评估 3D 目标检测结果。

    参考:F-PointNet: 以二维图像驱动三维点云中的物体检测_理想三旬-CSDN博客

    自动驾驶|3D目标检测:F-PointNet(一) - 知乎论文概述F-PointNet (2018) | 码农家园


    image.gif

    论文地址:Frustum PointNets for 3D Object Detection from RGB-D Data


    相关文章
    |
    存储 数据采集 数据可视化
    Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算
    Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算
    17070 1
    Open3d系列 | 1. Open3d实现点云数据读写、点云配准、点云法向量计算
    |
    存储 机器学习/深度学习 算法
    MMDetection3d对KITT数据集的训练与评估介绍
    MMDetection3d对KITT数据集的训练与评估介绍
    2992 0
    MMDetection3d对KITT数据集的训练与评估介绍
    |
    算法 数据处理
    点云地面点滤波(Progressive Morphological Filter)算法介绍(PCL库)
    点云地面点滤波(Progressive Morphological Filter)算法介绍(PCL库)
    1867 0
    点云地面点滤波(Progressive Morphological Filter)算法介绍(PCL库)
    |
    传感器 机器学习/深度学习 编解码
    一文尽览 | 基于点云、多模态的3D目标检测算法综述!(Point/Voxel/Point-Voxel)(下)
    目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于激光雷达雷达点云、多模态数据的相关算法,下面展开讨论下~
    一文尽览 | 基于点云、多模态的3D目标检测算法综述!(Point/Voxel/Point-Voxel)(下)
    |
    机器学习/深度学习 传感器 编解码
    史上最全 | 基于深度学习的3D分割综述(RGB-D/点云/体素/多目)(上)
    3D目标分割是计算机视觉中的一个基本且具有挑战性的问题,在自动驾驶、机器人、增强现实和医学图像分析等领域有着广泛的应用。它受到了计算机视觉、图形和机器学习社区的极大关注。传统上,3D分割是用人工设计的特征和工程方法进行的,这些方法精度较差,也无法推广到大规模数据上。在2D计算机视觉巨大成功的推动下,深度学习技术最近也成为3D分割任务的首选。近年来已涌现出大量相关工作,并且已经在不同的基准数据集上进行了评估。本文全面调研了基于深度学习的3D分割的最新进展,涵盖了150多篇论文。论文总结了最常用的范式,讨论了它们的优缺点,并分析了这些分割方法的对比结果。并在此基础上,提出了未来的研究方向。
    史上最全 | 基于深度学习的3D分割综述(RGB-D/点云/体素/多目)(上)
    |
    存储 传感器 数据可视化
    3D目标检测数据集 KITTI(标签格式解析、3D框可视化、点云转图像、BEV鸟瞰图)
    本文介绍在3D目标检测中,理解和使用KITTI 数据集,包括KITTI 的基本情况、下载数据集、标签格式解析、3D框可视化、点云转图像、画BEV鸟瞰图等,并配有实现代码。
    4093 1
    |
    机器学习/深度学习 传感器 算法
    单目3D目标检测 方法综述——直接回归方法、基于深度信息方法、基于点云信息方法
    本文综合整理单目3D目标检测的方法模型,包括:基于几何约束的直接回归方法,基于深度信息的方法,基于点云信息的方法。万字长文,慢慢阅读~ 直接回归方法 涉及到模型包括:MonoCon、MonoDLE、MonoFlex、CUPNet、SMOKE等。 基于深度信息的方法 涉及到模型包括:MF3D、MonoGRNet、D4LCN、MonoPSR等。 基于点云信息的方法 涉及到模型包括:Pseudo lidar、DD3D、CaDDN、LPCG等。
    2729 2
    |
    传感器 机器学习/深度学习 人工智能
    超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
    目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于单目、双目和伪激光雷达数据的相关算法,下面展开讨论下~
    超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
    |
    传感器 机器学习/深度学习 自动驾驶
    【多模态融合】CRN 多视角相机与Radar融合 实现3D检测、目标跟踪、BEV分割 ICCV2023
    本文介绍使用雷达与多视角相机融合,实现3D目标检测、3D目标跟踪、道路环境BEV分割,它是来自ICCV2023的。CRN,全称是Camera Radar Net,是一个多视角相机-雷达融合框架。 通过融合多视角相机和雷达的特性,生成语义丰富且空间精确的BEV特征图。实现3D物体检测、跟踪和BEV分割任务。
    1692 57
    |
    机器学习/深度学习 传感器 编解码
    【多传感器融合】BEVFusion: 激光雷达和摄像头融合框架 NeurIPS 2022
    BEVFusion提出一个融合多摄像头和激光雷达数据的框架,可用于3D检测。在自动驾驶领域,通过独立处理并融合摄像头和激光雷达数据,可以显著提升3D对象检测的准确性和稳健性,尤其是在激光雷达可能出现故障的真实场景中。
    4018 57
    【多传感器融合】BEVFusion: 激光雷达和摄像头融合框架 NeurIPS 2022