皱纹形成

注册

 

发新话题 回复该主题

AI祛除皱纹,还原年轻肤质 [复制链接]

1#

快手Y-tech

最新技术干货分享

背景

皱纹是皮肤老化的最初征兆[1]。皱纹进一步发展,会形成皱襞,即皮肤上较深的褶子。25岁以后,皮肤的老化过程开始,皱纹渐渐出现。出现的顺序一般是前额、上下眼睑、眼外眦、耳前区、颊、颈部、下颏、口周,非常影响面部美观。

皱纹祛除一直是美化领域的重点和难点。传统的去皱算法大多是基于patch匹配的方法,容易出现较多的伪纹理,祛除之后皮肤纹理较糊。快手美颜团队结合图像修复(inpainting)[2,9]技术和基于语义的图像编辑[3]技术,实现准确、高真实感的智能去皱效果。其中颈纹祛除效果如图1所示:

图1左:输入图,右:去皱(颈纹)后的图像

这些惊艳的效果是如何实现的呢?让我们一起来一探究竟吧!

技术方案

上节介绍了一些皱纹祛除的背景,本节会介绍智能祛皱的整体处理流程。

1整体框架智能祛皱整体训练流程如图2所示,整体推理流程如图3:

图2智能祛皱训练流程

图3智能祛皱推理流程

训练时,对人脸图像,使用基于快手自研的皱纹分割将不同类别的皱纹分割出来,然后在皮肤的非皱纹区域随机生成皱纹形状的掩膜,然后将掩膜区域的像素移除,送入网络自监督去学习被抹除的区域的信息。推理时,对用户拍摄的图片,首先基于快手自研的皱纹分割技术得到人脸不同类别皱纹的掩膜。然后抹除该掩膜区域的皱纹纹理,将抹除后的图像与掩膜一起送入图像修复和基于语义的图像编辑网络,两个网络的中间特征相互融合,得到融合后的结果。最后再将融合后的结果与原图进行融合,得到最终的结果。2模型设计整体流程中的关键是模型的设计,接下来我们将针对模型细节进行介绍。祛皱任务可以认为是一种带mask的image-translation任务,image-translation任务目前在业界有三种主流的解决方案:a.编码器解码器:优点是encoder-decoder结构带来的,即高层语义和底层细节的结合,高层语义是从不停的下采样中得到的,底层的细节是融合之前对应尺寸的特征得到的。b.基于语义的图像编辑:优点是从原图引入了style信息,带来了全局层面的变换,所以整体性会好一些,风格也会更统一,缺点是局部的细节可能会有缺失、不一致的问题。c.基于stylegan[13,14,15]以及latentcode反解[4]:优点依托于styleganv2的效果,在生成图像的质量和细节上更有优势,缺点在于多样性受stylegan自身影响,所以多样性较差,无法保持原图本身的ID、光影等信息,对整个图的改变比较大。三个框架在处理多尺度信息上有明显的区别,编码器解码器多尺度是串联的,通过不同层次的卷积来处理,基于spade[3]的图像编辑的多尺度是并联的,直接通过原图下采样并作一个简单的变换得到。串联的卷积是在做一个信息提取和信息压缩的过程,而基于spade的方法,相当于缺失了一个encoder,只用一个decoder去完成重建过程,势必会引入非常多的噪声,这有可能是基于spade的方法细节缺失的原因。基于stylegan的方法往往会添加一个FPN[16],承担了抽取多尺度信息的作用,其机理跟unet类似,只不过其抽取的特征通过map2style[13,14,15]模块之后,丧失了空间信息。快手Y-tech美颜技术团队将图像修复领域常见的编码器-解码器结构与基于语义的图像编辑算法融合,既保证了底层的细节质感,又引入了全局的style信息,可以进行大面积的编辑和生成。为了进一步生成更具真实感的纹理,快手Y-tech美颜团队使用了encoder-decoder判别器、rgb空间的肤色矫正、gan-loss计算修正、频率loss这四项技术,在接下来的章节,我们会逐一介绍这些技术。

增加纹理生成的真实感

1判别器结构的选择生成纹理不真实问题的来源:以往gan的工作里,通常使用一个分类网络作为判别器,而往往一个分类网络存在多次下采样。对于real图和生成的fake图,下采样几次之后,细节都损失了,把feature可视化出来,人眼看起来区分度很低,由于不具有很强的判别行,判别器自然是很难把real和fake的图像分开,这就势必会影响生成器的效果。目前存在的判别器结构与其优缺点如下。a.分类gan[5]:最原始的判别器结构,是一个二分类的分类器,判断real和fake,只能判断大范围语义上的类别,细节在不停的下采样中消失了,且不可恢复,对生成猫狗这种类别差异比较大的任务比较好,不适合我们这种生成高质量皮肤纹理的任务。b.patch-gan[6]:优点是细节有一定保持,缺点是通常层数比较浅,参数比较少,能力比较弱,而一个弱的判别器没办法指导生成器学到一个好的结果,patchgan结构如图4所示。

图4patch-gan判别器结构

c.不做下采样的判别器:可以借鉴超分领域中的esrgan、real-esrgan[7,8]的生成器,即堆叠rrdbblock[7,8]的思路,不做下采样,只靠堆叠卷积来增大感受野,可以兼顾高层语义和底层细节,缺点是计算量和显存开销比较大。d.考虑使用encoder-decoder的结构作为判别器:优点是兼顾高层语义和底层细节,相对较轻量,甚至判别器可以与生成器使用同等结构,更利于gan的博弈,encoder-decoder判别器的结构如图5所示。

图5encoder-decoder判别器结构

本文使用encoder-decoder作为判别器的结构,相比分类gan和patch-gan,可以很好的提升生成皮肤纹理的真实感。如下图所示,在皮肤纹理生成上patch-gan和encoder-decoder判别器的效果对比如图6所示(可以重点

分享 转发
TOP
发新话题 回复该主题