揭秘腾讯微视人脸技术「黑科技」,基于GAN的人脸魔法特效

随着小视频越来越流行,兼具趣味与人物个性的人脸特效成为小视频软件的标配,美颜自不必说,现在的人脸特效可谓“千变万化”,人脸年轻化、变欧美范儿、发型改变、各种表情、胖瘦等。

不仅人脸变人脸,还可以变成非真实风格的脸,如变成王者脸、迪斯尼形象脸。

另外,最近随着《你好,李焕英》电影的热映,根据一张老照片“复活”李焕英让她动起来的视频也几乎火遍全网。这种老照片修复+人脸迁移的技术,仿佛让我们走进了那个能够看到她喜怒哀乐的年代。

以上种种人脸特效,传统算法是无法完成的,赋予这一切魔法的是——GAN,生成对抗网络。

 

本文将带领大家认识这神奇的GAN,分享腾讯微视相关研发团队在这一领域的探索和实践。

 

      01      

什么是GAN?

生成对抗网络(GAN, Generative Adversarial Networks)是近年来计算机视觉领域的研究热点,产生了大量的学术论文和产业应用。

GAN与其他类型的神经网络采用不同的学习方法,GAN的算法体系结构使用了两个神经网络,分别称为Generator和Discriminator,Discriminator通过对Generator的批判来提升鉴别能力,Generator通过对Discriminator的欺骗来提升生成能力。其中,基于GAN的人脸特效是近年来学术研究和短视频特效领域的热点课题之一。

 

图[1]. GAN的主要结构包括一个生成器(Generator)和一个判别器(Discriminator)。Generator生成fake image,通过对Discriminator的欺骗来提升生成能力,Discriminator通过对fake image 和 real image的判断来提升鉴别能力,最终Generator可生成逼真的图片使Discriminator无法判断真伪。

虽然GAN是一种新兴并且有强大潜力的技术,但要驾驭它,并且成功的应用于移动端实时拍摄不是一个简单的任务。传统的GAN模型往往需要大量的训练数据,在可控性、画质方面有着较大的局限性,并且计算量庞大,难以部署在移动端。

针对这些挑战,腾讯微视背后的技术团队在过去一年中,创新性的研发出了一套支持移动端实时的GAN模型训练和部署框架,可以根据项目的特点选择不同的技术方案,成功的运用在了人脸特效上。目前已在微视上线了多种特效玩法,取得了良好的用户反馈。

 

      02      

整体技术框架

 

研发一款特效,首要的问题是选定模型的训练方式和收集相应的训练数据。

GAN具有强大的图像生成能力,但“巧妇难为无米之炊”,缺乏现成的成对数据(paired data)是研发人脸特效的最大难题。例如人种变换效果,我们当然不可能同时拥有一个人作为不同人种的图片。

 

因此,针对可获得的数据的数量和类型,腾讯工程师们创新性的设计了多种模型训练方式,使得算法完全不需真实的成对数据,便可达到预期的效果,例如图2中展示的亚洲人变欧美人。

 

图2. 变欧美人效果。由高参数量模型生成的成对数据

 

这三种高参数模型分别是1. Cycle-StyleGAN、2.基于隐向量的属性编辑、3. 小样本模型融合。下文将针对每一种模型的使用场景和技术原理逐一详细介绍。

 

另外,移动端模型的部署也是个大问题,这些模型的计算量往往动辄上百G,不适合在移动端部署。如何在不明显损失视觉效果的前提下,高效的压缩模型?

 

腾讯工程师巧妙的使用已有的高参数量模型(大模型)来生成成对数据,并用该数据以全监督的方式(Fully supervised training)来训练一个移动端轻量化的模型。

 

另外,考虑到模型生成的图像画质有可能有问题,还需使用画质增强技术来提升大模型生成图片的画质(例如清晰度和降噪)。这种方式不仅能够让轻量化模型学习到大模型的能力,并且具有更高的画质和稳定性。

 

总结起来,整体的技术流程可以总结为以下步骤:

  1. 按需求采集非成对数据,并训练高参数量的模型生产成对数据;

  2. 对成对数据进行画质增强;

  3. 以全监督的方式训练移动端轻量化模型。

      03      

高参数量模型

针对不同的场景,我们研发了三种不同的大模型,并利用它们生成的成对数据来指导轻量模型的训练。

  1. 可收集海量非成对数据的场景。针对这类场景,可以较为容易的收集具有相应属性的人脸图片,如变年轻和变明星效果。因此,我们选择采用了对数据量需求较大的基于CycleGAN思想的Cycle-StyleGAN模型。

  2. 可收集较少非成对数据的真实人脸生成场景。针对这类场景,由于数据收集的可行性与成本,我们只收集少量的具有相应属性的数据,如假笑(露齿笑)和眯眯眼。对于此类问题,我们选择采用基于隐向量的属性编辑思想,利用预训练的生成模型,如StyleGAN,在隐向量空间中找出代表目标属性的方向向量,来修改图片中人脸的属性强度。该方法能较为高效的利用有限数据,并且具有良好的可控性。

  3. 只能收集极少量非成对数据的场景。该类场景的目标往往针对非真实的风格图片,或者是某种精准细致的属性变换(如欧美脸和CG效果等)。针对这类场景,由于数据收集的可行性与成本,我们只收集极少量的数据。同时,我们提出了基于小样本的模型融合方法。其主要思想是,在极少量数据上对预训练模型进行调优训练(finetune),使预训练模型能够较好的生成目标风格的图片。然后,将调优训练后的模型与原始模型进行融合得到一个混合模型,该模型既能生成目标风格的图片,又兼具原始预训练模型强大多样的生成能力。

3.1 Cycle-StyleGAN 人脸生成

StyleGAN拥有强大的高清人脸生成能力,但由于StyleGAN是unconditional的生成模型,只能通过随机向量生成随机人脸,并不具备conditional的image-to-image的能力,针对这一问题,做了以下几点优化:

 

图3. cycle stylegan结构

 

  • 增加encoder部分。通过encoder得到输入图的隐向量,与decoder部分结合,实现image-to-image的生成能力。

  • 基于CycleGAN思想,引入两个generator A2B和B2A互相辅助学习,使其在具备强大的高清人脸生成能力的同时,在两个图片域内自由转换,生成符合要求的成对数据。

基于以上模型设计,研发了变年轻效果,并成功上线于微视。

      

图4. 变年轻效果

3.2 基于隐向量的人脸属性编辑

Cycle-StyleGAN虽然可以生成符合预期的数据,但其高度依赖数据质量和风格。而基于隐空间的属性编辑方案,对数据的依赖程度比较低,同时可以对生成效果进行灵活调整,结果具有高可控性。

对人脸某个属性做出改变,如眼睛变小,不应该对其他属性造成影响。如何进行属性解耦?然后对感兴趣的属性编辑?

首先,利用亚洲人脸数据集,训练了一个高质量的生成模型。该模型通过AdaIN模块来提取隐向量的信息,然后利用Decoder网络来生成数据。目前,模型可以在1024的分辨率下生成逼真、高质量的人脸数据。

在训练好模型后,固定模型的参数,进而通过调整隐向量来控制图像的生成。由于图像在隐空间的表达是符合当前网络参数下的映射规律的,通过理解和利用这些规律,就可以做到对人脸风格以及属性的调整。

但图像的信息被压缩在了一个维度更小的隐向量空间中,因此图像的各个属性耦合十分紧密。这会严重影响编辑的质量和结果。为了克服数据解藕的问题,实现单属性可控,团队做了以下优化:

  • 对方向向量进行解耦。团队通过不断的尝试和优化,摸索出了一套有效的属性解耦方法。

  • 在训练的过程中,通过监督信息,控制隐向量的具体意义,比如限定某些维度控制鼻型,某些维度控制脸型。

通过以上操作,可以做到对大部分属性的单独控制,比如只修改眼睛属性:

 

图5. 修改输入图片的眼睛大小

然而,在对效果进行微调的过程中,发现过于细致的属性依旧无法做到干净的解耦,例如眼袋、鱼尾纹等。

针对这一情况,团队在属性解耦方向上展开更加深入的研究,通过长时间的研究,团队总结出了一套高效的基于风格空间的属性编辑方法,该空间相较于传统的隐空间,自由度更大,控制更为精细,甚至可以对法令纹,眼袋等细节进行操控。

 

此外,由于真实数据与训练数据之间的差异,直接采用属性编辑得到的paired数据训练的小模型在真实数据中会产生模糊、噪声等问题。为了克服这些问题,进一步对数据和模型进行了优化:

  • 调整网络和判别器结构,增强模型的特征抽取能力。

  • 优化损失函数,使生成图在数据分布上更接近真实图。

目前,该模型可以稳定的生成高清,高质量的配对数据。基于这套方案,已经研发出了变假笑等效果,并成功上线在微视的移动端。

 

图7. 假笑效果

通过以上项目,团队总结了一套成熟的基于隐空间的属性编辑方案。该方案对数据依赖度低,同时灵活性高。不仅可以调整风格,脸型等宏观属性,还可以控制眉型,眉毛浓度,鼻型,以及法令纹等微观属性。

3.3小样本模型融合

训练一个效果较稳定的生成模型,通常需要上万张数据。但在实际研发过程中,往往无法搜集到足够的数据。比如CG风格脸,符合风格的可能只有几十张数据。不仅数据质量不高,数据还严重匮乏,大大增加了开发难度。

为了解决这个问题,团队从算法上着手,设计了基于小样本的模型融合模型算法。训练两个模型,一个真人模型一个风格模型。把真人模型和风格模型按照不同的blending策略进行融合,就可以在尽量保持真人姿态的情况下得到风格化的人脸,如下图所示。

 

图8. CG效果图

然而,这样的方案还无法直接落地到移动端,还需要数据增强模块。一般情况下,几十张图片的数据多样性会非常低,以至于极度缺乏闭眼、张嘴、以及大角度侧脸图片。但在实际场景中,这些都是用户的常见姿势。这里创造性的把生成模型和3D人脸进行了结合,生成出大量多姿态和丰富表情的数据。

基于以上小样本模型融合算法,可以利用几十张数据生成稳定的移动端效果,从而达到小样本学习的目的,例如下图中的欧美脸效果。

图9. 变欧美脸效果

      04      

成对数据画质增强

由于GAN的输出是一张完整的人脸图,没有可标注的数据来评价生成质量的高低,而业务需求往往也比较主观。所以在算法侧,一般根据生成的质量、清晰度、美观性来进行自测。在进行画质增强时,每进行一次效果的更换,都会进行随机调研以确定是否采取新效果。

美观程度优化。结合大众的审美观念,利用图像处理技术和属性编辑方案对大模型生成的图片进一步美化。例如,通过双边滤波增加皮肤的光滑程度。利用属性编辑方案得到不同的改变属性的模型,如去皱纹模型能够去除眼袋和泪沟、双眼皮模型将单眼皮变成双眼皮、大眼模型将眼睛变大等。经随机调研,用户对美化后的图片的喜爱程度明显提高。下图展示了去眼袋和泪沟模型的效果。

 

图10. 去眼袋和泪沟效果示意图

稳定性和清晰度优化。由于采集的真实数据的质量限制和生成模型本身的不稳定性,大模型生成的数据清晰度可能较低,并且产生一些难以解决的artifacts。参考图像修复和超分的相关方法,并且结合业务的特性和具体应用场景,我们单独训练了一个既能提升清晰度又能消除artifacts的GAN模型。经随机调研,清晰度的提升程度和artifacts的消除程度均达到了用户的要求。下图展示了大模型生成图经过画质增强处理以后的效果。

      05      

移动端小模型训练

由于移动端算法需要得到实时、稳定的效果,腾讯微视工程师设计了能在移动端流畅运行的小模型结构,把大模型生成的成对数据作为小模型训练的监督信息进行训练和蒸馏。

5.1小模型结构设计

整体backbone基于unet结构,参考mobilenet的深度可分离卷积和shufflenet的特征重利用等优点,设计轻量级模型。针对不同的任务增加了注意力机制,设计了不同的loss。为了满足不同机型的需求,设计了多种计算量的模型,以适配在不同档位的机型,保证上线覆盖率以及用户的体验。

5.2local discriminator

为了提升五官的清晰度以及整体质量,不仅把整张图放进discriminator进行训练,同时根据人脸点位裁剪出眼、眉、鼻、嘴分别输入到discriminator进行训练。

图12[]. local discriminator多部件判别器

 

5.3小模型蒸馏

考虑到低端机部署的模型参数量较少,在某些任务下,直接对小模型进行训练并不能得到符合预期的效果。所以采用知识蒸馏的方法用参数量较大的teacher model对student model进行蒸馏,通过给到更加容易学习的监督信息以及teacher中间层的分布,使student小模型学习到更多的信息。

 

      06      

除了人脸特效,还有表情迁移

除了image2image的生成效果,微视团队还实现了实时的轻量化人脸动作迁移。人脸动作迁移是指将一段人脸视频中的面部动作,包括头部位置和朝向、面部表情、五官动作等,迁移至另一张静态人脸图片中,使得静态图片呈现出相同面部动作的效果。

要实现以上效果,一种做法是首先估计从目标图片到源图片的反向光流,基于光流对源图片的特征表示进行扭曲(warping)操作,然后再恢复出重建结果,例如Monkey-Net、FOMM算法等。

在上述方案中,大模型层面,微视团队借鉴了Monkey-Net、FOMM等模型所采用的基于关键点轨迹的反向光流预测方法,即先以无监督形式估计每一对关键点的位置并得到稀疏动作光流,再预测加权掩膜得到稠密动作光流。为了实现更强的变形能力和动作建模能力,另外引入了透视变换项,从而使得稀疏动作光流可以学习到更加复杂的变换类型。

在小模型层面,为了实现手机端的实时推断,需要在模型大小和计算量两个方面对大模型进行优化,微视团队主要从以下方面进行改进:

  • 网络结构优化。对于模型中的各个模块,借鉴GhostNet分别设计了相应的小模型结构,从而将模型大小缩减99.2%,GFLOPs降低97.7%;

  • 分阶段蒸馏训练。如果直接从零开始训练不同的小模块,模型将无法收敛,主要是因为模块之间为串行关系,前者的输出将作为后者的输入。此时采取了分阶段训练的策略,并借鉴了知识蒸馏的思想,使得小模型可以成功学习到大模型的能力;

  • 工程优化。其他则是工程实现上的优化,例如缓存模型中需要重复使用到的一些常量、优化代码逻辑、节省推断时无需重复进行的步骤等。同时,借助腾讯自研的TNN推理框架,实现手机端上的部署和实时推理,从而使得用户通过摄像头驱动任意人脸图片的玩法变为可能。

图13. 人脸动作迁移效果图

关于技术团队

以上技术由腾讯微视拍摄算法团队与腾讯平台与内容事业群(PCG)应用研究中心(Applied Research Center,ARC)共同研发。

腾讯微视拍摄算法团队致力于图像/视频方向的技术探索,迅速汇聚了一批行业内顶尖的算法专家和产品经验丰富的研究员和工程师,拥有丰富的业务场景,持续探索前沿AI和CV算法在内容生产和消费领域的应用和落地。

应用研究中心作为PCG的侦察兵和特种兵,肩负着探索和挑战智能媒体相关前沿技术的使命,旨在成为世界一流应用研究中心和行业标杆,聚焦于音视频内容的生成、增强、检索和理解等方向。

工作机会

当前还在持续扩张招人中,具体方向包括(但不限于):

  • GAN生成

  • 2D/3D人体/人脸

  • SLAM/3D视觉/ARAutoML

  • 移动端推理引擎特效工程

  • 渲染引擎算法工程

欢迎联系 quenslincai@tencent.com,jonytang@tencent.com

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值