【转】Deep MANTA论文阅读笔记
转自:https://zhuanlan.zhihu.com/p/25996617
(注:阅读笔记有很多自己的主观判断和解释,会有错误与误解之处,也在持续修改中,希望大家能够共同讨论进步,加深理解。)
一、研究背景及思路:
在2D图像物体检测任务中,RCNN、Fast RCNN、Faster RCNN以及刚发布的mask-RCNN等算法,对于单张图像物体检测均取得了较好的效果,对自动驾驶场景分析有着重要的作用,但是对于3D真实世界场景依然描述不够。
在自动驾驶中,除了能够检测车辆、行人、障碍物以外,对于其物体速度、方向的检测与定位也是非常重要的。在这篇论文中,作者实现了仅通过单张图像进行:
(1)精确的车辆区域检测;(2)车辆部件(如车轮、车灯、车顶等)定位;(3)车辆部件可见性检测(车辆部件在图像中是否可见);(4)车辆3D模板匹配及3D定位。
为了实现上述多重任务,作者充分利用了车辆几何特征,将几何特征与语义特征(卷积神经网络中多层次特征)进行结合,下面将对从各方面进行解析:
二、算法流程及各环节基本原理:
下图是论文的流程示意图:
PhaseI : Deep MANTA Network
1、各符号含义解析:
论文第一个阶段是DeepMANTA Network,目标输出是:B、S、V、T。由于这篇论文采用了创新的研究思路,因此,有较多关于自定义变量的解释,如果不清晰界定各变量代表的物理含义,则无法理解网络的前后因果,所以,第一步,应该把作者对于相关符号的定义理解清楚。
(1)B :B 是box的首字母,表示物体边界框,在论文中有两种表示:2D物体区域表示、3D物体区域表示。
对于2D车辆边界框,使用四个变量进行表示:中心位置坐标(cx,cy),及边界框宽高(w,h),与Faster RCNN等物体检测方法定义边界框方式一致;
对于3D车辆边界框,使用五个变量进行表示:车辆中心位置3D坐标(cx,cy,cz),车辆方向θ,车辆实际长宽高t = (w,h,l)
(2)S :S 表示part coordinates,即物体关键部位(几何节点)的坐标,汽车的各部件节点如下图红色节点图所示:
我们可以通过这个节点图较为顺利的识别出车辆的基本形状与大小,能够较好地反映车辆信息。
(3)V :V 表示车辆各部件的可见性,这里作者定义了4 classes of visibility,分别是:
a. 可见:visible ifthe part is observed in theimage
b.被其他物体遮挡:occluded if the part is occluded by another object
c.被自身遮挡:self-occluded if the part is occluded by the vehicle
d. 截断:truncatedif the part is out of the image
我们可有效利用V,确定摄像机拍摄位置及车辆的3D坐标,因为只有在特定的位置观测,才能与V相符合。
(4)T:T表示模板相似性向量,3Dtemplate similarity vector,用以衡量图像中车辆与每个车辆模板的相似性,用rm = (rx, ry,rz)表示,分别对应着三个坐标轴对应的缩放因子。
上图第一行是车辆3D model,第二行是3Dtemplate,第三行是3D shape
2、Level 1 阶段 : region proposal network
首先,输入单张RGB图像,经过卷积层,得到FeatureMaps,这个Feature Maps在Level 1、Level 2、Level 3阶段中共享。
在Level 1阶段,将Feature Maps送入卷积层+RPN(使用Faster-RCNN论文中的方法),可生成系列物体区域坐标集,用B1表示,原理与Faster-RCNN方法一致。
2、Level 2 阶段: firstrefinement
将ROI对应区域的特征图,经过ROI Pooling(Fast-Rcnn),生成固定大小的regions,经过两步卷积(Levell卷积层+level2卷积层),再经过re-fined by offset transformations,生成系列物体区域坐标集,用B2表示。
3、Level 3 阶段:second refinement
重复Level2,生成系列物体区域坐标集,用B3表示。
论文作者分析了采用这种三层网络的原因:(1)克服大的物体大小变化,提供更高的准确度;(2)保持高分辨率,用于检测难以检测的车辆;
作者原话是:Thisprocedure differs than Faster-RCNN [33] in that our iterative refinement steps overcome the constraints of large object scale variations and providemore accurate detection. Furthermore,in our approach, ROI pooledregions are extracted on thefirst convolution feature maps for keeping high resolution to detect hard vehicles.
4、多任务预测/回归:Many-task prediction
对于B3中的每一个bounding box,同时输出其对应的:S,V,T,各符号含义在文章开头已经介绍。
这个环节比较神奇,作者也没有进行过多的描述,更是整篇论文的精髓所在。我在最初阅读论文的时候,无法理解网络为什么具有这么强大的功能,能够同时输出2D bounding box坐标B、2D 车辆部件坐标S、部件可见性V、车辆模型缩放因子T,那么它是如何实现的?这里给出我自己的初步理解,由于我缺乏网络训练实践,因此更多的形象感性的理解。
首先,回顾一下在Faster-RCNN中,如何输出boundingbox的,如何利用卷积层中的特征,回归出物体边界框?
我们都知道,物体边界框可由其中心点及边界框高宽唯一确定。那么,在得到conv feature map的基础上,对于featuremap中的一个像素点(如上图左边红色方框中蓝色中心点),选择某个anchor boxes(k个anchor boxes),如果我们回归出该anchor boxes与实际物体边界框的差别(两框中心点之差,以及两框形状之差,具体计算如下图公式所示),而anchor boxes的中心点坐标(上图左边红色方框中蓝色中心点)位置是已知的,我们就能计算出边界框坐标。
因此,上述“关于如何利用卷积层中的特征,回归出物体边界框”的问题,可以变为“如何利用卷积层中的特征,回归出该anchor boxes与实际物体边界框的差别”,这个问题我个人认为是Faster RCNN论文中的妙笔,这里我是这样理解的:
为了一步步理解,我们先假设图像中车辆边界框大小固定,即图像中车辆scale固定。
对于车辆而言,有低层特征与高层特征,这里不妨认为低层特征如边缘,高层特征如车轮、车灯、车窗。在车辆边界框大小固定的情况下,这些车辆的小零部件与车辆整体的相对位置及距离一般是固定的,如人脸与人体的相对位置,所以这个参数变换是可学习的,能够根据特征的位置与种类进行确定。
当检测框检测到汽车的所有特征,256-d的所在特征层会全部响应,此时回归值例如(0,0,1,1),表示没有偏移,大小一致;当检测框检测到前车轮(车灯+车轮)特征(红色线框内为anchor box所在区域),回归值例如(-5,-5,3,3),表示应该向左上偏移,放大三倍;
因此,能够利用卷积层中的特征,回归出该anchor boxes与实际物体边界框的差别。思想感觉与DPM算法有一点点的联系。
4、Deep MANTA Training:作者将refinement分为三个层次:,需要最小化五个损失函数,分别是:
,对于一张输入图像,网络联合最优最小化全局损失函数:
,其中:
PhaseII : Deep MANTA Inference
这部分实现了由2D坐标到3D空间确定的转换,用到了perspective-n-point-problem方面的计算机视觉基础知识,这方面还在继续学习,等深入理解以后再进行更新。
参考文献:
[1] Shaoqing Ren, Kaiming He, Ross B. Girshick, Jian Sun:Faster R-CNN: Towards Real-Time Object Detection with RegionProposal Networks. NIPS 2015: 91-99
[2] Florian Chabot, Mohamed Chaouch, Jaonary Rabarisoa, Céline Teulière,Thierry Chateau:DeepMANTA: A Coarse-to-fine Many-Task Network for joint 2D and 3D vehicle analysisfrom monocular image. CVPR 2017