今天,我们将介绍Anime4K(动漫图片超分辨率算法),这是目前最热门的开源项目,特点:实时、视频动画放大算法。
在一周内,Anime4K在Github上收获了将近3千颗星。作者在6天前介绍了reddit上的项目,并成为每个人的热门话题,引起了极大的关注!
在这个人工智能时代,基本上都是深度学习训练数据等,Anime4K根本不使用深度学习和训练学习,而且速度非常快!
下图显示了使用Anime4K将动画图像从1080p增加到2160p的效果:
你没看错,在计算硬件Vega 64 GPU平台上只需3毫秒。
我们来看看其他开源库和Anime4K效果对比:
可以看出Anime4K是当中视觉效果最好的!
作者说,Anime4K非常适合动画放大任务。它非常快,可以保持视频内容的连贯性, 它只有大约100行代码,效果异常非常好。
Anime4K不使用任何机器学习或统计方法,它是保持锐利边缘和线段的理想选择,并且可以容忍一些精细纹理的丢失。它是一种迭代算法,将颜色信息视为高度图并使用渐变上升将“像素”“推”到可能的边缘。
作者认为这很可能是在基于学习的方法内部完成的(例如VDSR,waifu2x)。
算法原理
讲了这么多我们来看看它的算法原理:
Anime4K仅适用于动漫图像放大,因为动漫通常没有丰富的纹理,人眼对其边缘和线段更敏感。
图像超分辨率的一般过程:
LR_U是上采样的低分辨率图像,r是高频残差,并且高分辨率图像HR = LR_U + r。
过去的大多数算法都是预测性的。
作者发现,对于清晰图像,残留图像中的边缘和线段往往更薄,而对于模糊图像,残留图像中的边缘和线段往往更粗糙。
该算法的主要目标是不断修改LR_U(通过低分辨率采样获得的模糊图像),直到其残差最精细,为我们提供最清晰的HR图像。
输入LR_U及其初始残差r,“推”残差的像素,使残差映射中的线段边缘更薄。对于在残差图上执行的每个“推”操作,对彩色图像执行相同的操作。这具有迭代地最大化图像梯度的效果,其在数学上等同于最小化模糊,但是该方法不具有诸如常规方法中常见的振铃之类的伪像。
对于代码描述,以下几行:
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
细节原理可以参考下面:
https://github.com/bloc97/Anime4K/blob/master/Preprint.md#proposed-method
我们来看下下几张不同算法的动漫超分辨率效果:
无论是那种分辨器和设置下,Anime4K都完胜其它的算法。
相关论文源码关注微信公众号:“图像算法”或者微信搜索账号imalg_cn关注公众号