一、基本信息
标题:Depth Map Prediction from a Single Image using a Multi-Scale Deep Network
时间:2014
出版源:NIPS
论文领域:单目深度估计、深度学习、CNN
引用格式:Eigen D, Puhrsch C, Fergus R. Depth map prediction from a single image using a multi-scale deep network[C]//Advances in neural information processing systems. 2014: 2366-2374.
二、摘要
单目视图估计深度比较难,在本文中通过使用两个深度网络堆栈来解决这个问题:
1.基于整个图像进行粗略的全局预测
2.局部优化这个预测
使用尺度不变误差测量深度关系。
二、研究背景
大多数研究基于多目或者运动,比较少数基于单目深度的研究。但是大多数web和社交媒体上的图片是单目的。
单目没有被用于立体可能原因:
- 不够精确
2个技术不合适的问题:
- 3D到2D有无数种可能,虽然大多数可以排除,但是总体是不精确的
- 尺度变换(本文使用尺度不变的误差解决 scale-invariant error)
本文直接使用神经网络进行深度回归预测。
早期研究:
- Make3D 线性回归和MRF,依赖于图像的水平对齐,参数少。将图像区域划分为几何结构(地面、天空、垂直),简单的场景三维模型。
- 语义标签对应,需要手工特征和超像素
- 基于SIFT光流使用knn方法,需要对齐
- 在图像补丁上训练了一个因子自动编码器来从立体序列预测深度;然而,这依赖于立体声提供的局部位移
- 还有几种基于硬件的单图像深度估计解决方案
三、创新点
2个网络:
1.基于整个图像进行粗略的全局预测网络
2.局部优化这个预测的网络
卷积输出计算公式,具体看这里:
设图像大小:n*n, 步长:s,卷积核大小:f,padding:p
(
n
+
2
p
−
f
s
+
1
)
∗
(
n
+
2
p
−
f
s
+
1
)
\left(\frac{n+2 p-f}{s}+1\right) *\left(\frac{n+2 p-f}{s}+1\right)
(sn+2p−f+1)∗(sn+2p−f+1)
全局粗尺度网络
(上图上方网络,该网络的输出作为局部细化网络的输入)
这不就是AlexNet ?再分析分析一波
- 96 卷积(池化) 1/2
输入:304 * 228 * 3
卷积核大小:11 * 11 *3 步长:4(这个是11x11核的中心视野) 数目:96
输出:75 * 56 * 96
(304 - 11)/4 +1 = 74.25,取了上整75
(228- 11)/4 +1 = 55.25,取了上整56
ReLu激活
池化层
核大小:2 * 2 * 1 步长:1
输出:38 * 28 * 96
(75 - 2)/2 + 1 = 37.5 ,取了上整38
(56- 2)/2 + 1 = 28
.
.
.
- 256 卷积(池化) 1/4
- 384 卷积
- 256 卷积
- 256 卷积
- 4096 全连接
- 1 全连接
没具体看论文实验,不过上次分析了AlexNet,可以看到这个网络就是AlexNet,网络都一样,2012提出,本论文2014应用倒也合理。
不过仔细发现这里只用了2次池化,第5层没有池化。所以输出对于输入时1/4。
局部细化网络
- Fine1卷积 (池化) 63
大小:9 * 9 数目:63 步长:2 - Fine2 组合
输入1:74 * 55(来自Coarse网络)
输入2: - Fine3 卷积
大小:5 * 5 数目:64 - Fine4 卷积
大小:5 * 5 数目:1
尺度不变误差
定义:
D
(
y
,
y
∗
)
=
1
2
n
∑
i
=
1
n
(
log
y
i
−
log
y
i
∗
+
α
(
y
,
y
∗
)
)
2
D\left(y, y^{*}\right)=\frac{1}{2 n} \sum_{i=1}^{n}\left(\log y_{i}-\log y_{i}^{*}+\alpha\left(y, y^{*}\right)\right)^{2}
D(y,y∗)=2n1i=1∑n(logyi−logyi∗+α(y,y∗))2
α
(
y
,
y
∗
)
=
1
n
∑
i
(
log
y
i
∗
−
log
y
i
)
\alpha\left(y, y^{*}\right)=\frac{1}{n} \sum_{i}\left(\log y_{i}^{*}-\log y_{i}\right)
α(y,y∗)=n1i∑(logyi∗−logyi)
d
i
=
log
y
i
−
log
y
i
∗
d_{i}=\log y_{i}-\log y_{i}^{*}
di=logyi−logyi∗
D
(
y
,
y
∗
)
=
1
2
n
2
∑
i
,
j
(
(
log
y
i
−
log
y
j
)
−
(
log
y
i
∗
−
log
y
j
∗
)
)
2
=
1
n
∑
i
d
i
2
−
1
n
2
∑
i
,
j
d
i
d
j
=
1
n
∑
i
d
i
2
−
1
n
2
(
∑
i
d
i
)
2
\begin{aligned} D\left(y, y^{*}\right) &=\frac{1}{2 n^{2}} \sum_{i, j}\left(\left(\log y_{i}-\log y_{j}\right)-\left(\log y_{i}^{*}-\log y_{j}^{*}\right)\right)^{2} \\ &=\frac{1}{n} \sum_{i} d_{i}^{2}-\frac{1}{n^{2}} \sum_{i, j} d_{i} d_{j}=\frac{1}{n} \sum_{i} d_{i}^{2}-\frac{1}{n^{2}}\left(\sum_{i} d_{i}\right)^{2} \end{aligned}
D(y,y∗)=2n21i,j∑((logyi−logyj)−(logyi∗−logyj∗))2=n1i∑di2−n21i,j∑didj=n1i∑di2−n21(i∑di)2
就是说有2个配对点i和j,i位置有预测深度
y
i
y_i
yi和真实深度
y
i
∗
y_i^*
yi∗,j位置有预测深度
y
j
y_j
yj和真实深度
y
j
∗
y_j^*
yj∗, 如果
d
i
d
j
>
0
d_i d_j > 0
didj>0,说明预测同向,误差会更小,否则误差更大。
损失函数就是上述式子最后一项:
L
(
y
,
y
∗
)
=
1
n
∑
i
d
i
2
−
λ
n
2
(
∑
i
d
i
)
2
L\left(y, y^{*}\right)=\frac{1}{n} \sum_{i} d_{i}^{2}-\frac{\lambda}{n^{2}}\left(\sum_{i} d_{i}\right)^{2}
L(y,y∗)=n1i∑di2−n2λ(i∑di)2
作者 λ = 0.5 \lambda=0.5 λ=0.5
数据增强
- 大小缩放 s ∈ [ 1 , 1.5 ] s\in[1, 1.5] s∈[1,1.5],深度也缩放s,注意:会改变空间结构,因为缩放s倍,不能保证镜头移动s倍
- 旋转
- 平移(随机裁剪),注意:会改变空间结构,平移后,深度值还是平移之前的,但是这种作者说操作有利于网络-_-
- 颜色
- 水平翻转
四、实验结果
L2 scale-inv是使用了尺度不变损失函数结果,虽然没有数值上的改进,但是观察图片可以看到细节有所改善。
五、结论与思考
作者结论
从单个图像预测深度估计值是一项具有挑战性的任务。但是,通过组合来自全局和本地视图的信息,可以很好地执行它。我们的系统通过使用两个深度网络来完成这一任务,一个用于估计全局深度结构,另一个用于在局部进行更精细的解析。我们为NYU Depth和KITTI数据集实现了一种新的最先进的技术,有效地利用了完整的原始数据分布。在未来的工作中,我们计划扩展我们的方法,以纳入更多的三维几何信息,如曲面法线。Fouhey等人在预测法线贴图方面取得了令人鼓舞的结果。[2]将法线贴图与深度贴图结合起来,可以提高[16]的整体性能。我们还希望通过不断地应用规模更小的局部网络,将深度映射扩展到完整的原始输入分辨率。
总结
使用卷积网络预测深度,使用了2个网络,一个用于全局,一个用于局部细节。