【变狗为猫】伯克利图像迁移cycleGAN,猫狗互换效果感人

简介:

GAN(生成对抗网络)为图像变换任务带来了很多的惊喜,受到很多研究者的关注。例如前阵子很火的“画猫”项目(edges2cats):勾勒出物体的边缘,神经网络能够自动补全图像信息,生成对应的图片(图1)。也有人脑洞大开,用DCGAN、WGAN等4种GAN来生成“猫图”(图2)。最近,日本NTT Data的itok_msi小哥用其中比较新的cycleGAN网络,做了一个“将狗的图像变成猫”的模型,并且生成的猫的姿势和毛色与作为输入的狗的图像保持一致。

图1:edges2cats 画猫

图2:WGAN 生成的猫咪图像


cycleGAN

cycleGAN是加州大学伯克利分校 Jun-Yan Zhu等人提出的一种图像风格转换技术。它的想法是在没有成对的训练数据的情况下,实现图像风格转换。cycleGAN效果令人印象深刻,它可以让不同画家风格的画作还原成照片,将夏天变成冬天,将马变成斑马,橘子变成苹果,等等(图3)。

图3:cycleGAN 的图像转换效果

cycleGAN 的具体方法和实现细节请参看论文,论文地址:https://arxiv.org/abs/1703.10593


cycleGAN猫狗转换的难点

实际上,cycleGAN的原论文(Zhu, Jun-Yan, et al., 2017)中也提出了将狗的图像变成猫的想法,但论文中的实验结果是失败的(图4)。

图4:cycleGAN将狗转变成猫的是失败例子

这是由于猫和狗的毛色、质感不同,尤其是脸型差异非常大。原论文中也指出这是往后需要研究的一个课题。


尤其是,Gdog→cat(将狗转变成猫)出来的图像几乎与原图一模一样。原因是什么呢?作者提出了2个可能的原因:

1. cycle consistency loss的效果太强

要将猫和狗进行变换,就不得不牺牲输入图像的一部分信息。这就需要使cycle consistency loss增大。一方面,假如输入图像和输出的图像完全一样,也就是cycle consistency loss需要最小。我们想要将狗变成猫,那么完全一样是不行的,也就是cycleGAN的损失需要大一点。但是,这里的问题出在狗和猫有一些局部特征是非常相似的。


2. 狗和猫的局部特征非常相似

cycleGAN的判别器(DA,DB)采用patchGAN(参考文献[1][2])的机制学习。在鉴别输入的图像是生成器生成的图像,还是源图像时,不使用整个图像,而是使用图像的局部(patch)进行判别。

判别器网络变小虽然有好处,但是猫和狗有些局部特征非常相似,使得学习相当困难(图5)。换句话说,就算Gdog→cat(将狗变换成猫)生成的结果与源图像完全一致,也可能欺骗判别器说变换的效果非常好。

图5:狗和猫有一些局部特征非常相似



修改版的cycleGAN

针对上面的2个问题,对cycleGAN进行2个简单的修改。

1. 让判别器观察全局特征进行判断

简单地说,在patchGAN的判别器增加一层,LGAN同时考虑全局的信息和局部的信息。

2. 在误差函数上将cycle consistency loss的比例变小

误差函数上cycle consistency loss的系数减小到原来的1/10。


实验

在cycleGAN论文作者开源的pytorch实现基础上稍作修改,实验环境是aws的p2.2xlarge实例。

使用数据

使用The Oxford-IIIT Pet Dataset,其中狗的图像1922幅,猫的图像3922幅作为训练数据,其余作为验证数据。


实验结果

比较好的结果(猫→狗)

似乎长得蠢蠢的猫输出的结果也是蠢蠢的狗

比较好的结果(狗→猫)

失败的结果(猫→狗)

失败的结果(狗→猫)


思考

虽然作了一些修改,但有时候不能得到期待的结果,尤其是:

  • 动物的毛色信息没有保留
  • 背景和动物融为一体
  • 生成的图像非常模糊
  • 变换前后的猫狗图像看起来没什么区别

失败的例子有点多。

原因可能是:

  • 修改后的网络误差比例太小
  • 鉴别器的网络太大导致学习效果不好

追加实验结果

在上面的实验的基础上,针对实验失败的可能原因继续进行修改后,得到了比较好的一些结果:

比较好的结果(猫→狗)

比较好的结果(狗→猫)

失败的结果(猫→狗)

失败的结果(狗→猫)


总的来说,如果狗和猫的图像是朝向正面,结果会比较好。这是由于从正面看,猫和狗的五官有相似之处。但是在上面两个例子中,如果图像中猫或狗的脸朝向侧面,狗有大耳朵而猫没有,需要进行大胆的变换,依然是相当难的。


原文发布时间为: 2017-09-13

本文作者:itok_msi

本文来自云栖社区合作伙伴极市网,了解相关信息可以关注极市网。

相关文章
|
人工智能 自然语言处理
AudioX:颠覆创作!多模态AI一键生成电影级音效+配乐,耳朵的终极盛宴
AudioX 是香港科技大学和月之暗面联合推出的扩散变换器模型,能够从文本、视频、图像等多种模态生成高质量音频和音乐,具备强大的跨模态学习能力和泛化能力。
1063 36
AudioX:颠覆创作!多模态AI一键生成电影级音效+配乐,耳朵的终极盛宴
|
7月前
|
SQL Java 数据库连接
Spring Data JPA 技术深度解析与应用指南
本文档全面介绍 Spring Data JPA 的核心概念、技术原理和实际应用。作为 Spring 生态系统中数据访问层的关键组件,Spring Data JPA 极大简化了 Java 持久层开发。本文将深入探讨其架构设计、核心接口、查询派生机制、事务管理以及与 Spring 框架的集成方式,并通过实际示例展示如何高效地使用这一技术。本文档约1500字,适合有一定 Spring 和 JPA 基础的开发者阅读。
735 0
|
6月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
318 0
|
移动开发 人工智能 JavaScript
程序员必知:关系的基本概念及其性质
程序员必知:关系的基本概念及其性质
684 3
|
9月前
|
JavaScript 前端开发 数据可视化
如何选择适合的开发范式进行鸿蒙应用开发?
如何选择适合的开发范式进行鸿蒙应用开发?
|
机器学习/深度学习 计算机视觉
RT-DETR改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
RT-DETR改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
1203 10
RT-DETR改进策略【注意力机制篇】| 添加SE、CBAM、ECA、CA、Swin Transformer等注意力和多头注意力机制
|
人工智能 自然语言处理 Java
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
DeepSeek 满血版在 IDEA 中怎么用?手把手教程来了
|
Web App开发 移动开发 安全
WordPress插件wp-file-manager任意文件上传漏洞(CVE-2020-25213)
WordPress插件WPFileManager中存在一个严重的安全漏洞,攻击者可以在安装了此插件的任何WordPress网站上任意上传文件并远程代码执行。
3206 1
|
数据可视化 jenkins 测试技术
GitLab CI/CD 和 Jenkins对比
8月更文挑战第25天
1954 5
|
人工智能 机器人 开发工具
快速部署 Flowise 社区版
FlowiseAI 是一个开源的低代码开发工具,专为开发者构建定制的语言学习模型(LLM)应用而设计。 通过其拖放式界面,用户可以轻松创建和管理AI驱动的交互式应用,如聊天机器人和数据分析工具。 它基于LangChain框架,支持与多种AI模型和数据库集成,实现高度可定制化的流程自动化​。本文介绍通过计算巢快速部署Flowise社区版服务。
快速部署 Flowise 社区版