- ???? 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️
- ???? 深度学习: # 超分重建、一文读懂
- ???? 超分重建经典网络 SRGAN 详尽教程
- ???? 最近更新:2022年2月28日
- ???? 点赞 ???? 收藏 ⭐留言 ???? 都是博主坚持写作、更新高质量博文的最大动力!
- ???? ???? Follow me ????,一起 Get 更多有趣 AI、冲冲冲 ???? ????
???? 基础信息
- 本博文运行的代码GitHub链接,弱鸡一枚,向各位前辈大佬致敬
- PyTorch implementation of SRGAN -- 非官方实现
遇到疑问、可第一时间评论区交流
???? 环境搭建
Ubuntu 16.04.4 LTS \n \l
2080Ti , cuda10.0
conda create -n torch11 python=3.6.9
conda activate torch11
conda install pytorch==1.1.0 torchvision==0.3.0 cudatoolkit=10.0 -c pytorch
pip install pillow==5.2.0
pip install opencv-python
pip install scipy
pip install thop
pip install matplotlib
pip install pandas
pip install tqdm
???? 数据准备
我使用的训练数据:DIV2K,如果不知道如何下载,可参考我的这篇博文
# 超分辨率重建数据集总结 看这篇就够了
- 测试数据:点击上图 gitHub 提供的下载链接下载
- 数据集存放位置如下
这个代码 训练数据只需要
HR
图片即可:
在
train.py
中设置 训练数据集、和 评估集 路径;
❤️ 训练和测试
???? Train
python train.py
optional arguments:
--crop_size training images crop size [default value is 88]
--upscale_factor super resolution upscale factor [default value is 4](choices:[2, 4, 8])
--num_epochs train epoch number [default value is 100]
The output val super resolution images are on `training_results` directory.
???? Test Benchmark Datasets
python test_benchmark.py --upscale_factor 2 --model_name netG_epoch_2_10.pth
optional arguments:
--upscale_factor super resolution upscale factor [default value is 4]
--model_name generator model epoch name [default value is netG_epoch_4_100.pth]
The output super resolution images are on benchmark_results directory.
和小伙伴的一些讨论
关于此博文的一些交流
我训练完之后如何将它的生成模型拿出来,然后单独训练我自己的低分辨率图片
- 该代码训练出的模型位于 srgan_torch/epochs 目录下,做测试时指定 模型 路径即可
- SRGAN pytorch 这个 代码做训练 需要 HR 原图 ;(它会把HR 下采样 得到 配对的 LR )然后进行训练;
- test_benchmark.py 是对 Set5 、Set14 等数据集进行测试 并且 计算 psnr ;
- test_image.py 这个 代码 就是 指定模型,然后针对一张 图片 来 进行 单独 SR 重建的;
- 如果 你要使用 模型 来 重建自己的 LR 图片 得到 HR ,那么你写一个 for 循环 ,执行 test_image.py(或者把里面的代码 抽取为一个方法进行调用)就可以了;
test_image.py 文件 是怎么运行的?
这个文件是作者项目中的文件,它的代码可以运行,但是如果想大量重建自己某个目录下的图像;该代码尚有一些缺陷,参考该文件代码,重写一份循环调用代码即可;
- 运行程序,只需传入对应参数即可
- 运行命令示例
python test_image.py --upscale_factor 2 --model_name netG_epoch_2_100.pth --test_mode CPU --image_name 4x2.png
- 输出如下
test_image.py:31: UserWarning: volatile was removed and now has no effect. Use `with torch.no_grad():` instead.
image = Variable(ToTensor()(image), volatile=True).unsqueeze(0)
cost29.748524s
- 输入和重建得到的图片位置如下,如果是其它目录,需要修改一下该代码才可行
???? 相关报错
???? 初次训练 会自动下载 pytorch版本的 vgg16 model 用来 计算 loss ,考验网速哈:
- Linux 系统下 VGG16 模型的安放位置如下:
- Windows 安放到哪里呢??? 哪位大佬看到了,欢迎评论区补充 ,给小白同学安排一下
- 遇到这个错误,可能是因为 下载的 模型 文件是坏的(Danny 同学补充)
???? CUDA out of memory 报错如下:
RuntimeError: CUDA out of memory. Tried to allocate 1018.00 MiB (GPU 0; 7.79 GiB total capacity; 4.72 GiB already allocated; 853.50 MiB free; 1.52 GiB cached)
- 解决方法: 修改 batch_size=4
???? test_benchmark.py 测试 ssim 计算 报错,处理方法如下:
???? 其他实验补充
显卡 2080Ti , cuda10.0 ,8G
训练数据: DIV2K
训练命令: python train.py
train.py 中 参数设置如下:
parser = argparse.ArgumentParser(description='Train Super Resolution Models')
parser.add_argument('--crop_size', default=96, type=int, help='training images crop size')
parser.add_argument('--upscale_factor', default=2, type=int, choices=[2, 4, 8],
help='super resolution upscale factor')
parser.add_argument('--num_epochs', default=100, type=int, help='train epoch number')
训练时长: 2小时20分钟 【100 epochs】
测试时长: 57s
???????? 探讨【如何开始跑实验】
没想到PyTorch 版本 SRGAN 的关注的新同学还蛮多哈;看来 PyTorch 是真香啊;就此我说一下个人对此的看法:
对于新同学而言:
- 第一步:正确搭建环境
- 第二步:正确设置数据路径
- 第三步:运行训练和测试
- 第四步:主观和客官评估超分重建效果
- 第五步:改进代码,循环以上步骤
最重要(基础)的就是前两步骤,如果新同学遇到问题,建议按照博文教程认真检查一下自己是否落实好基础工作;
大部分看了这个博文的同学都能够直接顺利运行和测试,说明这个教程总体上是充分够用的;
SRGAN 虽然经典,但是这3 年 过去,它终将成为过去,还是建议大家学习近两年 最新的 SR 相关论文和代码;
超分重建-代码环境搭建--专栏 下有几篇 19、20年的超分代码经典总结相信也一定可以帮助各位新同学参考学习哈;
嗯,最后,感谢您的耐心查阅,博主本人现在已经从 SR 脱坑到图像修复、目标检测(难瘦)了,不过也还在视觉这个深坑里哈,大家一起学习进步啊;
搭合适自己的顺风车,即是真正的高效
墨理学AI
- 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️
- ❤️ 如果文章对你有帮助、点赞、评论鼓励博主的每一分认真创作
快乐学AI 、深度学习环境搭建 : 一文读懂
- ???? # ubuntu给当前用户安装cuda11.2 图文教程
- ???? # linux和window设置 pip 镜像源——最实用的机器学习库下载加速设置
- ????# anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】
- ???? # 指定GPU运行和训练python程序 、深度学习单卡、多卡 训练GPU设置【一文读懂】
- ???? # Linux下cuda10.0安装Pytorch和Torchvision【一文读懂】
- ???? # 一文读懂SSH密码登录、公钥认证登录
- ???? # 一文读懂 Centos、Ubuntu 环境 安装JDK 11:配置JAVA_HOME环境变量