读论文笔记:无监督的卷积神经网络对单目视图的深度估计


Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue
作者R Garg , KBG Vijay , G Carneiro ,I Reid
论文原文:https://www.researchgate.net/publication/301292064_Unsupervised_CNN_for_Single_View_Depth_Estimation_Geometry_to_the_Rescue
无监督学习一直被认为是人工智能能够在真实世界中真正有效自我学习的研究方向,下面介绍一篇论文的是思想启发于自动编码器,应用于几何机器视觉中的深度估计,该方法在三维重建,机器人SLAM导航中,富有应用价值。该论文应该是首次提出无监督的卷积神经网络的方法进行单视觉的深度(距离)估计。训练数据用KITTI。类似于自动编码器,编码阶段,生成一个叫深度视图的矩阵(depth Map),解码阶段,不同于自动编码器的解码用神经网络,而是传统的双目摄像头测距原理重构源输入图像,对比原输入图像,构成目标函数,反向训练网络。最终输出一个深度矩阵(depth map),代表对应输入图像中的某个点的摄像机到真是物体之间的深度。
数据集:KITTI 是Karlsruhe Institute of Technology 和Toyota Technological Institute at Chicago 的一个项目,通过小汽车搭载各种传感器(激光传感器,彩色摄像头,变焦摄像头,GPU等传感器,传感器分布如图1所示)采集的城市街道,高速路,乡道等数据,包括立体几何数据,光流,立体目标检测等数据,主要应用于智能驾驶模型研究与训练。本文的论文采用的是两个距离的固定摄像头拍摄的图像对作为训练数据(理解这个很关键)。关于数据集具体请看:
http://www.cvlibs.net/datasets/kitti/index.php

读论文笔记:无监督的卷积神经网络对单目视图的深度估计_第1张图片

图1 数据采集车传感器的分布图
网络架构模型:如图2所示,该论文的主题思想基本全部在这张图里了,首先理解训练数据是成对出现的,通过固定的双目摄像头拍摄得到,通过双目摄像头测距原理,有了这对图像,就可以计算真实的物体与摄像机的距离,(下文会有解释),也就是通过双目摄像头图片对作为导师训练神经网络,让模型学会估算单张图片的物体深度。所以就不需要人工标注数据了,这种无监督本质也是一种有导师的学习,但是这种方法很值得借鉴,因为流式视频或者流式数据,往往有很多内在的关系可以作为训练的导师,比如FACEBOOK
的大牛们2017年4月份提的一篇paper《Learning Feature by Watching Objects
Move》,利用视频流中的光流信息作为训练导师提出的一种无监督方法,在物体语义分割上,不失为一篇佳作,作者之一是Ross Girshick
(RCNN,FasterRCNN)。

读论文笔记:无监督的卷积神经网络对单目视图的深度估计_第2张图片

                       图2 该算法的训练流程图

图2中,Left Image
这里写图片描述为输入图像,经过Deep
CNN(这里的CNN是可以是任意网络结果的,论文中采用了何凯明的resNet50),输出一个深度矩阵(depthMap,它的具体格式在KITTI的ground truth 中能找到),然后通过与Rigth Image这里写图片描述 结合重构出源图像Warp Image 这里写图片描述,最够通过计算重构出来的源图像这里写图片描述与输入图像这里写图片描述的的光流误差,作为目标函数,方向训练模型,直至收敛。
至于论文是怎么通过DepthMap 与这里写图片描述重构出源图像的近似图像这里写图片描述,论文应该是因为过于简单,没有详细描述:
我在这里补充一下,如图3所示,摄像头的焦距为这里写图片描述,两个摄像头的固定距离为这里写图片描述,真是世界的点到摄像机的距离为d,其在左侧摄像头的投影成像位置这里写图片描述,在右侧摄像头的投影成像位置这里写图片描述,至于,这里写图片描述这里写图片描述则为成像平面的中点位置,像素数字上是等值的,根据双目摄像头测距原理,有
这里写图片描述
(1)

这里写图片描述 (2)
这里写图片描述 (3)
综合(1)(2)(3)式子,可以求得到位置点偏差这里写图片描述,所以才有图2中的公式这里写图片描述重构源输入。
读论文笔记:无监督的卷积神经网络对单目视图的深度估计_第3张图片
图3 双摄像头模型俯视图
实现:作者公布了源码:
https://github.com/Ravi-Garg/Unsupervised_Depth_Estimation
作者是用caffe实现的,只提供相关文件,我把它整合到caffe项目中了,编译通过。整个项目源码在我的github仓库中:
https://github.com/panzhenfu/caffe_Unsupervised_Depth_Estimation
其模型文件可以在源码中找到,用NetScope小工具画出来如图4所示(只截取最下面的部分,上面部分除了数据源,其他跟resNet50一模一样的),可以看出,该网络模型除了实现如图展示的部分之外,还添加了两个L1范式的损失值。作者说这是为了平滑参数用的,相当于正则化。
读论文笔记:无监督的卷积神经网络对单目视图的深度估计_第4张图片
图4 模型的部分网络图
总结:本文讲解了,该算法的核心内容,关于其中的上采样,以及平滑depthMap方法,这里就不详细讲解了,看论文应该很容易就能看懂。祝各位好运。

你可能感兴趣的:(深度学习,slam,单目测距)