内容一览:Real-ESRGAN 是 ESRGAN 升级之作,主要有三点创新:提出高阶退化过程模拟实际图像退化,使用光谱归一化 U-Net
鉴别器增加鉴别器的能力,以及使用纯合成数据进行训练。 关键词:Real-ESRGAN 超分辨率 视频修复
本文首发自微信公众号:HyperAI超神经
相比于如今画面优良精美的新番,老动漫因时代的技术和设备限制,画质较差、分辨率低。但那些内容优质、童年经典的老动漫还是会被观众拿出来反复观看、「盘出包浆」。
每每经典的动漫视频被 4K 修复,在视频网站上的观看量都居高不下,高画质加上经典的内容足以让「双厨狂喜」。
B 站上的 4K 修复视频极受欢迎
本期教程介绍如何用 Real-ESRGAN 对动漫视频进行超分优化,修复视频画质。教程可用云平台 OpenBayes 运行,对设备配置没有依赖, 轻松享受 1080P 视频带来的快乐。
Real-ESRGAN:爱二次元的盲超分模型
传统动画制作时,动画师先手绘制作每一幅画面,再用摄像设备拍摄画面,将其扫描到计算机中进行数字化处理。拍摄设备的好坏、上传动画到视频平台的压缩及不可预测的噪音等复杂因素, 会影响到动画的图像效果。
真实世界中引起图像退化的原因非常复杂,这使得非盲的超分算法,如 ESRGAN,恢复图像的效果并不好。所以需要用盲超分 (Blind Super-Resolution) 为未知退化类型的低分辨率图像进行超分增强。
盲超分主要分为显式建模 (Explicit Modelling) 和隐式建模 (Implicit Modelling) 两类方法。
显式建模
将模糊核与噪声信息进行参数化,通过先验知识估计图像的退化过程,包括噪声、模糊、下采样和压缩。但简单地组合几种退化并不能很好地拟合现实世界的图像退化。
隐式建模
不依赖于任何显式参数,它利用额外的数据通过数据分布,隐式的学习潜在超分模型。
Real-ESRGAN 的作者将显式建模称为一阶建模。一阶的退化建模难以拟合复杂的退化,作者提出了一种高阶退化模型 (High-order Degradation Model)。 该模型中,n 阶模型包含 n 个重复的退化过程,每个过程都遵循经典模型:
x = Dn(y) = (Dn ◦ · · · ◦ D2 ◦ D1)(y)
论文中作者使用的是二阶退化过程,这既保持了简单性,又解决大多数实际问题。
Real-ESRGAN 完全使用合成数据训练。 在生成高清和低清数据对时,模型对输入的图像进行 4 倍下采样( subsampled 或称缩小图像)之外,还继续进行 1 倍或 2 倍的下采样操作。
Real-ESRGAN 使用和 ESRGAN 完全一致的结构
为减小计算量,作者创新性地提出了 Pixel Unshuffle 操作, 令输入分辨率减小、通道增加。
在生成高清和低清的数据对时,论文使用模糊的 kernel 做卷积,之后对图像下采样 r 倍,加上噪声,最后做 jpeg 压缩。这些操作模仿了现实生活中图像在传播过程中多次压缩的情况。
Real-ESRGAN 采用多种图像退化方法
与 ESRGAN 相比,Real-ESRGAN 处理模糊图像的效果更佳,并在 2021 年 ICCV AIM 上获得荣誉论文提名奖。
代码详见
论文链接
Real-ESRGAN 实操:让陈年老番变清晰
本教程将演示在 OpenBayes 上,用 Real-ESRGAN 算法实现图像增强,把老动画视频变清晰。
完整教程
第 1 步 环境准备
# !git clone https://github.com/xinntao/Real-ESRGAN.git
%cd Real-ESRGAN
!pip install basicsr
!pip install facexlib
!pip install gfpgan
!pip install ffmpeg-python
!pip install -r requirements.txt
!python setup.py develop
第 2 步 推理
# ! python inference_realesrgan_video.py -i inputs/video/onepiece_demo.mp4 -n RealESRGANv2-animevideo-xsx2 -s 4 -v -a --half --suffix outx2
! python inference_realesrgan_video.py -i /openbayes/home/results.mp4 -n RealESRGANv2-animevideo-xsx2 -s 4 -v --half --suffix outtsx2
# 参数
# -i, --input: 输入视频
# -n, --model_name: 使用的模型名字
# -s, --outscale: 放大尺度
# -v, --video: 将增强的帧转换回视频中
# -a, --audio: 将输入的音频复制到增强的视频中
# --half: 推理半精度
# -suffix: 输出视频的后缀
第 3 步 可视化
from IPython.display import HTML
from base64 import b64encode
def show_video(video_path, video_width = 600):
video_file = open(video_path, "r+b").read()
video_url = f"data:video/mp4;base64,{b64encode(video_file).decode()}"
return HTML(f"""<video width={video_width} controls><source src="{video_url}"></video>""")
# 输入视频
show_video('inputs/video/onepiece_demo.mp4')
不清晰动漫视频
# 增强后的视频
show_video('results/onepiece_demo_outx2.mp4')
Real-ESRGAN 处理清晰视频
完整教程
没有使用过 OpenBayes 平台?保姆级教程运行视频讲解看这里👇
教程演示
以上就是本期教程的全部内容,心动不如行动,你童年的梦中情番是什么?快克隆 OpenBayes 上的「Real-ESRGAN 动漫视频的超分辨率」教程,自制清晰视频吧~
注:高清自制内容仅可供个人学习使用
参考链接:
https://zhuanlan.zhihu.com/p/431612275
https://zhuanlan.zhihu.com/p/558893171
—— 完 ——