当前位置:网站首页>我在字节跳动「修电影」
我在字节跳动「修电影」
2022-07-06 09:29:00 【字节跳动技术范儿】
“是什么支撑我们完成这么繁复的工作?是因为我们明白它们对后人的价值——所谓经典视频,就是历久弥新的内容,它们值得在新技术的帮助下重新焕发生机。”
当 4K 修复版的《哪吒传奇》《葫芦兄弟》《黑猫警长》《大头儿子和小头爸爸》《小鲤鱼历险记》《小蝌蚪找妈妈》6 部经典动画片上线西瓜视频 App 后,产品经理甄辰这样感叹。
六部老动画的 4K 修复版上线刚两周,就获得了超过百万的播放量。而在半年之前,他们刚开始投入这项工作的时候远远没有想到,以为接个超分辨率算法就能实现的老动画 4K 修复项目,竟然如此反复而艰难:
- 老胶片的破损和划痕非常严重;
- 美术风格带来的局限巨大;
- 远景/近景差别巨大,细致纹理难以直接修复,保持原有美术风格难度重重;
- ……
在这些清晰的影像背后,字节跳动火山引擎的研发团队都经历了什么?
频频踩坑的修复之路
4K 老动画修复项目的技术同学们大多是 90 后,大约有一半都是今年校招刚刚加入的新人,修复这些老动画也是修复他们的童年记忆。
项目组工程团队的戈岭说,小时候父母给自己买的第一部动画片光碟就是葫芦娃,这部片子陪伴了他很久,如今再次着手《葫芦兄弟》的修复工作,心里满满都是童年回忆。
回忆固然美好,真正的修复工作却十分困难。
每部动画片的状况不一样,有的保存在胶片上,年代久远有不少划痕和粘连导致的破损;有的虽然保存成了数字格式,但放大后线条的锯齿非常严重;有的线条清晰、色彩高度饱和,有的则是采用了水墨画等艺术风格,「修电影」的传统方法,无法在这些不同美术风格的动画片上完美应用。
可以说,每部片子都不一样,不能单纯依靠超分辨率算法,而是每位算法工程师独自负责 2~3 部动画,根据它的特点来单独设计定制化的技术方案。
算法工程师傅仁在进入这个项目时刚刚从上海交通大学硕士毕业,通过校园招聘来到字节跳动。
她参与完成的动画片是《葫芦兄弟》和《黑猫警长》。这两部均是胶片电影,拿到片子的第一步,她给两部动画片完成了多维度的质量分析,调研了许多种不同的深度学习和传统学习的方法,研发了去划痕模块。
但尝试运行之后却发现,老胶片电影上划痕和噪点实在太过严重了,她想到用深度学习来完成划痕的检测,但没想到,把划痕检测模块加上去之后,结果并不如预期:
算法正确率无法达到 100%,有可能会将动画片中一小部分图案的纹理当成划痕,给一起抹掉。
左图叶片被当做胶片污渍被消除
空中的蝴蝶翅膀,易与胶片污渍混淆
尽管使用了动漫数据来训练划痕检测模型,但这个问题依然无法解决,经过讨论后,为了保证每一帧修复画面的完美,团队最终确定了「算法+人工+算法」三步走的方式:
- 先用算法将视频放大到 4K,初步去除噪声,完成画面增强,让动画片变得更清晰;
- 之后找到标注供应商,找出那些人眼看上去非常明显的划痕,比如被放映机划伤的部分、多年储存中胶片黏连的部分,以此为依据逐帧画成蒙版;
- 之后借助修复算法,将这些被人工标出的损伤部分填补好。
这是一套既靠人工、也靠智能的方式,经过第二步人工标注后再进行第三步算法填充后,机器跑出来的结果常常不能尽如人意,“可能标注方的笔触不小心越界了,色块就溢出了原本的位置;画面上边界模糊的区域,经过不恰当的标注,色块会异常,人眼看着很突兀,”项目组的 PM 甄辰同学说,他每天都要抽出一定的时间,来为这些不够完美的运行结果「批作业」,重复修改多次后,他已经对《葫芦兄弟》和《黑猫警长》的剧情稔熟于心,“一集 10 分钟的动画片,我要看一个小时才能找出里面所有不完美的细节,反复看了十几遍,才最终出品了完美的版本。”
这些纹理细节的问题,同样出现在《小鲤鱼历险记》上。
负责完成这部动画片修复的 hasaki 也是今年加入的校招生,毕业于西安电子科技大学。在反复的实验中,hasaki 发现了奇怪的一帧:
在使用某个算法做修复时,每当遇到小鲤鱼在水中游动的场景,处理后的字幕偶尔会出现扭曲。
比如,正常来讲应该是这样的字幕:
会扭曲成这样,文字轮廓被模糊掉了一部分,笔画粗细也很随机,甚至部分文字变得十分抽象:
经过实验发现,一方面字幕的纹理有梯度大并且密集的特点,另一方面字幕本身是静止的,但是周围的背景一直在运动,会产生干扰。在这两个因素作用下,在某算法修复处理后容易产生 badcase。
为了应对这种情况,hasaki 修改了自己的方案,将字幕区域给识别了出来,对字幕区域采用了单独的优化策略,避免了这个问题。
除了算法同学,工程团队同样做出了许多改进。
Base 在杭州的戈岭从浙江大学毕业后就开始参与这个项目:“我差不多刚毕业、七八月的时候才开始研究视频增强这类技术,9月就加入了项目组。”
与算法侧不同的是,实现对老动画的 4K 修复,工程侧需要让这些不同的算法处理方法运行在一个通用的「量产」过程中,创造出一个流水线式的处理流程。
然而,这些不同年代、不同制作方式的老动画却有着不同的格式,想要统一输出为 4K 分辨率、 16:9 的形态,需要基于各种片源情况考虑到处理的细节和顺序,是颇有难度的工程挑战。戈岭说:“有些片源甚至还保持着电视制式的像素比例,每个像素是长方形的,而不像计算机、现代制式的 1:1 正方形。”
正是因为这种片源的复杂度,如何将每部老动画个性化的算法模块统一部署在量产流水线上,既要保证不同处理模块的加载和正常运转,也要保证它们之间互相兼容,是一个需要不断打磨的过程,每次发现新的问题,都要进行问题的复现、定位排查以及修复。
这个庞杂的系统同样要求它的制作者对于细节的把控能力,“一个不起眼的参数没对齐都可能牵一发而动全身”,戈岭说。对于每部片源,都需要工程同学和算法同学齐心合力,在定制工作流后结合工程代码进行流程推演,梳理在具体视频处理中的细节和流水线。
从内部试看到发布,经典终于重现
经过多轮修改和调整,当所有的老动画都被修复完成之后,迎接挑战的时刻终于开启。
这是一场正式上线前的观影会,将决定所修复的影片能否正式上线。
观影会的组织可以说相当有仪式感了,项目中所有参与同学都来到北京的一家 4K 影院中,用专业的设备进行播放,审阅 4K 修复的效果。
在此之前,上海的傅仁和深圳的 hasaki 也出差来到了北京,提前三天筹备观影事宜。
从来没有接触过影院播放的 hasaki 在这段日子里学到了很多新知识:“我没有想到,电影院播电影的时候,连格式都跟我们普通用户不一样,并不是常规的格式。”
原来,影院播放的影片相当于把我们普通用户的视频截成一帧一帧的播放,按照这种分帧的格式存下来,再修改码率。此外,考虑到影院的屏幕尺寸,还常常需要给电影画面周围增加黑框来保持适配。
刚接触到这一套系统的 hasaki 迅速学会了影院影片转码工具,并在三天内制作出多个演示 demo 供内部观影使用。
筹备内部观影会的过程中,他们也在影院的大屏尝试播放了多次。大屏的播放效果与电脑屏幕播放大有不同,放大几倍之后,一些不够清晰的细节又被放大了,需要不断调整优化才能达到最好的播放效果。
辛苦筹备之后,当所有项目同学来到现场,清晰、美观的播放效果让现场所有人在清晰的画质下重温了儿时的回忆,大家一致同意让这些修复的影片上线。
后来,在中国电影导演中心,300 余名西瓜视频用户、媒体朋友与合作伙伴在发布会现场见证这些老动画以焕然一新的面貌出现在世人面前。
而背后研发团队这些年轻同学的不断努力,终于被这个世界看见。他们的精益求精与对极致细节的追求,已经成为了经典的一部分,留在观众的记忆里。
提升自己,传递价值
“原来《黑猫警长》只有五集啊,我感觉小时候看它的时候,仿佛有很多很多集。”项目完成之后,傅仁终于可以轻松地看待这些老动画片了。
承担了一些项目中部分工作负责人的角色后,她觉得自己迅速成长起来了:“我的mentor会有意识地让我负责一些事情,我会感到我在做自己手上工作的项目管理,和不同同学沟通合作,跑通一整个项目的流程。”
其实这是不少校招生进入这个项目组后的感受:在学校时,做事的规则就是导师安排什么,自己完成什么,但现在需要主动安排自己去完成什么,自己做好实验,自己主动向其他合作者证明我这个版本会比另一个版本好。
而在技术工作的方法上,项目组同学也有不少感悟,大家逐渐意识到,很多影片修复的问题要从根源上多角度的去思考,然后再来考虑算法上的一些改进。
工程侧的戈岭也是第一次参加这么大的项目,这种全流程的落地推动成为他职业生涯中的第一个亮点:“这个项目的流水线方法是我想到的,最终把它应用到了项目里,这让我很有成就感。”他正在掌握成熟的做事方法,来把自己的技术切切实实落地。
火山引擎多媒体实验室负责了字节跳动视频增强方面的工作,面临着非常丰富且困难的场景,可以说是国内视频增强业务场景最丰富的地方。实验室研究员赵世杰觉得,老动画的确很难修,需要每位同学针对复杂的场景提出技术方案,不仅要保证画质达到 4K 标准,而且原有的艺术美感也必须传承下来,这也是每位同学追求极致的体现。
他们正在把修复老动画这项工作持续进行下去,西瓜视频也将开放入口,为普通用户免费提供 AI 修复支持。
现在,如果打开西瓜视频 App,你就可以看到这 6 部 4K 高清的动画片。它们是每个人的影像回忆,从荧幕上的早年经典变成移动端可以随时观赏的作品,正在成为跨越代际的共鸣。
用坚实的技术修复这些共同的记忆,服务每个曾被它打动的观众,是务实的字节技术人所追求的价值。
边栏推荐
- Problem - 1646C. Factorials and Powers of Two - Codeforces
- useEffect,函数组件挂载和卸载时触发
- 提交Spark应用的若干问题记录(sparklauncher with cluster deploy mode)
- 指定格式时间,月份天数前补零
- Kubernetes集群部署
- Remove the border when input is focused
- QT simulates mouse events and realizes clicking, double clicking, moving and dragging
- Solve the problem of intel12 generation core CPU [small core full, large core onlookers] (win11)
- Market trend report, technical innovation and market forecast of tabletop dishwashers in China
- QT实现窗口置顶、置顶状态切换、多窗口置顶优先关系
猜你喜欢
去掉input聚焦时的边框
SQL快速入门
Install Jupiter notebook under Anaconda
(lightoj - 1323) billiard balls (thinking)
力扣:第81场双周赛
SF smart logistics Campus Technology Challenge (no T4)
Advancedinstaller installation package custom action open file
QT realizes window topping, topping state switching, and multi window topping priority relationship
Simply try the new amp model of deepfacelab (deepfake)
QT实现圆角窗口
随机推荐
Research Report on market supply and demand and strategy of double drum magnetic separator industry in China
Chapter 5 namenode and secondarynamenode
软通乐学-js求字符串中字符串当中那个字符出现的次数多 -冯浩的博客
Educational Codeforces Round 122 (Rated for Div. 2)
SF smart logistics Campus Technology Challenge (no T4)
QT实现窗口置顶、置顶状态切换、多窗口置顶优先关系
简单尝试DeepFaceLab(DeepFake)的新AMP模型
Click QT button to switch qlineedit focus (including code)
Simply try the new amp model of deepfacelab (deepfake)
力扣:第81场双周赛
Market trend report, technological innovation and market forecast of double door and multi door refrigerators in China
Codeforces Round #798 (Div. 2)A~D
ffmpeg命令行使用
Market trend report, technical innovation and market forecast of China's desktop capacitance meter
MP4格式详解
Useeffect, triggered when function components are mounted and unloaded
业务系统从Oracle迁移到openGauss数据库的简单记录
Codeforces - 1526C1&&C2 - Potions
sublime text 代码格式化操作
Codeforces round 797 (Div. 3) no f