GAN学习笔记(二)图像去模糊 DeblurGAN 和 DeblurGANv2

图像去模糊 DeblurGAN 和 DeblurGANv2

  • 1、 图像去模糊 DeblurGAN
  • 2、图像去模糊DeblurGANv2

1、 图像去模糊 DeblurGAN

论文:DeblurGAN: Blind Motion Deblurring Using Conditional Adversarial Networks

代码:KupynOrest/DeblurGAN

论文主要贡献:

  • 提出使用DeblurGAN对模糊图像去模糊,网络结构基于cGAN和“content loss”。获得了目前最佳的去模糊效果
  • 将去模糊算法运用到了目标检测上,当待检测图像是模糊的的时候,先对图像去模糊能提高目标检测的准确率
  • 提出了一个新的合成模糊图像的方法

生成模糊图像的方法:
用清晰图像卷积上各式各样的“blur kernel”,获得合成的模糊图像。

2、图像去模糊DeblurGANv2

论文:DeblurGAN-v2: Deblurring (Orders-of-Magnitude) Faster and Better
代码:VITA-Group/DeblurGANv2

DeblurGANv2是乌克兰天主教大学的Orest Kupyn等人提出的一种基于GAN方法进行盲运动模糊移除的方法。它在第一版DeblurGAN基础上进行改进而来,通过引入Feature Pyramid Network与轻量型backbone等使得DeblurGANv2取得更快、更优的性能。
作者首次将FPN引入到去模糊中作为生成器的核心模块。FPN可以与大量的backbone协作,可以轻松的在性能与效率方面取得均衡。FPN-Inception-ResNet-v2集成取得了SOTA性能,而FPN-MobileNet系列取得10-100倍的速度提升同时具有媲美其他SOTA方法的性能,可以达到实时性需求。除了在去模糊领域,DeblurGANv2取得了SOTA性能,它同时适用于其他图像复原任务。

Abstract
​ 作者将FPN架构引入到去模糊问题中,同时采用了不同的backbone进行网络设计,配合GAN以及内容损失的训练学习,DeblurGANv2取得了更快更优的性能。论文的创新点包含:

  • 框架层面。作者构建了一个基于FPN的去模糊框架,判别器方面选用了relativistic形式并配以最小二成损失,在全局与局部两个尺度方面进行度量;
  • 骨干层面。在上述框架基础下,骨干网络的选择直接影响最终的去模糊质量与效率。在追求更高质量时可以考虑选用Inception-Resnet-v2骨干网络;在追求更快速度时可以考虑选用轻量型网络,如MobileNet系列。
  • 实验层面。作者在三个流程基准数据集上进行了充分的实验对比,DeblurGANv2均取得了SOTA性能;同时作者也表明该框架同样适用于更广义的图像复原任务。

参考:图像去模糊:DeblurGANv2
参考:图像去模糊之DeblurGAN-v2

跑通程序DeblurGANv2
需要从github上下载训练好的模型:fpn_mobilenet.h5

此外还需要下载预训练模型:
mobilenet_v2.pth.tar模型的url:http://sceneparsing.csail.mit.edu/model/pretrained_resnet/mobilenet_v2.pth.tar
(感觉预测时这个不是必须的,但是代码可能写的有问题,所以不得不下载)
预测时models/fpn_mobilenet.py 下面的代码注释掉也是可以执行的。

        if pretrained:  
            #Load weights into the project directory
            state_dict = torch.load('mobilenet_v2.pth.tar') # add map_location='cpu' if no gpu
            net.load_state_dict(state_dict)

接着就是修改 config/config.yaml

g_name: fpn_mobilenet

修改predict.py

weights_path='fpn_mobilenet.h5',

再有就是 models/fpn_mobilenet.py 修改预训练模型名称,因为下载的预训练模型名称与代码中差一个下划线:

state_dict = torch.load('mobilenet_v2.pth.tar')

然后就可以参照 README.md中的提示在终端执行预测脚本。

python predict.py IMAGE_NAME.jpg

比如我使用的是一张名为23.png的图片:

python predict.py 23.png

执行结果:左图是去模糊之前的图片,右图是去模糊之后的图片。可以看到确实起到了去模糊的作用。

你可能感兴趣的:(GAN,深度学习,pytorch,人工智能)