爱情就像被蜻蜓亲吻过的湖面,纵使过去多年每每想起心湖中依然会泛起阵阵涟漪。
两个人在一起生活得久了,表情动作彼此模仿,会越来越像,这也就是人们常说的“夫妻相”,但是对于广大单身人士(我)如何提前知道自己的另一半长什么样子呢?强大的AI可以帮你实现这个愿望。
有“夫妻相”的两个人在面相上有一些相似性特征,如果可以通过深度学习模型学习到这些特征的对应关系,那么就可以根据你本人的面部特征预测将来你的另一半的样子。在图像处理领域,这是一个像素到像素的编码过程,通过观测已有数据学习出输入像素和输出像素之间的函数关系,之后就可以把这个函数关系应用到所有输入图像的像素就可以得到与输入图像最有“夫妻相”的图像了。用一张图来解释这个过程。
图一
通过收集大量夫妻图像数据,训练一个ConditionalGAN模型即条件生成对抗模型,从而得到输入图像和输出图像的映射关系,然后就可以利用这个映射关系预测将来你的另一半的样子了。
算法原理和实现过程
ConditionalGAN的思想来自于论文《Image-to-Image Translation with Conditional Adversarial Networks》,论文作者提出这个算法模型旨在提供一个能够应用于不同场景,像素到像素映射问题的通用框架。作者在下图所示的场景中做的测试均取得了优于现有通用框架的性能。
图二
ConditionalGAN有GAN的常见结构,Generator(生成器)和Discriminator(辨识器),所不同的是在这两个结构中要加入Conditional参数。结合下面网络的结构图进行说明。
图三 ConditionalGAN
生成器根据输入的噪声z和要参考的对象y生成假图像,辨识器要能够准确的辨识出生成器生成的假图x和真图y,这两步过程是相互对抗的,这也是生成对抗模型GAN名称的由来。
确定了模型基本架构后还需要大量的训练样本让模型真正能够跑起来,在网上搜索关键词“夫妻相”,下载相应的图片即可。但是由于能够下载的数据很有限,所以需要做一步数据增强的工作,比如图像的左右翻转,裁剪等。在训练200个epochs之后模型会取的比较稳定的结果。见下图四。
图四 模型运行结果
结果还不是很完美,一些人像的表情不自然,其中一个原因是训练数据太少,虽然做了数据增强但依然不够,所以下一步还需要收集更多的数据。另外,这一篇文章没有提到过多的算法细节比如网络结构以及一些训练技巧,如果有需要会在后续的文章中补上这一部分。
领取专属 10元无门槛券
私享最新 技术干货