当前位置 : 主页 > 编程语言 > java >

Tensorflow入门教程(二十八)——超分辨生成对抗网络(SRGAN)

来源:互联网 收集:自由互联 发布时间:2022-07-22
前面的文章给大家分享了生成对抗网络来生成图像,初次见识到生成对抗网络的强大,我们期望可以用它来做更多的事情,今天我将用生成对抗网络来做超分辨成像。 一、SRGAN网络结构

前面的文章给大家分享了生成对抗网络来生成图像,初次见识到生成对抗网络的强大,我们期望可以用它来做更多的事情,今天我将用生成对抗网络来做超分辨成像。

一、SRGAN网络结构

前面文章已经介绍过GAN的原理,这里就不多说废话。我把SRGAN的网络结构分享给大家,如图所示。我简单介绍一下,SRGAN的输入是低分辨图像和相应的高分率图像,低分辨图像经过解码编码网络结构的生层网络生成结果输出图像,然后将高分率图像和生成网络的输出图像一起输入到分类结构的判别网络中去,进行真假判别。

Tensorflow入门教程(二十八)——超分辨生成对抗网络(SRGAN)_tensorflow

二、用tensorflow实现SRGAN

我已经用tensorflow实现了初始版本的GAN和Wasserstein GAN(这是GAN的改进版本,初始版本GAN训练的时候非常不稳定很难训练,WGAN训练的时候比较稳定,很快就能收敛看到以假乱真的生成图像)。为了让大家自己学习,我就不把SRGAN的代码分享给大家,只需将我在GitHub上的WGAN进行简单修改就可以了。

三、生成图像效果

我分别对自然图像和MR图像进行了效果测试。

自然图像超分辨就是将分辨率低的图像变成分辨率高的图像且图像不模糊,不失真。我对256x256大小的自然图像进行2倍放大变成512x512,常规方法是用线性插值的方法来对图像放大,为了对比效果,下面第一张是用线性插值2倍的结果,第二张是用SRGAN处理的结果。

Tensorflow入门教程(二十八)——超分辨生成对抗网络(SRGAN)_线性插值_02


Tensorflow入门教程(二十八)——超分辨生成对抗网络(SRGAN)_线性插值_03

我们还将SRGAN应用在MR图像重建。根据实际临床需求,会用不同的采样倍数来产生MR图像,但这会带来一系列图像质量问题。例如只采一半K空间数据来重建MR图像时就会产生伪影现象而且整体分辨率很低。所以我们可以用SRGAN将欠采样的MR图像恢复成跟非欠采样的MR图像一样的效果。如下图所示,第一张是2倍欠采恢复的MR图像,第二张是没有欠采样的标准MR图像,第三张是用SRGAN处理恢复的MR图像。

Tensorflow入门教程(二十八)——超分辨生成对抗网络(SRGAN)_tensorflow_04

Tensorflow入门教程(二十八)——超分辨生成对抗网络(SRGAN)_tensorflow_05

Tensorflow入门教程(二十八)——超分辨生成对抗网络(SRGAN)_图像质量_06

大家觉得上面的结果怎么样呢?如果碰到任何问题,随时留言,我会尽量去回答的。也期望大家可以一起讨论学习交流医学影像上还有没有其它方面可以研究,欢迎给我留言。

网友评论