Py学习  »  Git

又一个看动画片神器来了!实时把画质变成4k高清,霸榜GitHub趋势榜

算法与数据结构 • 4 年前 • 928 次点击  

来自:开源最前线(ID:OpenSourceTop)

项目地址:https://www.infoworld.com/article/3442978/10-open-source-projects-proving-the-power-of-google-go.html


最近,号称是当下最强的动画实时超分辨率方法,火爆Github,已经在GitHub摘下8458颗星,并稳稳占在Github Trending榜多天了。



Anime4K可以将1080P的动画转换为4K分辨率,Anime4K的速度比Waifu2x快300倍,根据介绍提升画质的时间仅仅需要3ms!



前面提到的Waifu2x通过神经网络可以将2D图像升级到更高质量,但是,基于机器学习的方法存在一个问题,即实时升级1080p电影需要花费相当长的时间。而Anime4K则可以更简便的升级动漫。


下图是使用Waifu2x生成的图片效果:



另外,据开发人员B. Penn介绍,市场上的许多1080p动画并不是真正的1080p,在某些情况下,只是将900p左右的母带放大到1080p,因此就算是1080P,依然不可避免地会损失图像质量。


当放大动画视频时,Anime4K可以减少模糊程度,并在HLSL / GLSL / Java执行环境中运行。根据Penn的说法,Anime4K的算法本身很简单,当它在AMD RX Vega 64上运行时,最快可以在3毫秒内处理,甚至用于笔记本电脑的GPU也可以在9毫秒内处理。B. Penn还表示,即使在智能手机和笔记本电脑之类的低规格设备上,使用Anime4K也可以使动漫的清晰度增加。


以下是将1080p动画放大到4K(2160p)的示例,从左到右分别是Biliner、NGU、Waifu2x、Anime4K实现的效果。



还有将720p动画放大到1080p。你可以清楚地看到使用Anime4K的处理更加清晰,图像质量得到了改善。



以下是将720P的图像放大到2060p



但是,Penn表示,当用Anime4K放大多纹理 (Textures)的图像时,如下图所示,Anime4K的性能并不是很高,其结果几乎与Bilinear相同。




算法原理

从以上对比,相信你已经知道Anime4K仅适用于动漫图像放大,因动漫往往没有丰富的纹理,而人眼对其边缘和线段更加敏感。超分辨率的原理流程如下:



LR_U为上采样后的低分辨率图像,r为高频残差,高分辨率图像HR = LR_U + r。


Penn发现对于锐利图像其残差图像中边缘和线段往往比较细,而对于模糊图像,其残差图像中边缘和线段往往比较粗。


因此,开发团队首先把残差厚度最小化当做目标,接着输入一张图和它的残差之后,“push”残差的像素,让残差线变细,这具有迭代地使图像梯度最大化的效果


伪代码如下:


for each pixel on the image:
    for each direction (north, northeast, east, etc.):
      using the residual, if an edge is found:
        push the residual pixel in the current direction
        push the color pixel in the current direction


其他详情可以自己到Github详细查看,最后附上Github地址:https://github.com/bloc97/Anime4K/blob/master/Preprint.md#proposed-method



●编号1043,输入编号直达本文

●输入m获取到文章目录

推荐↓↓↓

开源最前线

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47641
 
928 次点击