1.5K star量,上古老番变4K,B站开源超分辨率算法

2024-04-13 18:58

本文主要是介绍1.5K star量,上古老番变4K,B站开源超分辨率算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

b3295cac4e6920f26b607114ce90698d.png

来源:机器之心
本文约1200字,建议阅读5分钟
本文为你介绍B站AI实验室的最新成果。

喜欢看动漫的人经常会被一些经典作品的情节所吸引,不过画面质量是欣赏下去的大敌 —— 那些超过十年历史的内容自不必说,直到现在,很多动画的实际分辨率也只是 720p 左右,然后被拉伸到 1080i 以满足电视台播放的需求,BD(蓝光)清晰度也只有 1080p。

究其原因,还是成本问题:在动画制作过程中,让分辨率提升一个级别,就会导致所有的制作资源大幅提升,从作画、扫描到处理和存储,整个产业链条都需要软硬件的提升。

77f159d2f2c11279b0324b5b78146c55.png

但今天即使是手机也有个 2K 的分辨率,既然手绘动画难以提升分辨率,那么能不能用 AI 算法来解决这个问题?

最近,GitHub 上一个图像超分辨率的项目火了,一个叫做 Real-CUGAN 的工具可以把动画图像的质量提升 2 到 4 倍,qq 上斗图的表情包也能给你脑补成 4k 品质。

14a8afe3479f6181a7fa0a43f1ab50ae.gif

仔细一看,这个项目来自 bilibili 人工智能实验室。上线 20 天,star 量已达 1.5K。

d254dc157a7e30c0fef70e2d50158048.png

项目链接:

https://github.com/bilibili/ailab/tree/main/Real-CUGAN

据作者介绍,Real-CUGAN 是一个使用百万级动漫数据进行训练的,结构与 Waifu2x 兼容的通用动漫图像超分辨率模型。相比目前市面上已有的通用化超分辨率算法,Real-CUGAN 的 AI 模型经过了更大体量数据集的训练,处理二次元内容的效果更佳。

它支持 2x\3x\4x 倍超分辨率,其中 2 倍模型支持 4 种降噪强度与保守修复,3 倍 / 4 倍模型支持 2 种降噪强度与保守修复。

Real-CUGAN 全称为 Real Cascaded-U-Net-style Generative Adversarial Networks(真实的、级联 U-Net 风格的生成对抗网络),使用了与 Waifu2x 相同的动漫网络结构,但因为使用了新的训练数据与训练方法,从而形成了不同的参数。

具体来说,该动漫超分模型训练先行对动漫帧进行切块处理,使用图像质量打分模型对候选块进行打分过滤,得到一个百万级的高质量动漫图像块训练集。然后使用多阶段降质算法,将高清图像块降采样得到低质图像,让 AI 模型学习、优化从低质图像到高质图像的重建过程,训练完毕后即可对真实的二次元低质图像进行高清化处理。

在 GitHub 项目中,作者开源了推理阶段的模型参数与推理代码。

下面,我们来看一下 Real-CUGAN 的修复效果。

7146aac1315801da7566cab50f9cd440.gif

图源:https://github.com/bilibili/ailab/tree/main/Real-CUGAN

为了进一步查看几种修复方法的差距,研究团队将 Real-CUGAN 的修复效果和 Waifu2x、RealESRGAN 进行比较。

d5463974a2ccbbfa62ee2a99df013c0f.png

下图是动漫《侦探已死》中的画面,其中几种方法对沙发纹理的修复差距显著。可以看到,在 Real-CUGAN 的修复结果中,沙发上的横向条纹清晰可见,并且几乎没有中断的部分:

3344e6ccd6cb7f3a6dd2f75e372baabb.png

在动漫中,人物清晰的线条对角色形象的塑造具有重要的作用。线条模糊会严重影响观看体验。以下图为例,Real-CUGAN 清晰地修复了动漫中角色的表情线条:

8f090436e7830a54f7804aa09ca50eff.png

当然,有些场景并非越清晰越好,比如画面中的一些远景,原本就是刻意虚化的。以下图为例,Real-CUGAN 修复之后,近景处的人物形象变得更清晰,远处的蜡烛仍然保持模糊,使得画面更有层次感。

a51ad56a7cd90067ac01555bcfd02c2c.png

还有一些动漫由于年代久远,受当时技术条件的限制,画质着实「感人」。例如许多人的童年回忆《黑猫警长》,先前的模型 RealESRGAN(下图第三列)已获得了不错的修复效果。相比之下 Real-CUGAN(下图第四列)更好地修复了一些杂线、模糊的问题,让画面更加干净清晰。

154b2b1be75bf7781dc0ac8d924b62bb.png

更为重要的是这项技术想要用很简单:你下载的模型已训练好,修改 config.py 配置参数,双击 go.bat 运行即可。Real-CUGAN 不仅可用 cuda 加速,也支持 AMD 系列的显卡,处理速度还很快,笔记本电脑也可以跑得起来。

虽然 Real-CUGAN 默认是只处理静态图片的,但很多人已尝试把视频拆解成单帧序列进行处理。如此一来,很多上古老番都能自己上手让它们焕然一新了。

目前 B 站上已经有人上传了一些使用新技术处理过的视频,比如这个在 1080p BD 基础上超分到 4K 的:

在很多电影修复之后,老番高清计划也已在路上。B 站表示,将针对不同品类适配不同的超分算法,并且使用窄带高清算法降低卡顿,提高流畅度。

参考内容:

https://www.bilibili.com/read/cv15031073

编辑:于腾凯

c820428840e61386a36570f14d10a69d.png

这篇关于1.5K star量,上古老番变4K,B站开源超分辨率算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900953

相关文章

分辨率三兄弟LPI、DPI 和 PPI有什么区别? 搞清分辨率的那些事儿

《分辨率三兄弟LPI、DPI和PPI有什么区别?搞清分辨率的那些事儿》分辨率这个东西,真的是让人又爱又恨,为了搞清楚它,我可是翻阅了不少资料,最后发现“小7的背包”的解释最让我茅塞顿开,于是,我... 在谈到分辨率时,我们经常会遇到三个相似的缩写:PPI、DPI 和 LPI。虽然它们看起来差不多,但实际应用

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

如何通过Golang的container/list实现LRU缓存算法

《如何通过Golang的container/list实现LRU缓存算法》文章介绍了Go语言中container/list包实现的双向链表,并探讨了如何使用链表实现LRU缓存,LRU缓存通过维护一个双向... 目录力扣:146. LRU 缓存主要结构 List 和 Element常用方法1. 初始化链表2.

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第