作者‖ 黎国溥,3D视觉开发者社区签约作者,CSDN博客专家,华为云-云享专家
编辑‖ 3D视觉开发者社区

文章目录

  • 前言
  • 一、MV3D-Net篇
    • 1.1、框架了解
      • 1.1.1 网络的主体部分
      • 1.1.2 网络的融合部分
    • 1.2、MV3D的点云处理
      • 1.2.1 提取点云俯视图
      • 1.2.2 提取点云前视图
    • 1.3、MV3D的图像处理
    • 1.4、俯视图计算候选区域
      • 1.4.1 RPN的由来
      • 1.4.2 RPN思路流程
      • 1.4.3 feature maps与锚框 anchor boxes
      • 1.4.4 判断anchor boxes是否包含物体
      • 1.4.5 修正边界框
      • 1.4.6 Proposal(最有可能包含物体的区域)
    • 1.5、特征整合
    • 1.6、特征融合
    • 1.7、模型效果
    • 1.8、模型代码
  • 二、AVOD-Net篇
    • 2.1、框架了解
    • 2.2、提取特征
      • 2.2.1 FPN特征金字塔
      • 2.2.2 FPN网络结构
    • 2.3、数据整合
    • 2.4、边界框的几何约束
    • 2.5、模型效果
    • 2.6、模型代码

前言

MV3D-Net 融合了视觉图像和激光雷达点云信息;输入数据有三种,分别是点云俯视图、点云前视图和RGB图像。通过特征提取、特征整合和特征融合,最终得到类别标签、3D边界框。这样的设计既能减少计算量,又保留了主要的特征信息。

MV3D-Net 开源代码:https://github.com/bostondiditeam/MV3D
MV3D-Net 论文地址:Multi-View 3D Object Detection Network for Autonomous Driving

AVOD-Net算是MV3D-Net的加强版,它也融合了视觉图像和激光雷达点云信息。但它去掉了激光点云的前视图输入、去掉了俯视图中的强度信息;输入数据有二种,分别是点云俯视图和RGB图像。AVOD-Net使用FPN来提取特征,同时添加边界框的几何约束,整体模型效果有提升。

AVOD-Net 开源代码:https://github.com/kujason/avod
AVOD-Net 论文地址:Joint 3D Proposal Generation and Object Detection from View Aggregation


本文思路是先介绍MV3D-Net,再介绍AVOD-Net;在理解MV3D-Net的基础上,去看AVOD-Net做出了哪些改变和对应效果如何。

一、MV3D-Net篇

1.1、框架了解

先看下总体网络结构:下图中的紫色圆圈中M是表示:基于元素的均值。

输入的数据:有三种,分别是点云俯视图、点云前视图和二维RGB图像。“点云投影”,其实并非简单地把三维压成二维,而是提取了高程、密度、光强等特征,分别作为像素值,得到的二维投影图片。
输出数据:类别标签、3D边界框。

1.1.1 网络的主体部分

网络的主体结构的思路流程:
1)提取特征。
提取点云俯视图特征;
提取点云前视图特征;
提取图像特征。
2)从点云俯视图特征中计算ROI候选区域。
3)把候选区域分别与提取到的点云俯视图特征、点云前视图特征和图像特征进行整合。
先把俯视图候选区域投影到前视图和图像中;
再经过ROI pooling整合成同一维度。

1.1.2 网络的融合部分

融合部分部是把整合后的数据进行融合,最终得到类别标签、3D边界框。

上图中的紫色圆圈中M是表示:基于元素的均值。

1.2、MV3D的点云处理

MV3D将点云和图片数据映射到三个维度进行融合,从而获得更准确的定位和检测的结果。这三个维度分别为点云的俯视图、点云的前视图以及图片。

1.2.1 提取点云俯视图

点云俯视图由高度强度密度组成;作者将点云数据投影到分辨率为0.1的二维网格中。
高度图的获取方式为:将每个网格中所有点高度的最大值记做高度特征。为了编码更多的高度特征,将点云被分为M块,每一个块都计算相应的高度图,从而获得了M个高度图
强度图的获取方式为:每个单元格中有最大高度的点的映射值。
密度图的获取方式为:统计每个单元中点云的个数,并且按照公式:

其中N为单元格中的点的数目。强度和密度特征计算的是整个点云,而高度特征是计算M切片,所以,总的俯视图被编码为(M + 2)个通道的特征。

1.2.2 提取点云前视图

由于激光点云非常稀疏的时候,投影到2D图上也会非常稀疏。相反,作者将它投影到一个圆柱面生成一个稠密的前视图。 假设3D坐标为:

那么前视图坐标:

可以通过如下式子计算

1.3、MV3D的图像处理

采用经典的VGG-16来提取图像特征,下图是VGG-16的网络结构。

VGG-16结构中有13个卷积层和3个全链接层,它的结构简洁,整个网络都使用了同样大小的卷积核尺寸(3x3)和最大池化尺寸(2x2)。它验证了通过不断加深网络结构可以提升性能。但VGG-16耗费更多计算资源,并且使用了更多的参数,导致更多的内存占用(140M)。

1.4、俯视图计算候选区域

物体投射到俯视图时,保持了物体的物理尺寸,从而具有较小的尺寸方差,这在前视图/图像平面的情况下不具备的。在俯视图中,物体占据不同的空间,从而避免遮挡问题。
在道路场景中,由于目标通常位于地面平面上,并在垂直位置的方差较小,可以为获得准确的3Dbounding box提供良好基础。候选区域网络是RPN,下面介绍一下它的原理。
RPN全称是Region Proposal Network,也可理解为区域生成网络,或区域候选网络;它是用来提取候选框的。

1.4.1 RPN的由来

在RCNN和Fast RCNN等物体检测架构中,提取候选框的方法通常是传统的Selective Search,比较耗时。
在Faster RCNN中,RPN专门用来提取候选框,这也是RPN第一次被使用;RPN耗时少。Faster RCNN = RPN + Fast RCNN。

1.4.2 RPN思路流程

RPN网络的任务是找到proposals。输入:feature map。输出:proposal。

RPN总体流程:

  1. 生成anchors(anchor boxes)。
  2. 判断每个 anchor box 为 foreground(包含物体) 或者background(背景) ,二分类;softmax分类器提取positvie anchors 。
  3. 边界框回归(bounding box regression) 对 anchor box 进行微调,使得 positive anchor 和真实框(Ground Truth Box)更加接近。
  4. Proposal Layer生成proposals。

1.4.3 feature maps与锚框 anchor boxes

feature maps 的每一个点都配9个锚框,作为初始的检测框。重要的事说三遍:**锚框作为初始的检测框!、锚框作为初始的检测框!、锚框作为初始的检测框!**虽然这样得到的检测框很不准确,但后面可通过 bounding box regression 来修正检测框的位置。

下面介绍那9个anchor boxes 锚框,先看看它的形状:

这里一共有9个框框,绿色3个,红色3个,蓝色3个。有3种形状,长宽比分别是1:1, 1:2, 2:1

1.4.4 判断anchor boxes是否包含物体

在feature map上,设置了密密麻麻的候选anchor boxes 锚框。为什么会有这么多?因为 feature maps 的每一个点都配9个锚框,如果一共有1900个点,那一共有1900*9=17100个锚框了。

设 feature maps 的尺寸为 WH,那么总共有 WH*9个锚框。(W:feature maps的宽;H:feature maps 的高。)
然后用cnn去判断哪些anchor box是里面有目标的positive anchor,哪些是没目标的negative anchor。所以,RPN做的只是个二分类。
关于cnn的模型结构,可以参考下图:

1.4.5 修正边界框

已知anchor box 包含物体称为positive anchors,那怎么调整,才能使得 anchor box 与 ground truth 更接近?

图中红框为positive anchors,绿框为真实框(Ground Truth Box,简称GT)
positive anchors 和GT的梯度可以有dx, dy, dw, dh四个变换表示,bounding box regression通过线性回归学习到这个四个梯度,使positive anchors 不断逼近GT,从而获得更精确的proposal。
bounding box regression 思路,简单一点的,可以先做平移,再做缩放,最终包含物体anchor box和真实框很接近。

1.4.6 Proposal(最有可能包含物体的区域)

通过上面的判断anchor boxes是否包含物体,对有物体的anchor boxes通过回归进行修正它的尺子,最终包含物体anchor box和真实框很接近。RPN会输出一些框框,和这些框框包含物体的概率。
总结一下,Proposal 的输入有三个:
softmax 分类矩阵
Bounding Box Regression 坐标矩阵
im_info 保存了缩放的信息
输出为:
rpn_rois: RPN 产生的 ROIs(Region of Interests,感兴趣的区域)
rpn_roi_probs: 表示ROI包含物体的概率。
RPN 只挑选出了可能包含物体的区域(rpn_rois)以及其包含物体的概率(rpn_roi_probs)。在后续处理中,设定一个阈值 threshold,如果某个ROI包含物体的概率的概率大于阈值,再判断其类别;否则直接忽略。

1.5、特征整合

把候选区域分别与提取的特征进行整合。
特征整合流程:
• a. 把俯视图候选区域投影到前视图和图像中
• b. 经过ROI pooling整合成同一维度

1.6、特征融合

有了整合后的数据,需要对特征进行融合,最终得到类别标签、3D边界框。
作者介绍了三种不同的融合方式,分别为
• a、Early Fusion 早期融合
• b、Late Fusion 后期融合
• c、Deep Fusion 深度融合。
各自的结构如下图所示。

上图中的紫色圆圈中M是表示:基于元素的均值。C是表示:串接。
最终选择了Deep Fusion 深度融合。融合的特征用作:分类任务(人/车/…)、更精细化的3D Box回归(包含对物体朝向的估计)。

1.7、模型效果

和其他模型对比的数据:

检测效果:

1.8、模型代码

代码地址:https://github.com/bostondiditeam/MV3D
作者使用KITTI提供的原始数据,点击链接

上图是用于原型制作的数据集 。
我们使用了[同步+校正数据] + [校准](校准矩阵)+ [轨迹]()
所以输入数据结构是这样的:

运行 src/data.py 后,我们获得MV3D网络所需的输入。它保存在kitti中。

上图是激光雷达俯视图(data.py后)

上图是将 3D 边界框投影回相机图像中。

二、AVOD-Net篇

2.1、框架了解

先看下总体网络结构:(可以点击图片放大查看)

输入的数据:有二种,分别是点云俯视图和二维RGB图像。输出数据:类别标签、3D边界框。
**相对于MV3D-Net的改进措施:**去掉了激光点云的前视图输入。在俯视图中去掉了强度信息。去掉这两个信息仍然能取得号的效果,就说明俯视图和图像信息已经能够完整诠释三维环境了。

2.2、提取特征

AVOD-Net如何提取特征的?它主要提取出二部分数据,分别是图像特征、点云俯视图特征。其中图像+点云俯视图融合特征,在数据整合起到作用。后面将这二种特征进行融合。

它使用了全分辨率特征,所以为了在整合时降低维度,先进性了1X1的卷积。
AVOD使用的是FPN,MV3D-Net 是使用的VGG16做特征提取。下面介绍一下FPN网络的原理。
FPN,全名是Feature Pyramid Networks,中文称为特征金字塔网络;它是目前用于目标检测、语义分割、行为识别等方面比较重要的一个部分,对于提高模型性能具有较好的表现。
在特征提取中,低层的特征语义信息比较少,但目标位置准确,分辨率高。高层的特征语义信息比较丰富,但是目标位置比较粗略,分辨率低和比较抽象。于是有些算法采用多尺度特征融合的方式,在融合后的特征做预测。
FPN的预测是在不同特征层独立进行的,即:同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。FPN作者认为足够低层高分辨的特征对于检测小物体是很有帮助的。

2.2.1 FPN特征金字塔

FPN的顶层特征通过上采样和低层特征做融合,并且每层都是独立预测的;它使每一层不同尺度的特征图都具有较强的语义信息。

对比:FPN特征金字塔与多尺度特征融合
多尺度特征融合的方式,在融合后的特征做预测。经过多次上采样并融合特征到最后一步,拿最后一步生成的特征做预。
FPN是在不同特征层独立进行预测。

2.2.2 FPN网络结构

FPN的主网络采用ResNet,网络结构思路是一个自底向上的线路,一个自顶向下的线路,横向连接(lateral connection)。

11的卷积核减少卷积核的个数,也就是减少feature map的个数,并不改变feature map的尺寸大小。
自底向上的过程也称为下采样,feature map尺寸在逐渐减小,同时提取到的特征语义信息逐渐丰富。在下采样过程中,feature map的大小在经过某些层后会改变,而在经过其他一些层的时候不会改变,作者将不改变feature map大小的层归为一个stage,因此每次抽取的特征都是每个stage的最后一个层输出,这样就能构成特征金字塔。
自顶向下的过程也称为上采样进行,而横向连接则是将上采样的结果和自底向上生成的相同大小的feature map进行融合。其中,1
1的卷积核减少卷积核的个数,也就是减少feature map的个数,并不改变其尺寸大小。
在融合之后还会再采用3*3的卷积核对每个融合结果进行卷积,目的是消除上采样的混叠效应(aliasing effect)。并假设生成的feature map结果是P2,P3,P4,P5,和原来自底向上的卷积结果C2,C3,C4,C5一一对应。
FPN同时使用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。

2.3、数据整合

AVOD使用的是裁剪和调整(crop and resize),数据整合结构如下图所示。

2.4、边界框的几何约束

AVOD在3D Bounding Box的编码上添加了几何约束。MV3D, Axis Aligned, AVOD三种不同的3D Bounding Box编码方式如下图所示,

AVOD利用一个底面以及高度约束了3D Bounding Box的几何形状,即要求其为一个长方体。MV3D只是给出了8个顶点,没有任何的几何约束关系。
此外,MV3D中8个顶点需要一个24维(3x8)的向量表示,而AVOD只需要一个10维(2x4+1+1)的向量即可,做到了很好的编码降维工作。

2.5、模型效果

与其他模型的对比:

在KITTI上,AVOD目前(2018.7.23)名列前茅,在精度和速度上都表现较好,与MV3D, VoxelNet, F-PointNet对比的结果如下表所示。

模型预测效果:

2.6、模型代码

AVOD-Net 开源代码:https://github.com/kujason/avod
作者代码的运行环境:
**系统:**Ubuntu 16.04
****深度框架:****TensorFlow1.3(GPU 版本)
**其他依赖库:**numpy>=1.13.0 、opencv-python 、pandas、pillow、protobuf==3.2.0 、scipy、sklearn 等。
**数据集:**在Kitti 对象检测数据集上进行训练。

版权声明:本文为奥比中光3D视觉开发者社区特约作者授权原创发布,未经授权不得转载,本文仅做学术分享,版权归原作者所有,若涉及侵权内容请联系删文。

3D视觉开发者社区是由奥比中光给所有开发者打造的分享与交流平台,旨在将3D视觉技术开放给开发者。平台为开发者提供3D视觉领域免费课程、奥比中光独家资源与专业技术支持。点击加入3D视觉开发者社区,和开发者们一起讨论分享吧~

或可微信关注官方公众号 3D视觉开发者社区 ,获取更多干货知识哦。

【论文解读】MV3D-Net、AVOD-Net用于自动驾驶的多视图3D目标检测网络相关推荐

  1. 【论文解读】MV3D-Net、AVOD-Ne用于自动驾驶的多视图3D目标检测网络

    作者:黎国溥,3D视觉开发者社区签约作者,CSDN博客专家,华为云-云享专家. 前言 MV3D-Net 融合了视觉图像和激光雷达点云信息:输入数据有三种,分别是点云俯视图.点云前视图和RGB图像.通过 ...

  2. 【综述】MV3D-Net、AVOD-Net 用于自动驾驶的多视图3D目标检测网络

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前言 MV3D-Net 融合了视觉图像和激光雷达点云信息:输入数据有三种,分别是点云俯视图.点云前视图 ...

  3. Multi-Modal 3D Object Detection in Autonomous Driving: a Survey(自动驾驶中的多模态3D目标检测综述)论文笔记

    原文链接:https://arxiv.org/pdf/2106.12735.pdf 1.引言 1.1 单一传感器3D目标检测         基于图像的3D目标检测.低费用换来满意的性能.但存在遮挡. ...

  4. IDA-3D:基于立体视觉的自动驾驶深度感知的3D目标检测

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:IDA-3D: Instance-Depth-Aware 3D Object Detection ...

  5. 最新综述:自动驾驶中的多模态三维目标检测

    ©PaperWeekly 原创 · 作者 | 张一帆 学校 | 华南理工大学本科生 研究方向 | CV,Causality Abstract 在过去几年,自动驾驶取得了蓬勃的发展,但是由于驾驶环境的复 ...

  6. 深度学习/自动驾驶数据集大集合(目标检测/图像分割/语义分割/图像分类/)

    CIFAR-10数据集 CIFAR-10数据集(加拿大高级研究所,10类)是 Tiny Images 数据集的一个子集,由60000个32x32彩色图像组成.这些图片被贴上了10个相互排斥类别的标签: ...

  7. 目标检测YOLO实战应用案例100讲-自动驾驶场景下的三维目标检测技术研究

    目录 辅助驾驶场景下的目标检测算法研究 传统目标检测方法 基于深度学习的目标检测方法

  8. ECCV 2020论文大盘点-3D目标检测篇

    随着自动驾驶的火热,3D目标检测在计算机视觉领域持续升温,学术和工业界都有众多研究学者,这其中基于点云数据的3D目标检测是主流,近年来基于单目RGB数据的也越来越多了.本部分总计 21 篇,1篇spo ...

  9. 3D目标检测论文阅读摘要

    3D目标检测论文阅读摘要 2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN,One Shot系列的YOLOv1-YOLOv3,这里推荐一个2D ...

  10. CVPR 2021 | 论文大盘点:3D目标检测

    作者丨我爱计算机视觉@知乎 来源丨https://zhuanlan.zhihu.com/p/389319123 编辑丨3D视觉工坊 本篇汇总 3D 目标检测相关论文,包含基于单目.基于深度图.基于激光 ...

最新文章

  1. linux下Tomcat+OpenSSL配置单向双向认证(自制证书)
  2. 邮件发送打印机更改打印机连接的通知
  3. Android 自定义Switch,仿微信开关键Switch
  4. 简明Python教程学习笔记_5_解决问题
  5. 2-4实战分类之模型构建
  6. 在 Linux 上部署 Django 应用,nginx+gunicorn+supervisor
  7. Lambda表达式只是一颗语法糖?
  8. [解决方案]word文档无法存放过长过大的visio图片
  9. HanLP-地名识别调试方法
  10. 数模(8)——排队论模型
  11. Java、JSP宾馆入住管理系统的设计与实现
  12. 有别于普通专线的BGP线路
  13. php 电子签字,电子签名和电子签字的区别
  14. java大文件pdf水印_java – 如何扩展PDF的页面大小以添加水印?
  15. Pycharm完整中文教程及安装配置
  16. 【信号处理】内插器原理和MATLAB仿真
  17. MacOS DNS快速设置
  18. 《高效能人士的执行4原则 》读后感
  19. 工作流程管理系统,表结构与运行机制
  20. 以太网 DHCP(简介、DHCP工作原理、租期时间)

热门文章

  1. HardwareRenderer EGL error: EGL_BAD_SURFACE
  2. nodejs下载安装
  3. 一些基本数字图像处理算法
  4. 常用命令之svnadmin命令
  5. 微信使用OD逆向HOOK的一些心得
  6. SQLCODE 错误对照表
  7. Subsonic使用
  8. 打印纸张尺寸换算_纸张开本和尺寸对照表!
  9. net: 熟悉传统的交换机芯片
  10. MACH SYSTEMS—总线接口转换工具