《Monocular 3D Object Detection for Autonomous Driving》是在CVPR2016上发表的文章。
首先用两段话总结一下这篇文章。
接下来,我们先按照代码的顺序进行工作的阐述(非文章顺序)。
首先作者将三维空间离散化为立体像素边长为0.2m的三维模型,并提出了两个假设
基于以上的这两个假设,作者基于以下的采样策略来对物体候选框(candidates)进行密集的采集。
以上的采样方法可以保证每张图片中的每个地平面采集到14000左右个候选框,同时以上的去除框的操作会去除掉近28%的物体框。
由于作者在三维空间中采集物体框采用的是穷举的方式,因此会采集到大量的物体框,如果使用普通的方法对所有的物体框提取特征,会耗费大量的时间,因此作者认为这样的情况下,必须使用积分图进行特征提取,但是并不是所有的特征都可以使用积分图的形式来计算。
在这一部分中,作者用 y = ( x , y , z , θ , c , t ) \mathbf{y}=(x,y,z,\theta,c,t) y=(x,y,z,θ,c,t)来表示一个3D物体框,前三项 ( x , y , z ) (x,y,z) (x,y,z)表示物体框的中心, θ \theta θ表示物体框的方位角, c ∈ C c\in C c∈C表示物体框的类别。在该方法中,作者使用的是KITTI数据集,只有三个类别,汽车,行人与非机动车。
作者将予以信息,位置先验信息,上下文信息及形状信息融合进行评分。
作者首先利用几个先前的方法提取出场景的语义分割图。
作者利用《Conditional random fields as recurrent neural networks》提出的方法在PASCAL和COCO数据集上预训练模型,对车辆类别进行分割。并利用预训练的SegNet对行人与非机动车辆进行分割。作者没有对这两个模型在KITTI上进行fine-tune,但是利用了KITTI中的道路标注数据集对《Fully connected deep structured networks》的工作进行了fine-tune。
得到了语义分割图后,作者提出了两个语义分割特征,分别如下。
(1)
(2)
(1)式表示的是每个Proposal(物体框)内部多大比例的像素属于类别c。
(2)式表示的是每个Proposal(物体框)内部多大比例的像素属于c以外的其他类别(仅车辆,行人,非机动车辆这三类)。
该特征很容易利用积分图去计算。
作者将segmentation的轮廓提取出来,在2D的候选物体包围框中划分了两种栅格,其中,一种栅格图含有一个栅格,另一种栅格图含有 K × K K\times K K×K个栅格,作者统计这些栅格中每个栅格内的轮廓像素数量。因此,一个2D候选框共可以计算得到 1 + K × K 1+K\times K 1+K×K维的形状特征。
同样的,这些特征也可以利用积分图来计算。
作者利用《Instance-level segmen- tation with deep densely connected mrfs》- CVPR2016与《Monoc- ular Object Instance Segmentation and Depth Ordering with CNNs》 - ICCV2015的工作对图像进行了实例分割,并对他们的网络进行了重新训练,并仅用于汽车这一类。
由于汽车在道路上,那么汽车下方的区域应该是道路。因此,作者用2D物体包围框的下方的1/3高度的区域作为上下文区域,利用《The role of context for object detection and se- mantic segmentation in the wild》- CVPR2014提出的方法,对该区域提取语义分割特征
作者使用核密度估计(KDE)学习物体的位置先验信息,其中固定位置偏差为4m,2D图像位置偏差为两个像素。并使用KITTI中提供的3D地面的数据集边界框学习3D先验。
作者在文中用了很少的篇幅对学习的过程进行讲解,只是描述了利用以上计算得到的特征,并利用结构化SVM学习了一个回归模型,回归出3D包围框与Groundtruth之间的IoU。
在代码中,作者将这部分的工作单独独立出来,由于特征计算需要预留200G的空间,因此,我也没有重新运行SSVM训练的过程。
在这一步中,作者对上一步得到的高分的候选框进行再次打分和分类,得到候选框的类别,精确位置以及方向信息。
在网络上,本文作者使用了一个与《3d object proposals for accurate object class detection》- NIPS2015相同的而网络结构,在最后一层卷积层之后,将网络分为两个分支,一个分支用于对Proposal的区域特征进行提取,另一个分支用于对以proposal为中心的上下文区域(以1.5为因子扩大的区域)的特征进行描述。该做法与《SegDeepM: Exploiting segmentation and context in deep neural networks for object detection》- CVPR2015相同。这两个分支都由一个RoI pooling层和两个全连接层组成。其中RoI是由2D包围框在最后一个卷积层的特征图上的Proposal区域以及上下文区域获得的。
最后该网络用多任务loss来联合预测包围框的类别,包围框的偏移,物体的方向。
文章大概的做法如上,内部还牵扯到非常多的细节问题。
看完文章后,并不一定能有很大的收获,因为文章的结构有些难以捉摸。但是,看完了代码以后,可以较为清晰的了解到整体的作者思路。
本文的主要思路就是利用3D包围框与2D包围框之间存在的映射联系,用2D空间中的特征来描述3D包围框,从而达到,利用之前较为成熟的现有方法,完成一项新类型研究的探索。同时,作者的特征提取时间损耗极低,在一张图像中对81万个Proposal同时提取特征的时间损耗仅有不到1.8s。对于小障碍物研究来说具有很高的借鉴意义,但是目前存在的问题在于,由于缺少3D小障碍物的数据集,因此该方法较难直接应用于3D小障碍物检测。