使用Real-ESRGAN无损放大并且修复你的包浆动漫图片/视频!


前言

想必许多人都有过在网上找到自己老婆的照片想当壁纸,但是奈何太糊无法使用的经历吧。
这就是Real-ESRGAN的用武之地了。

什么是Real-ESRGAN?

Real-ESRGAN(Enhanced Super-Resolution GAN)是由腾讯ARC实验室发布的一个盲图像超分辨率模型。它的目标是开发出实用的图像/视频修复算法,通过使用纯合成数据进行训练,能够将低分辨率图像提升到高分辨率,使图像更加清晰和细节更加丰富。

效果对比

Nearest NeighborLanczoswaifu2x-caffeReal-ESRGAN
Nearest NeighborLanczoswaifu2x-caffeReal-ESRGAN
Nearest NeighborReal-ESRGAN
Nearest NeighborReal-ESRGAN
  • waifu2x-caffe 使用 UpResNet10UpPhoto 模型,降噪等级 3,开启 TTA。
  • Real-ESRGAN 使用 realesrgan-x4plus-animerealesrgan-x4plus 模型,开启 TTA。
  • 放大倍率均为 4x。
  • 为了减小文件大小,展示的 GIF 进行了有损压缩处理。

    这些玩意不是我写的 - 从realesrgan-gui那个readme搬过来的

下载并安装

首先从Github下载release
点我直达

根据你的操作系统选择合适的下载(下载后缀为.zip的)

如何使用?

作者提供了五种模型:

  • realesr-animevideov3-x2:2倍分辨率视频
  • realesr-animevideov3-x3:3倍分辨率视频
  • realesr-animevideov3-x4:4倍分辨率视频
  • realesrgan-x4plus:4倍分辨率照片
  • realesrgan-x4plus-anime:4倍分辨率动漫图片


使用也十分简单:
./realesrgan-ncnn-vulkan.exe -i {原图位置} -o {输出位置} -n {模型}
还有其他的使用方法:

1. ./realesrgan-ncnn-vulkan.exe -i input.jpg -o output.png
2. ./realesrgan-ncnn-vulkan.exe -i input.jpg -o output.png -n realesr-animevideov3
3. ./realesrgan-ncnn-vulkan.exe -i input_folder -o outputfolder -n realesr-animevideov3 -s 2 -f jpg
4. ./realesrgan-ncnn-vulkan.exe -i input_folder -o outputfolder -n realesr-animevideov3 -s 4 -f jpg

超分视频也不难,但是需要ffmpeg的帮助。
第一步: 使用ffmpeg把视频拆成帧(提前创建tmp_frames文件夹!)
./ffmpeg -i example.mp4 -qscale:v 1 -qmin 1 -qmax 1 -vsync 0 tmp_frames/frame%08d.jpg
第二步: 使用realesrgan处理所有帧(提前创建out_frames文件夹!)
./realesrgan-ncnn-vulkan.exe -i tmp_frames -o out_frames -n realesr-animevideov3 -s 2 -f jpg
第三步: 合并所有帧:
./ffmpeg -i out_frames/frame%08d.jpg -i example.mp4 -map 0:v:0 -map 1:a:0 -c:a copy -c:v libx264 -r 23.98 -pix_fmt yuv420p output_w_audio.mp4

记得把所有example.mp4换成你视频源文件的地址!

懒人方案

github上也有现成的GUI可以选择。
个人比较喜欢这一款
用的很舒服。

实现原理

Real-ESRGAN的大致原理是通过使用深度学习技术来进行图像超分辨率的恢复。它基于生成对抗网络(GAN)的框架,由生成器和判别器两个主要组件组成。

生成器负责将低分辨率图像转换为高分辨率图像。它接受输入的低分辨率图像,并通过一系列的卷积、上采样和残差连接等操作,逐步提取图像的特征并增加细节。生成器的目标是生成尽可能接近真实高分辨率图像的输出。

判别器则用于判断生成器生成的图像是真实的高分辨率图像还是低分辨率图像。它接受真实高分辨率图像和生成器生成的图像作为输入,并通过卷积和池化等操作,学习区分它们的特征。判别器的目标是尽可能准确地判断生成的图像的真实性。

在训练过程中,生成器和判别器相互博弈,通过对抗性的训练来提高生成器的性能。生成器通过生成逼真的高分辨率图像来欺骗判别器,而判别器则努力区分真实图像和生成图像。通过不断迭代训练,生成器逐渐学习到如何生成更加真实和细节丰富的高分辨率图像。

Real-ESRGAN的创新之处在于使用纯合成数据进行训练,以更好地模拟真实世界中的图像退化情况。它还考虑了各种退化效果,如模糊、噪声和伪影等,以提高图像恢复的质量和视觉效果。