看看下面这张图,你是不是觉得,第一行是某个灵魂画手照着第二行帅哥美女画的肖像?
真相可能让你大跌眼镜,第二行的帅哥美女都是AI根据第一行的灵魂画作想象出来的。神奇的是AI能准确地识别出潦草的笔触画出的发型、眉毛、眼神、脸部轮廓,甚至是嘴巴的张合和笑容,还有胡子的分布,没有画出的耳朵就用头发遮住,可以说完美地抓住了草图中的所有关键信息。如果这个AI听得懂语言的话,或许会让罪犯画像师担心自己的饭碗。
我们来看看作者提供的交互界面的作画过程:
在背景草图的引导下,即使仅仅画出了脸部轮廓,AI也立刻可以生成一张完整的人脸,并在画手作画的过程中,实时地修改眉毛、眼皮、嘴型、牙齿、鼻型和发型,甚至露不露齿都可以还原出来,小双眼皮或者大双眼皮也任君选择。并且在作画结束后,你还可以对眼、口、鼻和其它部位进行微调,使之更加接近草图。
作者还在演示视频里做了以下演示,也就是说,AI可以根据草图从数据集中取素材拼出新的人脸五官组合。
论文讲解视频
这个项目来源于中科院和香港城市大学的一项研究DeepFaceDrawing,论文标题是《DeepFaceDrawing: Deep Generation of Face Images from Sketches》,已经被SIGGRAPH2020接收。
论文地址:http://geometrylearning.com/paper/DeepFaceDrawing.pdf
项目地址:http://geometrylearning.com/DeepFaceDrawing/
可喜的是,作者已经放出了源代码,目前的实现采用的是清华开源的Jittor框架,作者表示,后续会放出PyTorch实现。并且在项目页面,作者还提供了试用地址,感兴趣的同学还在等什么呢?
GitHub地址:https://github.com/IGLICT/DeepFaceDrawing-Jittor
试用地址:http://www.geometrylearning.com:3000/index_621.html
我们也急不可耐地想试用,可惜登陆时收到这样的通知:
不过经过长时间的等待最后还是成功登陆上了,看看我们的成果:
在试用过程中,我们发现,背景草图会随着画手添加的笔画而改变,变成更加适应当前草图的参考草图。
要使草图更加接近人脸,只要在区域置信度的“其他”项多进行调节就好。
此外,如果在区域置信度上不进行调整,则生成的人脸和草图相差还是挺大的,不过更接近真实的人脸,在整体上神似形不似。
如果将区域置信度全部调到最大,则生成的人脸和草图的整体轮廓、五官轮廓都很接近,可谓形神兼备,虽然轮廓还比较清晰,只是表情很怪异。
另外背景草图的存在也是挺有用的,否则将区域置信度调到最大后,就容易生成严重畸变的人脸。以下两张图是在有背景草图引导下,分别将区域置信度调到最小和最大后生成的结果。
以下两张图是在没有背景草图引导下,分别将区域置信度调到最小和最大后生成的结果。
仅仅通过简单的视频演示,我们就可以感受到,DeepFaceDrawing的优点在于可以根据严重畸变或不完整的草图画出逼真程度高的人脸。
以下是DeepFaceDrawing论文中的对比实验结果,可以看出,DeepFaceDrawing不仅五官和整体轮廓更加清晰,也更加“正常”。
研究者也在论文的感知评估研究中,比较了通过全局检索、局部检索和带插值的局部检索(DeepFaceDrawing使用的方法)对草图进行细化的结果,可以看出,DeepFaceDrawing生成的人脸更接近草图的轮廓,无论是整体还是局部,全局检索的效果更像是图像搜索,局部检索的效果则出现了较严重的五官畸变。
最新的图像到图像深度转换技术可将手绘草图快速生成人脸图像,但过去的解决方案往往存在以下问题:
-
1)对草图过拟合,因而要求输入专业的素描甚至边缘图;
-
2)通常采用几乎固定的输入草图,推导笔画之间缺少的纹理或阴影信息,在某种程度上,这种问题更像是将输入草图作为硬约束的重建问题;
-
3)通常从成对的真实图像及其对应的边缘图中训练网络,由于深度学习基于数据驱动的本质,需要在与真实图像的边缘图质性相似的测试草图,来合成真实的人脸图像。但这种草图很难制作,尤其是对于那些几乎没有绘画训练的用户。
这篇论文则针对以上问题提出了自己的解决方案。到这里为止,我们对DeepFaceDrawing有以下几个疑问:
-
1)为什么生成人脸对草图畸变不敏感?为什么能从不完整的草图生成完整的人脸?
-
2)为什么生成人脸的五官能精准对应数据集中人脸的五官?
-
3)为什么不完整草图生成的人脸性别固定为男性或女性?
-
4)为什么可以根据草图从数据集中取素材拼出新的人脸五官组合?
-
5)为什么区域置信度的调整可以使生成人脸从神似变成形神兼备?
-
我们把“why”换成“how”,看看DeepFaceDrawing做了什么。
1)如何使生成人脸对草图畸变不敏感,如何从不完整的草图生成完整的人脸?
为了解决第一个问题,作者采取了从局部到全局的隐式建模方法。
对合理的人脸图像的形状空间进行隐式建模,并在该空间中合成人脸图像以接近输入的草图。从真实人脸素描图像中隐式学习一个可行的人脸素描的空间,并在该空间中找到最接近的点来接近输入草图。这样,草图可以作为软约束用于指导图像合成。
因此,即使对于粗糙和/或不完整的输入草图,系统也可以提高合成图像的可信度,同时不损害草图所显示的特征。由于针对期望的高维特征空间的训练数据有限,因此全局地学习这样一个空间(如果存在的话)不太可行。
这促使作者隐式建模组件级流形,那么将每个组件流形假设为低维的和局部线性的就更有意义。这一方案不仅有助于使用有限数量的人脸数据在局部跨越这种流形,而且还支持对形状细节进行更细粒度的控制。
受到Lee等人的论文《Shadowdraw:real-time user guidance for freehand drawing》的启发,作者提供了一个阴影引导界面(基于CE的实现),使用户更简便地输入具有适当结构的人脸草图,如下图所示。输入草图的相应部分被投影到下面的人脸组件流形,然后映射到相应的特征图以进行图像合成。
2)如何使生成人脸的五官能精准对应数据集中人脸的五官?
为了解决第二个问题,DeepFaceDrawing提出了一种新的基于草图的人脸图像合成的深度学习框架,以改善信息流,如下图所示。DeepFaceDrawing还提供更大的灵活性来融合单个人脸组件,从而获得更高质量的合成结果。
系统由三个主要模块组成,即CE(组件嵌入),FM(特征映射)和IS(图像合成)。CE模块采用自编码器架构,分别从人脸素描数据中学习“左眼”、“右眼”、“鼻子”、“嘴”和“其余”五个特征描述符,用于局部跨出组件流形。FM和IS模块共同组成了另一个用于条件图像生成的深度学习子网络,并将组成的特征向量映射到真实图像。
作者将人脸草图分解为五个组件,分别表示“左眼”,“右眼”,“鼻子”,“嘴巴”和“其余”。
为了更好地控制各个组件的细节,对于每种人脸组件类型,都学习了局部特征嵌入。作者通过使用五个自编码器网络获得单个组件的特征描述符。
每个自编码器由五个编码层和五个解码层组成。在中间添加一个完全连接的层,以确保所有五个组件的潜在描述符的尺寸均为512维。针对潜在表征尝试了不同数量的尺寸(128、256、512),发现512维足以重构和表征草图细节,而低维表征往往会导致模糊的结果。
如上图所示,给定相同的输入草图(a),基于流形投影后特征向量的图像合成获得了结果(d),它比基于一个中间草图(b)的图像合成结果(c)更为逼真。请看中间草图(b)和相应的pix2pixHD合成结果(c)中的高亮部分。
给定输入草图,将其各个组件投影到组件流形上以提高其合理性。
pix2pixHD的解决方案是首先将解码后的组件草图融合为完整的人脸草图(上图(b)),然后执行草图到图像合成以获得人脸图像(上图(c))。可以看出,该解决方案很容易在合成草图中引起伪影(例如人脸组件之间的对不准、不兼容的发型),这样的伪影会遗传到合成的图像上,因此如前文所说,现有的用于草图到图像合成的深度学习解决方案是倾向于使用输入草图作为相当硬的约束。
作者观察到,上述问题主要发生在各自组件的裁剪窗口的重叠区域。由于草图只有一个通道,相邻组件在重叠区域的不兼容问题难以通过草图-图像网络自动解决,因此将采样流形点的特征向量映射到多通道特征映射(即三维特征张量)。这大大改善了信息流,融合特征图而不是草图组件有助于解决人脸组件之间的不一致性。
由于不同成分的描述符具有不同的语义含义,因此作者设计了具有五个独立解码模型的FM模块用以将特征向量转换为空间特征图。
给定组合的特征映射,IS模块将它们转换为真实的人脸图像。作者使用一个条件性GAN架构来实现这个模块,它将特征映射输入到一个生成器,该生成由一个鉴别器来指导进行。与pix2pixHD中的全局生成器一样,生成器包含一个编码部分、一个其余块和一个解码单元。输入特征图按顺序遍历这些单元。与Wang等(2018)相似,discriminators被设计来以多尺度的方式确定样本:向下采样多尺度大小的输入,并使用多个鉴别器在不同的尺度处理不同的输入。作者使用这种设置来隐式地学习各部分之间的高级关联。
3)如何使不完整草图生成的人脸性别固定为男性或女性?
作者采用两阶段训练策略来训练网络。第一阶段,仅仅训练CE模块,通过使用组件草图来训练5个独立的特征嵌入自动编码器。以自监督的方式进行训练输入草图图像和重建图像之间的均方误差(MSE)损失。
在第二阶段,固定训练好的组件编码器的参数,用FM和IS模块中的未知参数对整个网络进行端到端的训练。对于IS中的GAN,除了GAN损失之外作者还加入了L1损失,以进一步指导生成器,从而确保生成图像的像素级质量。利用判别器中的感知损失来比较真实图像和生成图像之间的高阶差异。由于男性和女性肖像的不同特征,作者使用了完全数据集训练网络,但是将搜索空间限制在男性和女性空间中进行测试,这也相应回答了我们第三个问题。
4)如何实现根据草图从数据集中取素材拼出新的人脸五官组合?
对于第四个问题,DeepFaceDrawing的图像合成子网络能够解决包含光源和形状方面的不同来源的人脸组件之间的不一致性问题。首先将人脸组件草图(可能来自不同的主体)编码为特征向量,然后通过使用FM和IS模块将它们组合为新人脸来实现。可用其他来源的相应组件替换现有人脸的组件,或组合多个人的组件。如下图所示,通过重新组合四个来源草图中的眼睛、鼻子、嘴巴和其余区域,可合成新的人脸。
5)如何调整区域置信度使生成人脸从神似变成形神兼备?
对于第五个问题,相比那些未经绘画训练的用户而言,具有良好绘画技能的用户倾向于信任自己的绘画。因此,作者为每种组件类型提供了一个滑块,以控制流线型投影后草绘的组件与其细化版本之间的混合权重,如下图所示。wb^c=1表示完全使用输入草图进行图像合成(形神兼备),而wb^c=0,本研究则完全信任插值数据(神似形不似)。
对于创建与任何现有样本或其混合样本非常不同的人脸来说,这种混合特征特别有用。例如,对于训练集中的女性数据,大多数受试者的发型都很长。若总将输入草图推入此类样本,就不能创建短发型效果,作者认为可以通过调整输入草图的“其余”组件分量来解决此问题,方法是调整其相应的混合权重。
对于第六个问题,为了协助绘画技能欠佳的用户,研究者还设计了将K个合理草图作为背景放置在画板上,以引导用户绘画的方法,如下图所示,这样就能更高效地生成合理的人脸。只要用户沿着背景的草图轮廓进行作画,草图的特征向量就更加接近于已有的K个合理草图的特征向量,也就有更高的概率可以生成正常的人脸。当用户作画偏离背景草图时,这K个合理草图也会发生相应变化,引导用户到其它的合理输入。
Reddit 有一位网友提问,如果给一张丑陋的草图,系统会输出一个丑陋的人吗?
从图中可以看出,即使给出丑陋的草图,输出的也会是平均来说漂亮的人脸,这大概是因为所用的训练数据集都是名人,平均“颜值”较高,因此神经网络学到了一种漂亮的平均;这能算是一种在“颜值上的”数据不平衡问题吗。另外关于生成人物的肤色和种族问题,这和训练数据集也是有关的。
正如另一位网友总结的:“就算是这样,你也只能画出漂亮的、拥有精致妆容的白人明星”。
研究者们使用的是CelebAMask-HQ数据集,这个数据集收集了众多白人明星的人脸图像,这也就意味着不管你怎么画,都无法生成黑种人或黄种人的脸。所以这种神奇性也可以用一句精辟的话来概括:
只要有欠拟合,就没有什么事情做不到。
也就是说,无论草图如何畸变,都不会使生成结果发生太大变化。例如,如果在研究中使用了高难度概念艺术,那么也能轻易实现草图变概念艺术。
比如人脸支付场景中,可能存在利用该项技术盗刷的问题。随着人脸活体检测技术的发展,这种隐患应该能得以有效避免。
相比于Deepfake,本文的DeepFaceDrawing应该算是相对无害的。
如论文作者所说,这项技术在犯罪侦查、人物设计、教育培训等方面都可以有所作为。期待有一天这项技术更加通用,这样一来其商业价值会更大。会有类似ImageNet一样的数据集和相关比赛出现来帮助推动这项技术的发展吗?
。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/138522.html