本文经AI新媒体量子位(ID:QbitAI)授权转载,转载请联系出处鱼羊 发自 凹非寺
大变活人,需要几个步骤?
万万没想到,这么经典的大型魔术,现在都能零基础入门了。
在快手和江苏卫视联手打造的「一千零一夜」晚会上,迪丽热巴就当场表演了一个。
不需要道具,不需要托儿,也不挑时间地点,她就这么在直播镜头里blingbling地闪现了。
并且位场的波动,完全没有破坏背景的完整。(手动狗头)
最关键的是,给你一部安装了快手的手机,你同样可以实现。
没错,这个能实时实现电影大片里隐身特效的黑科技,就是快手最近上线的AI新玩法——「隐身魔法」。这是结合单图图像修复和帧间图像对齐技术的视频修复算法,在短视频行业中的首次应用。
不仅能「凭空出现」,对着镜头比个「6」,你还能当场变身透明人,跟空气融为一体。
效果如此丝滑,难怪上线几天时间,快手用户就玩得飞起,迅速贡献了77.5w个相关作品。
一时成为年度短视频最热特效玩法。
移动端的实时视频修复技术
让视频里的人实时隐身,怎么个原理?
此前,量子位其实介绍过类似的「隐身」算法,比如弗吉尼亚大学和Facebook联手打造的基于光流边缘引导的视频修复算法。
虽然有学术领域的前例,但想要把这样的技术应用到移动端,仍然存在不小的挑战。
最主要的问题在于计算量,视频修复涉及到多帧计算,其深度学习模型普遍计算量较大,很难在移动端运行。
那么快手是怎么做到的?量子位照例来一一捋清楚。
其实道理很简单,想要把画面中的人抹掉,除了自动把人像抠出来之外,AI还得学会脑补人像遮挡住的真实背景。
这就涉及到两方面的问题:
初始帧人像区域的背景修复
后续相机、人物运动过程中人像区域的背景填充
为了解决这两个问题,快手的工程师们将算法整体分成了两个阶段:
首帧使用移动端脑补模型实现对人像区域的背景填充,后续帧使用帧间实时跟踪匹配投影,实现可见背景区域向人物遮挡区域的填充。
基于DeepFill的图像修复算法
首先来看首帧修复。具体到模型架构上,快手工程师主要基于开源的DeepFill模型,根据实际需求进行了定制化开发和优化。
DeepFill是一种基于GAN提出的图像修复方法,修复能力是酱婶的:
在此基础上,快手在整个模型设计中采用coarse to refine双阶段结构。
第一阶段,在小尺寸上进行初步修复,利用较少计算量的coarse网络得到缺失区域的大概轮廓。
第二阶段,将该初步结果融合到原图在大尺寸上利用refine网络生成缺失区域的细节。
而为了让模型能在移动端上更好地部署运行,工程师们还采用剪枝和蒸馏方法进一步压缩了模型结构。
在算法研发过程中,工程师还发现,缺失区域越大,图像修复结果越不可控,使用L1损失和GAN损失无法有效的约束修复区域的结构和语义的合理性。
针对此问题,一方面采用边界生成联合训练的方法,对边界这一结构信息进行直接约束,明显提高了大缺失区域情况下修复结果的合理性。另一方面采用多尺度预测的方式对模型中间层的特征进行了约束,有效提升了修复结果的清晰度。
在损失函数方面,在训练中工程师采用了SSIM、Lpips感知损失、PatchGan损失和蒸馏损失,在小模型上也实现良好的图像修复结果。
在训练数据方面,快手工程师构建了一个包含100W背景图和10W人像mask的通用图像修复数据集,包含居家、办公、建筑、风景、虚拟CG等常见环境。
并且,根据背景数据的纹理复杂度进行了分类,模型训练过程中随着网络逐步收敛,逐渐加大复杂纹理数据的比例,使得模型更好地完成从简单到复杂等多种背景的修复。
一套组合拳下来,测试的结果如下。从左到右,分别是输入图像、边界预测、脑补结果和实际背景。
实时跟踪投影匹配
而在后续帧的背景修复上,为了更好地利用已有的背景信息,需要将已经存在的背景投影到当前帧实现对人像遮挡区域的修复,即帧间图像映射。
目前对帧间图像映射关系的描述主要有三种方式:简单的全局单应变换,基于栅格的局部单应变换,以及复杂的逐像素的稠密光流。
其中,全局单应变换虽然计算量较小,但无法描述复杂的三维结构映射。
逐像素的稠密光流算法可以得到精确的图像间可见像素的映射关系,但对于人像区域内未知区域的修复无法实现,另外限于手机平台计算量的限制,该算法无法满足实时获取映射关系的需求。
因此,快手采用基于栅格的局部单应变换的图像对齐算法,来平衡计算量和精确度之间的关系。通过同时优化帧间特征点的光度误差和栅格的形变误差,在低计算量的情况下也能得到精准的帧间映射关系,有效地将历史帧的可见区域信息实时传播到当前画面。
并且,通过调节栅格数量,可以很方便的调节算法的计算量和映射的精度,实现多机型的算法适配。
中低端机型都能用,真正麻瓜的「魔法」
其实,对快手的工程师而言,仅仅实现效果是远远不够的。
更重要的一点,是要在移动端硬件种类繁多的情况下,覆盖高、中、低端各种手机型号,让每一个档次的机型的能力都发挥到最大。
一方面,是因为每一次的产品落地,都关系到4亿用户的实际体验,牵一发而动全身。
另一方面,快手的用户特性决定,用户手中的手机型号分布会很广,不同机型算力和内存资源差异很大。
而要做到这一点,快手依靠的是自研的YCNN深度学习推理引擎。
拿CPU来说,无论是苹果、高通、华为还是联发科的芯片,无论是高端的骁龙865还是低端的骁龙450、430,YCNN引擎都能支持模型在上面运行。同样,GPU方面,YCNN引擎同时支持Mali、Adreno、Apple和英伟达等多种GPU。NPU方面,苹果Bionic,华为HiAI,高通SNPE和MTK的APU均在支持范围之内。
同时,YCNN引擎具有完备的模型结构与数值精度,支持常见的CNN, RNN结构,支持float32, float16,uint8等不同精度计算。
为了在更大程度上利用手机算力,YCNN引擎还提供了多种模型,既有针对高算力NPU设计的大模型,有针对高端CPU、GPU设计的级的不同的小模型,也有针对中低端CPU处理器设计的特定小模型。同时,通过模型下发的方式,将设备上的最好算力与相应的模型进行匹配,以期达到效果与性能的最佳平衡,给用户带来最好的体验。
在推理引擎的优化方面,针对不同的设备端,快手的工程师们分别设计了Metal算子、OpenCL算子以及Neon算子等等,有针对性地进行了算子的优化,以最大化利用设备性能,提升模型的运算速度。
此外,YCNN引擎具有完善的AI模型工具链,支持PyTorch, TF/TFlite模型直接转换为YCNN模型,并支持训练时模型量化与基于硬件的模型结构搜索。综合性能比业界引擎有10%左右的优势。
快手之道
最后,回到AI特效、回到晚会,回到快手本身。
快手的技术和AI特效魔法,之前介绍的也不少。这家依靠短视频迅速崛起的技术公司,一方面把最新最前沿的技术带给了更多人,另一方面也通过技术,让用户体验到从「记录每一种生活」到「拥抱每一种生活」。
但更值得称道的是,快手之道,更在于面对最前沿技术时的心态——希望无差别地让每一个用户使用,感受技术的乐趣,无论是何种机型,无论信号覆盖如何。
现在,这种快手之道,在往线下延续,让线上的用户有机会登上线下的舞台,和明星一起亮相,展示自己。从线上到线下,跨越平台和社区。
这次快手「九年磨一剑」打造的「一千零一夜」超豪华阵容晚会,就是最直观的例证。
一方面,快手与江苏卫视携手,台网联动,在节目内核和呈现形式上实现了大小屏的深度融合。不只是实时隐身特效,还有黄渤跟周杰伦的低延时连麦、虚拟技术加持下的F4隔空同台等黑科技,都给观众带来了新的观赏体验。
另一方面,从明星阵容上就可以看出快手的号召力在增强,星素同台的晚会形式,形成了快手独有的文化IP。
数据同样也佐证了这一点。据悉,这场晚会快手官方直播间观看总人数达9008万,直播间互动总量达1.34亿次,最高同时在线人数达315万,预约直播总人数达到3100万。
如此巨大的流量和关注度,无疑也是一场技术价值观的科普。
在舞台之上,有明星大咖和快手达人的跨界合作;舞台之下,快手也踏踏实实遵循提升用户体验、创造用户价值的技术信仰,使得阳春白雪和下里巴人的种种「人间烟火」,都能通过AI技术这样的前沿科技为生活增添色彩。
这是理性科技之外的那一面:用奇幻科技,打破人间藩篱。
之前有句「老话」,说科技是麻瓜的魔法。
但比起这种魔法,打造魔法本身的工程师、让魔法真正无差别应用的工程师,不易于被推至镁光灯下,但依然值得掌声和褒奖。
你还能举出其他的「魔法」案例吗?
最后的最后,开发该特效的技术团队是快手Y-tech团队,这里也特别传送一下:
这支团队致力于计算机视觉、计算机图形学、机器学习、AR/VR 等领域的技术创新和业务落地,不断探索新技术与新用户体验的最佳结合点。目前 Y-tech 在北京、深圳、杭州、Seattle、Palo Alto 有研发团队,大部分成员来自于国际知名公司和大学。