专栏首页Ar-Sr-Na【GPU服务器】图像深度学习超分辨率放大(Real-ESRGAN)
原创

【GPU服务器】图像深度学习超分辨率放大(Real-ESRGAN)

前言

技术提要

ESRGAN全称为Enhanced Super-Resolution Generative Adversarial Networks

该技术相关论文:https://arxiv.org/pdf/1809.00219.pdf

太过复杂的技术原理不做赘述。

通过输入图像输入,邻近插值后寻找马赛克位置插值,同时对二次插值后的位置使用AI的模型进行消除噪声,消除伪影

开山之作为SRCNN

ESRGAN则是在以上所有技术上再先进一步,改进了质量

作者地址:github.com

运行环境需求

硬件

由于需要调用AI核心,而且针对的是图形处理,所以需要用到具有图形功能的设备

可以选购腾讯云的GPU服务器,推荐使用GT4或GN7机型,并安装好GRID驱动

驱动安装:GPU 云服务器 安装 NVIDIA GRID 驱动-操作指南-文档中心-腾讯云-腾讯云 (tencent.com)

测试图片:

原图 1340*1748

以下是测试内容及预期结果

其中,主观质量为放大线条连续度,越高越好

内容*放大倍数

显卡型号(显卡 | 显存)

主观质量

处理耗时/s

动画图片*4

NVIDIA Tesla T4 16G

9

19

动画图片*4

NVIDIA Tesla T4 GRID1/2 8G

9

35

动画图片*16(*4*4)

NVIDIA Tesla T4 16G

10

300+

动画图片*16(*4*4)

NVIDIA Tesla T4 GRID1/2 8G

10

150

这里推荐腾讯云的GN7机型,提供Tesla T4显卡,并预制好GPU GRID图形驱动

软件

需要用到图片训练模型(ESRGAN自带),训练的图片

模型下载:Tags · xinntao/ESRGAN · GitHub

使用方法教程

命令行调用

打开命令行,cd到realesrgan的目录

在这里,输入图片在 同目录下,为 input.jpg

.\realesrgan-ncnn-vulkan.exe -i input.jpg -o output.jpg -n realesrgan-x4plus-anime

参数

内容

-i

设置输入图片路径

-o

设置图片输出路径

-n

设置模型

如果不在同目录的,要用绝对路径,例如

F:\realsgan\input.png

带有空格的目录名,要用引号包括起来,例如

"F:\Develop file\realsgan\input test.png"

回车之后就可以进行处理了

执行到100%的时候就会在设置输出目录下输出 output.jpg

分辨率对比

正好放大了4倍

同时对比一下图片差异(左边原图,右边放大4倍)

未缩放
缩放500%

腾讯云自动助手调用

确认服务器已经安装 TATSVC

安装自动化助手

如果没有安装,请登录服务器,右键开始菜单,Powershell管理员打开

image.png

键入如下命令

wget https://tat-gz-1258344699.cos.ap-guangzhou.myqcloud.com/tat_agent_windows_i686.zip -OutFile .\tat_agent_windows_i686.zip;Expand-Archive -Path .\tat_agent_windows_i686.zip -DestinationPath .\tat_agent_windows_i686;.\tat_agent_windows_i686\install.bat;Remove-Item -Recurse -Force .\tat_agent_windows_i686, .\tat_agent_windows_i686.zip

回车

image.png

控制台新建命令

在云服务器控制台-自动化助手-我的命令(https://console.cloud.tencent.com/cvm/command

处新建一个命令

image.png

按图示完成配置

在命令内容里键入

.\realesrgan-ncnn-vulkan.exe -i {{input}} -o {{output}} -n realesrgan-x4plus-anime

其中,{{input}}{{output}}都是命令参数,方便执行的时候更改不同文件

这里展示下我的配置,推荐使用这串命令,这样每次就不用设置输出路径和名称了:

.\realesrgan-ncnn-vulkan.exe -i {{inputPath}}.{{ext}} -o {{inputPath}}_4x.{{ext}} -n realesrgan-x4plus-anime

其中,{{inputPath}}是输入路径,{{ext}}是后缀名

例如G:\OneDrive - ArSrNa CC\Wallpaper\22-16061GFT0400.jpg转化过去就是

$inputPath="G:\OneDrive - ArSrNa CC\Wallpaper\22-16061GFT0400"
$ext="jpg"

执行的时候只需要这么填写参数

参数

内容

说明

inputPath

"G:\OneDrive - ArSrNa CC\Wallpaper\22-16061GFT0400"

输入的路径(包含到文件)

ext

"jpg"

后缀名

执行命令

对命令单击执行

image.png

调整好参数,选中主机

image.png

最后点击执行命令就可以跟踪命令运行的状态了

image.png

完成之后会有提示

image.png

回到服务器,找到 input_out.jpg ,就是输出的结果

image.png

API调用

操作

通过API操作自动化助手,对服务器进行处理,这种方法适用于Web,app等在线处理平台

首先在API Explorer里找到TAT产品触发命令(在这里

根据参数填写

image.png

参数名

参数

说明

Region

地域

要与命令,CVM所在地域一致

CommandId

命令ID

可在自动化助手里面找到ID

InstanceIds.N

实例ID

可在CVM控制台获取

Parameters

参数

Command 的自定义参数。字段类型为json encoded string。如:{\"varA\": \"222\"}。 key为自定义参数名称,value为该参数的默认取值。kv均为字符串型。 如果未提供该参数取值,将使用 Command 的 DefaultParameters 进行替换。 自定义参数最多20个。 自定义参数名称需符合以下规范:字符数目上限64,可选范围【a-zA-Z0-9-_】。

如上所示,之前的示例对应的参数表如下表

参数名

参数

Region

ap-chengdu

CommandId

cmd-mg...sq

InstanceIds.N

array("ins-0b...oy7")

Parameters

{\"inputPath\":\"input\",\"ext\":\"jpg\"}

切换到代码生成处,选择业务对应代码进行代码改编即可,将("SecretId", "SecretKey")改为自己的秘钥,可在访问管理获得

例如我的Nodejs,将函数封包后如下:

// Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher
const tencentcloud = require("tencentcloud-sdk-nodejs");
const TatClient = tencentcloud.tat.v20201028.Client;

const clientConfig = {
  credential: {
    secretId: "SecretId",
    secretKey: "SecretKey",
  },
  region: "ap-chengdu",
  profile: {
    httpProfile: {
      endpoint: "tat.tencentcloudapi.com",
    },
  },
};

function esrgan(inputPath,ext){
const client = new TatClient(clientConfig);
const params = {
    "CommandId": "cmd-mg...esq",
    "InstanceIds": [
        "ins-0b...oy7"
    ],
    "Parameters": JSON.stringfy({
	   inputPath : inputPath,
       ext : ext
      })
};
client.InvokeCommand(params).then(
  (data) => {
    return(data);
  },
  (err) => {
    return("error", err);
  }
);
}

调用的时候只用 esrgan('文件','后缀')即可

查询执行过程与结果

使用 查询执行任务 (TAT) 这个API即可获得执行信息

API Explorer

在这里,参数需要过滤

先查询账号下所有执行的任务,然后过滤最新的任务,把隐藏输出改为False

参数

设置

说明

Region

地域

与命令地域相同

Filters.N

过滤条件

invocation-id - String - 是否必填:否 -(过滤条件)按照执行活动ID过滤。invocation-task-id - String - 是否必填:否 -(过滤条件)按照执行任务ID过滤。 instance-id - String - 是否必填:否 -(过滤条件)按照实例ID过滤。 command-id - String - 是否必填:否 -(过滤条件)按照命令ID过滤。 每次请求的 Filters 的上限为10, Filter.Values 的上限为5。参数不支持同时指定 InvocationTaskIds 和 Filters

HideOutput

是否隐藏执行内容

这里为了查询,设置为False

Filters.N如此设置

调用结果

点击在线调用

确认正常后生成代码,最后嵌入业务即可

软件直接执行(推荐)

我自己开发了一个软件,并且已开源,可以直接用图形界面进行操作,简洁方便

https://arsrna.coding.net/public/aresrgan/apps/git/files

下载地址:https://arsrna.coding.net/s/025a61cd-dd39-4503-a3c1-16a69a9290eb,查看密码:w6ho

同时也推荐一些较好的软件:

总结

老图片,旧照片,经过压缩的图片,如果你想用来做壁纸,用来做背景,画质会惨不忍睹,又或者联系不上作者拿到原图,不方便拿到的原图,通过这个技术修复老照片,将会是一个取中的方式。

但是因为处理照片需要极大的算力,老电脑可能无法快速完成,借助腾讯云GPU服务器,依据分布式的优点和云端的稳定性,我们能够快速且方便的对图片进行处理,同时还保证了服务的稳定运行,不干扰本地的工作,一切都在云端

Powered by Ar-Sr-Na 更多可能,需要我们共同探索

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 超分辨率 | 综述!使用深度学习来实现图像超分辨率

    今天给大家介绍一篇图像超分辨率邻域的综述,这篇综述总结了图像超分辨率领域的几方面:problem settings、数据集、performance metric...

    AI算法修炼营
  • SRZoo--深度学习图像超分辨率工具

    今天要介绍的是 Github 上一个基于深度学习的超分辨率工具--SRZoo,并且它还提供了多个预训练模型。Github 地址:

    kbsc13
  • 基于深度学习的图像超分辨率方法 总结

    懒得总结,就从一篇综述中选取了一部分基于深度学习的图像超分辨率方法。 原文:基于深度学习的图像超分辨率复原研究进展 作者:孙旭 李晓光 李嘉锋 卓力 北京...

    Natalia_ljq
  • 使用GPU云服务器对图像或视频进行超分辨率

    下载完成后得到这样的一个文件夹和一个bat文件。双击“启动SAE.bat”来启动SAE。

    LuoRogers
  • B站开源自研动漫超分辨率模型,助力动漫UGC视频高清化

    4K/8K内容缺乏始终是超高清视频产业发展的痛点,完善渠道、拍摄制作水平、技术等方面的不足是关键。随着软硬件能力的提升,4K的消费能力大幅提高,为了应对这种情况...

    LiveVideoStack
  • 深度学习图像超分辨率最新综述:从模型到应用

    今日arXiv新上论文《Deep Learning for Image Super-resolution:A Survey》,详细回顾了近年来基于深度学习的图像...

    CV君
  • 从网络设计到实际应用,深度学习图像超分辨率综述

    图像超分辨率(SR)是指从低分辨率(LR)图像中恢复高分辨率(HR)图像的过程,是计算机视觉和图像处理中一种重要的图像处理技术。它在现实世界中有着广泛的应用,如...

    机器之心
  • 走出温室,迈向实用!Real-ESRGAN: ESRGAN插上高阶退化空间的翅膀走向更广义的空间

    Code: https://github.com/xinntao/Real-ESRGAN

    AIWalker
  • 基于深度卷积神经网络的图像超分辨率重建(SRCNN)学习笔记

    目前,单幅图像的超分辨率重建大多都是基于样本学习的,如稀疏编码就是典型的方法之一。这种方法一般先对图像进行特征提取,然后编码成一个低分辨率字典,稀疏系数传到高分...

    Natalia_ljq
  • 基于深度循环卷积神经网络的图像超分辨率重建 学习笔记

    本文使用 深度循环卷积神经网络deeply-recursive convolutional network (DRCN),该网络可以重复使用一个卷积层,多次循环...

    Natalia_ljq
  • 学界 | 深度学习在单图像超分辨率上的应用:SRCNN、Perceptual loss、SRResNet

    机器之心
  • 基于深度学习的图像超分辨率最新进展与趋势【附PDF】

    图像超分辨率是计算机视觉和图像处理领域一个非常重要的研究问题,在医疗图像分析、生物特征识别、视频监控与安全等实际场景中有着广泛的应用。随着深度学习技术的发展,基...

    马上科普尚尚
  • 黄浴:基于深度学习的超分辨率图像技术发展轨迹一览

    我们一般可以将现有的 SR 技术研究大致分为三大类:监督 SR ,无监督 SR 和特定领域 SR (人脸)。

    AI科技大本营
  • TSR:基于深度学习的超分辨率技术及应用

    本技术能够在图片 size 只有原来 25% 的情况下将图片还原到与原图的同等效果,在空间的应用可以节省用户 75% 的流量。

    QQ空间开发团队
  • 不容错过!作者亲自解读 RealBasicVSR

    小伙伴们好呀,今天给大家带来的干货是最近在 CVPR 2022 中发表的关于真实视频超分的文章 RealBasicVSR 的解读。划重点!本次是作者 Kelvi...

    OpenMMLab 官方账号
  • 业界 | 华为推出新型HiSR:移动端的超分辨率算法

    机器之心发布 作者:Mr. AI 近日,华为推出了 HiSR 超分辨率技术,该模型借助第一款人工智能手机芯片 Kirin 970 和深度学习算法将低分辨率图片转...

    机器之心
  • 用Jetson NANO实现真实世界超高质量的超分辨率重建

    注意,它用的是Vulkan进行计算,并没有用CUDA/OpenCL,这大概处于通用性的考虑。

    GPUS Lady

扫码关注云+社区

领取腾讯云代金券