点击上方“3D视觉车间,选择星标
第一时间送达干货
MV3D-Net 将视觉图像与激光雷达点云信息相结合;有三种输入数据,即点云俯视图、点云前视图和RGB图像。类别标签、3D边界框。这样可以减少计算量,保留主要特征信息。
MV3D-Net 开源代码:https://github.com/bostondiditeam/MV3D
MV3D-Net 论文地址:https://arxiv.org/abs/1611.07759
AVOD-Net算是MV3D-Net它还集成了视觉图像和激光雷达点云信息。但它去除了激光点云的前视图输入和俯视图中的强度信息;有两种输入数据,即点云俯视图和RGB图像。AVOD-Net使用FPN提取特征,增加边界框的几何约束,提高整体模型效果。
AVOD-Net 开源代码:https://github.com/kujason/avod
AVOD-Net 论文地址:https://arxiv.org/abs/1712.02294
本文的思路是先介绍MV3D-Net,再介绍AVOD-Net;在理解MV3D-Net去看AVOD-Net改变和相应的效果是什么。
1.1、框架了解
1.2、MV3D的点云处理
1.3、MV3D的图像处理
1.4.俯视图计算候选区域
1.5、特征整合
1.6、特征融合
1.7、模型效果
1.8、模型代码
2.1、框架了解
2.2、提取特征
2.3、数据整合
2.4.边界框的几何约束
2.5、模型效果
2.6、模型代码
先看整体网络结构:下图中的紫色圆圈M表示:基于元素的平均值。
输入的数据有三种:点云俯视图、点云前视图和二维视图RGB图像。事实上,点云投影并不是简单地将三维压入二维,而是提取高程、密度、光强等特征作为像素值获得的二维投影图片。
输出数据:类别标签,3D边界框。
网络主体结构的思路流程:
1)提取特征。
提取点云俯视图特征;
提取点云前视图特征;
提取图像特征。
2)从点云俯视图特征中计算ROI候选区域。
3)将候选区域与提取的点云俯视图特征、点云前视图特征和图像特征相结合。
将俯视图候选区域投影到前视图和图像中;
再经过ROI pooling同一维度的整合。
整合部分是整合数据,最终获得类别标签和3D边界框。
M在上图中的紫色圆圈中表示:基于元素的平均值。
MV3D将点云和图像数据映射到三个维度进行集成,以获得更准确的定位和。这三个维度是点云的俯视图、点云的前视图和图片。
点云俯视图由高度、强度和密度组成;作者将点云数据投影到0分辨率.二维网格中的。
获取高度图的方法是将每个网格中所有点高度的最大值记录为高度特征。为了编码更多的高度特征,点云分为M块,每个块计算相应的高度图,以获得M高度图。
获取强度图的方法是:每个单元格中最大高点的映射值。
获取密度图的方法是:按公式统计每个单元中点云的数量:
N是单元格中的点数。整个点云计算强度和密度特征,M切片计算高度特征,因此总俯视图编码为(M 2)个通道的特征。
当激光点云非常稀疏时,投影到2D图片也会很稀疏。相反,作者将其投影到圆柱形表面,形成一个密集的前视图。D坐标为:
前视图坐标:
可通过以下公式计算
采用经典的VGG-16提取图像特征,下图为VGG-网络结构16。
VGG-16结构中有13个卷积层和3个全链接层,结构简单,整个网络采用相同尺寸的卷积核尺寸(3x3)和最大池化尺寸(2)x2)。它验证了通过不断深化网络结构来提高性能。但VGG-16消耗更多的计算资源,使用更多的参数,导致更多的内存占用(140M)。
当物体投射到俯视图时,保持物体的物理尺寸,因此在前视图/图像平面下没有较小的尺寸方差。在俯视图中,物体占据不同的空间,以避免堵塞问题。
在道路场景中,由于目标通常位于地面平面上,垂直位置的方差较小,可以获得准确的3Dbounding box提供良好的基础。候选区域网络是RPN,下面介绍一下它的原理。
RPN全称是Region Proposal Network,也可以理解为区域生成网络或区域候选网络;用于提取候选框。
在RCNN和Fast RCNN等物体检测架构中,提取候选框的方法通常是传统的Selective Search,比较耗时。
在Faster RCNN中,RPN专门用于提取候选框,这也是RPN第一次使用;RPN耗时少。Faster RCNN = RPN Fast RCNN。
RPN找到网络的任务proposals。输入:feature map。输出:proposal。
RPN总体流程:
1.生成anchors(anchor boxes)。
.判断每个 anchor box 为 foreground(包含物体) 或者background(背景) ,二分类;softmax分类器提取positvie anchors 。
3.边界框回归(bounding box regression) 对 anchor box 进行微调,使得 positive anchor 和真实框(Ground Truth Box)更加接近。
4.Proposal Layer生成proposals。
feature maps 的每一个点都配9个锚框,作为初始的检测框。重要的事说三遍:锚框作为初始的检测框!、锚框作为初始的检测框!、锚框作为初始的检测框!虽然这样得到的检测框很不准确,但后面可通过 bounding box regression 来修正检测框的位置。
下面介绍那9个anchor boxes 锚框,先看看它的形状:
这里一共有9个框框,绿色3个,红色3个,蓝色3个。有3种形状,长宽比分别是1:1, 1:2, 2:1。
在feature map上,设置了密密麻麻的候选anchor boxes 锚框。为什么会有这么多?因为 feature maps 的每一个点都配9个锚框,如果一共有1900个点,那一共有1900*9=17100个锚框了。
设 feature maps 的尺寸为 W*H,那么总共有 W*H*9个锚框。(W:feature maps的宽;H:feature maps 的高。)
然后用cnn去判断哪些anchor box是里面有目标的positive anchor,哪些是没目标的negative anchor。所以,RPN做的只是个二分类。
关于cnn的模型结构,可以参考下图:
已知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和真实框很接近。
通过上面的判断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包含物体的概率的概率大于阈值,再判断其类别;否则直接忽略。
把候选区域分别与提取的特征进行整合。
特征整合流程:
a. 把俯视图候选区域投影到前视图和图像中
b. 经过ROI pooling整合成同一维度
有了整合后的数据,需要对特征进行融合,最终得到类别标签、3D边界框。
作者介绍了三种不同的融合方式,分别为
a、Early Fusion 早期融合
b、Late Fusion 后期融合
c、Deep Fusion 深度融合。
各自的结构如下图所示。
上图中的紫色圆圈中M是表示:基于元素的均值。C表示:串接。
最终选择了Deep Fusion 深度融合。融合的特征用作:分类任务(人/车/...)、更精细化的3D Box回归(包含对物体朝向的估计)。
和其他模型对比的数据:
检测效果:
代码地址:https://github.com/bostondiditeam/MV3D
作者使用KITTI提供的原始数据,链接:https://www.google.com/url?q=http://www.cvlibs.net/datasets/kitti/raw_data.php&sa=D&source=editors&ust=1626942267325000&usg=AOvVaw1y2yY8LPsMmzXtL4sPKikh
上图是用于原型制作的数据集 。
我们使用了[同步+校正数据] + [校准](校准矩阵)+ [轨迹]()
所以输入数据结构是这样的:
运行 src/data.py 后,我们获得MV3D网络所需的输入。它保存在kitti中。
上图是激光雷达俯视图(data.py后)
上图是将 3D 边界框投影回相机图像中。
先看下总体网络结构:(可以点击图片放大查看)
输入的数据:有二种,分别是点云俯视图和二维RGB图像。输出数据:类别标签、3D边界框。
相对于MV3D-Net的改进措施:去掉了激光点云的前视图输入。在俯视图中去掉了强度信息。去掉这两个信息仍然能取得好的效果,就说明俯视图和图像信息已经能够完整诠释三维环境了。
AVOD-Net如何提取特征的?它主要提取出二部分数据,分别是图像特征、点云俯视图特征。其中图像+点云俯视图融合特征,在数据整合起到作用。后面将这二种特征进行融合。
它使用了全分辨率特征,所以为了在整合时降低维度,先进性了1X1的卷积。
AVOD使用的是FPN,MV3D-Net 是使用的VGG16做特征提取。下面介绍一下FPN网络的原理。
FPN,全名是Feature Pyramid Networks,中文称为特征金字塔网络;它是目前用于目标检测、语义分割、行为识别等方面比较重要的一个部分,对于提高模型性能具有较好的表现。
在特征提取中,低层的特征语义信息比较少,但目标位置准确,分辨率高。高层的特征语义信息比较丰富,但是目标位置比较粗略,分辨率低和比较抽象。于是有些算法采用多尺度特征融合的方式,在融合后的特征做预测。
FPN的预测是在不同特征层独立进行的,即:同时利用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。FPN作者认为足够低层高分辨的特征对于检测小物体是很有帮助的。
FPN的顶层特征通过上采样和低层特征做融合,并且每层都是独立预测的;它使每一层不同尺度的特征图都具有较强的语义信息。
对比:FPN特征金字塔与多尺度特征融合
多尺度特征融合的方式,在融合后的特征做预测。经过多次上采样并融合特征到最后一步,拿最后一步生成的特征做预测。
FPN是在不同特征层独立进行预测。
FPN的主网络采用ResNet,网络结构思路是一个自底向上的线路,一个自顶向下的线路,横向连接(lateral connection)。
1*1的卷积核减少卷积核的个数,也就是减少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同时使用低层特征高分辨率和高层特征的高语义信息,通过融合这些不同层的特征达到预测的效果。
AVOD使用的是裁剪和调整(crop and resize),数据整合结构如下图所示。
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)的向量即可,做到了很好的编码降维工作。
与其他模型的对比:
在KITTI上,AVOD目前(2018.7.23)名列前茅,在精度和速度上都表现较好,与MV3D, VoxelNet, F-PointNet对比的结果如下表所示。
模型预测效果:
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视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。
在「3D视觉工坊」公众号后台回复:即可下载包括等。
在「3D视觉工坊」公众号后台回复:即可下载独家学习课件与视频网址;后台回复:即可下载独家学习课件与视频网址。
扫码添加小助手微信,可
也可申请加入我们的细分方向交流群,目前主要有、、、、、等微信群。
一定要备注:
▲长按加微信群或投稿
▲长按关注公众号
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题