一文教你使用图像超分辨率模型(针对小白,不训练)
Posted 西瓜6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一文教你使用图像超分辨率模型(针对小白,不训练)相关的知识,希望对你有一定的参考价值。
一文教你使用图像超分辨率模型
前言
笔者最近负责了一下图像超分辨率的技术调研。个人觉得图像超分辨率这个技术挺有用的,便做一个简单的分享。针对小白,且仅分享如何使用。
也就是把这张图超分辨了。
图像超分辨率是什么?
图像的超分辨率算法指的是将给定的低分辨率图像通过特定的算法恢复成相应的高分辨率图像。效果大概是这样和这样的。
超分辨率有什么用?
用处就太多了。你的一张照片有点糊,但又想把这个照片做为屏保或者想看清楚照片的某些地方。
开始使用
下载代码
从github上下载大佬的代码及训练好的模型
打开cmd,cd到你想保存的目录。
接着输入
git clone https://github.com.cnpmjs.org/krasserm/super-resolution.git
原下载地址是
https://github.com/krasserm/super-resolution.git
后面加了.cnpmjs.org,速度会变快
下载模型
点这个网址自动进入下载https://martin-krasser.de/sisr/weights-edsr-16-x4.tar.gz
解压后得到一个weights文件夹。将这个文件夹里的“edsr-16-x4”文件夹放入项目的weights文件夹内
直接使用
方法一,打开“example-edsr.ipynb”
运行EDSR内的代码,以及最后的Demo代码。
方法二,
看下面代码
import os
import matplotlib.pyplot as plt
from data import DIV2K
from model.edsr import edsr
from train import EdsrTrainer
from model import resolve_single
from utils import load_image, plot_sample
# Number of residual blocks
depth = 16
# Super-resolution factor
scale = 4
# Downgrade operator
downgrade = 'bicubic'
# Location of model weights (needed for demo)
weights_dir = f'weights/edsr-depth-xscale'
weights_file = os.path.join(weights_dir, 'weights.h5')
os.makedirs(weights_dir, exist_ok=True)
model = edsr(scale=scale, num_res_blocks=depth)
model.load_weights(weights_file)
lr = load_image('demo/0829x4-crop.png')
sr = resolve_single(model, lr)
#sr就是高分辨率的图
#展示一下lr和sr的区别
plot_sample(lr, sr)
#保存sr(用opencv)
import cv2
sr_cv=sr.numpy()[...,::-1]
cv2.imwrite("demo/08691-crop.png",sr_cv)
效果展示
选择一张图片。
那么超分辨后,图像是这样。
整体看没什么差别,但是我们用别的软件放大了看的话,就会有区别了。如图,左边是没超分辨的,右边是超分辨的了。
结束语
对了,电脑不好的话,有可能会卡死,建议换个小尺寸的图片测试
喜欢就点个赞和关注咯。感谢各位。
以上是关于一文教你使用图像超分辨率模型(针对小白,不训练)的主要内容,如果未能解决你的问题,请参考以下文章