像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片

​图像超分辨率是指由一幅低分辨率图像或图像序列恢复出高分辨率图像。图像超分辨率技术分为超分辨率复原和超分辨率重建。一位 Reddit 网友贴出了自己基于 Keras 的图像超分辨率项目,可以让照片放大后依然清晰。

像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片_第1张图片

该项目包含不同残差密集网络的 Keras 实现,它们可用于高效的单图像超分辨率(Image Super Resolution,ISR)。同时作者还提供了各种文档资料以帮助训练模型,包括如何使用对抗损失组件训练这些网络。

作者表示,该项目旨在改善低分辨率图像的质量,使其焕然一新。使用该工具可以对图像进行超级放缩,还能很容易地在 RDN 和 GAN上进行实验。

下图示例使用的放大因子(upscaling factor)为 2,即像素数扩大两倍。

像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片_第2张图片

左图为原始的低分辨率图像,中间图为该网络的输出结果,右图为使用 GIMP bicubic scaling 得到的基线模型放大结果。

超分辨率项目使用

前面展示的超分辨率效果都是根据该项目实现的不同模型做出来的。超分辨率希望根据已有的图像信息重构出缺失的图像细节,它通常借助卷积神经网络抽取图像信息,再通过转置卷积将这些信息扩展到希望获得的图像分辨率。

在这个项目中,作者新增了很多模块与特征,例如使用 VGG 与 GAN 实现真实的放大图像。该项目主要实现的是 RDN 与 RRDN 网络,且同时还提供了预训练权重和 Colab 教程。不论是训练还是推断,根据这些资料我们都可以快速上手。

文档:https://idealo.github.io/image-super-resolution/

代码:https://github.com/idealo/image-super-resolution/

Colab 推断代码:https://colab.research.google.com/github/idealo/image-super-resolution/blob/master/notebooks/ISR_Prediction_Tutorial.ipynb

Colab 训练代码:https://colab.research.google.com/github/idealo/image-super-resolution/blob/master/notebooks/ISR_Traininig_Tutorial.ipynb

安装:pip install ISR

如果我们需要扩展低像素图像,简单两步就能借助 ISR 执行超分辨率。首先加载图像并做一定的预处理:

import numpy as np
from PIL import Image
​
img=Image.open('test.jpg')
lr_img=np.array(img)/255
print(lr_img.shape)
lr_img=np.expand_dims(lr_img,axis=0)
print(lr_img.shape)
​
#加载模型并执行预测
from ISR.models import RDN
​
rdn=RDN(arch_params={'C':6,'D':20,'G':64,'G0':64,'x':2})
rdn.model.load_weights('weights/rdn-C6-D20-G64-G064-x2_enhanced-e219.hdf5')
​
sr_img=rdn.model.predict(lr_img)[0]
print(sr_img.shape)
​
sr_img=sr_img.clip(0,1)*255
sr_img=np.uint8(sr_img)
img_new=Image.fromarray(sr_img)
img_new.show()
img_new.save('img_new.jpg')

像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片_第3张图片

像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片_第4张图片

网络架构与超参数

实际上,如果我们需要重新训练,那么还需要了解具体的参数都表示什么。这一部分介绍了各超分辨率网络的架构与对应超参数。

RDN Network architecture

论文地址:https://arxiv.org/abs/1802.08797

RDN 架构的主要参数如下:

D:残差密集块(Residual Dense Blocks ,RDB)数量

C:一个RDB内部堆叠的卷积层数量

G:RDB 内部每一卷积层的特征图数量

G0:每一个RDB 的卷积层的特征图数量

像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片_第5张图片

像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片_第6张图片

RRDN Network architecture

论文地址:https://arxiv.org/abs/1809.00219

RRDN 架构的主要参数如下:

T:残差密集块内的残差数量

D:一个RRDB 内部的残差密集块(RDB)的数量

C:一个RDB 内部堆叠的卷积层数量

G:RDB 内部每一卷积层的特征图数量

像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片_第7张图片

像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片_第8张图片

你可能感兴趣的:(像素不够,算法来凑。这个图像超分辨率项目帮你「拍」出高清照片)