查看原文
其他

【杂谈】那些底层的图像处理问题中,GAN能有什么作为?

言有三 有三AI 2020-09-07

最近这一个月有三在知识星球里分享GAN在底层的图像处理中的相关应用,预计会再持续一个月,下面我们对其中的各个方向简单做一些介绍。



作者&编辑 | 言有三

1 GAN与图像降噪

图像在产生和传输过程中都会受到噪声的干扰,因此图像降噪是一个非常基础的问题,生成式模型GAN在捕捉噪声的分布上有天然的优势。

有三AI知识星球-网络结构1000变

GAN-CNN Based Blind Denoiser

基于深度学习的图像降噪面临的一大难题就是没有成对的真实噪声和无噪声数据,GCBD(GAN-CNN Based Blind Denoiser)方法使用GAN从真实带噪声图像中采集噪声,获得真实的成对图用于降噪模型训练。

作者/编辑 言有三

如上是整个框架,输入是“不成对”的有噪声图像(Noisy Images)和无噪声(Clean Images)图像,然后使用噪声块提取网络(Noisy Block Extraction)从噪声图像中进行噪声建模和采样,和干净的无噪声图像一起合成成对的训练数据,最后用Dncnn框架进行训练。

上图是生成对抗网络的具体配置。x~是生成的噪声,x是采集的噪声,生成的噪声如下,非常的真实。

最后真实的噪声和生成的噪声都会被使用和干净图像一起产生图像对,下图展示了一些实验结果,可以看出结果不错。

真实噪声和无噪声图像的获取是将深度学习应用于降噪问题的关键,基于GAN等无监督模型的方式值得重点关注。


参考文献

[1] Chen J, Chen J, Chao H, et al. Image blind denoising with generative adversarial network based noise modeling[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 3155-3164.

2 GAN与图像去模糊

由于图像获取过程中设备的晃动,对焦不准或者目标的移动速度过快,经常会造成图像模糊,去模糊也是一个很常见的基础图像问题。由于可以避免未知模糊核估计以及幅度较大的模糊去除,生成式模型GAN在其中也大有可为。

有三AI知识星球-网络结构1000变

Deblur-GAN V1/V2

DeblurGAN是第一个基于GAN的去模糊框架,它将去模糊当作一个图像翻译问题,避免了模糊核的估计,取得了很不错的运动去模糊效果。

作者/编辑 言有三

上图是整个框架的示意图,Blurred就是模糊的输入图,它经过生成器Generator生成去模糊的结果图Restored,再与真实的清晰图Sharp比较计算损失函数。


损失包括两部分,分别是感知损失perceptual loss和对抗损失(WGAN loss)。感知损失的计算基于VGG模型特征空间,对抗损失则采用了WGAN的损失。

如上是生成器的具体结构,可以看出包含2个下采样卷积,9个残差模块,2个上采样反卷积。

上图展示的是一些结果,第一列是原图,中间一列是Deblur GAN的结果,第三列是真实清晰图像,可以看出对于运动模糊的场景,确实能取得很好的去模糊效果。


后续作者们对DeblurGAN框架进行了改进,提出DeblurGANv2[2]。

DeblurGANv2使用FPN作为生成器的核心模块,提升了生成模型的性能。判别器则使用了最小二乘损失,从全局与局部两个尺度方面进行度量。


作者认为对于高度非均匀的模糊图像,在包含复杂目标运动时,全局尺度有助于判别器集成全图的上下文信息,从而使得相比较于DeblurGAN能处理更大更复杂的真实模糊图片。


参考项目:https://github.com/KupynOrest/DeblurGAN

https://github.com/TAMU-VITA/DeblurGANv2


参考文献

[1] Kupyn O, Budzan V, Mykhailych M, et al. Deblurgan: Blind motion deblurring using conditional adversarial networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 8183-8192.

[2] Kupyn O, Martyniuk T, Wu J, et al. Deblurgan-v2: Deblurring (orders-of-magnitude) faster and better[C]//Proceedings of the IEEE International Conference on Computer Vision. 2019: 8878-8887.

3 GAN与图像增强

严格来说图像增强包含上述的降噪,去模糊问题,此处所说的更多是聚焦于对图像颜色的全局和局部调整,包括亮度,色调等,GAN可以学习到丰富的调整模式。

有三AI知识星球-网络结构1000变

GAN-DSLR

GAN-DSLR是一个基于GAN的图像增强模型,它使用GAN来改进图像增强模型在颜色和纹理上的效果。

作者/编辑 言有三

上图展示的是模型的结构,可以看出包含了三个网络,一个是图像增强网络(Image enhancement network),一个是判别网络(Discrimator network D),一个是特征保持网络 VGG-19。训练数据集包含低质量和高质量的成对图,下面是iphone和单反相机的案例。

图像增强网络(Image enhancement network)就是GAN 的生成网络,输入为三通道的图像,首先经过4个残差 block,然后经过三个卷积层,最后经过一个卷积层输出三通道的图像,也就是增强后的图。两种损失函数包括颜色损失lcolor和平滑损失ltv,其中颜色损失lcolor需要真值图像与网络输出图像一起计算,这就是一个重建损失,可以使用标准的欧式距离。

ltv就是标准的平滑损失,它可以实现整体上对图像进行微小的平滑,有效去除椒盐等噪声。

判别网络(Discrimator network D)的输入由增强网络生成的图像与真值一起融合生成。融合的方式有多种,作者采用了逐个像素加权求和方式。判别网络有5个卷积层,一个全连接层,输出2维的概率向量。损失函数为交叉熵损失,它也被称为纹理损失(textures loss)。

预训练的VGG网络被用作特征保持网络,使用该网络对产生的图像和真值提取高层特征,然后计算内容损失,计算使用标准的欧式距离,这在图像超分辨,风格化等任务中都被广泛使用。

使用开源代码https://github.com/aiff22/DPED,下图展示了一些增强结果案例:

从结果可以看出效果非常明显,感兴趣的读者可以自己尝试。


参考文献

[1] Ignatov A, Kobyshev N, Timofte R, et al. DSLR-quality photos on mobiledevices with deep convolutional networks[C]//Proceedings of the IEEEInternational Conference on DSLR-quality photos on mobile Computer Vision.2017: 3277-3285.

4 GAN与图像超分辩

越高的分辨率能获得更清晰的成像,人们对分辨率的追求永无止境。与之同时,很多的低分辨率老照片需要修复,具有很大的人文社会价值,GAN已经在超分辨率领域颇有建树。

有三AI知识星球-网络结构1000变

SRGAN

SRGAN(super-resolution generativeadversarial network)是第一个基于GAN的图像超分辩模型,能够取得4倍的高分辨率放大。

作者/编辑 言有三

早期的基于CNN模型的超分辨率框架如SRCNN,ESPCN都使用MSE损失作为优化目标,它们能取得较高的PSNR和SSIM指标,但是存在结果过于平滑的问题。全局的MSE指标较小并不能保证局部细节的清晰度,较大的MSE指标也并不意味着结果差,比如图偏移一个像素后与原图的MSE可能很大,但是感知结果非常相近,因此人眼对结果的感知评价并不完全与这些指标相符。


为了获得与人眼感知更加相符的结果,研究者从风格迁移等任务中进行借鉴,使用了感知损失替代MSE损失,它就是基于特征空间的欧式距离。

在文[2]中将SRCNN模型[1]的像素损失改为感知损失后,显著提高了视觉效果,如下图的倒数第二幅图与最后一幅图的比较。

另外,随着生成对抗网络GAN的发展,生成器和判别器的对抗学习机制在图像生成任务中展现出很强大的学习能力。


基于以上两个特点,SRGAN[3]被提出,它使用ResNet作为生成器结构,使用VGG作为判别器结构,具体结果如上图。


生成器结构包含了若干个不改变特征分辨率的残差模块和两个基于亚像素卷积的后上采样模块,因此它实现了4倍的分辨率提升。


判别器结构则包含了若干个通道数不断增加的卷积层,每次特征通道数增加一倍时,特征分辨率降低为原来的一半。


损失函数包括两部分,分别是内容损失和对抗损失。

根据内容损失选择MSE损失还是感知损失,以及是否添加GAN损失,作者比较了多个模型,SRResNet-MSE, SRResNet-VGG22,SRGAN-MSE, SRGAN-VGG22, SRGAN-VGG54。SRResNet即不使用GAN损失,MSE和VGG22分别表示不同的内容损失。

上图展示了对比结果,其中SRResNet就是SRResNet-MSE。可以看出添加GAN损失能显著改善视觉效果,而使用感知损失的结果细节也比MSE损失更好。


下图统计了一些自然的图像块,基于MSE生成的图像块和基于GAN生成的图像块的对比,也可以发现MSE的结果更加平滑。

github的tensorflow和pytorch开源代码如下:

https://github.com/brade31919/SRGAN-tensorflow

https://github.com/leftthomas/SRGAN

上图展示了一些结果,感兴趣的读者可以使用自己的数据进行训练。


参考文献

[1] Dong C, Loy C C, He K, et al. Image super-resolution using deep convolutional networks[J]. IEEE transactions on pattern     analysis and machine intelligence, 2015, 38(2): 295-307.

[2] Johnson J, Alahi A, Fei-Fei L. Perceptual losses for real-time style transfer and super-resolution[C]//European conference on computer vision. Springer, Cham, 2016: 694-711.

[3] Ledig C, Theis L, Huszár F, et al. Photo-realistic single image super-resolution using a generative adversarial networ    k[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4681-4690.

5 GAN与图像修补

图像修补/补全对于修复图像中的噪声,遮挡等瑕疵至关重要,在photoshop等软件中是非常关键的一个功能,当前正处于快速发展期,GAN以其强大的生成能力成为了关键技术。

有三AI知识星球-网络结构1000变

Context Encoders

Context Encoders是第一个基于GAN的图像补全网络,它可以实现较大孔洞的填充。

作者/编辑 言有三

Context Encoders的模型结构如上,它包含一个Encoder,一个全连接层,一个Decoder,输入为包括遮挡区域的原图,输出被遮挡区域的预测结果。


Encoder的主体结构是AlexNet网络,假如输入227×227,得到特征图为6×6×256。


然后是逐通道全连接层,为了获取大的感受野同时又具有较小的计算量,采用了逐通道全连接的结构,它的输入大小是6×6×256,输出大小则不发生变化。当然此处也不一定要采用逐通道的全连接层结构,只需要控制特征有较大感受野。


Decoder包含了若干个上采样卷积,输出待修补部位,具体的上采样倍率与修补部位相对于原图的大小有关。


训练损失包括两部分,一部分是重建损失,可以使用L1或者L2。

由于需要重建的是被遮挡区域,所以该损失需要在掩膜M的作用下,掩膜可以在训练时随机产生,比如产生不超出原图大小1/4的区域。


另一部分就是对抗损失,用于使生成的结果图更加真实。

上图展示了一些修补案例,虽然有着明显的缺陷,但是它展示了CNN和GAN模型结构相对于传统的图像修补方法的优势,为后续的相关研究开启了方向。


参考项目:https://github.com/BoyuanJiang/context_encoder_pytorch


参考文献

[1] Pathak D, Krahenbuhl P, Donahue J, et al. Context encoders: Feature learning by inpainting[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 2536-2544.

6 GAN与图像融合

图像融合是一个非常底层的任务,它可以实现图像内容的无缝编辑替换,创作新的作品,GAN必会在其中大有作为。

有三AI知识星球-网络结构1000变

GP-GAN

Gaussian-Poisson GAN(GP-GAN)是第一个基于GAN的图像融合网络,它融合使用了传统的梯度方法和GAN,可以实现高精度的图像融合任务。

作者/编辑 言有三

GP-GAN是第一个基于GAN的图像融合网络,要解决的问题如下,即两幅图像在掩膜下的线性叠加。

如上图,图(a)和图(b)就是要叠加的两幅图。c和e是对应图a的掩膜,d是直接拷贝的结果,f是融合后的结果。


GP-GAN 框架主要含有2部分:Blending GAN和Gaussian-Poisson Equation。


Blending GAN是一个编解码结构,它主要作为颜色约束(colour constraint)使生成的图像更加真实和自然,结果为低精度的输出,会比较模糊。其损失函数为L2 重建损失与对抗损失的组合,与大部分图像重建问题相同。

由于在该框架中两幅用于融合的原始图(src)和目标图(dst)是在不同拍摄条件下的同一场景,因此作者使用了目标图作为重建真值。当这个条件不满足时,则使用无监督的方式进行训练。


下图展示了一些结果,其中x是输入,xl是重建结果,xg是真值。

Gaussian-Poisson Equation是一个金字塔式的高分辨结构,它作为梯度约束(gradient constraint),用于进一步提高图像分辨率,使其拥有纹理细节。


优化目标如下:

其中P(xh)就是标准的泊松方程,其目标是使生成图与原始合成图有着相同的高频信号。

div表示散度,∆为拉普拉斯算子,v计算如下。

c(xh)是颜色一致性约束,其目标是使生成图与原始合成图有着相同的低频信号。

以上两个问题写成离散形式如下。

L是拉普拉斯算子,G是高斯算子,u是散度,xh是要求求解的图,它具有解析解,求解时按照金字塔形式不断提升分辨率,前一级求出的xh作为下一级分辨率的xl。


下图展示了一些结果。

第一排是拷贝的目标掩膜,往下依次是直接拷贝, 改进的Poisson Image Editing, Multi-splines Blending以及GP-GAN的融合结果,可以看出GP-GAN的结果最为自然。


读者可以使用作者开源项目进行验证,链接为 https://github.com/wuhuikai/GP-GAN。


参考文献


[1] Wu H, Zheng S, Zhang J, et al. Gp-gan: Towards realistic high-resolution image blending[C]//Proceedings of the 27th ACM International Conference on Multimedia. 2019: 2487-2495.

7 关于更多GAN的内容

有三AI知识星球是我们继公众号之后重点打造的原创知识学习社区,目前的网络结构1000变板块正在更新GAN相关的内容,有需要的同学可以加入学习。

完整的有三AI知识星球生态介绍可以参考我们的一周年总结,点击图片了解详细必看。


以上所有内容

加入有三AI知识星球即可获取

添加微信Longlongtogo加入

可享优惠

更多精彩

每日更新

不见不散


转载文章请后台联系

侵权必究

往期精选


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存