Real-ESRGAN 评测:36.8k 星的修复算法,三种用法各取所需
上一篇聊过的 Upscayl,底层用的就是 Real-ESRGAN。这个项目本身不是应用,而是一篇论文加上它的官方实现——按照仓库的自我描述,目标是「为通用图像与视频修复开发实用算法」,做法是把 ESRGAN 扩展成能处理真实世界退化画面的实用版本,训练数据全部用合成方式生成。它也确实是这么被使用的:一堆图形界面产品把它包起来做成开箱即用的工具,真正动手写代码的人反而未必最多。

三种用法,按折腾意愿挑
官方给了三条路。第一条是零门槛的:在线演示,仓库里挂了 Google Colab 与 Replicate 两个托管入口,不装任何东西就能先看效果,早期还有官方的在线 Demo 站点。第二条是便携可执行文件,基于 ncnn 实现,Windows、Linux、macOS 三个平台都有,Intel、AMD、Nvidia 显卡都覆盖,可执行文件里内置了全部依赖与模型,不需要 CUDA 也不需要 PyTorch 环境——下载下来双击就能用,代价是功能比脚本版少一些。第三条是 Python 脚本,面向要接进自己流程的人:装好 Python 3.7 以上、PyTorch 1.7 以上,再补 basicsr、facexlib 与 gfpgan 几个包,就能用命令行调用,支持任意倍数输出(模型出图后再做一次缩放)和面部增强开关(直接调用人脸修复)。
模型与参数:能调的东西其实不少
便携版内置了几个模型,靠一个名称参数切换:通用的 x4plus 是默认项,另有 realesrnet-x4plus、面向动漫插图的 x4plus-anime,以及面向动漫视频的 animevideov3。模型选择之外,参数里还有几个值得注意的:缩放倍数可以选 2、3、4;瓦片大小用来控制显存占用,机器吃力就把块切小;多显卡可以指定用哪块;载入、处理、保存三段的线程配比可以调,小图多的时候调高能提速;tta 模式能进一步提升质量但更慢;输出格式支持 jpg、png 与 webp。官方也交代了一个取舍:便携版会先把输入裁成若干块分别处理再拼接,所以可能出现块与块之间的不一致,结果和 PyTorch 版本会略有差异,官方建议遇到这种情况就直接用脚本版。Python 脚本这边还额外支持带透明通道的图、灰度图与 16 位图,以及前面提到的人脸增强。

它在生态里的位置:被集成的算法层
仓库里有一节专门列出使用它的下游项目,这份清单很能说明它的定位:安卓端的 RealSR-NCNN-Android、VapourSynth 的视频处理插件、ncnn 实现本身,以及一串图形界面工具——包括前面评测过的 Upscayl。也就是说,很多用户其实是间接在用 Real-ESRGAN,只是通过某个界面产品。当前仓库数据约为 36.8k 星、4.5k 次 fork、十一个发布,当前版本为 v0.3.0,代码是纯 Python,采用 BSD-3-Clause 许可——这个许可相当宽松,商用与二次分发都没什么负担,这也是它能被这么多产品选作底层的原因之一。方法层面它有正式出处:论文发表于 ICCVW 2021,作者是 Xintao Wang、Liangbin Xie、Chao Dong 与 Ying Shan,署名机构含腾讯 ARC Lab 与中国科学院深圳先进技术研究院。
便携版那条线是另一个独立仓库在维护,规模比主仓库小:约 2.2k 星、292 次 fork,它自己也坦承大量借鉴了 realsr-ncnn-vulkan 的实现。它的待办清单写得挺实在:支持更多廉价缩放算法、修复部分电脑会输出黑图的问题、补充模型转换指引、支持人脸修复。最后一条挺关键——便携版和脚本版的能力并不对等,人脸增强目前只在脚本版那条路上有,选之前要按自己的需求挑。

适合谁用
三类人适合。一是想批量处理素材但不想装环境的用户:便携版下载即用,一条命令跑一个目录,配合瓦片参数还能在中等配置的机器上跑。二是做动漫或插画相关的创作者:动漫插图与动漫视频各有专门模型,这类内容纹理相对规整,模型发挥得比写实照片更稳。三是开发者与研究者:BSD-3-Clause 许可宽松,训练代码也已经发布,想在自己的产品里内置超分能力、或者基于合成数据训练的思路做改造,起点很低,而且可以直接照着论文复现。
要留意的有三点。一是能力边界:它的强项是把分辨率不足的画面补清楚,对画面本身的运动模糊、失焦这类光学问题并不对症;官方还加了一个降噪强度参数来缓解放大后的过度平滑,说明细节保留与干净之间需要用户自己找平衡。二是版本迭代节奏:主仓库当前停在 v0.3.0,发布不频繁,属于「稳定但不再高频演进」的状态;便携版仓库里还挂着待修的问题,用之前建议先看一遍待办清单。三是硬件取向:便携版走 ncnn 加 Vulkan,对显卡有要求,纯处理器环境会很慢,打算跑大批量的话先把硬件条件确认清楚。如果你只是想要一个能用的界面,直接选 Upscayl 那类成品更省事;如果要把它嵌进自己的管线,从这个仓库入手才是对的路。
开源算法层的价值,往往不在它自己的下载量,而在有多少产品愿意把它藏进自己的外壳里。