前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >现代黑科技版“指鹿为马":使用CycleGAN实现男女“无痛变性”

现代黑科技版“指鹿为马":使用CycleGAN实现男女“无痛变性”

作者头像
望月从良
发布2020-05-22 15:01:32
1.1K0
发布2020-05-22 15:01:32
举报
文章被收录于专栏:Coding迪斯尼Coding迪斯尼

在秦朝末期,奸臣赵高一手遮天,为了显示自己的权势与力量,他在众人面前指着一头鹿说那是马,大家畏惧赵高的权势,明知那是鹿却不得不配合赵高说那是马,这就是经典成语”指鹿为马“的出处。

在光天化日之下,罔顾事实强行将A说成B,除非你有权有势,别人都依附于你,你才有可能做得到,要不然大家都会认为你傻逼。例如像我这样的平头百姓在大街上指着一个五大三粗,满脸胡渣子的大男人说那是个窈窕大美女,你会不会觉得我傻逼呢?在现代人工智能技术的加持下,我还真有指鹿为马,指男为女的”超能力“。

本节我们介绍一种功能强大的对抗性网络叫CycleGAN,它的特点是能将物体A平和的转变为物体B,例如下图就是CycleGAN的功能实现:

从上图可以看到,训练好的网络能将马变成斑马,将苹果与橘子互换,当然我们要实现更强大的功能,那就是男人与女人互换。CycleGAN的实现比前面介绍的对抗性网络在结构和算法上要复杂很多,首先它有两个生成者网络和鉴别者网络,因为我们想把物体A变成B,那么网络必须有识别和生成物体A和B的能力,因此CycleGAN要使用一组生成者和鉴别者网络来识别和生成物体A,使用第二组生成者和鉴别者网络识别和生成物体B,这点跟我们前面描述的对抗性网络一样,因此CycleGAN有如下结构特点:

不同之处在于两组网络要把自己掌握的信息与对方沟通,这样两组网络能共同掌握物体A和B的特性,这也是Cycle的由来。接下来是CycleGAN的算法关键所在,如下图所示:

从上图可见,两个生成者网络互相交互形成一个循环。由于第一个生成者网络Generator_AB用于接收图片A然后产出图片B,第二个生成者网络Generator_BA接收图片B然后生成图片A,如果第一个网络生成的图片B质量足够好,那么将它伪造的图片B输出给第二个生成者网络,后者生伪造的图片A就应该能获得好质量,因此判断第一个网络生成结果好坏的标准之一就是将它生成的结果用于第二个网络,看看后者能不能得到好结果,因此这就形成一个循环。

同理第二个生成者网络接收图片B后伪造图片A,如果它伪装出A的质量足够好,那么将它伪装的结果输入到第一个生成者网络,后者伪装出的图片B质量就应该足够好,于是这又形成一个循环。

这种循环训练的好处在于两个生成者网络能使用各自对相应图片的识别能力去训练另一个网络。例如一开始算法使用大量真实图片A来训练Generator_AB,于是它就掌握了物体A的内在特征,当Generator_BA将其伪装的图片A输入到Generator_AB,如此就形成了一条输入链,信息由Generator_BA-→Generator_AB,在训练时信息会反向传导变成Generator_AB->Generator_BA,于是前者就把自己对物体A特征的掌握和识别传导给后者,这样后者就能改进自己的构造能力,提升它伪造的图片质量,同理算法也可以形成Generator_AB-→Generator_BA的闭环,让后者伪装的图片A质量越来越好。

网络还有第二个循环,那就是对于接收图片B伪装图片A的生成者网络Generator_BA而言,算法要让它接收图片A,然后伪造的图片A质量也要足够好,其过程如下图所示:

该循环训练流程本质上是让网络Generator_AB和Generator_BA也学会识别图片A和B的特征,这样才有利于网络去提升他们伪造的图片质量。接下来我们看看算法代码的部分实现,首先是对训练数据的加载,这里是相关代码实现。

接下来我们看看两种网络的代码实现,注意到在Generator网络使用了一种叫ResNet的结构,其具体原理请参看我的视频讲解,最后我们给出网络的训练流程代码实现

最后我们看看如何使用代码训练两个网络,以便让网络具备换性能力

代码运行后会将大量的男女图片输入两个网络,于是能让网络具备将男人转换为女人,女人转换为男人的能力,我们先看网络将男人变成女人的能力:

其中左边是男性图片,右边是”变性“后的女性图片,比较发现女性特征是脸部表情更柔和,更具有女性的柔软,我们再看看将女性变成男性的结果:

上图效果就更加明显,可以看到的是右边男性面孔脸部轮廓曲线与左边女性基本相同,男性脸部特征就在于皮肤比较粗糙,同时线条比较粗狂和硬朗,从显示结果看,网络具备了将男变女,女变男的超能力。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Coding迪斯尼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档