使用PyTorch版的原因

up先前使用的是topaz来超分动漫,最近看到了B站的超分模型CUGAN,于是就下载了GUI版试试,结果还是和topaz一样,吃不满显存和核心,推理速度上不去。推测原因可能是GUI版提供可以调节的参数较少,无法对特定的硬件配置进行优化。所以想着使用pytorch版,参数可以自己根据电脑配置进行调节,以期提高推理速度。

官方项目及PyTorch版本下载地址

项目地址:https://github.com/bilibili/ailab/tree/main/Real-CUGAN

下载链接:https://github.com/bilibili/ailab/releases/tag/Real-CUGAN


【资料图】

百度网盘:https://pan.baidu.com/s/10NbgnusDucllKiE0sgBWvQ 提取码:ds2a

个人平台及操作系统

CPU:Ryzen 5900X

GPU:RTX 4090(驱动:Nvidia Studio 526.98)

内存:64GB

系统:windows10专业工作站版22H2

系统环境要求以及下载与解压

①打开cmd,输入nvidia-smi,查看当前的驱动版本以及该驱动支持的最高cuda版本

如果驱动的支持的cuda版本不符合官方要求,请先升级驱动。

②下载与解压

根据自己配置下载,up下载的是图中第一个,最好解压到磁盘根目录,如果非要解压到子目录,请保证路径没有中文。

③这是最新的pro模型,推荐下载。

解压后将红框的文件复制到CUGAN模型文件的根目录中,将蓝框的文件复制到目录中的runtime文件夹中。

ps:之后会将整理好的会放在评论区,有需要的自取。

环境搭建

①环境要求

②下载并安装anaconda

anaconda下载地址:https://www.anaconda.com/products/distribution#Downloads

安装目录放在磁盘根目录即可(可以不放在C盘)。

③创建环境

打开anaconda prompt,输入conda create -n env_name(环境名称) python=3.6(对应的python版本号)

up这里创建的是一个名为CUGAN,python版本的3.6的环境。

注意:该项目是基于python3.6开发的,所以一定要使用python3.6,up原先使用的python3.9的环境经实测无法运行。

④激活环境

输入conda activate env_name(创建的环境),此时前面的base会变成你创建的环境名

⑤安装torch、cuda、cudnn

版本选择:up在清华源找到的支持python3.6的最高版本的torch就是1.10,对应的cuda为11.3,cudnn为8.2。

安装建议:安装可以将清华源添加进conda,然后使用conda install命令进行安装,但是不推荐,因为文件过大,下载过程慢,并且如果意外中断,又要重新下。这里推荐直接去清华源下载。

清华源地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/

up已经下好了,之后也会打包并将链接放在评论区。

将这三个文件放到 C:\Users\Administrator\下安装,或者用cd命令转到文件所在文件夹下安装。

由于提前下好了安装包,运行后很快就装好了

⑥安装opencv-python和moviepy

建议使用pip安装,先运行python -m pip install --upgrade pip将pip更新到较新的版本。

输入pip install opencv-python安装opencv-python。

如图,安装opencv-python帮up自动安装上了numpy,所以不需要另外安装numpy。就用它自动装的numpy版本,避免不必要的兼容性问题。

输入pip install moviepy安装moviepy。

至此,运行该模型的所有需要的包都已装上,可以输入conda list进行查看包是否安装好,以及版本对不对,如下图。

环境配置

①打开高级系统设置

②点击环境变量

③找到系统变量中的Path并编辑,将刚刚创建的环境添加进去,路径参考如图。

添加蓝框中的三个,up的路径仅供参考,实际以自己的安装anaconda的路径和环境名称为准。

这样设置后就会让系统默认使用你创建的环境,打开cmd输入python进行查看。

如图默认环境变为了python3.6.13|Anaconda,Inc|,说明设置成功。

至此,已经完成了所有超分前的准备工作,现在只需要设置好配置文件就可以运行模型了。

配置设置

打开模型文件中的config.py文件,用记事本就行。

①超分倍率以及模型选择

超分倍率scale是指视频宽高各乘以2,比如将1080p视频超分成2160p,也就是4k。如果你想将720p超分成4k,就将其改为3,以此类推。up一般是把1080p超分成4k,所以用的是scale=2。

底下的model_path是具体指定用哪个模型,比如我这里是scale=2,用的就是model_path2,后面是模型路径,根据作者建议选择适合自己的模型就行,up一般用的是pro的无降噪版。

②half、tile、cache_mode、alpha设置

这里就根据#号后面的建议和自己的配置进行选择就行,up这里是直接选择了最吃显存的设置。

③视频或者图片超分路径

超分视频就填video,超分图片填image。要注意的是,超分图片的话,得把图片放在文件夹input_dir中,会自动输出到output_dir文件夹。超分视频的话就要修改视频的路径以及输出的路径和格式。

比如我目前的设置是超分视频,超分的是T盘根目录的名为01的mov视频,最终会在T盘根目录输出名为01_4k的mov视频。想输入输出其它格式视频,直接改后缀就行,比如mp4、mkv等等。(ps:不用多此一举把视频拆成图片序列进行超分,实测推理速度不及直接超分视频,估计原因是需要不断读取图片和写入图片造成的时间延长,CPU够强的话,直接编码视频就行)

④编码参数设置

crf设置得越低,视频码率和质量越高,up习惯设置为12,一般23左右就可以了,个人自己看情况设置就行。

preset是质量和速度之间的取舍问题,越慢视频质量越高,但是越吃CPU。up测试过veryslow,这时候CPU已经出现了瓶颈,显卡占用偏低,推理速度变慢。目前使用的是slower。其实未达到CPU瓶颈之前,你设置多少都不会怎么影响速度,因为这时候瓶颈是显卡,CPU再快也没用,所以up的思路是,设置在CPU瓶颈的前一档,这样能充分发挥显卡和CPU的性能,同时又能保证最终的视频质量。

⑤由于up主是一个小白,其他参数就按照作者的默认设置了。将前面的设置完之后,就可以双击go.bat文件进行视频超分了。

PyTorch版和GUI版的速度比较

①运行前硬件状态

②各版本的设置

PyTorch版的设置:

GUI版的设置:

俩者都是用的是pro的无降噪模型,可以看到GUI版本可以调整的参数很少。

③俩者运行时的硬件占用情况

可以看到俩者的CPU、内存以及GPU占用几乎一模一样,但是GUI版却一点显存也不吃。up主推测是GUI版本是为了兼容性,把显存的需求全部拉到最低了。

④俩者推理速度比较

up使用的是同一个视频。可以看到PyTorch版推理完成全部的6124帧使用了1165秒,通过up主引以为豪的小学数学功底,计算出来的推理速度是每秒5.25帧,而GUI版的推理速度则是1.9帧/秒~2.2帧/秒,前者是后者的2.5倍以上。

据up主的非专业分析,应该是GUI版没有积极地调用显存而导致显卡并行计算能力没有充分发挥。

(ps:先前up用GUI版本的时候,有些视频的某些场景会导出全黑的帧,导出几次都是同样的地方出现,导出成图片序列也试过了,问题依旧存在。up原先以为是模型的问题,直到换成了PyTorch版,问题就消失了,所以GUI版本应该还存在bug,遇到同样bug的小伙伴可以尝试更换成PyTorch版本)

补充

①CUGAN和topaz的比较

首先从推理速度上来说,按照up主以前使用的topaz video2.6.4版本的经验,1080p超4k大概是2.5帧/秒往上,虽然模型不同,速度不具可比性,但是up注意到topaz显卡的占用未能上去,一直都是30%~50%,显存占用也比较小。这也是topaz一直以来的问题,中端显卡和高端显卡之间的推理速度没有什么差距,期待后面的版本能优化好吧,目前up已经卸载了topaz,所以就没有上实测了。

其次是视频质量,这点更不好比,topaz偏向非动画的超分,CUGAN是专用于动画的,up直观感受是CUGAN更加清晰,锐化更高一点,这个对于非动画的视频原画质的毁坏是显而易见的。

因此推荐超分动画使用CUGAN,可以在获得更高的推理速度情况下,视频质量也很好;而真人实拍视频则用topaz。由于up只超分动画,在有了更好的CUGAN之后,topaz自然就卸载了,以后假如要超分非动画,说不定还会下回来。

②在使用CUGAN时要注意不要爆显存

如果你运行之后,显存和核心近乎吃满,这个时候要注意CPU的占用,如果CPU占用很低,或者上升很少,说明显存已经爆了,这个时候你会发现推理速度很慢,这个时候要调整参数,降低显存占用。

有些客户端开启就会占用显存。up有时候后台放着CUGAN在跑,然后想开几个客户端啥的,正好让显存爆掉的情况也会存在,这个时候可以调整参数,降低一点显存,因为客户端一般不会占用太多显存。

运行的时候想玩游戏建议玩玩扫雷那种类型的不占资源的小游戏就行,千万别开全屏的那种大型游戏,会让你超分又慢,玩游戏也不爽(up主亲身实测)。一般这时候up会看看番或者电影。

推荐内容