最近看到了一个比较好玩的项目,号称可以将非常小的图片表情恢复原状。通过一个机器学习模型对面部的标志进行渐进式的超分辨,训练后的网络可以输入小至16×16像素的图像进行面部图像的重建,并重新缩放到128×128像素大小作为输出图像,以下是他们给出的例子:
相关论文介绍
该机器学习模型来自论文:Progressive Face Super-Resolution via Attention to Facial Landmark(https://arxiv.org/abs/1908.08239),论文提出了一种新的人脸识别方法,用这个方法可生成逼真的8倍超分辨率的人脸图像的同时,完全保留其面部细节。该神经网络的训练方法是渐进式的,通过将网络分割成连续的步骤,使训练稳定下来,每一步输出的分辨率都在不断提高。论文还提出了一种新的面部注意力丢失方法,并将其应用于每一步的训练中,通过增加像素差和热图值来更详细地恢复面部属性。最后,论文还提出一个压缩版本的人脸对齐网络(FAN)的标志热图提取。利用所提出的FAN,可以提取出适合于人脸SR的热图,并减少了整体训练时间。实验结果证明,该方法在定性和定量测量方面都优于目前最先进的方法,尤其是在面部感知质量方面。
然而,论文中有一个没被提及的细节,就是最后输出的图片带有疤痕的比例非常高?,活脱脱都变成了哈利波特呢。
左:真人,中:原输入表情,右:输出结果
仔细一看右图还真的怪吓人的,幸好农历七月已经过去了
另外,该模型的最佳训练场景是输入的图像大小应该为16×16像素,并且需要使用与训练和测试模型完全相同的代码。
如果原图像不是16×16像素的呢?
如上图所示,在Twitter上有一组大小正好为16×16像素的表情符号(大家也可以自行到Twitter表情的Github项目查看:https://github.com/twitter/twemoji),作者利用这些表情进行了测试,结果可以看下图:
以上8组表情的的左侧都是原图,右侧则是输出结果,这训练出来的结果也太老龄化了吧,面部全部都满脸皱纹,连披萨都烤的毫无食欲(还是叫个必胜客的披萨吃吧,推特牌就算了)。
现在有了新的进展!因为这个模型是专门用于寻找面部标志的,所以任何一个标志都可以在一个像素上画出眼睛和鼻孔。作者表示非常肯定意大利辣香肠披萨就是模仿人类的嘴唇?制成的…
下面的样本是经过精心挑选的,然而许多输出的结果都不是很理想。作者也花了很大力气鼓励模型对面部特征做出积极的猜测。例如,虽然推特的图像已经是16×16像素,但如果首先通过传统的大小调整将其从16×16像素的输入调整到128×128像素,然后再降低到16×16像素,通常会得到更好的结果。这显然增加了很多模糊,但似乎为模型提供了更多创造性的空间来解释某个事物。作者还将预测的图像作为输入发送回模型进行迭代(迭代次数多达10次),其中有许多输入图像都是来自后来迭代生成的结果。然而,在10次迭代中只有3次可以看到人的眼睛。
作者还非常喜欢这个绿色的很像龙(或者像蛇)的表情。除了一只眼睛以外,它从来没有真正拥有过人类的特征,但生成图片的人造风格令作者非常喜欢。
当你放大或缩小一个StyleGAN面部模型时,作者联想到这篇Gan可操控性论文(https://arxiv.org/pdf/1907.07171.pdf)。
以下是用Face Super-Resolution模型缩放的图像结果:
该动图无法上传,敬请移步到原文查看:https://iforcedabot.com/photo-realistic-emojis-and-emotes-with-progressive-face-super-resolution/。
Twitch表情的输出效果如何?
令人惊讶的是,只需要一点点调整,爬行动物图片的输出结果,面部看起来更像人类了!说好的建国以后动物不能成精呢?!!
Twitch表情并不完全适用于16×16,其中一些具有高分辨率版本,而另一些则没有。作者尝试了所有种类,因此对于以下的某些图片,输入的时候已经是高分辨率,但在进入模型之前被调整为16×16像素大小。图片输出结果也在下方,因为与真正的高分辨率表情经常有一种有趣的对比。
最后来看看游戏精灵们的生成结果
由于篇幅有限,作者没有拿更多的精灵进行测试,不过可以期待作者之后的更新~
进一步探索
我认为可以做更多的事情来鼓励模型在应用人类特征方面具有创造性 —— 目前我只是尝试对管道进行一些调整并迭代,几乎没有做其他的事情。使用其他模型的可能性是无穷无尽的。作者立即联想到StyleGAN编码:https://twitter.com/jonathanfly/status/1138236372572135424
在 https://selfie2anime.com/上也有一个快速测试,可以告诉你在动漫里长什么样子,输出的结果会发送到邮箱中。
更新1:更多Minecraft
我被要求尝试用更多的Minecraft纹理去进行测试,当然是以16×16像素的图片作为样本。结果很显然,绝大多数的样本并没有真正发挥作用......?
完整数据集地址:https://drive.google.com/open?id=1kzmgMAshMeO8dOs6gnr0IzHWHsn_MBux
面部特征通常非常微妙,实际上会比明显的面部特征更令人毛骨悚然。想象一下在玩游戏的时候,隐隐约约感觉看到了一张脸,但是又不能对这张图像做出什么操作......
更新2:不能停止尝试的事情
为了寻找更多可以用来进行测试的像素图像,作者在这颗恒星的图像上尝试了 Face Super-Resolution 训练。只花了大约40次迭代,(输出的图像)就揭示它实际上是一个可爱的小外星人的形象。很确定天文学是如何运作的?https://t.co/dUQjERGllq
更新3:视频的 Face Super-Resolution
继续用Face Super-Resolution神经网络对一个16x16像素的视频进行超分辨,结果大家也都看到了,Face Super-Resolution 基本上把它变成了DeepFake里的魔鬼。?
YouTube视频:https://youtu.be/H8qH_mdceNM
最后,对 Face Super-Resolution 感兴趣的同学,可以到Colab进行尝试。如果大家知道为什么会出现如此恐怖的现象,也可以在留言区进行留言~
https://gist.github.com/JonathanFly/80b669a72bf624d17b56a1cfec742588#file-progressivefacesuperresolutiondemo-ipynb
快速在线体验地址:
https://colab.research.google.com/gist/JonathanFly/80b669a72bf624d17b56a1cfec742588/progressivefacesuperresolutiondemo.ipynb
彩蛋时间到
以下是小编自己在Colab上测试的结果,图片都是在网络找的,只需要在代码中修改网络图片的地址即可运行。具体效果如何,请大家自行感受吧
(不能让我一个人辣眼睛)
via https://iforcedabot.com/photo-realistic-emojis-and-emotes-with-progressive-face-super-resolution/