论文阅读:Deep MANTA: A Coarse-to-fine Many-Task Network for joint 2D and 3D vehicle analysis

来源:互联网 发布:软件研发流程 编辑:程序博客网 时间:2024/06/14 22:59

这篇论文是在2017年3月22日发表在CVPR上的,作者在这篇论文中提出了一个叫做深度从粗糙到精细化的多任务卷积神经网络(Deep MANTA),该模型可以用于对一张图片中的车辆进行多任务的分析。该网络同时执行的多任务包括:车辆检测、部件定位、可见性描述和三维形状位置和方向估计。整个架构是用一种新颖的从粗糙到精细化的候选区域提取的深度网络,类似于候选区域生成网络(RPN),但是基于此进行了改进。另外,该方法能够定位车辆的一些重要特征部位,即便这些部位可能是不可见的。
在推断阶段,通过一个实时的匹配估计算法利用该网络的输出进行较精准的方向估计和三维车辆定位。
最后作者通过KITTI数据集验证了该模型比其他优秀的单摄像头算法更优秀。

1. 引言

由于CNN的出现,很多对二维目标检测和定位的模型不断涌现,但是这篇文章能够通过单个摄像头同时得到2D和3D的车辆分析结果。对于自动驾驶来说,能够很好的理解周边的交通状况并对紧急状况作出提前预判是非常重要的。另外,如果不仅仅是知道车辆所在的位置,还能知道它各个部件的位置(比如方向盘在哪儿?保险杠在哪儿?备胎在哪儿?等等),这对于无人驾驶去理解整个交通环境就会是很有帮助的。因此,我们需要判断车辆的各个重要部件是否可见?是不是被自身部件遮挡住了?被其他物体遮挡住了?还是超出了图片范围的?作者就此提出一个方法,在给定一张交通图片的时候,预测出以下6点:

  • 2D车辆检测
  • 车辆重要部件定位
  • 车辆重要部件的可见性
  • 车辆方向判断
  • 3D定位
  • 3D模板相似度

请看下图

模型输出图例

  1. 首先,作者能在原图中用bounding box圈出2D的车辆目标
  2. 图中每个被圈出来的车辆里面用不同颜色的点标记出相应的特征部件是否可见(如红色表示从这个角度可见,绿色点表示被其他不属于该车辆的物体遮挡住了,蓝色表示被该车辆自身挡住了,当然还有可能有第4种情况就是该特征部件可能不在该图中,后面论文有说到一共分成4种结果)
  3. 再看下半部分的图,蓝色的多边形是摄像机的位置
  4. 3D的车辆定位也是用立方体红框框标记出来了,对应的特征部件也用4种颜色的点点标记出来了(注意这里的视角是以摄像机位置为参照物的)
  5. 3D模板的输出这里没有明示,后面有说明。

Deep MANTA方法的三个突出贡献点

  1. 用车辆的一些特征部件点的位置信息来表示整个车辆的3D信息。因为车辆是刚体,有比较确定的形状的,作者推测可以从单张图片上推断出相应的车辆的3D信息。这些特征部件是怎样确定的呢?用回归方法。作者用了2个数据集,一个就是原始图片的训练数据集,但是标记出了每一个车辆的3D标定框。另外一个数据集是M=103个汽车模型,每个汽车N=36个特征部件的3D CAD数据。通过最后预测出来的3D框,和CAD数据集的3D框计算相似度来选出最有可能的汽车模型m,和相应的位置映射关系,那么就可以在图中计算出相应的特征部件的2D信息,以及这些点是否可见。
  2. 第二个突出贡献就是提出了Deep MANTA网络,正如之前摘要所述,它能够同时进行多任务预测输出。首先,该网络是借鉴了Region Proposal Network,同样预测出很多个比较粗糙的anchor box,只不过作者继续对这些box迭代2次,通过另外2个子网络进行计算,得出精细化的box。另外,该网络能同时预测多个任务,这就意味着同样的特征向量可以被用于多项任务,之间并无冲突。
  3. 第三个突出贡献就是前面第一点后半段提到过的这种标记方式。因为大家都知道深度学习依赖于大量的样本数据和标记信息。而作者通过一种被称为半自动标注的方式对图中的3D框的车辆的其他信息进行标注,这样就节省了非常多的人工劳动。

2. Deep MANTA方法介绍

  1. 输入图像经过Deep MANTA网络,输出相应的2D的带有分值的边框,车辆特征部件坐标,3D的模板相似度向量和可见性等信息。
  2. 推断过程:使用前面Deep MANTA网络的输出内容和3D CAD数据来恢复车辆3D的方向和坐标等信息。

2.1 3D形状和模板数据集

作者使用了有M = 103个汽车模型(如SUV,小轿车等)的数据,每个汽车模型被标记出N=36个特征部件的3D坐标。每一个汽车模型m在cononical视角下被表示为一个长度为N的向量,其中每一个值是该特征部件位置的3D坐标,如:

S¯3dm=(p1,p2,...,pN)

其中
pk=(xk,yk,zk)

是对应的第k个特征部件的3D坐标。
除了上面这个向量以外,对于每一个汽车模型,还有一个叫做3D模板的三元组,描述了该汽车模型对应的宽高长信息:
t¯3Dm=(wm,hm,lm)

参看图2,有相应的展示:

3D模型

如图,第一行是汽车模型在统一视角下的图例,第二行是相应的3D模板(宽高长)方框,第三行是每一个特征部件的位置,包括连线(shape vector)。

2.2 2D/3D车辆模型

这里是对真实的输入图像的每一个车辆建模,使用一个5元组来表述:

(B,B3d,S,S3d,V)

其中B=(cx,cy,w,h)是描述的图片中车辆的2D边框,(cx,cy)是边框的中心坐标,(w,h)是宽和高。
B3d=(cx,cy,cz,θ,t)是车辆的3D边框位置,θ是车辆在3D空间中相对于原先统一视角的方向,t是相应的3D模板,即宽高长。
S={qk=(uk,vk)}k{1,...,N}是描述该车辆每一个特征部件的2D坐标的向量。
S3d={pk=(xk,yk,zk)}k{1,...,N}是描述该车辆每一个特征部件的3D坐标的向量。
V={vk}k{1,...,N}是描述每一个特征部件的可见性的向量,一共4种取值:
- 在图片中能观测到,则可见;
- 被非该车辆的物体遮挡住;
- 被该车辆自身部件遮挡住;
- 不在图片中。
结合下图,就一目了然了:
2D/3D车辆模型

2.3 Deep MANTA网络

该网络是通过从粗糙到精细化的边框提取来检测车辆,并同时输出多个结果。

从粗糙到精细化的前向传播

首先使用RPN生成第一组的K个边框。从某一层feature map上提取了相应的区域之后,通过ROI池化生成固定大小的feature map(比如在Faster R-CNN就是用ROI得到7*7大小的map),这样池化后的区域再经过第二个网络(与第一个RPN网络有部分参数共享),得到第二次的K个候选边框。如此再经过一个类似的网络,得到第三次的K个候选边框B3={Bi,2}i{1,...,K}。这样搞3个网络的好处是比RPN更精确。另外一个与Faster R-CNN的不同点是作者是用的第一个卷积层的feature map来提取候选区域的,这样得到的特征的分辨率就更高。
具体请见图4
Deep MANTA前向传播

注意图中是用的第一个卷积层的高清晰度的feature maps作为3个网络的输入之一的。

多任务预测

Deep MANTA网络最后输出的包括第三层的边框B3={Bi,2}i{1,...,K},对于每一个边框Bi,还会输出对应的2D特征部件的坐标向量Si, 特征部件可见性向量Vi和3D的模板相似向量Ti。这里Ti={rm}m{1,...,M}, 其中rm=(rx,ry,rz)对应于用于第m个模板t¯3dm的3个维度的乘数,相乘之后使得模板计算出的真实3D模板值和检测到的值相当。那么这个向量Ti就表述了检测到的车辆的大小和模板大小之间的相似度。
接着,再使用非最大化压抑(Non-Maximum Suppression)来去除冗余的边框,这样就会最终检测到K个候选边框,其相应的属性为

{Bj,Sj,Vj,Tj}j{1,...,K}

也就是图4种对应的Deep MANATA网络数据的结果。

2.4 Deep MANTA网络推断

推断的时候需要结合3个输入来源,一个就是前面的Deep MANTA网络的输出结果,第二个是之前提到的3D的形状的数据集S¯3dm=(p1,p2,...,pN),最后一个是那个3D模板数据集t¯3Dm=(wm,hm,lm),以此来复原出车辆的3维信息。

对于给定的一个输出边框j,推断分为两步:

  1. 从M个模板中找出跟该边框最相似的一个模板;
  2. 通过2D/3D匹配给出相应的3D边框B3dj和3D特征部件的坐标S3dj

请参照图4的推断过程消化。

3. Deep MANTA训练过程

这里定义了该模型的每一个任务和相应的损失函数。由网络结构可知,一共有3个子网络,l{1,2,3},5个损失函数需要最小化:Lrpn,Ldet,Lparts,Lvis,Ltemp
其中,
Lrpn是Faster R-CNN中定义的RPN损失函数;
Ldet是检测(detection)的损失函数,一方面是衡量区分出是背景还是车辆的分类损失,另一方面衡量边框预测的回归损失;
Lparts是车辆特征部件定位的损失函数;
Lvis是车辆特征部件可见性的损失函数;
Ltemp是衡量模板(template)相似度的损失函数。

给定一个输入图像,该网络最小化全局函数:

L=L1+L2+L3

其中
L1=Lrpn

L2=iKL2det(i)+L2parts(i)

L3=iKL3det(i)+L3parts(i)+Lvis(i)+Ltemp(i)

这3个L就是每一个子网络对应的损失函数,可以看出越往后面的子网络,也就是越精细化的子网络,损失函数组成部分就更多,能学习到的信息就更多。

3.1 多任务损失函数

这里给出上面定义的损失函数的具体的解释。在第l个子网络输出的第i个边框用Bi,l=(cxi,l,cyi,l,wi,l,hi,l)表示,相应的用IoU选出的最接近的真实车辆边框B,真实车辆的特征部件形状向量S,真实可见性向量V和真实模板T也都可以得到。

以下用P表示标准的log softmax 损失,
R表示robust SmoothL1 损失函数。

Ldet检测损失函数

记第l个子网络的第i个候选边框被标记为Ci,l。如果该边框是车辆,则Ci,l=1,否则Ci,l=0,分类标准是根据该边框和最大IoU的真实边框的IoU值是否大于某一阈值。Deep MANTA网络预测的类别为Ci,l。目标边框回归向量Δi,l=(δx,δy,δw,δh)定义为:

δx=(cxi,lcx)/w

δy=(cyi,lcy)/h

δw=log(wi,l/w)

δh=log(hi,l/h)

而预测出的回归向量为
Δi,l,检测损失函数就可以定义为:
Ldet=λclsP(Ci,l,Ci,l)+λregR(Ci,lCi,l)

两个λ就是对应于分类和回归的正则化参数。

Lparts特征部件损失函数

首先,我们有真实的车辆部件形状向量S=(q1,...qN),然后把每一个特征部件的2D坐标相对于预测出来的车辆边框Bi,l做一个标准化就可以得到:

Si,l=(q¯1,...,q¯N)

q¯k=(ukcxi,lwi,l,vkcyi,lhi,l)

而预测出来的标准化后车辆部件形状向量为Si,l,因此损失函数定义为:
Llparts(i)=λpartsCi,lR(Si,lSi,l)

Lvis可见性损失函数

该损失函数只在最后一个子网络中需要计算,真实值为Vi,预测值为Vi,那么损失函数为:

Lvis(i)=λvisCi,3P(Vi,Vi)

Ltemp模板相似度损失函数

类似地,该损失函数也只出现在最后一个子网络中,真实值为Ti,预测值为Ti,那么损失函数为:

Ltemp(i)=λtempCi,3R(TiTi)

另外需要注意的是,如果某一个车辆候选框i不是被判定为正例,即Ci,l=0,那么与边框回归,特征部件定位,可见性,模板相似度相关的损失函数就都是0,因为没有必要对背景区域再进行车辆信息的优化。

3.2 半自动标注

前面说到会用半自动标注的方法来产生有用的标记信息,以此来训练Deep MANTA网络。该半自动标记方法需要先对真实图像中车辆进行3D边框的大致手动标记,并且还需要一个3D CAD的车辆模型数据集。该CAD数据集中包含了M = 103种车辆模型,每个车辆模型的3D边框也标记出来了,作者手动标记了每一个车辆模型相应的N = 36个特征部件点的位置,并连线得到车辆模型的特征轮廓。之后,对于每一个真实车辆的3D边框,都可以通过算法计算出跟哪一个车辆模型的3D边框更接近。选出相应的车辆模型后,该车辆模型连同相应的特征部件点和轮廓的位置都可以映射到原图像真实车辆的位置去。再根据可见性的网格来计算出特征点是否可见,如图5:

半自动标注

4 实验

作者使用常用于自动驾驶的KITTI数据集,来验证Deep MANTA网络方法,为了跟之前的一些论文的方法作比较,这里对验证集的划分也采用了两种方式。网络结构使用了GoogLenet和VGG16两种。网络也是预先用ImageNet数据集训练得到初始参数。在RPN网络中作者使用了7种长宽比,10种倍数作为参数,那么对于该特征图上每一个点都可以产生70个anchor box。在训练的时候,如果目标候选区域和真实区域重合率超过0.7,则被标记为正例。在实验中,除了Lparts=3以外其他正则化参数均设置为1。

4.1 2D车辆检测和方向判断结果

包括两个评判标准:
- mean Average Precision(mAP)
- average orientation similarity(AOS)

先看看在两个不同的验证集上的表现:
table_1 2D车辆检测val
最后两行是作者的Deep MANTA网络,分别是基于GoogLenet和VGG16的结构,都要比之前的方法要好,即便是3DOP这种使用了立体摄像的方法也不如作者的方法。

再看看测试集上的表现:
table_2 2D车辆检测test
这里VGG16的Deep MANTA全面胜出。

接着为了说明作者提出的基于原先RPN提取特征做出改进的从粗糙到精细化的特征提取方法和使用第一层卷积后的特征图确实是更有效的,作者做了3种模型的对比,一个是不使用特征改进,且和RPN一样使用最后一层低分辨率的特征图的模型(类似于原先的RPN),另一个是不使用特征改进,但是使用第一次卷积后的特征图的模型,最后一个是使用不断特征改进,且使用第一次卷积后的特征图的模型,即Deep MANTA采取的方式。

table_3

可以看到在验证集上,使用特征改进的机制,且使用第一次卷积后的特征图的重要性。

4.2 3D定位准确性

衡量的指标是Average Localization Precision(ALP),含义是设定一个阈值,如果某一个目标物的3D位置到真实位置的距离小于该阈值,则判定正确,以此计算出准确率。这里分别设定阈值为1米和2米来考察。注意表格中的3DOP方法不是使用的单个摄像头。
table_4 3D定位

4.3 3D模板预测,特征部件定位,可见性

针对这三个预测值,作者也进行了评估。类似的设定一些阈值,如果误差小于阈值,则认为判定正确,具体可查看原文,这里给出结果的表格:
table_5 3D模板预测

4.4 多任务和正则化参数的分析

参见下表,作者尝试用Deep MANTA预测更少的任务,看看结果如何。下表中,D表示检测任务,P表示的是特征部件的定位任务,V表示可见性,T表示模板相似度预测。那么表格中第一行就是只训练检测任务(Lparts=Lvis=Ltemp=0),因为只有检测任务,所以只能得出mAP。第二行是不训练可见性任务。从该表的结果可以看出两个结论:
- 通过增加需要学习的任务(即增加车辆描述信息)并没有显著影响学习的性能(可以看出前两列即检测和方向的判断更准确一点,但是3D定位差一些)。那么这就证明了多任务训练的理念:神经网络能够通过只学习一种特征表述,来对多种任务进行预测。
- 正则化参数Lparts对3D定位是很重要的,Lparts=3的时候,3D定位准确率提高了6%。

5. 结论

文章提出了一种通过单个摄像头,联合分析车辆的2D和3D信息的方法。该方法基于多任务CNN(即Deep MANTA)来提取出经过3层网络提炼后的更精细的边框。该网络同时预测了车辆各特征部件的位置(即使这些部件不可见),可见性,和3D模板相似度等信息。再通过2D/3D映射来复原车辆的方向和3D定位信息等。该方法用在KITTI数据集上比其他基于单个摄像头的方法要更优秀。另外一个可以拓展的地方是使用这样的框架来预测其他的刚性物体,来做一个多分类的网络。


阅读全文
1 0
原创粉丝点击