论文题目:Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation
论文地址:https://arxiv.org/abs/1805.09806
项目地址:https://research.nvidia.com/publication/2018-05_Adversarial-Collaboration-Joint
Github:https://github.com/anuragranj/cc
1. 摘要
在同一个场景中,单目视觉深度信息、相机运动、光流、运动分割这些因素往往是相互联系、相互制约的,基于这一点作者提出了一种无监督方法,同时对这几种因素进行学习,并用他们的相互关系进行约束和增强,以此简化各个单独的问题。
2. 介绍
作者提出了一种网络 Competitive Collaboration (CC)。这个网络有两个 “玩家”,一个应用深度信息 D 和相机运动信息 C 来生成静态区域,称为 R;另一个生成运动区域的图像,称为 F,他们之间是竞争学习的关系。他们学习的效果由 “仲裁者” M 来实现,M是一个运动分割网络,将图片分割为运动部分和静态部分。但是M也是需要训练的,这个时候就需要R和F联合协作来训练M。
3. Competitive Collaboration
下面对这个网络进行一些数学上的表达。
3.1 整体思路
考虑一个训练集D={Di:i∈N}\mathcal{D}=\{\mathcal{D}_i : i \in \mathbb{N} \}D={Di:i∈N},训练分为两个阶段:
- 固定仲裁者 M,用 E1E_1E1 作为 loss 训练 R 和 F
E1=∑im⋅LR(R(Di))+(1−m)⋅LF(F(Di))E_1 = \sum_i m \cdot L_R (R(\mathcal{D}_i)) + (1-m) \cdot L_F(F(\mathcal{D}_i))E1=i∑m⋅LR(R(Di))+(1−m)⋅LF(F(Di)) - 用 E2E_2E2 作为 loss,R 和 F 共同训练 M
E2=E1+∑iLM(Di,R,F)E_2 = E_1 + \sum_i L_M(\mathcal{D}_i, R, F)E2=E1+i∑LM(Di,R,F)
网络 M 分割静态区域和运动区域,然后使得(D, C)只针对静态区域进行学习,而 F 则只针对运动区域进行学习。
3.2 具体细节
3.2.1 符号定义
考虑图像序列 I−,I,I+I_-, I, I_+I−,I,I+,其中 I−,I+I_-, I_+I−,I+ 可能代表不只一帧图像,几个网络可以用以下符号表示,下标代表他们的参数:
- 深度 d=Dθ(I)d =D_\theta(I)d=Dθ(I)
- 相机运动 e−,e+=Cϕ(I−,I,I+)e_-, e_+ = C_\phi(I_-, I, I_+)e−,e+=Cϕ(I−,I,I+)
- 静止置信度 m−,m+=Mχ(I−,I,I+)m_-, m_+ = M_\chi(I_-, I, I_+)m−,m+=Mχ(I−,I,I+)
- 光流 u−=Fψ(I,I−)u_- = F_\psi(I,I_-)u−=Fψ(I,I−), u+=Fψ(I,I+)u_+ = F_\psi(I,I_+)u+=Fψ(I,I+)
注:m−,m+∈[0,1]Ωm_-, m_+ \in [0,1]^\Omegam−,m+∈[0,1]Ω 代表了该像素属于静止区域的概率.
3.2.2 损失函数
网络的优化目标是最小化能量E
E=λRER+λFEF+λMEM+λCEC+λSESE = \lambda_R E_R + \lambda_F E_F + \lambda_M E_M + \lambda_C E_C + \lambda_S E_SE=λRER+λFEF+λMEM+λCEC+λSES 一个更大的 λM\lambda_MλM 会促使网络 M 将更多的区域划分为静止区域。
- ER=∑s∈{+,−}∑Ωρ(I,ωc(Is,es,d))⋅msE_R = \sum_{s\in\{+,-\}} \sum_\Omega \rho(I, \omega_c(I_s, e_s, d)) \cdot m_sER=∑s∈{+,−}∑Ωρ(I,ωc(Is,es,d))⋅ms
- EF=∑s∈{+,−}∑Ωρ(I,ωf(Is,us))⋅(1−ms)E_F = \sum_{s\in\{+,-\}} \sum_\Omega \rho(I, \omega_f(I_s, u_s)) \cdot (1-m_s)EF=∑s∈{+,−}∑Ωρ(I,ωf(Is,us))⋅(1−ms)
- ρ(x,y)=λρ(x−y)2+ϵ2+(1−λρ)[1−(2μxμy+c1)(2μxy+c2)(μx2+μy2+c1)(σx+σy+c2)]\rho(x, y)=\lambda_{\rho} \sqrt{(x-y)^{2}+\epsilon^{2}}+\left(1-\lambda_{\rho}\right)\left[1-\frac{\left(2 \mu_{x} \mu_{y+c_{1}}\right)\left(2 \mu_{x y+c_{2}}\right)}{\left(\mu_{x}^{2}+\mu_{y}^{2}+c_{1}\right)\left(\sigma_{x}+\sigma_{y}+c_{2}\right)}\right]ρ(x,y)=λρ(x−y)2+ϵ2+(1−λρ)[1−(μx2+μy2+c1)(σx+σy+c2)(2μxμy+c1)(2μxy+c2)]
- EM=∑s∈{+,−}∑ΩH(1,ms)E_{M}=\sum_{s \in\{+,-\}} \sum_{\Omega} H\left(\mathbf{1}, m_{s}\right)EM=∑s∈{+,−}∑ΩH(1,ms)
- EC=∑s∈{+,−}∑ΩH(IρR<ρF∨I∥ν(es,d)−us∣∣<λc,ms)E_{C}=\sum_{s \in\{+,-\}} \sum_{\Omega} H\left(\mathbb{I}_{\rho_{R}<\rho_{F}} \vee \mathbb{I}_{ \| \nu\left(e_{s}, d\right)-u_{s}| |<\lambda_{c}}, m_{s}\right)EC=∑s∈{+,−}∑ΩH(IρR<ρF∨I∥ν(es,d)−us∣∣<λc,ms)
- ES=∑Ω∥λe∇d∥2+∥λe∇u−∥2+∥λe∇u+∥2+∥λe∇m−∥2+∥λe∇m+∥2E_{S}=\sum_{\Omega}\left\|\lambda_{e} \nabla d\right\|^{2}+\left\|\lambda_{e} \nabla u_{-}\right\|^{2}+\left\|\lambda_{e} \nabla u_{+}\right\|^{2} + \left\|\lambda_{e} \nabla m_{-}\right\|^{2}+\left\|\lambda_{e} \nabla m_{+}\right\|^{2}ES=∑Ω∥λe∇d∥2+∥λe∇u−∥2+∥λe∇u+∥2+∥λe∇m−∥2+∥λe∇m+∥2
对上面几个式子的解释:
- ωc\omega_cωc 利用深度 ddd 和相机运动 eee 由参考帧(I−或I+I_-或I_+I−或I+)生成目标帧(III)
- ωf\omega_fωf 利用光流信息 uuu 由参考帧生成目标帧
- λρ\lambda_{\rho}λρ 是一个固定值,ϵ=0.01\epsilon=0.01ϵ=0.01,第二项其实就是 SSIM,μx,σx\mu_{x}, \sigma_{x}μx,σx 是当前像素邻域的局部均值和方差,c1=0.012c_{1}=0.01^{2}c1=0.012,c2=0.032c_{2}=0.03^{2}c2=0.032
- EME_MEM 中的 H()H()H() 表示交叉熵,因此 λM\lambda_MλM 就代表了 R 对静止区域的偏好程度
- ν(e,d)\nu(e, d)ν(e,d) 表示用深度 ddd 和相机运动 eee 生成的光流信息,方法见附录 A.2,I∈{0,1}\mathbb{I} \in\{0,1\}I∈{0,1} 是一个指示函数(下标为真时其值为1);ρR=ρ(I,wc(Is,es,d))\rho_{R}=\rho\left(I, w_{c}\left(I_{s}, e_{s}, d\right)\right)ρR=ρ(I,wc(Is,es,d)),ρF=ρ(I,wf(Is,us))\rho_{F}=\rho\left(I, w_{f}\left(I_{s}, u_{s}\right)\right)ρF=ρ(I,wf(Is,us)),因此第一个指示函数选择那些更偏向于静止区域的像素点;第二个指示函数同样选择那些最可能是静止区域的点;最后他们取并集 ∨\vee∨,再与 msm_sms 求一个交叉熵。因此“一致代价” ECE_CEC 的作用就是驱使两个网络 R 和 F 共同训练裁判者 M,以使 M 对于静止区域的预测更加准确。
- “平滑代价” ESE_SES 用于规范深度、光流、分割网络,其中 λe=e−∇I\lambda_{e}=e^{-\nabla I}λe=e−∇I(elementwise),保证了平滑过程中对图片中的边缘的影响比较小,因为边缘处梯度比较大,λe\lambda_{e}λe 就比较小,对 loss 贡献比较小。
3.2.3 推断
要想训练这个网络,需要通过重建图像的效果来判断网络各部分(深度、光流、分割)的预测效果。在重建图像时,对图像运动部分和静止部分的分割由以下公式获得
m∗=Im+⋅m−>0.5∨I∥ν(e+,d)−u+∥<λc
m^{*}=\mathbb{I}_{m_{+} \cdot m_{-}>0.5} \vee \mathbb{I}_{\left\|\nu\left(e_{+}, d\right)-u_{+}\right\|<\lambda_{c}}
m∗=Im+⋅m−>0.5∨I∥ν(e+,d)−u+∥<λc
除此之外还需要光流,由以下公式获得
u∗=Im∗>0.5⋅ν(e+,d)+Im∗≤0.5⋅u+
u^{*}=\mathbb{I}_{m^{*}>0.5} \cdot \nu\left(e_{+}, d\right)+\mathbb{I}_{m^{*} \leq 0.5} \cdot u_{+}
u∗=Im∗>0.5⋅ν(e+,d)+Im∗≤0.5⋅u+
由此网络 R=(D,C) 就可以利用 ddd 和 eee 合成静止区域,网络 F 就可以利用 u∗u^*u∗ 合成运动区域,最后再利用 m∗m^*m∗ 将二者的预测结果结合起来,就是最终的重建图像。
因此最终训练的时候在开头提到的那两个阶段,第一个阶段就可以用 ERE_RER 和 EFE_FEF 训练网络 R 和 F,第二个阶段用 EME_MEM 和 ECE_CEC 训练 M。
4. 实验
算法的伪代码如下:
一些实验结果如下所示
更详细的网络结构如下图
附录
附录的东西我就不放了哈,大家想看可以去读作者的论文。