【复现系列】ESPCN:使用有效的亚像素卷积神经网络实现实时单图像和视频超分辨率 的Pytorch复现
ESPCN超分辨率图像重建模型复现详细流程,一看就会,轻松上手,让这个是世界没有难做的复现!
论文复现系列第一篇:
ESPCN:使用有效的亚像素卷积神经网络实现实时单图像和视频超分辨率的Pytorch复现
文章目录
前言
开一个论文复现的系列吧,主要做一些我目前工作涉及到的论文复现记录。这个系列文章偏简单,主打一个傻瓜式操作教程。目的是帮助刚入门的学术小白尽快展开工作。本文所复现的工作均会注明原论文题目以及相应Github网址。
提示:以下是本篇文章正文内容,下面案例可供参考
一、ESPCN文章梗概
文章地址:https://arxiv.org/abs/1609.05158
GitHub地址: https://github.com/leftthomas/ESPCN
这项工作已经是8年前了,主要做的事情就是针对低分辨率图像做一个超分辨率的处理,提升图像清晰程度。模型效果文章和github中均有展示,具体的模型架构也请大家直接阅读原文即可。本文重点在于复现流程介绍。
这里放一张模型效果图以供参考:
左侧为低分辨率图像,中间为原始图像,右侧为ESPCN超分处理之后得到的高分辨率图像。
二、模型复现
1.安装相关库
安装相关库主要用下面三行代码:
依次运行安装命令即可,python版本为3.9
conda install pytorch torchvision cuda80 -c soumith #安装Pytorch与torchvision
pip install git+https://github.com/pytorch/tnt.git@master #安装PytorchNet
conda install opencv #安装opencv
注意,其中第二行代码PytorchNet很有可能是安装不成功的(但依然需要运行这行代码,因为还有其他相关库要安装上去),所以直接使用下面代码安装即可:
conda install torchnet=0.04
2.数据准备
这里直接给出图片超分辨训练、测试的数据集准备流程,视频的超分辨过程是一样的,对应下载即可。
训练数据集:https://pan.baidu.com/share/init?surl=xuFperu2WiYc5-_QXBemlA
提取码:5tzp
测试数据集:https://pan.baidu.com/share/init?surl=vGosnyal21wGgVffriL1VQ
提取码:xwhy
下载好压缩包之后,直接解压到项目目录路径 ESPCN-MASTER/data 目录下即可。下载好后目录如下图:
然后运行数据处理命令:
可选参数为超分辨倍数(也即你想让模型训练多大倍数的超分辨率)
默认为3,可以调整为其他倍数。
python data_utils.py #默认超分辨3倍
python data_utils.py --upscale_factor 8 # 这样输入的话就是8倍超分辨数据处理
optional arguments:
--upscale_factor super resolution upscale factor [default value is 3]
数据处理完毕后就会出下下图红框中的文件夹:
3.训练过程
注意,本项目源代码使用了visdom来进行可视化,但是这个库使用会出一些问题导致无法正常使用,如果想使用可以参考一下这篇文章来正确配置visdom库:
如果不需要使用visdom,只想直接复现整个模型,那可以参考我这个直接的解决方法:
注释掉train.py文件中一下两张图的代码即可屏蔽掉visdom的运行,不影响模型完整性。
然后就可以开始训练模型了,由于模型比较古老了,对算力要求很低,1050ti就完全可以训起来。
执行下列代码开始训练:
python -m visdom.server & python train.py #这行代码是使用visdom的训练指令
python train.py #这行代码是不使用visdom,也即按照我说明注释之后的可以使用这个训练指令
optional arguments: #可选参数,一个是超分辨倍数,一个是训练轮数,大家自己选择即可
--upscale_factor super resolution upscale factor [default value is 3]
--num_epochs super resolution epochs number [default value is 100]
训练速度比较快,我是用Nvidia A10显卡,100轮时间为一小时40分钟。
训练好后可以在epoch文件夹下看到训练好的每一轮模型参数文件。
4.测试过程
训练完毕后就可以准备测试了,测试代码如下:
python test_image.py #测试命令
optional arguments: #依然是可选参数,同上
--upscale_factor super resolution upscale factor [default value is 3]
--model_name super resolution model name [default value is epoch_3_100.pt]
测试代码运行后,可以在 result 文件夹下找到模型处理前后的图片。
测试图片与训练图片中编号相同的即为同一张照片,这里随机展示一张图片
原图(上)与模型从模糊图中超分辨(3倍)处理后图(下):
大家可以用自己拍的照片放上去试试模型的超分辨效果,操作方式就是直接把图像放进train数据集中,使用data_utils文件处理成输入格式,再放进test数据集中,然后运行test.py即可,但需要注意的是我们拍的照片需要提前用图像处理软件降低一下像素大小,变为256*256即可,这个WPS的照片处理插件就可以做。
这样整个模型的复现就做完了,视频流程与图像处理过程相似,大家可以照着做就行,这里把视频的训练和测试数据集链接放在下面:
链接:https://pan.baidu.com/share/init?surl=2OrUPN9H1Grj4FTOxh9L1g
提取码:6rad
更多推荐
所有评论(0)