Project Icon

SRGAN-PyTorch

基于GAN的单图像超分辨率实现

SRGAN-PyTorch是一个开源项目,实现了基于生成对抗网络的单图像超分辨率算法。该项目能够将图像放大4倍,同时保持高质量和细节。它提供了完整的训练和测试流程,包括预训练模型、数据集处理脚本和性能评估。研究者和开发者可以利用此项目复现原论文结果或在自定义数据上应用SRGAN技术。

SRGAN-PyTorch

概述

本仓库包含了使用生成对抗网络的照片级真实单图像超分辨率的PyTorch逐步实现。

目录

下载权重

下载所有可用的模型权重。

# 下载 `SRGAN_x4-SRGAN_ImageNet.pth.tar` 权重到 `./results/pretrained_models`
$ bash ./scripts/download_weights.sh SRGAN_x4-SRGAN_ImageNet
# 下载 `SRResNet_x4-SRGAN_ImageNet.pth.tar` 权重到 `./results/pretrained_models`
$ bash ./scripts/download_weights.sh SRResNet_x4-SRGAN_ImageNet
# 下载 `DiscriminatorForVGG_x4-SRGAN_ImageNet.pth.tar` 权重到 `./results/pretrained_models`
$ bash ./scripts/download_weights.sh DiscriminatorForVGG_x4-SRGAN_ImageNet

下载数据集

这些训练图像是从ImageNet2012分类数据集的验证部分随机选择的。

$ bash ./scripts/download_datasets.sh SRGAN_ImageNet

这里也方便下载一些常用的测试数据集。

$ bash ./scripts/download_datasets.sh Set5

如何测试和训练

训练和测试只需修改yaml文件即可。

项目中使用Set5作为测试基准,您可以自行修改。

如果您需要测试模型效果,请下载测试数据集。

$ bash ./scripts/download_datasets.sh Set5

测试srgan_x4

$ python3 test.py --config_path ./configs/test/SRGAN_x4-SRGAN_ImageNet-Set5.yaml

测试srresnet_x4

$ python3 test.py --config_path ./configs/test/SRResNet_x4-SRGAN_ImageNet-Set5.yaml

训练srresnet_x4

首先,将数据集图像分割成几个小图像,以减少IO并保持批处理图像大小统一。

$ python3 ./scripts/split_images.py

然后,运行以下命令训练模型

$ python3 train_net.py --config_path ./configs/train/SRResNet_x4-SRGAN_ImageNet.yaml

恢复训练srresnet_x4

修改 ./configs/train/SRResNet_x4-SRGAN_ImageNet.yaml 文件。

  • 第33行:将 RESUMED_G_MODEL 更改为 ./samples/SRResNet_x4-SRGAN_ImageNet/g_epoch_xxx.pth.tar
$ python3 train_net.py --config_path ./configs/train/SRResNet_x4-SRGAN_ImageNet.yaml

训练srgan_x4

$ python3 train_gan.py --config_path ./configs/train/SRGAN_x4-SRGAN_ImageNet.yaml

恢复训练srgan_x4

修改 ./configs/train/SRGAN_x4-SRGAN_ImageNet.yaml 文件。

  • 第38行:将 PRETRAINED_G_MODEL 更改为 ./results/SRResNet_x4-SRGAN_ImageNet/g_last.pth.tar
  • 第40行:将 RESUMED_G_MODEL 更改为 ./samples/SRGAN_x4-SRGAN_ImageNet/g_epoch_xxx.pth.tar
  • 第41行:将 RESUMED_D_MODEL 更改为 ./samples/SRGAN_x4-SRGAN_ImageNet/d_epoch_xxx.pth.tar
$ python3 train_gan.py --config_path ./configs/train/SRGAN_x4-SRGAN_ImageNet.yaml

结果

原始论文结果来源:https://arxiv.org/pdf/1609.04802v5.pdf

在下表中,()中的psnr值表示项目的结果,-表示未测试。

Set5比例SRResNetSRGAN
PSNR432.05(32.16)29.40(30.67)
SSIM40.9019(0.8938)0.8472(0.8627)
Set14尺度SRResNetSRGAN
:-----::-----::------------------::------------------:
PSNR428.49(28.57)26.02(27.12)
SSIM40.8184(0.7815)0.7397(0.7321)
BSD100尺度SRResNetSRGAN
PSNR427.58(27.56)25.16(26.22)
SSIM40.7620(0.7367)0.6688(0.6867)
# 如果你没有自己训练模型,可以下载模型权重并进行测试。
$ bash ./scripts/download_weights.sh SRGAN_x4-SRGAN_ImageNet
$ python3 ./inference.py

输入:

输出:

成功构建 `srresnet_x4` 模型。
成功加载 `srresnet_x4` 模型权重 `SRGAN-PyTorch/results/pretrained_models/SRGAN_x4-SRGAN_ImageNet.pth.tar`。
超分辨率图像已保存至 `./figure/sr_comic.png`

贡献

如果你发现了bug,请创建一个GitHub issue,或者更好的是,提交一个pull request。同样,如果你有任何问题,也可以直接在GitHub issues中提出。

我期待看到社区如何使用这些模型!

致谢

使用生成对抗网络的照片级真实单图像超分辨率

Christian Ledig, Lucas Theis, Ferenc Huszar, Jose Caballero, Andrew Cunningham, Alejandro Acosta, Andrew Aitken, Alykhan Tejani, Johannes Totz, Zehan Wang, Wenzhe Shi

摘要
尽管使用更快、更深的卷积神经网络在单图像超分辨率的准确性和速度上取得了突破,但一个核心问题仍然没有得到解决:当我们进行大规模上采样时,如何恢复更细腻的纹理细节?基于优化的超分辨率方法的行为主要由目标函数的选择驱动。最近的工作主要集中在最小化均方重建误差上。虽然得到的估计结果具有较高的峰值信噪比,但它们往往缺乏高频细节,在感知上不令人满意,因为它们无法匹配在更高分辨率下预期的保真度。在本文中,我们提出了SRGAN,一个用于图像超分辨率的生成对抗网络。据我们所知,这是第一个能够推断4倍上采样因子的照片级真实自然图像的框架。为了实现这一目标,我们提出了一个由对抗损失和内容损失组成的感知损失函数。对抗损失使用经过训练的判别器网络来区分超分辨率图像和原始照片级真实图像,从而将我们的解决方案推向自然图像流形。此外,我们使用基于感知相似性而非像素空间相似性的内容损失。我们的深度残差网络能够从公共基准上的严重下采样图像中恢复照片级真实的纹理。广泛的平均意见得分(MOS)测试显示,使用SRGAN在感知质量上获得了巨大的显著提升。使用SRGAN获得的MOS分数比使用任何最先进方法获得的分数更接近原始高分辨率图像的分数。

[论文]

@InProceedings{srgan,
    author = {Christian Ledig, Lucas Theis, Ferenc Huszar, Jose Caballero, Andrew Cunningham, Alejandro Acosta, Andrew Aitken, Alykhan Tejani, Johannes Totz, Zehan Wang, Wenzhe Shi},
    title = {Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network},
    booktitle = {arXiv},
    year = {2016}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号