Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

代码和模型:https://github.com/andrea-pilzer/unsup-stereo-depthGAN

 

摘要

提出一个生成网络学习预测一个标定过的立体相机中两帧图详见的相关信息(视差图)。结构中包含两个生成子网络以及用于重建视差图的对抗学习并建立在一个循环中比如相互之间提供人为约束和监督。

 

介绍

之前的工作只考虑了重建损失,但是都没有使用对抗学习的方法来改进合成的图像,

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

最终视差图是由两个生成器的输出合成生成。

主要贡献:

  1.  第一个使用对抗学习改进无监督深度估计
  2. 提出的循环生成网络可以学习正反两个视差图,并且加强了图详见的约束
  3. 在两个大型数据集(KITTI 和 Cityscapes))上有效

 

2 相关工作

3 方法

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

    图2:无监督立体深度估计比较:(a)传统的基于立体匹配的深度估计;(b)无监督对抗深度估计;(c)循环生成网络的无监督对抗深度估计。

3.1 问题描述

给出左图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)和右图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),需要估计一个视差图d,能代表每个像素与相对应的图像需要偏移的值,给出基线bd、焦距fl,深度图D可以由Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7).计算得到。假设从左到右的视差Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)经过生成网络Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)得到,然后经过变换函数Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)合成右图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),利用重建损失优化网络。

3.2 无监督对抗深度估计

    假设有一个生成网络Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)包含两个子网络,一个是Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)输入为Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),一个是Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)输入为Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),用来生成两个不同的视差图,分别为Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)。子网络与encoder-decoder结构相同,其中编码器负责压缩图像的表达,由于两个视差图来自不同的输入图像,并且有互补的特征,于是使用线性结合和1*1卷积形成新的视差图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),用来和成右图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),然后使用L1范数优化重建损失

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

    为了增加生成器质量,在这里使用对抗学习来进行优化,对于合成图像Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),辨别器Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)输出分数来辨别Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)是真是假,定义如下:

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

    采用交叉熵分别计算Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)和它们的预测值之间的差距,然后将损失进行结合:

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

3.3 使用循环生成网络来进行对抗估计深度

假设从半循环网络中得到了合成图像Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)',然后将Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)作为下一个生成网络的输入,生成器设为Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),Gr的参数与Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)共享,然后用两个不同的decoder生成两个由右到左的视差图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)分别对应左、右输入图像产生。然后进行结合生成视差图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),然后通过变换操作Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)合成左图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),整个循环的优化目标是:

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

添加了一个鉴别器Dl来判别合成图像Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),其中对抗学习用于循环中的左右图像,整个循环模型的对抗目标如下:

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

每半个循环网络生成一个视差图,使用L1范数一致性损失来进行约束

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

由于两个视差图是从不同角度且不对齐,使用变换操作使每个像素相匹配,一致性损失则对每个半循环进行强约束并加快学习。

完整优化目标包括两个生成器的重建损失,图像合成的对抗损失和半循环一致性损失:

Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)

当优化结束时,给定一对图像Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7),通过以一定权重对输出的视差图Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)进行结合,这里权重相同,并且最终视差图D为两者的平均:Unsupervised Adversarial Depth Estimation using Cycled Generative Networks(2018.7)