CPVR2020论文:Rethinking Data Augmentation for Image Super-resolution: A Comprehensive Analysis and a New Strategy
数据增强是一种被认为能够有效提高模型性能的方法,而许多数据增强的方法也都是用于High-level 的视觉任务,并不适合图像超分辨率任务。这篇论文对现有目前应用于图像超分辨率任务的数据增强方法进行了综合的分析,发现通过对图像像素或者特征操作或者丢弃的方法会严重影响图像复原,这是因为图像的空间关系很重要,但是这些操作破坏了图像的空间关系。
图1. CutBlur与其他方法对比
基于这样的分析,论文提出了新的数据增强方法——CutBlur。它通过将低分辨率图像中的图像块裁剪并张贴在高分辨率图像中的对应位置,反之也一样。CurBlur 的关键在于让模型不仅知道如何超分,同时也知道哪里需要超分。
通过这样的方法,模型能够自适应地去决定图像多大程度上去应用超分而不是盲目地对所有像素进行超分。
图2. CutBlur 操作
CurBlur
假设给定LR 图像 和 HR 图像块 ,其中s 是放大倍数。如图2所示,由于 CurBlur 需要匹配LR 图像和 HR图像的分辨率,所以会对 LR 图像进行 s 倍的双三次插值。CurBlur 然后就会生成成对的训练样本 :
其中, 为二值Mask,用于决定哪里需要被替换掉。
源码如下:
def cutblur(im1, im2, prob=1.0, alpha=1.0): if im1.size() != im2.size(): raise ValueError("im1 and im2 have to be the same resolution.") if alpha <= 0 or np.random.rand(1) >= prob: return im1, im2 cut_ratio = np.random.randn() * 0.01 + alpha h, w = im2.size(2), im2.size(3) ch, cw = np.int(h*cut_ratio), np.int(w*cut_ratio) cy = np.random.randint(0, h-ch+1) cx = np.random.randint(0, w-cw+1) # apply CutBlur to inside or outside if np.random.random() > 0.5: im2[..., cy:cy+ch, cx:cx+cw] = im1[..., cy:cy+ch, cx:cx+cw] else: im2_aug = im1.clone() im2_aug[..., cy:cy+ch, cx:cx+cw] = im2[..., cy:cy+ch, cx:cx+cw] im2 = im2_aug return im1, im2
需要注意的是:输入两个图像的维度必须一样,生成的结果示例如下图所示。
图3.CutBlur 最终效果
数据增强相关方法分析
表1.不同数据增强方法对 SR 性能的影响
图4. 不同 DA 方法效果图
图4展示了不同 DA 方法处理图像之后的结果。Blend 方法和 RGB permute 方法会改变图像的色彩信息,但不会去改变图像的结构信息。Cutout 方法则通过裁剪矩形区域使得一部分区域的图像像素值为0,这里裁剪比例控制为0.1%,这是因为裁剪比例过大会导致 SR 性能的急剧下降 (25%会使得性能下降0.1dB)。Mixup、CutMix、CutMixup(由论文作者提出) 则通过组合不同的图像内容信息进行混合,同时改变图像的色彩和结构信息。
为了对比现有数据增强方法对 SR 模型性能的影响,论文应用不同的数据增强方法和DIV2K 数据集和 RealSR 数据集,从头开始训练 EDSR x4模型。
PS:由于 CutBlur 生成的图像与 GT 图像尺寸相同,因此论文中用于训练的SR模型+CutBlur 网络前端会加入一个 desubpixel 层(逆次像素卷积),用于将输入转为 。
从表1可以看到,不同的数据增强方法也都能在一定程度上提升SR 模型性能。不过CutMix提升较为微弱,这可能是因为CutMix 方法使得图像内容信息变化较为剧烈,生了明显的边界。Mixup 虽然能够提升性能,但是它也会存在图像内容混淆,从而使得模型无法很好地分辨图像内容信息。
于是作者提出了Mixup和CutMix的变体,CutMixup能够取得比 Baseline以及前两个 DA 方法更好的性能。CutMixup 能够最小化边界效应以及混合图像上下文信息的比率。最后RGB permute和 Blend 方法 能够明显提升 SR 性能。
当应用CutBlur时,比其它DA 方法更能明显提升SR 性能,并且真实数据集RealSR上的提升比模拟数据集更大。
为什么 CutBlur 适用于 SR?
从之前不同 DA 方法对比,可以看到,图像内容信息的急剧变化,图像块的混叠,或者是丢失像素的相关性都能够损害SR 的性能。因此,用于 SR 的良好的DA方法不应存在不符合实际的模式或信息丢失,并且应该为SR模型良好的正则。
CutBlur能够满足以上的条件:
1.它仅仅在 HR 和 LR 图像块之间进行裁剪和粘贴,因此能够最小化边界效应。
2.它可以利用整个图像信息,同时由于样本具有随机的HR比率和位置,CutBlur具有正则化效果。
图5. w/o CutBlur 和 w/ CutBlur SR 生成图像的定性比较。
图6. w/o CutBlur 和 w/ CutBlur SR 生成图像的定性比较。
模型通过CutBlur 能够学习到什么?
与其他DA 方法防止分类模型过分自信地做出决策的相似,CurBlur 可以很好地避免SR 模型过度锐化图像。图 5 和图 6可以看到,当直接使用HR 图像作为输入时,模型会产生过度锐化的结果,在边缘位置尤为明显。CutBlur可以通过在训练阶段直接向模型提供此类示例来解决此问题。因为 HR 图像是 CutBlur 方法生成的图像的特殊样例。
使用 CutBlur的 EDSR 方法能够大大降低残差强度图中的数值,意味着与GT图像之间的误差更小。因此,CurBlur很可能是通过约束SR模型以区别地将超分辨率应用于图像,实现了这样的效果。这是因为模型同时需要去学习如何以及在哪里超分图像,从而使得模型需要多大程度去应用超分,从而为 SR 模型训练提供了有益的正则化效果。
实验
首先论文研究了不同模型和数据集使用 CutBlur 的影响。
不同规模的SR模型
对于小模型如 SRCNN和CARN,使用 DA 的概率为p=0.2 ,对于大模型EDSR 和 RCAN,p=1 。可以看到,CutBlur在小模型上的提升并不明显。这主要是模型严重的欠拟合,模型表征不足使得 DA 的作用非常小。这也可以看到RCAN 和 EDSR 在使用了 CutBlur 之后,性能得到了明显的提升。
不同规模的数据集
当训练数据的规模不同的时候,可以看到 SRCNN 和 CARN的提升并不明显,甚至在 SRCNN 上还会有下降,但是另外一方面,Cutblur 能够使得RCAN 和 EDSR 得到较大的提升,并且 RCAN 仅仅使用一半的数据进行训练就能够达到原有的性能表现。
表2.不同 规模 SR模型和数据规模应用 CutBlur后的效果
Benchmark 对比
从表3中可以看到,当使用了 CutBlur 对模型进行训练,模型在测试集上的性能得到了明显的提升,尤其是在 RealSR 数据集上,所有模型至少得到了0.22dB 的提升。而 CARN则能够在 RealSR测试集上达到 SOTA 性能(RCAN basline),性能与 LP-KPN近似,使用参数量仅为 LP-KPN 的22%。从图7也可以看到,残差强度图在使用 CutBlur 方法后得到误差明显的下降。
表3. Benchmark数据集对比
图7. CutBlur 方法和 不同baseline生成结果可视化对比。
CutBlur应用于真实图像
图8.CutBlur 方法和 EDSR baseline 在 真实图像上的生成结果可视化对比。LR 图像是通过biucbic 2倍降采样获得。
图8对比了不同的 baseline 和 CutBlur 模型在真实图像上生成结果。左边图来源于互联网,右边图则直接由 iphone11 pro 直接拍摄。可以看到baseline 模型在草丛上添加额外不真实的细节(左边),而在右边图像中会在硬币和字体周围生成明显的鬼影。而CutBlur模型适当地对图像的前景和背景进行超分,并且不会添加任何不真实的失真。
除了超分之外,论文还将 CutBlur 方法应用于其它 Low-level的任务。以下是一些效果对比图,具体的细节就不过多介绍了,有兴趣的小伙伴可以去阅读原 Paper。
Color Gaussian denoising
Color JPEG artifact removal
总结
论文提出了一个新的数据增强方法 CutBlur ,用于有监督的训练 SR 模型。通过学习如何以及在哪里对图像进行超分,模型能够根据区域内的图像信息进行判断,多大程度上去应用超分辨率。因而实验证明,CutBlur 能够明显提升 SR 模型的性能,尤其是在 Real-world 数据集上效果更优。除此之外,在其他 Low-level 任务如图像去噪,JPEG 伪影去除等上都表现出出色的性能增强。
因此它是一种非常有效的,用于SR 任务的数据增强方法。其实仔细去想,CutBlur之所以有效,一个不可忽视的点在于,它将 HR 图像部分信息引入到 LR 图像,而这些信息也包涵LR 图像中丢失的高频信息,并且将HR 图像信息与位置相关联,从而模型不仅需要去学习超分过程,还需要学习如何根据当前位置信息进行判断是否进行超分。想法确实很新奇,值的好好去思考思考。