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

  • 当今时代,人们对与图像与视频的分辨率要求越来越高,但是一些之前的图片或视频资源的分辨率却是比较堪忧,所以这里我们将会使用腾讯云的GPU服务器来对图像与视频进行超分辨率处理,用于修复一些分辨率较低的图像或视频。

一、服务器的选购与远程连接

  • 这里我们使用的服务器是腾讯云的GPU服务器配置是6核56G+一颗Nvidia Tesla P40显卡。系统镜像采用的是Windows Server2019 ,这款GPU服务器对于我们这次的超分辨率操作来说性能是绰绰有余。
服务器配置
  • 购买好服务器后我们会收到一封站内信,里面包含了登录服务器所需的基本信息。我们使用电脑自带的远程桌面工具连接上服务器。具体操作方法可以看这一篇文档:使用远程桌面连接登录 Windows 实例

二、NVIDIA驱动的安装

  • 连接上服务器之后我们需要安装Nvidia的官方驱动以及NVIDIA GRID 驱动。驱动的安装可以看这几篇文档
  • 安装 NVIDIA Tesla 驱动
  • 安装 NVIDIA GRID 驱动
  • 当然,这边更建议使用已经安装好驱动的GN7vw 服务器,以免除繁琐的GRID驱动的安装过程 。

三、超分辨率操作

  • 这里,我们使用的是B站的开源项目Real-CUGAN
  • 为了便新手操作,这里使用的是Windows-GUI版,在Github页面下载SAE.0.0.3.7z到服务器上,由于国内网络问题,可以使用一些Github加速工具。

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

解压缩后得到的文件
启动后的页面
  • 设置好输入文件与输出文件夹后点击上面的超分设置
输入输出设置
  • 下面来具体讲一下超分的一些设置:
  1. 超分算法:这里有三个超分算法,三者差别如下:
引用自Github:https://github.com/bilibili/ailab/tree/main/Real-CUGAN

这里我们使用B站的Real-CUGAN算法。当然你也可以自行尝试其他算法,适合自己的才是最好的。

  • 超分模型:超分模型这里提供了一共三种,分别是:
    1. 降噪版(Denoise):主要针对原片噪声多,画面中有特别明显的早点;
    2. 无降噪版(No-Denoise):如果原片噪声不多的视频,但是想提高分辨率/清晰度/做通用性的增强、修复处理,推荐使用;
    3. 保守版(conservative):如果担心丢失纹理,担心画风被改变,颜色被增强,总之就是各种担心AI会留下浓重的处理痕迹,推荐使用该版本。
  • 模型前面的up几x表示着这个模型会将视频放大几倍。我这里选择了up4x-latest-conservative.pth,也就是保守版放大四倍的版本。
  • 输出分辨率预设:输出分辨率预设,也就是输出的视频的分辨率。这好像没啥好讲的。。。
  • 切割快大小:这一项比较重要,在视频中的每一帧进行超分前,软件会将每一帧分割成好几块来惊醒处理,以节省GPU的显存。当显卡显存足够时,请选择无,也就是不对帧进行切割。当你的服务器或电脑显存不足,软件报显存不足的错误时,请根据你的显存大小选择合适的切割块大小。
  • 超分使用半精度:对于N卡来说,建议开启此选项,可以有效减少显存占用。

开始超分辨率

  • 回到首页,根据自己的需求选择是否勾选输出图片序列选项(勾选上之后将会输出视频的每一帧)。然后点击一键压制即可开始超分辨率。这时我们可以来到输出页面来查看超分的详细信息。同时会有一个新的窗口实时显示超分的效果。
SAE输出页面
  • 打开任务管理器可以看到GPU的详细信息。
任务管理器

超分后视频的压制

  • 超分完成之后软件会弹窗提醒。这时候我们就需要做一些后续处理。由于超分后的视频文件没有经过压缩,所以占用存储空间特别大,不方便我们传输。我们需要对其进行一下压制,这里我推荐使用ShanaEncoder对视频进行压制,当然你也可以使用ffmpeg等工具进行压制,全凭个人喜好。
任务完成页面
  • 请自行在互联网上下载ShanaEncoder软件,然后打开,打开之后只需添加我们需要压制的文件,同时设置好输出路径即可。然后点击快速设置,来设置一下视频压制的一些参数。
  • 这里建议设置好视频的输出文件格式,一般用的比较多的就是mp4,编解码器建议选择H264,然后打开OpenGL加速,记得将OpenGL加速的显卡选择为你的独显。其他的设置默认即可。然后直接点击开始就可以了。
视频压制
  • 压制完成之后我们可以看到视频文件体积减少了很多。这样的话我们就可以比较方便的传输了。

关于大文件传输

  • 国内的云服务器带宽都是比较贵的,像我现在使用的GPU服务器也就只有5Mbps的外网带宽。我们想要将数据从服务器下载回自己的电脑上需要花费很长的时间。对于不想受低带宽之苦且又不想花大价钱去升级带宽的。我的建议时可以创建一个同地域的COS对象存储。然后服务器与COS之间走内网,将文件保存至COS之后从COS下载下来。这样我们只用花费一点COS的外网流量费用就可以快速的将文件取回了。

总结

  • 使用GPU云服务器对视频进行超分辨率的操作就这些了,对图像进行超分的话就只需要将最初输入的视频改为图片就可以了。
  • 对于大规模的图像以及视频处理来说,自己的电脑性能总归会有些力不从心,这时候,使用GPU服务器就可以更高效得帮我们处理这些。
  • 由于本人学识尚浅,难免会有些疏漏,欢迎各位对我写的内容予以批评指正。同时,欢迎各位进行友好讨论。谢谢大家。