家里没矿、没王位,但谁还没有个王子、公主梦?
最近,机器之心收留了一批「在逃王子」。
这些王子虽然来自不同的王国,但服化道都来自同一家公司——快手。
这是快手新推出的「童话魔法」特效。除了王子之外,你也可以过一把当公主的瘾。各路明星纷纷晒出了自己的公主特效形象:
「童话魔法」是一项基于生成式算法的视频特效技术,可以让用户在手机端实时预览自己变身公主、王子的神奇效果。生成的图像不仅有着浓浓的童话风格,而且还保留了用户自身的容貌特点,带给用户新奇的拍摄体验。
目前,这套「童话魔法」有冰雪公主、梦幻城堡、童话公主和童话王子等数种画风的变身特效。
不仅如此,用户还能根据自身喜好进一步细化变身后的人物特效,添加风格多样的美妆、美体、滤镜以及封面文字等,还可以更换配乐,或者自己配音并转换成小黄人、机器人、萝莉、大叔等不同风格。
「童话魔法」背后的快手黑科技
真人秒变卡通图早已不是新鲜事。此前,韩国游戏公司 NCSOFT 开发的无监督图像转换算法 U-GAT-IT,通过引入可学习的 ILN 层和注意力机制,成功将人脸图像转换为日漫二次元图像,在业界引起不小的关注。
但是日漫和童话风格差别还是很大的。要想完成童话风格的图像转换,生成的图像既要保留用户原本的容貌特点,还要具备动画的 3D 人像风格,同时还要面临目标风格数据多样性不足的问题,因此 U-GAT-IT 无法满足需求。
而之前名噪一时的 Toonify 似乎也不够用。Toonify 虽然能够完成真人到动画电影角色的转换,但由于该方法直接从微调 StyleGAN 模型中提取低分辨率层,只保留原始 StyleGAN 中的高分辨率层,因此转换得到的图像与原始人脸相比存在形变,不能完全保留原始人脸本身的容貌特点。另外,该方法生成的部分图像面部存在色调变化等问题,且不能进行实时处理,无法满足工业界产品上线的要求。
针对以上这些难题,快手 Y-tech 团队的 AI 工程师采用了自研的 KStyleGAN 结构,在 3D 空间中表征人脸结构、进行风格映射,并采用神经网络渲染来精细控制结果图的质感,有效克服了常规基于 2D 表征的 StyleGAN 方法的缺陷,并在移动端上落地了实时特效。
在模型结构方面,针对移动端和服务端的不同计算硬件,通过半自动网络架构搜索(NAS)得到高效的网络结构,并在此基础上进行诸多创新。
一方面,快手设计了一种 pixel 级别的注意力机制——STA module(风格迁移注意力模块),来改进浅层和深层特征融合方式。常见的特征融合方式包括浅层与深层特征的直接相加、concat 之后进行多次卷积操作等。在风格迁移类任务中,由于原图和目标图的差别较大,这些常见的融合方式往往会导致原图信息的丢失、生成质量不佳或风格感降低等问题。而 STA module 通过少量计算,在 pixel 级别利用注意力引导浅层和深层特征的融合过程,在风格感不变的同时保留更多原图的细节,提升生成图像的质感。
另一方面,快手构建多分支、多深度的 FS block(特征增强模块)来替代传统的 Resnet block 结构。在使用更少计算量的情况下,这一改进对特征细节部分的增强和对整体形变情况的适应能力都更强,能够达到更好的生成效果。
在模型训练方面,快手针对实时风格化任务中的各种效果问题,有针对性地做了调整:
通过混合训练的方式,加强对风格特征的学习,增强最终模型生成的风格感;
针对模型金字塔中不同分辨率的特征,设计多任务多尺度的监督,加快模型收敛,提升生成质量与鲁棒性;
在对抗训练阶段中引入预训练特征以提升判别器对细节纹理的判断能力,同时稳定判别器的训练过程,最终强化模型对细节纹理的生成能力。
特效虽好,如何适配手机端所有机型?
特效虽好用,但面对手机端种类繁多的机型、配置,如何实现设备算力与模型效果的最优适配,进而提供最佳用户体验呢?
快手首先进行了细致的算力分级。
由于当前移动端硬件种类繁多,碎片化严重,算力分级面临横向、纵向挑战。横向挑战:设备大类上可分为 CPU、GPU、DSP、NPU 几类,各类之间的算力有所差异,大体上算力等级 NPU≥GPU≥DSP≥CPU,但实际情况中各级算力会有 overlap 甚至反转。纵向挑战:以 CPU 为例,厂商有 Apple、高通、华为、MTK 等,不同厂商、不同型号的 CPU 性能差异很大;GPU 也存在类似情况,如 Adreno 与 Mali 系列。
将碎片化的设备横向与纵向铺展开来会形成一个复杂的算力矩阵,快手自研的深度学习推理引擎 YCNN 配合极致优化的各后端代码在多种模型上进行了理论和实践的充分测试,最终结合快手用户群设计了一套详细的分级方案。
以这一套算力分级策略为指导,快手进行了模型结构、计算量的调整,设计不同计算量的模型。比如为 CPU 设计了效果较好的中等计算量模型,而像 NPU、GPU、DSP 这种适合大算力的设备则可以运行计算量更大、效果更好的模型。
另外,实际应用中多个模型会带来资源包过大、加载过慢的问题,为此快手引入了模型服务器分级下发机制。根据终端硬件信息进行设备分级、下发和加载对应模型,充分利用设备算力同时给所有快手用户带来极致的效果体验。
YCNN 整体架构
针对不同的硬件进行分级模型设计,利用其自研算法压缩模型和 YCNN 引擎,快手让每个用户都能玩转「童话魔法」。
让每个人拥有舞台,每个人都拥有「变身」的可能性,这正是快手追求技术突破以及坚持用户导向的体现。