赞
踩
#论文markdown
目标:论文理解
##论文序列
1)Depth Map Prediction from a Single Image using a Multi-Scale Deep Network
**目标:**单幅图像->深度图
网络架构方法:global network; refined network
global network: predicts the depth of the scene at a global level
refined network: refine the depth within local regions by fine-scale network
整体网络的架构示意图:
为什么能通过rgb图像推测出深度图?
我的理解是通过数据中语义信息,比如当通过rgb图片推断里面是建筑,然后和统计学中(数据中的所有建筑)建筑的大小进行匹配,这样建筑大小就知道了(网络训练可以得到这种关系),然后再通过建筑大小和其它物体大小(人的视角是越是远,建筑越小,训练可以建立线性相关),就能推断出大概的距离建筑的距离等等。
为什么使用这种架构?
通过不断的增加感受野(通过增加卷积的层数),这样才能获取整个图片中的语义信息,比如图像中的整个建筑等等。但是因为卷积中的pooling等等,在获取整个图像的语义信息的同时,失去了细节信息。所以需要一个层数不深的网络来推测说细节深度。但是层数不深不能获取高级语义信息。所以是用两层的架构。
为什么refined network 能够优化 global network predict 的 depth?
图片中的global network的output的Coarse feature map 直接Concatenate 到refined network的第二layer层输出的feature map。这样就用Coarse feature map用于监督refined network的输出。论文中的是两个feature map的resolution一致,它们是在channel维度上concatenate在一起。
为什么Concatenate能够让coarse feature map 来对refined network 进行监督
查看一下global network 网络的输出:
可以看到,图像中它还保留了相对的空间位置,只是细节没有了。它的每个像素的值(depth value)能够大概率比较准确,同时refined network也保证了空间的相对位置。这样就保证了coarse feature map 能够和refined network的网络层的feature map进行直接concatenate。这样coarse feature map 的值能够作为一个非常重要的特征,为refined feature map 提供一个guided 值。 因为refined network层数低,它能够保证图像的边界(低级语义)。这样就可以refine 原来的depth value。
##Loss 函数设计
为什么设立Scale-Invariant Error
网络中的ground truth 数据的depth value各个维度不一样(有些scale小,有些大),可能导致训练出现混乱,误差较大。这些都不利于general(同样的场景可能导致)。需要设计一个scale-invariant的loss 函数。后续看论文发现loss不是这样的都是用scale-invariant。它只是作为一个权重罢了,这个因素并非总是需要。
怎么设计Scale-Invariant Error的loss 函数
predict场景中的depth value 在 scale 变化时候。 loss不会变化。
论文给出如下:
D
(
y
,
y
∗
)
=
1
n
∑
i
=
1
n
(
l
o
g
y
i
−
l
o
g
y
i
∗
+
α
(
y
,
y
∗
)
)
2
D(y, y^*) = \frac{1}{n}\sum_{i=1}^{n}{(logy_i - logy_i ^* + \alpha(y, y^*))^2}
D(y,y∗)=n1∑i=1n(logyi−logyi∗+α(y,y∗))2
其中
α
(
y
,
y
∗
)
=
(
1
)
n
∑
i
(
l
o
g
y
i
∗
−
l
o
g
y
i
)
\alpha(y,y^*) = \frac{(1)}{n} \sum_i (logy_i^*-logy_i)
α(y,y∗)=n(1)i∑(logyi∗−logyi)
这个loss函数具有scale 不变性,意思是,当预测出
y
y
y(表示预测出的depth 值)它乘以任意的
s
s
s(scale)时候,loss不变,证明公式如下:
D
(
y
,
y
∗
)
=
D
(
s
y
,
y
∗
)
(1)
D(y,y^*) = D(sy,y^*) \tag{1}
D(y,y∗)=D(sy,y∗)(1)
展开上面的公式(1)得到如下:
1
n
∑
i
=
1
n
(
l
o
g
y
i
−
l
o
g
y
i
∗
+
1
n
∑
i
=
0
n
(
l
o
g
y
i
∗
−
l
o
g
y
i
)
)
2
=
1
n
∑
i
=
1
n
(
l
o
g
s
y
i
−
l
o
g
y
i
∗
+
1
n
∑
i
=
0
n
(
l
o
g
y
i
∗
−
l
o
g
s
y
i
)
)
2
\frac{1}{n}\sum_{i=1}^{n}{(logy_i - logy_i^* + \frac{1}{n} \sum_{i=0}^{n}(logy_i^* - logy_i))^2} \\ = \frac{1}{n}\sum_{i=1}^{n}{(logsy_i - logy_i^* + \frac{1}{n} \sum_{i=0}^{n}(logy_i^* - logsy_i))^2}
n1i=1∑n(logyi−logyi∗+n1i=0∑n(logyi∗−logyi))2=n1i=1∑n(logsyi−logyi∗+n1i=0∑n(logyi∗−logsyi))2
因为
l
o
g
s
y
i
=
l
o
g
y
i
+
l
o
g
s
(2)
logsy_i = logy_i + logs \tag{2}
logsyi=logyi+logs(2)
带入上式,上式的右边得到如下:
1
n
∑
i
=
1
n
(
l
o
g
s
y
i
−
l
o
g
y
i
∗
+
1
n
∑
i
=
0
n
(
l
o
g
y
i
∗
−
l
o
g
s
y
i
)
)
2
=
1
n
∑
i
=
1
n
(
l
o
g
y
i
−
l
o
g
y
i
∗
+
1
n
∑
i
=
0
n
(
l
o
g
y
i
∗
−
l
o
g
y
i
)
+
l
o
g
s
−
1
n
∑
i
=
1
n
l
o
g
s
)
2
\frac{1}{n}\sum_{i=1}^{n}{(logsy_i - logy_i^* + \frac{1}{n} \sum_{i=0}^{n}(logy_i^* - logsy_i))^2} \\ = \frac{1}{n}\sum_{i=1}^{n}{(logy_i - logy_i^* + \frac{1}{n} \sum_{i=0}^{n}(logy_i^* - logy_i) + logs - \frac{1}{n}\sum_{i=1}^{n} logs)^2}
n1i=1∑n(logsyi−logyi∗+n1i=0∑n(logyi∗−logsyi))2=n1i=1∑n(logyi−logyi∗+n1i=0∑n(logyi∗−logyi)+logs−n1i=1∑nlogs)2
因为
l
o
g
s
−
1
n
∑
i
=
1
n
l
o
g
s
=
0
logs - \frac{1}{n}\sum_{i=1}^{n} logs = 0
logs−n1i=1∑nlogs=0
所以上式中右边项可以去掉。这样等式(1)成立。
如果简化上面的式子
D
(
y
,
y
∗
)
D(y,y^*)
D(y,y∗),用
d
i
=
l
o
g
y
i
−
l
o
g
y
i
∗
d_i=logy_i-logy_i^*
di=logyi−logyi∗ 带入得到:
1
n
∑
i
=
1
n
(
l
o
g
y
i
−
l
o
g
y
i
∗
+
1
n
∑
i
=
0
n
(
l
o
g
y
i
∗
−
l
o
g
y
i
)
)
2
=
1
n
∑
i
=
1
n
(
d
i
−
1
n
∑
j
=
1
n
d
j
)
2
\frac{1}{n}\sum_{i=1}^{n}{(logy_i - logy_i^* + \frac{1}{n} \sum_{i=0}^{n}(logy_i^* - logy_i))^2} \\ = \frac{1}{n}\sum_{i=1}^{n}{(d_i - \frac{1}{n}\sum_{j=1}^{n}d_j)^2}
n1i=1∑n(logyi−logyi∗+n1i=0∑n(logyi∗−logyi))2=n1i=1∑n(di−n1j=1∑ndj)2
除了这个loss函数,另一个loss设计是训练的预测中,生成的depth值,像素之间的关系和ground truth像素之间的关系尽量一致。这个保证了场景中depth 值的scale一致。内部尽量不会出现scale的问题。它的设计如下:
D
(
y
,
y
∗
)
=
1
n
2
∑
i
,
j
(
(
l
o
g
y
i
−
l
o
g
y
j
)
−
(
l
o
g
y
i
∗
−
l
o
g
y
j
∗
)
)
2
D(y,y^*) = \frac{1}{n^2}\sum_{i,j}{((logy_i - logy_j) - (logy_i^* - logy_j^*))^2}
D(y,y∗)=n21i,j∑((logyi−logyj)−(logyi∗−logyj∗))2
为了简化让
d
i
=
l
o
g
y
i
−
l
o
g
y
i
∗
d_i=logy_i-logy_i^*
di=logyi−logyi∗ 带入上式:
D
(
y
,
y
∗
)
=
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
D(y,y^*)=\frac{1}{n}\sum_{i}d_i^2 - \frac{1}{n^2}\sum_{i,j}d_id_j = \frac{1}{n}\sum_{i}d_i^2 - \frac{1}{n^2}(\sum_id_i)^2
D(y,y∗)=n1i∑di2−n21i,j∑didj=n1i∑di2−n21(i∑di)2
为了证明上式。我们得到:
D
(
y
,
y
∗
)
=
1
n
2
∑
i
,
j
(
(
l
o
g
y
i
−
l
o
g
y
j
)
−
(
l
o
g
y
i
∗
−
l
o
g
y
j
∗
)
)
2
=
1
n
2
∑
i
,
j
(
d
i
−
d
j
)
2
=
1
n
2
∑
i
,
j
(
d
i
2
+
d
j
2
)
+
1
n
2
∑
i
,
j
(
d
i
d
j
)
D(y,y^*) \\ = \frac{1}{n^2}\sum_{i,j}{((logy_i - logy_j) - (logy_i^* - logy_j^*))^2} \\ = \frac{1}{n^2}\sum_{i,j}(d_i-d_j)^2 \\ = \frac{1}{n^2}\sum_{i,j}(d_i^2 + d_j^2) + \frac{1}{n^2}\sum_{i,j}(d_id_j)
D(y,y∗)=n21i,j∑((logyi−logyj)−(logyi∗−logyj∗))2=n21i,j∑(di−dj)2=n21i,j∑(di2+dj2)+n21i,j∑(didj)
因为
1
n
2
∑
i
,
j
d
i
2
=
1
n
2
∑
i
d
i
∑
j
1
=
1
n
∑
i
d
i
2
\frac{1}{n^2}\sum_{i,j}d_i^2 = \frac{1}{n^2}\sum_{i}d_i\sum_{j}1 = \frac{1}{n}\sum_{i}d_i^2
n21i,j∑di2=n21i∑dij∑1=n1i∑di2
因此得证。
最后的loss函数设置为:
L
(
y
,
y
∗
)
=
1
n
∑
i
d
i
2
−
λ
n
2
(
∑
i
d
i
)
2
L(y,y^*) = \frac{1}{n}\sum_{i}d_i^2 - \frac{\lambda}{n^2}(\sum_id_i)^2
L(y,y∗)=n1i∑di2−n2λ(i∑di)2
当
λ
=
1
\lambda=1
λ=1 发现为上式,它是scale-invarant。当为0时候后,就是传统的一一对应进行逼近。所以设置这些loss函数只是将两者融合在一起。
1)论文中的直接将global network的最后输出feature map作为特征图和refined network进行concatenate, 没有考虑融合global network中其它层的feature map,它们也可以融合到refined network中。
2)论文中单幅图像推出深度图,如果多视角进行推出深度图是否有新的方法,思路不同,类似mvsnet?
3)论文中的网络没有考虑,不同网络层输出的特征图之间的关系,它们符合一定的关系,如U-Net?
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。