论文题目:Robust Image Denoising through Adversarial Frequency Mixup
代码地址:https://github.com/dhryougit/AFM
故事会环节:
一上来先说说大背景,图像去噪取得了巨大的成功,然后说传统的去噪网络用噪声标定的方式训练。提出问题:这些噪声标定和真实世界并不一样,所以导致了泛化性问题。当前的工作怎么致力于解决这个问题的:收集真实图像对,这个收集就比较困难,所以提出了很多子监督的方法。然而存在性能不足。
作者提出了一个AFM的框架来解决这个泛化性的问题,在保持真实世界的噪声性质的同时,构造hard噪声。用这些hard噪声,提高网络鲁棒性。AFM是通过在频率域中根据一个混合掩模来混合噪声和去噪图像。该混频掩模是由一个单独的轻量级神经网络生成的,使用对抗损失进行训练,可以生成对抗混合掩码。
创新点:
- AFM是训练无关框架,使用对抗损失生成图像,简单来说是一个数据增强的Trick
- 设计了2种AFM的mask
Method:
论文的主要方法集中在下面这个公式:

其中 是噪声图像, 是过了一遍去噪网络的图像,把两个图像mixup混合一下,生成一个新的图像,作者这里的意思在我看来主要是,一次去不干净,说明比较难去,那就要增加权重训,简单的部分就少训训。其中,使用了快速傅里叶变换和逆变换。

那如何确认到底什么地方难学呢?也就是这个mask到底该怎么选,作者提出了使用一个生成对抗网络去生成一下,让输出和gt差距最大

这个生成方式,作者又提出来了2种,一个叫AFM-E,一个叫AFB-B,E很好理解,就是以像素为单位,逐像素确定到底是不是mask。然后做E的时候,作者说发现mask有旋转不变性,所以直接做带状的mask。
实验:

实验结果大概就是做了迁移性的实验,在SIDD数据集上训了去别的数据集测试性能,从a to a训练的结果来看,AFM_E应该是会掉点的,但是AFB_B就提点了,感觉这个可以仔细研究一下,因为在我朴素的认知里,逐像素应该是最准确的方式,条状带反而属于偷懒加速的方式,和直觉有点相反。可能是散点太多导致的?
总结:
作者提出了AFM的框架,简单来说是一个数据增强的方式,把mixup用到low-level领域。后续自己实验了一下,因为自己的数据自带强弱噪声,所以没用原文的对抗生成mask,遇到两个问题:一个是按照公式用快速傅里叶之后,会出现条纹和偏色,根本没法用,我对快速傅里叶不是很熟,一直以为只是滤高低频的,可能使用方式上有点小问题。另一个是把fft去除之后,直接去除AFM,强噪声去不掉,还是得混合才能得到一个好效果,和论文里说的不大一样,感觉这个域要偏移的地方,但是可能我偏的太远了?