鱼羊 发自 凹非寺
量子位 报道 | 公众号 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 有研发团队,大部分成员来自于国际知名公司和大学。

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

榜单征集!7大奖项锁定AI TOP企业

「2020中国人工智能年度评选」报名中!评选将从公司、人物、产品、社区四大维度共7个奖项寻找优秀的AI企业,欢迎大家扫码报名参与。

评选报名截止于11.20,并将于12月16日揭晓,也期待与百万从业者们,共同见证这些优秀企业的荣誉!

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

分分钟拥有哈利波特的隐身衣,还是在手机端的那种相关推荐

  1. 首次在手机端不牺牲准确率实现BERT实时推理,比TensorFlow-Lite快近8倍,每帧只需45ms...

    作者 | 王言治 出品 | AI科技大本营(ID:rgznai100) 基于Transformer的预训练模型在许多自然语言处理(NLP)任务中取得了很高的准确度.但是这些预训练模型往往需要很大的计算 ...

  2. 基于 TensorFlow 在手机端实现文档检测

    手机端运行卷积神经网络的一次实践 - 基于 TensorFlow 和 OpenCV 实现文档检测功能 1. 前言 本文不是神经网络或机器学习的入门教学,而是通过一个真实的产品案例,展示了在手机客户端上 ...

  3. h5 调起相机_Html5在手机端调用相机的方法实现

    input调用设备录像,相机等- HTML5官方文档解释:capture属性用于调用设备的摄像头或麦克风. 当accept="audio/或video/"时capture只有两种值 ...

  4. 解决audio和video在手机端无法自动播放问题

    解决audio和video在手机端无法自动播放问题 参考文章: (1)解决audio和video在手机端无法自动播放问题 (2)https://www.cnblogs.com/theblogs/p/9 ...

  5. APICloud中app如何在手机端测试

    首先假设你已经有了APICloud账号,并创建了App项目. 需要注意的是,手机和电脑需要连接在同一wifi环境下. 第一步 下载自定义Loader 进入"开发控制台" 点击我们的 ...

  6. 当心啊!仅仅50行Python,就可以在手机端看小姐姐的电脑桌面!

    看上心意的小姐姐,想看她平时都浏览什么网页,如何才能看她的桌面呢,都说Python很厉害,这次我们做一个利用移动端访问电脑来查看电脑的界面的神器! 不知道大家以前有没有做过这方面的东西呢?也许大家听起 ...

  7. KindEditor解决上传视频不能在手机端显示的问题

    KindEditor自带的上传视频生成的HTML代码为<embed>,在手机端并不支持.于是可以自己在控件里增加生成video标签相关代码. 参考https://www.jianshu.c ...

  8. [html] HTML5的video在手机端如何实现进来页面时就自动播放?

    [html] HTML5的video在手机端如何实现进来页面时就自动播放? 理想情况autoplay=true.但是现实是:基本所有浏览器都屏蔽了这个属性. 能实现的现在只有微信了,微信有一套自己的规 ...

  9. HTML5中的audio在手机端和微信端的不能自动播放

    再做H5页面的时候,发现audio在手机端和微信端添加了autoplay以后还是不可以自动播放,这是因为手机端为了节约流量所设置的 通常解决方法是给一个交互事件: 标签: <audio loop ...

  10. 移动端html右滑空白,BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法...

    最近的一个项目 前台使用了 bootstrap.css + angularjs, 后台只处理数据(用的php,处理结果直接 json_encode($arr),非常爽).一直在Chrome的仿真机测试 ...

最新文章

  1. iOS 中socket的总结
  2. 范数(赋范线性空间、向量范数、矩阵范数)
  3. format控制输出 python_【Python】之format奇技淫巧的输出控制
  4. 提高你的Java代码质量吧:如果有必要,使用变长数组吧
  5. 永洪Desktop关于MAC系统使用问题
  6. 51单片机(STC89C52RC) lcd1602实验小结
  7. SQL Server ldf 丢失的数据库恢复
  8. Oracle入门(十四.23)之管理触发器
  9. OJ1086: ASCII码排序(多实例测试)(C语言)
  10. 浅谈配网供电可靠性及管理措施
  11. python cos函数_Python Tensorflow cos()用法及代码示例
  12. 18、OpenCV Python 简单实现一个图片生成(类似抖音生成字母人像)
  13. 在线手机号码VCF批量导入工具
  14. 【游戏】基于matlab绘制滚动点阵字幕(跑马灯)【含Matlab源码 911期】
  15. Office Timeline一款非常专业好用的PPT插件
  16. 植物大战僵尸:代码实现无限阳光
  17. android把后台应用放最上层,Android 判断app是否在最上层展示
  18. C# Development 13 Things Every C# Developer Should Know--C#开发人员应该知道的13件事情
  19. 【2021-12-11】在 Windows 系统下,迁移 Android Studio 的 Android 虚拟设备(AVD)到非系统分区,释放系统盘空间
  20. 诗歌(7)—赠刘景文

热门文章

  1. TeamViewer作为个人用途免费,但仅可使用在有限数量的设备上。您已经到达可使用设备的上线
  2. 入门级蛋白质结构查看PyMol的使用——PyMol常用命令
  3. 使用Matlab理解PID
  4. Flink 实践教程-进阶(11):SQL 关联:Regular Join
  5. 拟物化设计与扁平化设计
  6. 花巨款跟巴菲特吃饭的人,是亏是赚?
  7. Ansys workbench有限元分析学习软件下载
  8. 符文(灵晶)系统介绍
  9. 快速排序(萝卜填坑算法)【必会知识】
  10. django -数据库操作