拯救单身狗:这个对象生成器帮你看看未来对象长啥样

不知道自己未来的老婆 or 老公长什么样?来,我们先用 AI 预测出一个。

单身多年的你,是否曾幻想另一半的模样?最近,有这样一个开源项目在深度学习社区火了起来——通过神经网络生成你另一半的相貌。想知道自己会和什么样的人在一起吗?已有网友尝试了生成效果。

项目地址:https://github.com/irfanICMLL/CoupleGenerator

作者自己介绍,这是一个自 2017 年便开源了的项目,当时使用的是 TensorFlow,不过最近项目代码改成了 PyTorch。

得到对象只需 8800 步训练

项目使用了一百多位新婚夫妇的结婚照片,图像是通过爬虫从百度上爬取下来的。

这些结婚照都有着统一的模板:喜庆而单一的红色背景,清晰的人脸和五官,对模型训练比较友好和方便。

训练样本之一。爬取方法:https://blog.csdn.net/qq_27879381/article/details/65015280#comments

在模型构建和训练上,项目采用了 VGG 作为骨架网络学习图像特征。VGG 是一种常见的神经网络架构,发布于 2014 年,作者是 Karen Simonyan 和 Andrew Zisserman,该网络表明堆叠多个层是提升计算机视觉性能的关键因素。VGGNet 包含 16 或 19 层,主要由小型的 3×3 卷积操作和 2×2 池化操作组成。

VGG 的优点在于,堆叠多个小的卷积核而不使用池化操作可以增加网络的表征深度,同时限制参数的数量。例如,通过堆叠 3 个 3×3 卷积层而不是使用单个的 7×7 层,可以克服一些限制。

首先,这样做组合了三个非线性函数,而不只是一个,使得决策函数更有判别力和表征能力。第二,参数量减少了 81%,而感受野保持不变。另外,小卷积核的使用也扮演了正则化器的角色,并提高了不同卷积核的有效性。

在生成结果的过程中,模型使用 pix2pix 的方式。Pix2pix 是一种基于 GAN 架构的风格转换模型,来自论文《Image-to-Image Translation with Conditional Adversarial NetWorks》,作者包括朱俊彦等,论文在 CVPR 2017 发表后,已有多种框架的实现。

Pix2pix 使用成对的图片数据,学习从一个图像到另一个图像的转换方式,并生成能够以假乱真的图像。

使用 pix2pix 实现不同风格和用途图像的互相转换。


在 Pix2pix 中,生成器采用 encoder-decoder 或 U-Net 的架构。

两种 Pix2pix 的生成器架构。

那么,应该怎么使用这个项目呢?

使用方法

在项目中,作者提供了一些内容,包括: 

  • CKPT 模型文件:

    https://cloudstor.aarnet.edu.au/plus/s/YHDWgez1g3RFc6o

  • VGG 权重文件:

    https://github.com/machrisaa/tensorflow-vgg

  • 训练数据:

    https://cloudstor.aarnet.edu.au/plus/s/VWZJaWfbla3kFch

在使用的过程中,你需要下载 VGG 权重文件和训练数据,下载代码到运行环境中并运行 autotest.sh 文件。

效果

在训练 8800 步后,模型对给定的图片提供了生成结果,如下所示:

考虑到训练数据并不算多,生成图像的质量还有提高的空间。此外我们可以注意到,模型也学习了一些有趣的特征,比如右上角原始图像中有结婚证,则生成的图像中也保留了结婚证这一要素。

项目作者介绍

这个项目的作者是一位非常漂亮的小姐姐,目前在澳大利亚阿德莱德大学攻读计算机科学博士学位,师从沈春华教授。

Yifan Liu。

Liu 同学本科和硕士就读于北京航空航天大学自动化科学与电气工程学院,曾获得 2016 年北京市优秀毕业生。在 2018 年 11 月进入阿德莱德大学攻读博士学位之前,她曾是微软亚研高级研究员、2018 年 ACM 杰出会员王井东教授的访问学生。

Liu 的主要研究方向是神经计算、模式识别等领域,包括图像语义分割等。在学术研究方面,2017 至 2019 年,她作为一作或其他作者的多篇论文被 CVPR、ICCV、PAKDD、IEA/AIE、PACLING 等国际学术会议接收,有一些为 Oral 论文。

这是她的个人主页:https://irfanicmll.github.io/

实测效果怎么样

为了试一试项目的效果,我们也下载了项目的预训练权重迭代 8800 次)以及 VGG16 的预训练权重。因为数据集非常小,我们先用项目中的数据试一试效果。如下所示我们用项目 datasets 目录下的图像做测试,其中左侧为两组输入图像,右侧为输出图像。从生成结果来看,不论性别,另一半的相貌总是能够被生成出来的,还进行了一点磨皮。

如果我们只给一张人像呢?现在看起来,模型的生成规则是输出输入图像中左侧的人像,如果只输入一张人像的效果可能会变差。为了验证这个想法,我们将上述两张图都截成一个单一人像并输入模型。正如所料,现在生成效果不太好。如下所示左侧为两组输入样本,右侧为输出效果。

如果数据不从测试数据集中获得呢?在默认输入规则为夫妻合照的情况下,我们再次进行了新的尝试。通过输入不在数据集中的夫妻人像样本,并检查模型的生成效果。如下图所示,左侧为输入图像,右侧为输出结果,生成的图像较难识别。夫妻图像来自网络搜索结果。

诚然,利用现有数据预测未来对象的相貌这种想法是很不错的,但是由于数据量太小,模型的泛化能力还没有达到应有的要求。总的来说,单身狗还不能光靠这个生成一张自己对象的照片。

项目作者也表示,数据量比较少,效果也不太好,但是依然欢迎大家使用代码和数据进行进一步的训练,我们也会进一步关注项目的进展。

入门预训练模型PyTorchGitHub
1
相关数据
微软机构

微软是美国一家跨国计算机科技公司,以研发、制造、授权和提供广泛的计算机软件服务为主。总部位于美国华盛顿州的雷德蒙德,最为著名和畅销的产品为Microsoft Windows操作系统和Microsoft Office办公室软件,以及Xbox的游戏业务。微软是美国《财富》杂志2015年评选的世界500强企业排行榜中的第95名。

https://www.microsoft.com/en-us/about
沈春华人物

沈春华博士现任澳大利亚阿德莱德大学(澳大利亚8所研究型大学之一)计算机科学学院终身正教授。曾在南京大学(强化部本科及电子系硕士),澳大利亚国立大学(硕士)学习,并在阿德莱德大学获得计算机视觉方向的博士学位。沈春华教授在阿德莱德大学的团队目前主要从事统计机器学习以及计算机视觉领域的研究工作。

朱俊彦人物

MIT电气工程与计算机科学系计算机科学与人工智能实验室博士后。研究重点:计算机视觉、计算机图形学、机器学习。CycleGAN的作者,曾获得ACM SIGGRAPH 2018最佳博士论文奖。

深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

池化技术

池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

迭代 技术

模型的权重在训练期间的一次更新。迭代包含计算参数在单个批量数据上的梯度损失。

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

模式识别技术

模式识别(英语:Pattern recognition),就是通过计算机用数学技术方法来研究模式的自动处理和判读。 我们把环境与客体统称为“模式”。 随着计算机技术的发展,人类有可能研究复杂的信息处理过程。 信息处理过程的一个重要形式是生命体对环境及客体的识别。其概念与数据挖掘、机器学习类似。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

语义分割技术

语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类。图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。

堆叠技术

堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。

百度机构

百度是全球最大的中文搜索引擎,是一家互联网综合信息服务公司,更是全球领先的人工智能平台型公司。2000年1月1日创立于中关村,公司创始人李彦宏拥有“超链分析”技术专利,也使中国成为美国、俄罗斯、和韩国之外,全球仅有的4个拥有搜索引擎核心技术的国家之一。

https://www.baidu.com/
感受野技术

一个感觉神经元的感受野是指这个位置里适当的刺激能够引起该神经元反应的区域。感受野一词主要是指听觉系统、本体感觉系统和视觉系统中神经元的一些性质。

暂无评论
暂无评论~