论文Depth Map Prediction from a Single Image using a Multi-Scale Deep Network详解

#论文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)=n1i=1n(logyilogyi+α(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(logyilogyi)
这个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=1n(logyilogyi+n1i=0n(logyilogyi))2=n1i=1n(logsyilogyi+n1i=0n(logyilogsyi))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=1n(logsyilogyi+n1i=0n(logyilogsyi))2=n1i=1n(logyilogyi+n1i=0n(logyilogyi)+logsn1i=1nlogs)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 logsn1i=1nlogs=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=logyilogyi 带入得到:
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=1n(logyilogyi+n1i=0n(logyilogyi))2=n1i=1n(din1j=1ndj)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((logyilogyj)(logyilogyj))2
为了简化让 d i = l o g y i − l o g y i ∗ d_i=logy_i-logy_i^* di=logyilogyi 带入上式:
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)=n1idi2n21i,jdidj=n1idi2n21(idi)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((logyilogyj)(logyilogyj))2=n21i,j(didj)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,jdi2=n21idij1=n1idi2
因此得证。

最后的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)=n1idi2n2λ(idi)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?

  • 9
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值