您的位置:首页 > 其它

用SRGAN提升图片清晰度(TensorFlow)

2017-11-29 16:32 267 查看
近两年GAN(Generative Adversarial Network

)相关的论文大火了一把,我自己也体验了几次,确实是很神奇的网络,GAN的各种变体基本都是用来生成图片的,关于GAN相关的说明这里不多讲,如有需要了解的可以自行搜索。

但是GAN似乎有个问题,生成的图片清晰度不是很好,因此SRGAN(Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial

Network)也就是针对这个问题作出的优化,不同于普通的GAN是通过噪声来生成一个真实图片,SRGAN的目的在于将一个低分辨率的图片转化为一个高分辨率的图片。

具体的算法这里也不介绍了,GAN的变体太多,我也不是专门研究这些的,所以这里只介绍效果如何,以及怎么用。

先看几组图:



很好奇论文中选择的示例图居然是一个我国少数民族妹子。

训练方法大致就是构建好网络后,找一个高清图片数据集,对每个图片做处理得到低分辨率的图片,从而得到低分辨率图片数据集。用这两个数据集来训练网络,实现低分辨率到高分辨率图片的转化。

我自己测试了几张人脸图的转换:

人脸·男:



人脸·女:



从对比来看很容易发现确实提高了分辨率,至少视觉上看总觉得左边的是眼镜糊了。

我们放大来看一下算法到底做了什么:





从放大图中可以看到,人脸上多了很多奇怪的纹路,但是缩小后看就会觉得确实分辨率提高了,神奇的大自然!

如果你对这个实验感兴趣,也可以自己来尝试一下。在Github可以搜到很多TensorFlow下的开源代码,如果自己机器显卡够强的话可以自己按照说明训练,如果显卡不行也没关系,我实验的这份源码作者提供了预训练好的模型(最爱这种作者了!):https://github.com/brade31919/SRGAN-tensorflow

其训练好的模型需要在Google云盘下载,需要翻墙。

要注意的是,这份代码只能输入png图片,如果你是jpg图片,通过简单的画图工具转换成png格式也是不行的,代码会报错的。

下载源代码和模型后,将模型文件夹“SRGAN_pre-trained”直接放到源代码目录下,创建一个你的图片目录,将png图片丢进去,修改“inference_SRGAN.sh”文件的红框部分为你的图片路径:



然后在终端运行“inference_SRGAN.sh”文件即可,如果成功了会如下:



其中“000156”是我图片的名字。

最后,我的运行环境是:

* macOS 10.12.6

* TensorFlow 1.3.0

* Python 2.7

Have fun!

查看作者首页
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: