[pdf (short)] [TIP (long)]
这篇文章原版 arxiv 是一个比较粗糙的版本(公式错误,图片错误,参考文献格式也不统一),本博客在创作时,对大部分瑕疵做了修正和声明。本博客的目的是提供快速阅读本文的功能,如感兴趣可继续阅读其 TIP 版本(也有一些本人认为不合理的瑕疵)。
Single image deraining (SID) is an important and challenging topic in emerging vision applications, and most of emerged deraining methods are supervised relying on the ground truth (i.e., paired images) in recent years. However, in practice it is rather common to have no unpaired images in real deraining task, in such cases how to remove the rain streaks in an unsupervised way will be a very challenging task due to lack of constraints between images and hence suffering from low-quality recovery results. (背景介绍,提出问题)
In this paper, we explore the unsupervised SID task using unpaired data and propose a novel net called Attention-guided Deraining by Constrained CycleGAN (or shortly, DerainCycleGAN), which can fully utilize the constrained transfer learning abilitiy and circulatory structure of CycleGAN. Specifically, we design an unsupervised attention guided rain streak extractor (U-ARSE) that utilizes a memory to extract the rain streak masks with two constrained cycle-consistency branches jointly by paying attention to both the rainy and rain-free image domains. (研究内容:一)
As a by-product, we also contribute a new paired rain image dataset called Rain200A, which is constructed by our network automatically. Compared with existing synthesis datasets, the rainy streaks in Rain200A contains more obvious and diverse shapes and directions. As a result, existing supervised methods trained on Rain200A can perform much better for processing real rainy images.(研究内容:二)
Extensive experiments on synthesis and real datasets show that our net is superior to existing unsupervised deraining networks, and is also very competitive to other related supervised networks. (研究结果)
研究内容:一
本文利用无配对数据研究了无监督 SID 任务,提出了一种基于约束 CycleGAN 的注意力引导d的去雨网络,DerainCycleGAN (简称 DerainCycleGAN) ,该网络充分利用了约束迁移学习能力和循环结构。具体而言,设计了一种无监督注意引导下的雨条纹提取器 (U-ARSE),该算法利用内存,通过同时注意雨和无雨图像域,来联合提取两个有约束的周期一致性分支的雨条纹遮罩。
研究内容:二
构建 Rain200A 配对雨图像数据集,它是由 DerainCycleGAN 的网络自动构建的。与现有的合成数据集相比,Rain200A 中的雨条纹的形状和方向更加明显和多样。因此,现有的在 Rain200A 上训练的监督方法可以更好地处理真实的雨图像。
DerainCycleGAN 如图 3 所示,它由三部分组成 :
(1) U-ARSE 从降雨图像中逐级提取降雨条纹 masks;
(2) 两个发生器 GN 和 GR,分别生成无雨图像和有雨图像;
(3) 两个判别器 DN 和 DR,可以区分生成器得到的真实图像和虚假图像。
DerainCycleGAN 还包括两个分支:
(1) 雨到雨(r-nr-)的循环一致性分支,其中雨图像生成无雨图像,再通过生成器重建雨图像;
(2) 无雨到无雨(n-nr-)的循环一致性分支,利用无雨图像生成雨像,然后用生成器重建无雨图像。
Figure 3 (Adv Loss 那里有误,或者说给读者产生重大误解)
[22,24,28] 中的 ARSE 本质上是一个提取雨条纹的单一任务模块,它只考虑单个分支中的映射 G: X -> Y。在监督模式下,ARSE 利用监督约束提取精确的雨条纹,但这种约束在无监督模式下是弱的,而且不稳定的。因此,本文提出了 U-ARSE 来发现和关注两个受限的周期一致性分支中的雨条纹,即 U-ARSE 同时关注有雨和无雨图像。因此,提取的雨条纹比只聚焦于雨图像的 ARSE 更精确。
Figure 4 (此图问题也很明显:本文无监督方法直接对真实场景的雨图像进行训练、测试。但此处为啥不是真实场景雨图像,而是人工合成图像?TIP 版也有同样问题)
从技术上讲,U-ARSE 模块共有 6 个阶段,如图 4 所示,每个阶段包括一个 Hybrid Block 单元 (即双路径残差密集块 dual-path residual dense block)、一个 LSTM 单元和一个 Convolutional layer。Hybrid Block 有两条路径 (残差路径和密集路径),可以重用前一层的公共特征,同时学习每一层的新特征。LSTM 单元由输入门、遗忘门、输出门和细胞状态 ct 组成。
在训练中,输入的图像I将与前一阶段提取的 mask 阶段连接起来,然后将被送入 Hybrid Block。初始时,H_{t-1}, C_{t-1} 设为 0,与 Hybrid Block 单元的输出 X 尺寸相同,mask (0) 设为 0.5 作为初始输入。接下来,解释如何约束从 U-ARSE 中提取的 mask。
为了精确提取降雨条纹,采用一种约束的方法在有雨域和无雨域之间传递信息,解决了两个域之间的信息不对称问题。然而,由于模型的无监督方式,不存在真值,因此在雨带信息上定义了两个新的先验 Att(r) 和 Att(n)。U-ARSE 的总注意力损失为:
其中 ~(0,1) 是 (0,1) 区间上的高斯分布, 是与 mask 形状相同的所有 0 的分布。
对雨像 r 的雨条纹 mask Att(r) 和高斯分布 之间的 MSE 损失设置了一个先验约束。
由于在无雨像 n 中没有雨条纹,Att(n) 的分布必须尽可能接近于 。
在图 4 中展示了一些由 U-ARSE 提取的雨条纹 mask,可以看到所学的 mask 在一阶段一阶段地不断改进。
使用了两个生成器 GN 和 GR,它们与 U-net 的变体 [28 Attentive generative adversarial network for raindrop removal from a single image. CVPR, 2018.] 具有相同的结构。该生成器包括 16 个convl - relu 块。包括跳跃连接以防止生成模糊图像。生成器的输入是将输入图像与前面 U-ARSE 得到的最终注意图拼接在一起。其中,GN 使用 r 和 Att(r) 生成无雨图像 nr, GR 使用 n 和 Att(n) 生成有雨图像 rn,即:
为了保持循环一致,在 R 和 F 两个域实现了向后传递,U-ARSE 能够从生成的样本 nr 和 rn 中提取雨条纹信息 Att(nr) 和 Att(rn)。GR 利用 nr 和 Att(nr) 重建雨图像 ,GN 利用 rn 和 Att(rn) 重建无雨图像 ,即:
该方法采用 DR 和 DN 两种对抗判别器,DR 分别对雨图像 r 和 rn 进行区分;DN 的目的是区分无雨图像 n 和 nr。判别器使用多尺度结构,每个尺度的特征映射经过三层卷积,然后输入到 sigmoid输出。为了让生成的图像看起来更真实,在两个领域都使用了对抗性损失。
R 和 F 域约束双支环一致性损失 Lcc
本文的方法利用 GN 生成无雨图像。但是由于没有提供配对监督,解卷积后的图像可能不会保留图像中的颜色和结构信息。受 CycleGAN 的启发,使用循环一致性损失来确保去雨图像 nr 被重新降雨来重建下雨的样本,并确保 rn 被翻译回原始的无雨图像域。Lcc 可以限制生成的样本的空间,并保留图像的内容。两个图像域的损失 Lcc 定义为
R 域感知损失 Lp
对于 CycleGAN,生成的无雨样本经常包含一些令人不快的人工痕迹。[18 Perceptual losses for real-time style transfer and super-resolution, arixv 2016] 表明从预先训练的深度网络中提取的特征包含丰富的语义信息,它们的距离可以作为感知相似度的度量。因此,利用感知损失来编码去噪后的图像 nr 与对应的原始雨图 r 之间的差异
区域 R 的 GMM 损失 Lgmm
该损失描述了 GMM [10 Rain Streak Removal Using Layer Priors. CVPR, 2016.] 输入的降雨图像的降雨条纹::
式中,S为雨条纹,K 为混合成分个数, 分别为混合系数、高斯分布均值和方差。雨条 S 的负对数似然函数定义为 Lgmm:
注意,Eq.(12) 中难以处理的损失可以用期望最大化 (EM) 方法 [27][38] 迭代求解,具体参见 [27 Semi-supervised transfer learning for image rain removal. CVPR, 2019]。
R 域的重建损失 Lr
引入重构损失来编码雨图像 r 和恢复后的雨图像 r' 之间的不匹配。最小化合成图像 r' = Att(r)+nr 与原始雨景图像 r 之间的差异,定义如下:
测试的主要目的是从第一个分支获得无雨图像,因此去掉 rn = GR(Att(n),n) 分支。给定一幅测试雨图像 r,首先利用 U-ARSE 提取雨条纹信息 Att(r)。然后,GN 利用提取的雨条纹信息 Att(r) 和原始测试雨图像 r,生成 r 的去噪图像 nr,如下所示:
对于 SID 来说,现有的大多数数据集都是合成的雨图,但是合成的雨纹设计得很好,所以它们不如真正的雨纹真实。因此,在处理真实图像时,用合成雨图像训练的深网通常产生不满意的结果。然而,真实的雨景图像及其地面真实图像通常难以采集,且大多数雨景图像分辨率较低,这可能会导致训练过程中的收敛问题。此外,由于没有真实值,数据集也不适合用于监督解约束方法。
本文引入了一个新的雨景图像数据集 Rain200A,它是由本文的网络在 Rain100L 上自动生成的。具体来说,使用 200 张无雨图像,发送到本文网络的第二个分支 n->rn->,然后会自动在每个无雨图像 n 中添加雨条纹,生成有雨图像 rn:
Rain200A 的优点是自动添加了雨条纹,使得雨条纹的形状和方向比原来 Photoshop 手工创建的Rain100L 更多样化,更适应真实的雨条纹。
使用监督 PReNet [24 Progressive image deraining networks: a better and simpler baseline. CVPR, 2019.] 在 Rain200A 实验中展示了产生不规则雨条纹的有效性。注意,比较结果是公平的,因为两个原因:
(1) 在相同的训练和测试设置下执行 PReNet;
(2) Rain100L 和 Rain200A 的图像对数相同。
对比结果如图 5 所示,可以看到在 Rain200A上训练的 PReNet 的脱轨结果比在 Rain100L 上训练的 PReNet 的去雨结果要好,即使是在白色背景下的雨条纹。(如果我是审稿人,我会让作者在多个已有算法上验证。)
因此,Rain200A 可以用来训练一个网络来解决真正的图像去除任务。
注意,本文的网络还可以用于构建更复杂的非人工数据集,以解决真实图像的 SID 任务,这将在未来进行探索。
Figure 5
更完整的版本请参考 TIP 长文:DerainCycleGAN: Rain Attentive CycleGAN for Single Image Deraining and Rainmaking | IEEE Journals & Magazine | IEEE Xplore