揭秘上了腾讯财报的QQ卡通画

⌈本文原创:腾讯光影研究室⌋

动漫是想象的艺术,燃烧了大部分人的青春,通过人工智能让用户见到二次元的自己,是个兼具科技性、艺术性、娱乐性和商业性的课题。下面将由腾讯光影研究室的同学,来帮忙介绍一下最近刚上腾讯财报的QQ人脸卡通画生成的技术路线。

§¹ 背景介绍

卡通人物风格多种多样,比如写实风,卡通风,日韩风,欧美风,中国风等,不同的风格在色彩,线条,脸型比例等方面都不一样,这里我们简单地从纹理和五官形变两个维度对不同卡通人物风格做一个划分。简单来说,真人域变为卡通域,纹理必然会发生改变,按照形变的程度不同,一般可以将卡通画风格分为三种:

♣  基本没有形变,五官位置和形状基本与真人对应,这种风格称为写实风,对于写实风卡通画,模型只需要学习纹理变化,因此学习起来最简单,生成效果最好。

♣  形变较小,五官位置与形状相对真人发生了一定的变化,这种风格称为普通卡通风,对于这种风格,模型要学习纹理和一定的形变,模型学习有一定的难度。

♣  形变较大,五官位置和形状发生了较大的变化,这种风格称为Q版卡通风,这种风格模型要学习纹理和较大形变,学习难度最大。

⌈技术原理⌋∗

近几年,研究人像卡通画的工作越来越多,如Selfie Cartoonization[1], Landmark Assisted CycleGAN[2], UGATIT[3], photo2cartoon[4], 等,大部分的工作都基于cycleGAN的基本架构,[1]在CycleGAN的基础上, 对重构loss上加强了对五官部位的还原,能够加强五官细节的生成,对写实风格效果较好。

∇ [2]   在CycleGAN的基础上,对真人域和卡通域使用了五点Landmark对齐的约束,能够在一定程度上辅助卡通画五官正确生成,结果相比cycleGAN有较大的改进。

∇ [3]   是一种通用的ITI框架,在cycleGan的基础上添加了AdaLIn模块和CAM模块,在卡通风格的生成上进行了较大的探索和改进,在头像级别的生成能能够生成一些不错的效果。

∇ [4]   在[3]的基础上 使用了Hourglass模块,将AdaLin修改为Soft-AdaLIN,并添加了ID loss, 整体来说依然是针对写实风格做的改进,能够生成更多的卡通画人物细节。

 

∠ ∠ [1]和[4]主要针对写实风格头像卡通画生成,无法适用于形变较大的卡通风格,[2]和[3]在卡通风格上进行了一些尝试,但效果基本停留在研究阶段,无法真正在实时业务场景下落地。

 

总结一下,影响卡通画研究无法实时化落地原因主要有三个:

  • 缺乏高质量paired对数据,卡通画paired数据绘制成本很高,一般绘制一张图像高质量的卡通头像少则几十,多则几百,因此难以获得大量的paired对数据
  • 基于unparied的方法虽然能够摆脱对pair对数据的依赖,但实际应用场景复杂,效果距离在业务上落地还有一段距离
  • 实时卡通画对移动端模型大小有严格的限制,在有限的计算量达到比较好的卡通画效果难度较高

 

 ⇑ 基于以上三个问题,腾讯光影研究室从2019年年底开始研究如何将卡通画落地,一方面研究和改进无监督方案的效果,另一方面不断思考和探索是否可能基于小样本就生成不错的卡通画效果,经过半年多的研究和打磨,研究出一套通用的基于小样本的卡通画生成框架,利用几百张的高质量卡通画就可以生成不错的卡通画效果。目前已有两种卡通画效果在手Q相机,小世界拍摄,手Q表情包上线。

 

§² 效果展示

◊ ″干啥啥不行,和老板吵架第一名的杨超越″,″爱吃大碗宽面的吴亦凡″等更多的手Q表情包效果(GIF离家出走~~)

 

§³ 具体实现

♣ 卡通画生成任务属于ITI (Image to Image translation) 任务中的一种,对于ITI任务,经过不断探索,我们总结出一套通用的流程,具体分两步:

  • 大模型(监督或无监督)生成训练样本
  • 移动端轻量模型拟合训练样本

卡通画生成任务也不例外,为了得到更好的效果,在生成训练阶段,我们使用了弱监督训练方案,训练阶段,我们使用少量的标注数据和大量的非标注数据同时训练,计算损失函 数时,不同的样本我们使用不同的损失函数,同时为了生成更清晰更高分辨率的卡通画图像,我们使用了多尺度的对抗Loss。相比于无监督方法,基于弱监督方法生成的训练样本质量更高。

为了满足移动端实时的要求,我们设计了一个轻量的模型,模型结构上我们设计一个基于注意力机制的U-Net结构,注意力机制让模型能够让变化大的区域获得更多的关注,从而提升模型的效果,具体网络结构如下:

♣ 工程方面,由于实时卡通画对手机性能要求极高,考虑到微视和手Q用户众多,机型种类繁多,机型性能差距大的现状,我们在网络设计和模型下发策略方面做了大量工作。网络设计方面,对于初版实时模型我们仔细分析网络每一层的耗时和对效果可能的影响,通过追踪学术界最新网络结构、模型剪枝、添加注意力机制、使用特殊loss加强学习约束等策略,设计了大中小3个不同架构、不同计算复杂度的模型。在机型分发策略方面,通过对机型进行分类测试,得到主流机型在大中小3个模型上的性能数据,以适配性能和效果可以tradeoff的模型,然后再映射到每款机型上。最终保证了实时漫画能够稳定支持微视和手Q海量的用户群体。

 

§₄ 线上Pipline

♦ 线上相机视频流的整体pipline如下所示:

对于输入图像,我们首先对真人进行一个瘦脸操作(为了让最终生成的卡通人物脸型更好看),然后裁剪出对应的人脸框输入卡通画网络得到卡通画头像,同时我们根据卡通画头像的肤色设计了一个背景滤镜,将全图输入背景滤镜得到滤镜背景图,最后将卡通头像和背景滤镜融合,并使用一个全局LUT进行调色得到最终的卡通画结果。

♥人工智能如火如荼,虽不及几年前的预期,但确确实实在改变着人类的生活;时下,疫情笼罩,中美角逐,愿人工智能给人类多带来些新意和益处。♥

‹参考文献›

  1. Li, X., Zhang, W., Shen, T., & Mei, T. (2019). Everyone is a cartoonist: Selfie cartoonization with attentive adversarial networks. In Proceedings – IEEE International Conference on Multimedia and Expo
  2. Wu, R., Gu, X., Tao, X., Shen, X., Tai, Y.-W., & Jia, J. iaya. (2019). Landmark Assisted CycleGAN for Cartoon Face Generation.
  3. Kim, J., Kim, M., Kang, H., & Lee, K. (2019). U-GAT-IT: Unsupervised Generative Attentional Networks with Adaptive Layer-Instance Normalization for Image-to-Image Translation
  4. https://github.com/minivision-ai/photo2cartoon