生猛!看AV神器来了!实时把画质变成4k高清,延时仅3毫秒,登上GitHub 趋势榜!...

点击上方“视学算法”,选择“星标”git

在看 真爱github

640?wx_fmt=jpeg
量子位 出品 | 公众号 QbitAI
看动画  (特别是里番/P站) 的时候,总会以为画质不够好,就算已经有1080p,仍是会感到不够清晰,太影响体验了。
因此,这个世界十分须要一套拯救分辨率的魔法。
现在,有个名叫 Anime4K的开源算法,能在动画播放中, 实时把画面变成 4k,延时低至 3毫秒
能把720p/1080p变成2160p,也能把480p变成1080p。
640?wx_fmt=png
团队说,这是 当下最强 (State-of-the-Art) 的动画实时超分辨率方法,能够拿任何编程语言实现。
如今,项目已经在GitHub摘下 3700多颗星,并一度登上了趋势榜。
那么,这个算法到底是如何造福人类的?

只搞动画

团队在论文里感慨道:
传统超分辨率算法 (如Bicubic) ,结果不怎么好,由于它们根本不是为了动画而生的。
传统的去模糊 (Unblurring) 或锐化 (Sharpening) 方式,在靠近物体边缘的时候会发生 过冲 (Overshoot) ,分散观众注意力,下降图像的感知质量 (Perceptual Quality) 。
而机器学习方法 (如waifu2x) 又太慢,彻底不能实时 (<30毫秒) ,尤为是须要超高清的时候。
640?wx_fmt=jpeg
 waifu2x
而Anime4K, 只处理动画就够了,不考虑其余视频类型。这一点很重要。
动画没有真实视频那么多纹理 (Textures) ,基本都是用平直着色法 (Flat Shading) 处理的物体和线条。
只要画质变好一点点,观众也看得出。因此团队机智地想到,不用作整张的画质提高,专一于 细化边缘就能够了,纹理之类的细节不重要。
具体怎样作,要从超分辨率的原理开始讲:
640?wx_fmt=png
首先,一张图能够分为两部分:
一是低频份量,就是一张模糊的低分辨率图。
二是高频残差,表明两种分辨率之间的差异 (Difference) 。
输入一张 低清图,把它变成一个 更低清的版本,就能得出一个 残差
把残差 变薄 (Thin) 、 锐化 (Sharpen) ,再加到低清图上,就能获得一张高清图。
但残差稍稍有点错误,就会形成 振铃过冲,影响效果。这也是前辈的缺陷所在。
因而,团队找到了一种新方法:
首先把 残差厚度最小化当作目标,这个没有问题。
但直接把随意变换(Arbitrarily Transformed)获得的残差,用到一张低清图上是不行的。低清图要作出相应改变,才能与残差和平相处,得出理想的超分辨率结果。
因此,当输入一张图和它的残差以后,“push”残差的像素,让残差线变细;
同时,每作一个push,都要在彩色的低清图上,执行一个相同的操做。
这样,既能把模糊最小化,也不会出现振铃和过冲,这两个下降画质的现象。

比一比吧

这场比赛,Anime4K (最右) 的对手有:来自madVR的不开源算法 NGU前辈 (左二) ,以及开源的机器学习算法 waifu2x前辈 (左三) 。
第一题,眼睛:
640?wx_fmt=png
640?wx_fmt=png
第二题,耳朵:
640?wx_fmt=png
第三题,玉手:
640?wx_fmt=png
第四题,全脸:
640?wx_fmt=png
waifu2x前辈的效果,明显不及Anime4K,常见虚影。速度也有明显缺陷,每张图耗时超过1秒。
NGU前辈生成的画质,与Anime4K相近,但也经常被Anime4K战胜。
不止如此,NGU每张耗时~6毫秒,Anime4K只要~3毫秒,快了一倍,更加适应 实时生成的需求了。
效果相近的话,为啥不直接用NGU?由于不开源。
若是,你以为720p/1080p的动画,不必变成4K这么奢侈,那还能够把 480p拯救到1080p啊:
640?wx_fmt=png
640?wx_fmt=png
依然,Anime4K和没开源的NGU不相上下。
最后,尽管已经得到了精湛的画质提高技能,团队也没有就此抛弃 机器学习的力量。
由于在 拯救静止画做 (而非动画) 的时候,Anime4K的短板显现了。这时候,让机器学习选手waifu2x和它并肩做战,更加成功一些:
640?wx_fmt=jpeg
640?wx_fmt=png
须要 实时 提高分辨率,仍是用Anime4K吧。
反正也已经开源了:
项目传送门
https://github.com/bloc97/Anime4K
END
历史阅读

640?wx_fmt=gif

点个在看,偷偷收藏
640?wx_fmt=gif