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

本文介绍了DeblurGANv2,一种基于生成对抗网络(GAN)的图像去模糊方法,其在DeblurGAN的基础上通过引入特征金字塔网络(FPN)提升了去模糊速度和效果。DeblurGANv2可以适应不同的后端网络,如Inception-ResNet-v2和MobileNet系列,实现性能与效率的平衡。实验表明,DeblurGANv2在图像去模糊任务中达到SOTA水平,并且适用于其他图像恢复任务。文章还提供了代码运行示例,展示去模糊前后的图像对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

图像去模糊 DeblurGAN 和 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

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

在这里插入图片描述

评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落花逐流水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值