DHDN (a Densely connected Hierarchical image Denoising Network)
DHDN介绍
作者提出的网络中应用了修改的UNet分层结构以提高了图像去噪的表现,可以使网络有效的利用有限的内存。这使得他们的网络比其他方法用到更多的参数,因此这个网络达到了比传统方法更好的效果。由于有大量的参数,容易遭受梯度消失的问题,作者在卷积块和网络中使用了稠密连接和残差学习使特征重用并成功的解决梯度消失问题。在训练模型的时候使用带有广泛的噪声图片,使得他们的网络可以在一套参数下处理多级噪声。最后,作者成功地应用了模型集成和自集成方法,这使得他们能够改善所提出的网络的性能。
这个网络的表现在NTIRE19被验证,在sRGB获得了第二名,在rawRGB获得第三名。
亮点
- 应用修改后的UNet的分层结构,使我们的网络能够有效地使用有限的内存。因此,模型可以使用比传统网络更多的参数。
- 将稠密连接和残差学习应用于我们的新型卷积块和网络架构,以准确地消除输入图像的噪声并解决消失梯度问题。
- 应用自集成和模型集成方法; 这使网络能够改善输出图像的客观和主观质量。
- 使用一组经过训练的参数训练模型以处理各种噪声级别。由于网络不需要输入噪声级别的信息,完全克服了传统方法的局限性。
图像去噪领域介绍
图像去噪是从带有additive white Gaussian noise(AWGN) [1, 15], speckle noise [3, 8], and impulse noise [7] 等额外噪声的低质量图片产生高质量图片的过程。
由于图像去噪的广泛使用(如医药图像去噪,satellite image denoising,压缩图像去噪),它是图像处理研究的一个主要研究领域。在许多用途当中,自动驾驶中的目标检测和识别引起了图像去噪学者的极大关注。这是由于从图像中移除噪声对提升目标识别的性能是至关重要的。出于这些图像去噪研究的需求,大量的图像去噪解决方案被提出。然而,在应用CNN之前,图像去噪性能的改善有限。在使用CNN之前,由Dabov在2007提出的BM3D是最热门的图像去噪算法。这表明图像去噪研究在性能改进方面缺乏进展。最近,随着CNN的应用,包括图像去噪在内的众多图像处理解决方案的性能大幅提升。
2016年提出的DnCNN运用了BN和残差学习。
紧接着提出的IRCNN减小了计算量并最小化性能损失,运用了dilated filter到他们的7层模型去扩大感受野。
他们还提出了FFDNet,该网络可以通过一个简单的去噪网络去灵活处理大范围的噪声。他们指出,传统的图像去噪模型学会从具有特定噪声级别的图像中去除噪声,这迫使他们为不同的噪声级别训练多个模型。为了解决这个问题,FFDNet使用具有不同噪声级别的训练图像训练他们的模型以处理多个噪声级别。但是,FFDNet在去除具有未指定噪声级别的图像噪声时表现出其局限性,因为FFDNet需要将图像的噪声级别作为输入数据。UDN模型有与之相似的缺陷。
MWCNN运用了修改后的UNet结构和小波变换,这在减小了计算复杂性的同时扩大了模型的感受野,局限是只能处理单一的噪声。
相关工作
分层结构
随着图像处理研究开始应用CNN,有效的使用有限的内存去加深网络是深重要的。一个传统的方法就是分层结构。UNet将分层结构的概念运用到CNN,它包含两步:收缩路径和扩张路径。在收缩路径中,UNet用步长为2的2x2最大池化处理特征图,并将通道扩大到2倍。因此,每个降采样步骤将U-Net应处理的数据量减半。他让UNet比其他方法使用了更多的参数。
稠密链接和残差学习
随着CNN模型的加深,梯度消失完全的阻碍了模型的训练。ResNet通过short connection使网络学习残差,DenseNet类似的连接了多个层使得先前的特征得以重用,这都解决了梯度消失。RDN(residual dense network for image restoration)也被提出。
自集成和模型集成方法
集成方法是从多个输出中得到一个更好的输出的方法。这里应用了自集成和模型集成方法。在自集成方法中,取变换的输入图像的输出的均值。这是一个高度有效的集成方法,因为不需要任何额外的训练过程。这里平均了8个输出图像的结果,由翻转和旋转输入图像组成。在模型集成方法中平均了多个网络的输出,与自集成不同,应用这个方法需要训练多个网络。在这里,除了参数初始化不同之外,用相同的条件训练了2个相同的模型。
算法细节
DHDN结构
上图展示了DHDN的结构。
首先用1x1卷积和PReLU产生原始特征图给后面的DCR block(densely connected residual block),该初始卷积层使我们能够在DCR块中应用局部残差学习。更重要的是,由于初始卷积层,这里可以使用灰度和彩色图像作为网络的输入而无需任何修改。初始卷积层产生了128通道的特征图,然后送到每一层的两个DCR block处理。当降采样特征图到1/2时,这里倍增了输出特征的通道以防止信息量的严重减少。这里提出的结构在压缩路径上重复了3次。这导致网络考虑4种分辨率的特征图。
扩张路径是压缩路径的相反操作,每用DCR处理两次,输出特征图就上采样2倍,通道减小到四分之一,因为使用了子像素插值法在上采样块中。为了防止严重的特征图通道数减小和重用之前的特征图,上采样块的输出连接了同一级的降采样块的输入。然而在最低层,作者连接了上采样的输入和降采样的输出。与压缩路径相同,这里的结构也在扩张路径上重复了3次。在扩张路径之后,被最后的1x1卷积和PReLU处理,产生最后的输出。最后产生的图通道数为1或3。
最后,这里应用了全局残差信息学习去产生输出图像。
block 结构
DCR
conv3是3x3卷积层,f是特征图的通道数。一个DCR由3个被PReLU跟着的卷积层组成。每一个特征图都用稠密连接达到特征重用。DCR的增长率设定为f的1/2,最后的卷积层产生通道为f的特征图作为输出,如此就可以应用局部残差学习。通过使用稠密连接和局部残差学习,可以增强信息流规避梯度消失,达到精准去噪。
downsampling and upsampling
降采样块由2层组成:2x2最大池化,3x3conv PReLU。和输入进来的特征图相同,2x2的最大池化步长为2减小了特征图的尺寸,3x3卷积层倍增通道数防止信息的减少。因此输出的特征图是尺寸是输入的1/4,通道是2倍。
上采样块用3x3conv PReLU和sub-pixel插值层,不像UNet用2x2的反卷积。而是使用了亚像素插值层(sub-pixel interpolation layer)去更效率和精准地扩张特征图的尺寸,在扩张之前,3x3卷积层精细化了特征图,从而使得亚像素插值可以更加精准。因此,上采样块特征图的输出是输入的两倍大,通道数是1/4。
多级噪声去噪
传统的基于CNN的模型对于每一种噪声都要训练一个模型。这里的模型使用带有随机噪声的数据来训练,可以不需要额外输入信息地处理广泛的噪声。
实验
训练细节
最近,用于图像重建的DIV2K数据集被发布。它的训练集包含了800张高质量图片,分辨率和FHD一样是1920x1080,验证集包含100张和训练集一样的图。在训练模型时,作者从训练图片提取了64x64的小块。在全局噪声级别模式下,可以处理广泛的噪声级别,作者随机的添加噪声级别为5-50的AWGN到训练的小块上;在固定噪声级别模式下,使用10、30、50的噪声图片训练。输入的小块用随机翻转、旋转进行数据扩增。批大小设置为16,使用Adam优化器,初始学习率为1e-4,每3个epoch就减半,使用L1损失函数。测试集为Kodak(24张768x512的图片)和BSD68(68张321x481的图片)。
性能对比
为了对比客观性能表现,这里使用峰值信噪比(PSNR)和结构相似性(SSIM)来比较BM3D、DnCNN、IRCNN、FFDNet这几种较新的图像去噪算法产生的结果。表中DHDN_g代表全局噪声级别训练的模型,DHDN_g+代表使用了自集成;类似的,DHDN_f代表用固定的噪声级别训练,DHDN_f+代表用了自集成。在表中,最好的结果用红色高亮,其次用蓝色高亮。这里只使用了自集成方法在AWGN去噪实验中,模型集成方法只在NTIRE19去噪竞赛中使用。
在BSD68彩图实验中,噪声级别为50时,固定噪声级别和全局噪声级别的性能不相上下,并且固定噪声级别的模型使用了自集成后性能发生了退化。作者推测发生这种现象有2个原因:1. 性能已经饱和了。2. 训练网络的时候多重噪声级别增加了高噪声级别的表现。在Accurate image superresolution using very deep convolutional networks中,作者阐述了用多个scale可以提高在大scale的性能。类似的,用多个级别训练也可以提高在高噪声级别的性能。实验结果还显示,当比较全局噪声和固定噪声时,高级别噪声比低级别噪声有更高的性能提升。
为了比较主观性能,这里对比了几个方法的结果图像。图5中传统方法无法恢复衣服的图案细节。图6中传统方法没有还原连贯的窗户。图7精准的恢复了图案,而传统方法很模糊。图8的窗户也是如此。
最后附上NTIRE19去噪挑战比赛结果