Magpie——游戏实时超分辨率工具
简介
准确的说,Magpie是一个让窗口全屏显示的工具,但搭配了大量的缩放算法/滤镜,能够进行超分辨率放大,适用于窗口不支持全屏模式,或者窗口内置的全屏模式会使画面模糊的情况。对于动画风格的画面效果尤佳。
大部分Galgame对高分辨率屏幕的支持都是不太好的[1]。虽然像柚子这样的业界良心在2016年就引入了全1080p作画,但很多会社发行的游戏还停留在720p分辨率。目前(2023)新笔记本的主流分辨率已经来到了2.5k甚至更高,在这些新机器上运行720p游戏的体验无疑是很差的。
Magpie提供了将低分辨率窗口放大到全屏并自动超分辨率的功能,经过实测对于动画风格的游戏效果极佳,因此把使用经验分享一下。
官方GitHub仓库:https://github.com/Blinue/Magpie
为便于读者参考,此处列出笔者电脑的相关配置:
- 屏幕:3072*1920分辨率,120Hz刷新率。
- CPU:AMD Ryzen 7 6800HS
- GPU:上面CPU的核显,即Radeon 680M。该核显的性能约等于桌面端GTX 1050Ti。
- 内存:LPDDR5 6400MHz
- 系统:Win11 22H2 和 21H2 均测试过
Magpie对GPU的性能要求并不低,不过可以尝试一下。
下载安装
到官方GitHub仓库下载:https://github.com/Blinue/Magpie/releases
Chocolatey有社区维护版:https://community.chocolatey.org/packages/magpie
目前(2023.3)的最新稳定版是v0.10.0。本文将以该版本为例进行介绍。
下载zip压缩包后解压到任意位置,双击Magpie.exe
即可运行。你无需安装任何依赖环境。
缩放算法和配置
缩放算法介绍
Magpie内置了大量的缩放算法,而且允许你将这些算法任意组合。如果你了解 HLSL,你可以很容易的添加任何你想要的效果,见 MagpieFX。
这里只节选笔者使用过的算法进行介绍。针对动画风格的游戏(如Galgame),Anime4K[2]的效果很好。
- ACNet:ACNetGLSL 的移植。适合动画风格图像的缩放,有较强的降噪效果。
- 输出尺寸:输入的两倍
- Anime4K_Denoise_Bilateral_Mean、Anime4K_Denoise_Bilateral_Median 和 Anime4K_Denoise_Bilateral_Mode:Anime4K 提供的降噪算法,分别使用平均数、中位数和众数
- 输出尺寸:和输入相同
- 参数
- intensitySigma:降噪强度。必须大于零。默认值为0.1
- Anime4K_Restore_M、Anime4K_Restore_L、Anime4K_Restore_VL、Anime4K_Restore_Soft_M 和 Anime4K_Restore_Soft_L、:Anime4K 提供的用于还原动漫画面线条的算法,M->L->VL 对性能的需求依次提高,Soft 变体效果稍弱
- 输出尺寸:和输入相同
- Anime4K_Thin_HQ:Anime4K 提供的用于细化动漫画面线条的算法
- 输出尺寸:和输入相同
- Anime4K_Upscale_S、Anime4K_Upscale_L、Anime4K_Upscale_VL、Anime4K_Upscale_UL、Anime4K_Upscale_Denoise_S、Anime4K_Upscale_Denoise_L、Anime4K_Upscale_Denoise_VL、Anime4K_Upscale_Denoise_UL 和 Anime4K_Upscale_GAN_x2_S:Anime4K 提供的动画风格图像缩放算法。Denoise 变体包含降噪效果,GAN 变体处于实验阶段,可以保留更多细节。S、L、VL、UL 对性能的要求依次提高。(笔者注:官方文档提到,S比L快得多,经实测确实如此。如果你的GPU性能不佳,不妨优先尝试S版本)
- 输出尺寸:输入的两倍
- Bicubic:双立方(双三次)插值算法
- 输出尺寸:取决于 scale 参数
- 参数
- scale:缩放比例
- 其他:略。可以看官方文档
- Bilinear:双线性插值
- 输出尺寸:取决于 scale 参数
- 参数
- scale:缩放比例
此外还有一些适合3D场景的算法,以及一些风格滤镜,我用不到,就不介绍了。
4倍缩放
Anime4K和ACNet都是放大两倍,如果希望放大更多倍,需要重复使用两次Anime4K或ACNet。例如,笔者的屏幕是3072*1920的,想要让720p画面取得较好的显示效果,就需要放大两次。
思路很简单,先使用一次Anime4K或ACNet,然后用一次双三次插值缩小到当前屏幕的一半大小(主要是为了提升性能),然后再用一次Anime4K或ACNet,这样正好放大到整个屏幕。根据官方文档的建议,为了消除噪点,第一次缩放应该使用带降噪的版本。
配置文件
配置文件的默认位置是C:\Users\[Username]\AppData\Local\Magpie\config\config.json
。如果你在设置中开启了便携模式,那么该文件的位置是./config/config.json
(Magpie.exe的同级文件夹下)。
你可以在应用的“缩放配置”页面中调整缩放配置。笔者自己调整了一些缩放配置,直接截图放在这里了,配置情况一目了然。所有的Bicubic的参数都是[0, 0.5]
。
你也可以在此处下载我导出的配置文件,然后在Magpie的“缩放配置”页面的右上角点击三个点按钮,选择“导入ScaleModels.json”,选择文件导入即可。
使用
配置好缩放后,就可以使用Magpie了。将待放大窗口置于前台,按下定义好的缩放快捷键即可生效。默认的快捷键是PowerToys风格的Windows+Shift+A。
需要注意的是,Magpie还不支持触摸屏,表现在点击全屏的画面后,Windows有时会认为你在点击窗口之外的内容(即逻辑上该窗口未被放大)。未来应该也不会支持触摸屏[3]。但窗口化缩放(即并不强制全屏)的功能应该会在未来加入[4]。
注意:有些游戏允许你任意调整窗口的大小,但其内置的缩放效果很简单,一般是简单地整数倍放大。为了实现最佳的效果,你应该让游戏运行在原始的默认分辨率下,然后启用Magpie。先调大窗口再启用Magpie不会带来更好的效果。
注意:如果你设置了 DPI 缩放,而要放大的窗口没有高 DPI 支持(这在老游戏中很常见),推荐首先进入该程序的兼容性设置,将“高 DPI 缩放替代”设置为“应用程序”。
捕获模式
直接照搬官方文档了。我一直用的默认的Graphics Capture(win11 21h2),到目前为止没有任何问题。
Graphics Capture | Desktop Duplication | GDI | DwmSharedSurface | |
---|---|---|---|---|
支持捕获 DirectComposition (如 UWP) | 是 | 是 | 否 | 否 |
支持录制/串流 | 特殊情况下不支持[1] | 否 | 是 | 是 |
支持源窗口跨越多个屏幕 | 特殊情况下不支持[1] | 否 | 是 | 是 |
无视 DPI 虚拟化[2] | 否 | 否 | 是 | 是 |
备注 | 首选捕获方式 | 要求 Win10 v2004;适合静止帧较多的游戏[3];可以捕获到弹窗 | 占用的显存较少 |
[1]: (1) 源窗口不支持常规的窗口捕获 (2) 操作系统为 Windows 11
[2]: 系统会对不支持 DPI 缩放的窗口进行双三次插值放大,支持此项的捕获方式可以捕获到放大前的图像
[3]: 如果窗口的静止帧较多,使用 Desktop Duplication 可以有效降低功耗(实测:改善不大。目测是大部分GPU负载都分给超分辨率算法了,在窗口捕获上节省下来的功耗微乎其微)
效果展示
原谅我截图大小不太一致〒▽〒
例1:原生720p放大至3K
这个例子展示了一个720p窗口放大到3K的效果。图片来自Madosoft的游戏《ハミダシクリエイティブ》。
建议点击图片来放大查看,以对比细节。注意头发的边缘处。
角色立绘:
整数放大4倍后双立方插值缩小到3k,用于对照 | Anime4K_S 4倍缩放(详见上文,后同) | ACNet 4倍缩放 | Anime4K_GAN 4倍缩放 |
文字,超分算法或多或少都有点歪,不过无伤大雅:
- 2023-05-21更新:使用Anime4K的Restore系列效果可以改善文字变形的情况,但是这种效果非常占用性能。
整数放大4倍后双立方插值缩小到3k,用于对照 | Anime4K_S 4倍缩放 | ACNet 4倍缩放 | Anime4K_GAN 4倍缩放 |
Anime4K_S的GPU占用约为60%,ACNet和Anime4K_GAN的GPU占用约为80%。风扇有明显噪音。
个人观感,效果:Anime4K_GAN>ACNet>=Anime4K_L>Anime4K_S>>Lanczos>整数缩放
例2:原生1080p放大至3K
这个例子展示了一个1080p窗口放大到3K的效果。图片来自酸柚子的游戏《PARQUET》。
整数放大2倍后双立方插值缩小到3k,用于对照 | Anime4K_S 2倍缩放后,双立方插值缩小到3k,后同 | ACNet 2倍缩放 | Anime4K_GAN 2倍缩放 |
GPU占用没看,估计应该是比720p要低一点,因为只做了一次缩放。
关于图像超分的碎碎念
图像超分领域的进步还是很惊人的。我对于这方面的记忆还停留在bigjpg这个网站,没想到现在已经这么牛了。
关于这个topic可以看https://github.com/topics/super-resolution,下面每个仓库都有相当惊人的效果展示。目前动画风格图像效果最好的目测是Real-ESRGAN,之前的waifu2x也是挺有名的。不过这两种都不是实时的算法,完成一次推理可能需要超过1s的时间,对于实时场景,Anime4K也有相当不错的效果。
从Anime4K官方仓库找了两张对比图:
(图片是按照推理速度排序的,从左到右越来越慢。FSRCNNX和Anime4K是实时的算法,waifu2x 和Real-ESRGAN不是)
感觉Real-ESRGAN的降噪有点过,图1背景的拦网直接给搞没了,不知道是不是刻意为之。图2背景的圆石墙也有点走样。
另外,这个仓库提供了全家桶式的超分辨率工具。
该话题下面还有一些针对真实人脸照片的超分辨率模型,效果同样显著,此处不再列出了。
另外,mpv支持Anime4K,从而使视频的实时超分成为可能。个人试了一下感觉效果不是很明显。网上可以找到相关的教程。
脚注: