深度学习——Domain Adaptation for Image Dehazing
CVPR2020原论文:Domain Adaptation for Image Dehazing
开源代码(pytorch框架):https://github.com/HUSTSYJ/DA_dahazing
1.主要内容:
提出了领域适应的单幅图像去雾网络。能够有效在合成数据集合和真实数据集的差异之间建立联系。利用人工合成数据集训练,同时利用真实图像数据集参与训练,使得网络对人工合成图像和真实图像都具备较好的去雾能力。
(领域适应:指深度网络利用人工合成数据集训练的同时,能够在真实图像数据集领域中有较好的泛化能力)
2.问题描述
真实图像数据(Real)集较难获取(即模糊图像的ground truth难获取),故而一般的网络方案都采用人工合成数据集(Synthetic)进行训练,但是训练好的模型对真实图像域的图像没有泛化能力。
针对这个问题,文章提出了图像变换网络,也就是将人工合成图像S经过网络输出变换为真实图像R,同时将真实图像R经过网络输出变换为合成图像S,即:

图像变换网络得到(S,R)图像对,将两幅图像分别输入对应的去雾网络完成去雾。
3.主体网络结构:

网络主体分为两部分:图像变换模块;图像去雾模块。
图像变换模块:即上图中间部分(S2R Network与R2S Network),作用是:当输入人工合成图像S时,S2R Network生成对应的真实图像S→R。当输入真实图像R时,R2S Network生成对应人工合成图像R→S。该网络模块的部分作用就是缩小人工合成图像数据集与真实图像数据集之间的差异。使去雾网络对人工合成图像数据域和真实图像数据域都有较好的泛化能力,即领域适应。
S2R Network与R2S Network均为 CycleGAN网络,特殊的是S2R Network多了空间特征转换层( spatial feature transform ,SFT),因为在将S图像转换为对应的真实图像R时,我们需要用深度信息指导生成更逼真的真实图像R。其具体结构如下:

其转换效果如下:转换图像与真实图像非常相似

图像去雾模块:左边为人工合成图像去雾;右边为真实图像去雾。
这两个去雾网络分别处理不同数据域的图像,相互独立。
但是这两个去雾网络的结构相同,都为U-Net结构。
人工合成去雾网络的输入为图像S时,采用监督学习。输入为变换图像R→S时,采用无监督学习。处理图像S与变换图像R→S,网络权重共享。
真实图像去雾网络的输入为图像R时,采用无监督学习。输入为变换图像S→R,采用监督学习。处理图像R与变换图像S→R,网络权重共享。
4.训练损失函数
1)图像变换损失
图像变换的目的是减小人工数据域和真实数据域之间的差异。
a.下面为S2R Network的对抗生成损失函数:
像素级对抗生成损失(G,D分别为生成器和判别器):

特征级对抗生成损失(这里的特征提取网络就是对应的去雾网络):

R2S Network损失对应的类似形式:


b.循环一致性损失函数,即L1损失:

c.映射一致性损失函数:

图像变换模块的总损失函数:

2)图像去雾损失(两个去雾网络损失相同):
真实图像数据去雾网络:
a.计算图像S→R(人工合成图像S的转换图像)与S的标准图像 Y的MSE,为监督学习使用:

b.计算梯度损失,为无监督学习使用:

c.暗通道(暗通道像素值应当接近于0)损失,为无监督学习使用:

暗通道D()定义为:

这里的监督学习MSE损失(a)和无监督学习损失(b,c)是两个去雾网络共同使用。即人工合成图像去雾网络的损失类似的为:

d.计算去雾网络输出的一致性损失(就是两个去雾网络的输出最终要接近一致):

在训练过程中,图像变换模块网络与去雾模块网络是共同训练,所以总的损失为两个模块的损失函数相加:

