关于神经网络:图片风格迁移基于实例缓解细节丢失人脸风格化失败问题

99次阅读

共计 5968 个字符,预计需要花费 15 分钟才能阅读完成。

​​摘要:本文介绍的基于实例的办法能够很好的缓解细节失落、人脸风格化失败等问题并失去高质量的格调转换图像。

本文分享自华为云社区《基于实例的格调迁徙》,作者:柠檬柚子茶加冰。

基于神经网络的格调迁徙办法尽管生成了令人惊艳的格调转换图,然而目前的大部分办法只能学到一些相似色彩散布,整体构造等,对于部分区域的纹理细节等,并不具备很好的学习能力,在这些细节区域还会带来扭曲和变形。本文介绍的基于实例的办法能够很好的缓解以上问题并失去高质量的格调转换图像。

格调迁徙 (style transfer),指的是保留图片内容(content),将图片转换为指标格调(style)。例如下图中第一行图片别离为各种指标格调图片,第二行为在保留人像(content) 的同时格调转换后的图片:

注:格调指的是图片色彩、纹理的变动等,局部论文认为内容 (content) 也是一种格调。

前言:

目前的格调迁徙简直大部分都是在 GAN(生成反抗网络)的根底上组合 AdaIn(适应性实体正则化),加上 vgg 网络形成的感知损失 (contentloss) 等来进行优化;还有较为经典的 pixel2pixel、cyclegan 等利用成对数据或者 cycle loss 进行图像翻译 (ImageTranslation) 工作等。基于神经网络的格调迁徙办法尽管生成了令人惊艳的格调转换图,然而目前的大部分办法只能学到一些相似色彩散布,整体构造等,对于部分区域的纹理细节等,并不具备很好的学习能力,在这些细节区域还会带来扭曲和变形。尤其最近尝试了许多办法,进行人脸风格化等,包含 (u-gat-it, stylegan 等) 都这些基于神经网络的办法在对一些相似油画、水彩等格调都不具备很好的成果。

上面首先介绍两篇成果较好的基于神经网络的格调迁徙办法:其中,U-GAT-IT 在二次元人脸上具备较好的成果,whitebox 在风光类图片上具备较好的成果。

U-GAT-IT: UNSUPERVISEDGENERATIVE ATTENTIONAL NETWORKS WITH ADAPTIVE LAYERINSTANCE NORMALIZATION FORIMAGE-TO-IMAGE TRANSLATION

u-gat-it 实用于形变较大的人脸到二次元格调的 Image to Image Translation 工作。作者将注意力模块引入到整个框架的生成器和判断器局部,使模型专一于一些语义上重要的区域而疏忽一些渺小的区域。作者还组合了实体正则化 (Instance Normalization) 和层正则化 (LayerNormalization) 提出了自适应层实体正则化(Adaptive layer InstanceNormalization)AdaLIN。AdaLIN 公式帮忙注意力模块更好的管制形态和纹理的扭转。

整个模型构造如图,包含两个生成器 G_{s->t}Gs−>t​和 G_{t->s}Gt−>s​和两个判断器 D_sDs​和 D_tDt​,以上结构图为 G_{s->t}Gs−>t​和 D_tDt​的构造,示意 source 到 target(实在到二次元),G_{t->s}Gt−>s​和 D_sDs​则和它相同。

整个生成器的流程为:不成对的数据输出生成器模块,通过降采样和残差块等提取 K 个特色图 E,辅助分类器用来学习这 k 个特色的权重 W(相似于 CAM, 利用全局均匀池化和全局最大池化失去权重 w),最终失去注意力特色图 a = w ∗ sa=w∗s。特色图再输出到一个全连贯层获取均值和方差,通过论文提出的 AdaLIn 函数失去最终 normalize 后的特色图,将此特色图输出解码器后失去转换后的图片。

判断器的话就是通过一个二分类网络来生成特定损失,束缚生成的图片和训练数据分布统一。

理论训练中,Ugatit 训练速度较慢,尽管会生成局部较好的二次元格调图片,然而这种没有利用人脸关键点等信息的办法会造成局部生成的图片人物形变夸大,达不到工业利用规范。

whitebox: Learning toCartoonize Using White-box Cartoon Representations
适宜格调:实在人物 -> 偏实在的指标格调
不适宜格调:油画等形象格调
次要奉献:模仿人类绘画行为的三种示意 (the surface representation, thestructure representation, and the texture representation.) 来形成相干的损失函数。

网络结构如上,构造较为简单,次要是各种 loss:

1. 预训练的 VGG 网络提取高维和低维特色形成 structureloss 和 content loss;
2.surface representation 模仿绘画的形象水彩画等(通过一个滤波器失去);
3.the texture representation 则相似于素描格调,通过一个 color shift 算法生成;
4.structure representation 由 KMeans 聚类失去,失去结构化的色块散布。

总结:该办法能够生成成果很好的宫崎骏等相似的日本动画格调,然而对于人物等格调转换会带来细节的失落。本文模仿人类画师而提出的多种 representation 产生的 loss 等具备很好的参考意义。

基于实例合成的人脸格调迁徙

以上介绍的格调迁徙办法,其实都能够归为一类,都是应用神经网络通过学习一大批格调相似的数据来学习对应的格调。这种办法在风光类图片或者细节较少的人脸图像上 (二次元) 等能够取的较好的后果,然而对于具备丰盛信息的格调图,这种办法大都只能学习到一些色彩散布等,产生的格调图会失落大量的部分细节。尤其人脸风格化,仅仅应用注意力 (U-GAT-IT) 依然会产生大量的失败格调转换图,尽管有论文 (LandmarkAssisted CycleGAN for Cartoon Face Generation) 利用人脸关键点束缚来达到一个较为稳固的转换成果,然而对于较为简单的格调图,这些办法依然有些能力有余。此时,基于实例合成的格调迁徙就能够很好的缓解这些问题(细节失落、人脸风格化失败等)。

Example-Based Synthesis of Stylized Facial Animations
成果比照:

上图中第二列的图片就是一种基于神经网络的风格化办法,包含以上介绍的 whitebox 办法,都试着平滑最终转换图片的部分纹理,以达到绘画成果。然而后果就是对于具备丰盛纹理的格调图,这些办法都差强人意。

本文的办法,通过输出一张富含纹理的人脸格调图 S,一段视频帧 T,能够失去一段风格化后的人脸视频帧 O。

文章的具体方法思维倒是挺简略:通过输出的格调图和关键帧(待转换图),失去一系列疏导图(Gseg,Gpos, Gapp, Gtemp),使用 Fišer 在 2016 年提出的使用疏导图合成数据的算法(StyLit:Illumination-Guided Example-Based Stylization of 3D Renderings)。重点是多种疏导图的构建与意义。

宰割图 (Gseg):
目标:因为格调图不同区域有不同的笔触,因而将人脸区域划分为眼睛、头发、眉毛、鼻子、嘴等区域。具体失去该图的办法如下图:

简略的解释下上图,为了失去原始人脸 a 的的三分图 b,作者先失去了一个毛糙的头像宰割图 c,接着应用人脸关键点(下巴关键点),失去一个关闭的掩码 e。为了失去皮肤区域 f,作者应用了一个皮肤的统计模型来筛选属于皮肤的像素,失去图 h。最初,为了失去人脸其它区域的宰割图(人眼等),应用人脸关键点,并为了避免关键点不精确,通过含糊相干区域失去最终的图 i。

地位领导图 (Gpos):
像素坐标归一化到 0 -1,接着应用原图和指标的人脸关键点,并应用 ”moving
least squares deformation”,最终失去指标图绝对原图的坐标点形变图。

外观领导图 (Gapp):
转换为灰度图,批改对比度等。

时序领导图 (Gtemp):
利用之前钻研的手绘的序列在低频区域具备时序一致性,通过含糊格调参考图 S 和前一帧合成的格调转换图 O,失去时序领导图。

合成
失去以上的领导图后,作者应用 StyLit 办法失去合成后的格调图;另外,人眼和嘴巴区域通过额定的较之前的 Gseg 更为严格的掩码(d)来合成,如下图:

后果展现:第一行为格调参考图,第二行为转换后的格调图。

Real-Time Patch-Based Stylization of Portraits Using Generative
AdversarialNetwork

以上介绍的办法合成格调图时筹备工作太多,须要生成 (Gseg, Gpos,Gapp, Gtemp) 等四种图,且会存在局部失败的步骤 (关键点获取失败、宰割失败等) 就会导致格调转换失败;然而不可否认,上文介绍的基于实例的合成办法生成的格调图品质极高,本文的作者提出应用 GAN 来联合这种办法,能生成高质量格调图,且利用 GPU 来达到较高的推理速度。

办法也及其简略,利用上文的办法生成品质较高的风格化数据,并应用罕用的反抗损失、色彩损失(格调图参考图和转换后的格调图之前求 L1 间隔),感知损失(预训练 VGG 提取格调参考图和转换后的格调图的特色求 L2 间隔);

网络结构方面,作者在以前研究者的根底上减少了残差连贯,残差块等,如下图:

总结:本文整体没有特地出彩的中央,然而给咱们提供了一个思路,利用成果较好然而速度较慢的办法生成高质量的大规模训练集,应用以上架构(GAN+ 常见格调迁徙 loss 等),能够失去成果较好且速度较快的格调迁徙办法。

FaceBlit: Instant Real-time Example-based StyleTransfer to Facial Videos
本文同样是一种基于实例的格调迁徙办法,作者比照了以上两篇论文,其中以上介绍的第一篇论文 Example-BasedSynthesis of Stylized Facial Animations 尽管具备十分高的品质,然而这个办法在合成前的筹备工作太多,实现一张图片的风格化须要数十秒。第二篇论文 Real-TimePatch-Based Stylization of Portraits Using Generative Adversarial Network 尽管在 gpu 上具备较快的速度,然而须要很长的训练与资源耗费。以下为作者与两者的后果比照:

其中,a 是格调图,b 和 c 别离是以上的两篇论文的后果,d 是原图。

作者首先改良了第一篇论文中应用的领导图,第一篇论文中应用了四种领导图(宰割图、外观领导图、地位领导图、时序领导图),本文作者将以上的四种领导图压缩为地位领导图 Gpos 和外观领导图 Gapp 两种,并且扭转了他们的生成领导图的算法,最终数十毫秒即可生成领导图。

地位领导图 (Positional Guide)
首先是获取人脸关键点,对于格调图,应用预训练的算法提前生成即可。对于实在人脸图片,作者通过在输出人脸检测器前升高其分辨率到之前的一半来取得较快速度的检测(对于精度的影响能够疏忽)。获取到人脸关键点后,通过将这些坐标信息嵌入 RGB 三通道,R 是关键点 x,G 是 y;而后应用第一篇论文中应用的 ”moving least-squaresmethod” 来计算从原图到格调图的关键点变形;对于最初剩下的一个 B 通道用来存储宰割图,其中格调图的宰割图能够事后生成,而原图的掩码则应用以下办法生成:

简略来说,通过将关键点连线和绘制一个椭圆区域,失去一个局部人脸区域,最初通过剖析皮肤的色彩散布来扩张这个区域边界,最终失去整个人脸的掩码。

外观领导图 (Appearance Guide)
首先将原图转换为灰度图,应用该灰度图减去高斯含糊后的灰度图:

失去以上两幅图后,作者通过以下公式构建了一个表,来记录多个坐标之间的间隔。

并将这个表输出到 StyleBlit(一种基于实例的疾速合成算法,上面介绍)

StyleBlit: Fast Example-Based Stylization with Local Guidance
以上的文章,其实次要都是在构建各种领导图,或者已有算法失去高质量的数据集进行训练,外围的格调迁徙生成算法为本文相似的办法。本文介绍的办法是以后最优(依据给出的领导图的不同)、速度最快的基于实例或者叫领导图的风格化合成办法。至于速度有多快,原文中是这样说的:在单核 CPU 上,咱们能够以每秒 10 帧的速度解决 100 万像素的图像,而在一般 GPU 上,咱们能够以以每秒 100 帧的速度解决 4K 超高清分辨率视屏。

这里只简略论述论文的思维,后续会具体的从 stylit 到 styleblit 介绍。StyleBlit 的想法并不简单,假如咱们有两幅图像或者两个格调不同的物体(3d 或者 2d),算法的核心思想是将原始图像的像素值通过某种映射粘贴到指标图像上((通过相似打补丁的形式)。假如原始图像的像素汇合为{p1,p2…pn},指标图像的像素为{q1,q2,…qn},咱们有一个额定的表,表的值为{p,q,error},也就是上文介绍的相似如下的对于原始像素和指标像素坐标,且两者之间错误率的表:

咱们的指标是风格化或者渲染指标图像,因而须要遍历指标图像所有像素{q1,q2,…qn},在找到对应的原始图像中最近的像素点后,计算二者的错误率,如果低于某个阈值,那么就将原始像素的色彩等复制到指标图像。

当然还有一些细节,比方作者将像素点分层,通过从顶层到低层这种优先级计算错误率,寻找最合适的原图像素点(红色点为指标图像素点,彩色和蓝色为原图像素点,蓝色为最近的三个层级的像素点):

最终算法伪代码如下:

后果展现:格调参考物体为圆球,指标物体为人形建模

论断:只有有适合的疏导图,从 2d 到 3d、人脸格调转换等,该办法都能够疾速高效的生成高质量的指标图像。从试验后果来看,优于绝大多数基于神经网络的格调迁徙。

注:
图像翻译:有研究者认为图像翻译应该是比格调迁徙更为宽泛的一个概念,比方白天黑夜的图像转换,线条图上色、春到冬、马到斑马、2D 到 3D 转换、超分辨率重建、缺失图像修复、风格化等,这些都属于 Image to Image Translation 工作。总体能够总结为将输出图转换为指标图,输出图和指标图都合乎其特定的数据分布。本文次要讲的是最近看的一些格调迁徙论文。

AdaIn: AdaIN 的思路为,它致力于从一张图片由 VGG16 输入的特色图中别离提取内容和格调信息,并且将这两个信息拆散开来;原始图片通过减去均值和除以方差 normalize 后能够减去格调,加上格调图提取的均值方差反向 normalize 可实现格调迁徙;

想理解更多的 AI 技术干货,欢送上华为云的 AI 专区,目前有 AI 编程 Python 等六大实战营供大家收费学习。

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0