Depth Map Prediction from a Single Image using a Multi-Scale Deep Network

深度估计:获得d,d其实就代表着由3D物体投射而来的2D图像中每个像素点与相机的实际距离。

目标:从单张图中找到深度相关性

model archetecture

  • 结构:用了两簇深度网络,一个在整个图像上做粗糙的全局预测,而另一个在局部精细化这个预测
  • 输入:这两簇网络都用在原始输入上,粗糙尺度网络的输出接到精细化网络的第一层之后的特征层中。这样局部网络可以编辑全局预测来合并精细尺度细节。

Global Coarse-Scale Network

  • 任务:用一个全局的场景视野预测总体的深度结构。
  • 上层网络是全连接,这样可以包含整张图片的视野;底层和中层设计成通过max-pooling在小的空间维度上结合图像不同块的信息。这样网络可以利用消失点,物体位置,空间对齐等信息。
  • 5个特征提取层(convolution and max-pooling)+2个全连接层
  • 最终输出的深度图大致是原图的1/4分辨率,是原图的中心部分裁出,包含输入图像的大部分
  • 输出的空间维度比顶部卷积特征层要大,允许顶部的全连接层在更大的区域(74×55 在NYU上)学习模板,效果更好

  • 1-6层都采用 ReLU激活函数,在第六层使用dropout防止过拟合。
  • Coarse network cnn的1-5层在ImageNet Classification task上进行预训练后的performance比随机初始化网络好一些。

Local Fine-Scale Network

  • 第二个fine-scale网络用来做精细化调整,比如目标物体的轮廓。
  • 除了第一层有池化层来学习边缘特征,其他层只包含卷积层。因此除了第一层,其他层不改变特征图大小。
  • 粗糙网络看到整个场景,而在精细化网络中一个输出单元的视野是输入的 45×45像素。最终输出的深度图大致是原图的 1/4 分辨率
  • 在第二层将粗糙网络的输出合并起来一起训练。粗糙网络输出作为一个外加的低层特征层。这样设计,粗糙预测是和第一个精细尺度网络有一样的空间形状(在池化之后)。
  • 所有的隐藏层使用ReLU激活函数,最后的卷积层是线性的用来预测目标深度
  • 整个训练是分两步走的,先训练好粗糙网络,再训练细化网络,训练细化网络时,不更新粗糙网络输出结果(不进行梯度回传)。
  • 第一层卷积中没有设置 padding,因此最终输出的深度图不包含原图最外层 4 像素宽度的区域

Scale-Invariant Error

  • 一般作者用预测值与真实值的绝对误差(欧式距离),本文用尺度不变误差
  • 找到场景的平均尺度就占了总误差的很大一部分,因此文章使用尺度不变误差来测量场景中各点之间的关系,而不考虑绝对全局尺度。
  • 对于一个预测的深度图 y 和ground truth y∗。n是总的像素点的个数,用i做索引。定义尺度不变均方误差(在对数空间)为:
  • 其中,代表估计深度图与真实深度图在log空间的平均差值,将该值叠加在每个像素点的对数深度误差上就使得最终的误差具有了全局的尺度不变性。估计的深度图全局增加或减小深度均不会改变误差大小。因此尺度不变误差可以看做均值化后差异
  • 对于任意预测 y ,\small e^\alpha 是最能与ground-trueth对应的尺度。即使估计的深度值 y 都乘上一个常数,计算的误差也不会变化,这就证明了该误差确实有尺度不变性。
  • 设定\small d_i=log(y_{i}) - log(y_{i}^{*}) 作为预测和ground-truth之间在第 i个像素的差,则:方程(2):2个pixel预测差值要与真实差值尽可能接近

方程(3)将距离衡量与L2联系起来,但是加了一个项\small \frac{1}{n^{2}} \sum_{i}d_i 如果它们错误是同一方向的,则这一项奖励它们;如果它们错误是反方向的,这一项将惩罚它们。这样一个不是最完美的估计会有一个更低的误差,当它们的错误方向一致。

Training Loss

  • \small \lambda∈[0,1]

        网络输出是 log y,也就是说最后线性层预测了对数深度

        λ=0会减少element-wise L2;当 λ=1,这就变成了尺度不变损失。

        取λ=0.5能产生好的绝对尺度预测,可以提升有质量的输出。

  • 在训练中作者发现大部分真实的深度图中都含有 missing values,特别是在物体的边缘、窗户以及镜面物体上,因此作者将这些位置的像素点分割出来,并仅在有效点上计算损失。

Data Augmentation

  • 缩放:输入和目标图像按s∈[1,1.5]缩放,深度除以s
  • 旋转:输入和目标由r∈[-5°,5°]旋转
  • 平移:输入和目标被随机裁剪到input的大小
  • 颜色:输入值在全局乘以随机RGB值c∈[0.8,1.2]^3
  • 翻转:输入和目标以0.5的概率水平翻转

图像的缩放和平移不保留场景的空间几何关系,需要同时修正深度信息。图像缩放时,将深度图除以s即可修正(使图像变为原来的s倍)。图像平移时不容易固定深度信息,不过提供这样的额外的数据给网络可以提升网络性能。其他数据增强方式不改变原来的深度信息。

参考:论文阅读:Depth Map Prediction from a Single Image using a Multi-Scale Deep Network - 知乎 (zhihu.com)(51条消息) 学习笔记-Depth Map Prediction from a Single Image using a Multi-Scale Deep Network_linyi_pk的博客-CSDN博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值