喵咪制造机:生成式对抗网络的花式画喵大法

了解更多技术文章请点击原文链接


image


2012年,吴恩达和Jeff Dean用Google Brain的1.6万个CPU所打造的大型神经网络,在被1000万YouTube视频中的猫图像训练三天后,自己画出了一张模糊的猫脸图。这是普通公众第一次领略到深度学习的威力。

而后随着AlphaGo在围棋上先后虐杀人类冠军李世石、柯洁,公众对深度学习和人工智能的热情更胜以往。不过,神经网络自己画猫的技术,有没有随之进步呢?

image


最近,一位在医院工作的猫奴生物统计学家Alexia,使用最新的生成式对抗网络GAN来测试深度学习的画猫技术。相比吴恩达三天才能画出来的猫,GAN的新方法仅用几个小时就能搞定,画出来猫咪也好看很多。这里的新方法在细节上有何特点呢?我们仔细来看作者Alexia的点评。

作者 | Alexia Jolicoeur-Martineau
译者 | AI科技大本营(rgznai100)
参与 | 智子,波波

我试验用生成对抗网络来生成猫脸的各种图片。针对不同的分辨率,我采用了几种不同的方法,包括DCGAN、WGAN与WGAN-GP,训练样本源自一个有着上万张猫图的图片库。我找的是那些猫脸处在正中的图片(用人眼生看,花了我好几个小时……说起来都是泪),共有9304张分辨率大于64x64的图片,以及6445张分辨率大于128x128的图片。

DCGAN

DCGAN可以很好的收敛,只用了209次迭代,大概两三个小时,就产生了非常有真实感的图片。但是需要进行一些调整才能达到这个效果。众所周知,GAN的生成器和判别器必须势均力敌,才能产生良好的效果。我的DCGAN对生成器和判别器分别设定了不同的学习速率,这样才使得二者势均力敌,从而能得出很好的效果。当处理64x64的图片的时候,最好的判别器的学习速率是0.00005,生成器的速率是0.0002。如下图所示,没有产生模式坍塌(mode collapse)。图片漂亮吧!

image


高分辨率的 DCGAN和SELU

但上述办法用来处理128x128的图片,就会失效。但是,我用SeLUs替换了batch归一化和ReLus,在学习速率保持不变的情况下,也取得了一定的效果。只不过过程非常慢,大概要用6个多小时。SeLUs是自归一的,因此就不需要用batch归一化了。SeLU才刚诞生不久,所以基本上在GAN上没有什么深入的研究。不过据我观察,SeLU极大的提高了GAN的稳定性。这次生成的猫不像上次的那么漂亮,并且有很多黑猫长的差不多,明显地产生了“多样性缺失”现象。这也很好解释,因为这次是在6445个大于128x128的图片上训练,而上次是在9304个图片上训练,训练数据少了不少。不过,这次有些猫也相当好看,清晰度比原来的高,所以我仍然觉得这次也是成功的。

论文地址
https://arxiv.org/abs/1706.02515

image


WGAN

WGAN收敛的很慢,大概用了四五个小时,600多次迭代。并且只在64个隐层神经元成功了。128个神经元的时候失败了。对DCGAN,虽然要调整学习速率,但是一旦调整了,你马上能看到效果。对WGAN,很难马上看到效果,只有让网络多跑几个迭代,才能看到效果。

观察图片的话,有非常明显的模式坍塌(mode collapse)。还有很多猫有异盲证,一些猫一只眼睁着,一个眼闭着;还有一些猫鼻子畸形。总体上看,WGAN的效果不如DCGAN。但是也许是因为我用的神经网络的结构太简单,所以不好在二者之间做明确的判断,哪个更好。还有,WGAN似乎陷入了局部最优。到目前为止,WGAN还是令我有点失望。

WGAN-GP是WGAN的改进版本,也许能够解决上面的问题。2017年的Gulrajani等人发表的论文中,提到他们能训练101层的神经网络。所以也许我的用5层128个神经元的方法生成猫的方法有问题。亚当优化器(Adam optimizer)也能降低种类坍塌和局部最优的风险。很可能这个能够解决这些问题,因为WGAN没用而DCGAN和WGAN-GP都用了亚当优化。

image


WGAN-GP (改进的WGAN)

WGAN-GP的生成器收敛的非常慢,大概在六个小时以上。但是它的好处是不需要调整任何超参。比如,可以任意调整学习速率,调大或者调小,都不会造成任何问题。这一点上,WGAN-GP用起来很舒心,不像其他算法调整超参那么辛苦。

论文地址
https://arxiv.org/abs/1704.00028

而且该方法生成的猫的种类和样式非常多,没有明显的模式坍塌(mode collapse)。这是对WGAN的的一个主要的改进。另一方面,图片有点模糊不清,好像是低分辨率的图片又被放大了一倍。我也不确定具体的原因,可能是Wasserstein距离的导致的。我觉得可以使用不同的学习速率和网络结构优化结果。这需要做更进一步的研究,但我确信这里有很大的提高空间。

image


LSGAN (最小二乘 GAN)

LSGAN和前面几个方法不同。LSGAN用最小二乘法来最小化判别器的输出和真实结果差值。该方法的推荐设置为:在判别器端,用1表示真实图像,0表示假的图像;在生成器端,用1表示假的图像。2017年Hejlm等人在论文中又提出了新的建议:在判别器端,1表示真实图像,0表示假的图像;但是在生成器端,用0.5表示假的图像。

论文地址
https://arxiv.org/pdf/1702.08431.pdf

我现在还没有时间全面研究这个方法。但是看起来,这个方法非常稳定,并且生成的图片中的猫也很漂亮。虽然该方法通常挺稳定的,但是有一次,出现了梯度爆炸,最后生成的结果嘛也不是。下图展示了第31和32次迭代的结果:

image
image


所以该方法也不是百分百的稳定,不稳定的时候结果还非常糟糕。对Adam优化器选择一个较好的超参可以有效阻止该问题的发生。该方法的优点是不用像DCGAN那样调整学习速率,并且不发生问题的时候(发生问题的概率还是很低的),结果还是很不错的,猫的图片也很漂亮。

xudong mao是LSGAN的提出者。他发给了我用LSGAN生成的128x128的猫的图片,如下图所示。可以看到,该方法也可以生成和DCGAN一样质量的图片。

image


我的代码放在GitHub上,愿者自取。

代码地址
https://github.com/AlexiaJM/Deep-learning-with-cats

来源: AI科技大本营
原文链接



了解更多技术文章请点击原文链接


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1380799.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

MoCo 论文详解

目录 一、自监督学习和对比学习1、自监督学习2、对比学习 二、MoCo 论文1、模型流程2、本文创新点1)队列作为字典2)动量更新 3、与end-to-end和memory bank的比较1)end-to-end2)memory bank 4、其他技术细节1)损失函数…

米兰大学发布论文与猫咪叫声数据集,分类喵喵叫

来源:HyperAI超神经本文约1000字,建议阅读5分钟 米兰大学计算机系的研究团队,试图用隐式马尔科夫方法将猫咪在不同环境状态下的喵喵叫识别出来,他们还真的成功了。关键词:声音识别 动物AI 机器学习 深度学习 米兰大学的…

【枚举】CF1660 D

Problem - 1660D - Codeforces 题意: 思路: 思路巨简单,代码也wa了很多发才过,都是因为细节.... 很显然,要根据0分段处理 对于每一段,枚举去掉左边段还是右边段,左边段是 l 到第一个负数&am…

Unreal Engine内嵌插件WebBrowser从HTML页面到Blueprint通讯

Unreal Engine内嵌插件WebBrowser从HTML页面到Blueprint通讯 问题解决办法将引擎内插件拷贝到工程目录下修改插件代码蓝图接口使用 问题 Unreal Engine内嵌WebBrowser插件可以通过调用ExecuteJavascript接口执行js代码,但无法从JS调用Blueprint蓝图函数 解决办法 …

程序员必备的GitHub加速指南,真香!

不知道从什么时候我访问 github 就无法展示图片了,而且有时候(尤其晚上)打开网页速度极其滴慢,就问大家受不受的了吧?我反正是顶不住! 所以连夜开发了个小工具,使用以后呀,不仅 github 页面打开…

基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(UDP协议)

1、开始前的准备工作 关闭电脑防火墙连接开发板电源开发板与PC之间串口连接,JTAG下载线连接PC机与开发板间网线连接,并保证能ping通 2、Vivado端配置 创建工程,具体步骤不详细介绍,网上都有教程,器件型号按照实际用…

使用CUDA+OpenCV加速yolo v4性能

YOLO是You-Only-Look-Once的缩写,它无疑是根据COCO数据集训练的最好的对象检测器之一。YOLOv4是最新的迭代版本,它在准确性和性能之间进行了权衡,使其成为最先进的对象检测器之一。在智能视频分析管道中使用任何对象检测器的典型机制包括使用…

基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)

前注:ARM端的TCP协议编程步骤和UDP协议编程步骤完全相同,只是在ARM端的C代码实现不同,在本次TCP协议实现过程中我们主要利用了官方提供的Demo,然后根据自己的需要加以改写,具体过程如下。 1、开始前的准备工作 关闭电脑防火墙连…

PSN下载加速相关程序教程(PS3.ProxyServer和PSN DM)

此文转自: http://bbs.duowan.com/thread-27759129-1-1.html 感谢星夜探索者的总结! 前言: 哦嗨哟,用wifi的机友们一定发现,直接在线用wifi下东西太慢了,而大家也一定用过其他程序来加快psv的下载&#xff…

docker 镜像下载加速(安装 kubernetes 必备)

大佬的文章 https://blog.k8s.li/kubespray-tips.html https://fuckcloudnative.io/posts/docker-registry-proxy/ docker registry 可以通过设置 remoteurl 参数将其作为远端仓库的缓存仓库,这样当你通过这个私有仓库的地址拉取镜像时,regiistry 会…

《面试1v1》ElasticSearch倒排索引

🍅 作者简介:王哥,CSDN2022博客总榜Top100🏆、博客专家💪 🍅 技术交流:定期更新Java硬核干货,不定期送书活动 🍅 王哥多年工作总结:Java学习路线总结&#xf…

Docker启动一个Centos镜像

搜索可用的centos的docker镜像 docker search <image>&#xff1a;在docker index中搜索imagedocker search centos 下载centos镜像&#xff08;拉取镜像&#xff09; docker pull centos:latest查看镜像docker images&#xff1a;列出imagesdocker images -a&#xff…

博途1200间的S7通讯

目录 S7通信 1.新建项目&#xff0c;硬件组态&#xff1b; 2.建立数据&#xff0c;取消优化。 3.PUT/GET指令 S7通信 仅西门子支持&#xff0c;西门子PLC间最常用、最简单的通信协议。通信时&#xff0c;需要在客户端侧调用PUT/GET指令。PUT指令用于将数据写入到伙伴CPU&#…

西门子PLC1200博途V16程序画面例程,具体项目工艺为制药厂生物发酵系统

西门子PLC1200博途V16程序画面例程&#xff0c;具体项目工艺为制药厂生物发酵系统&#xff0c;程序内有报警&#xff0c;模拟量标定处理&#xff0c;温度PID&#xff0c;称重仪表USS通讯和基本的各种数字量控制&#xff0c;硬件组成包含称重仪表通讯及和ET200SP模块通讯组态。 …

基于TIA博途平台西门子1200/1500PLC定时器时间格式转换运用编程

前景介绍&#xff1a; 平常我们编写程序的时候用到最多的指令也许就是定时器指令了&#xff0c;有时候我们需要通过人机界面修改定时器的设定时间。但是许多人机界面不支持西门子S5 TIME时间格式。怎么办呢&#xff1f;我们可以通过西门子库文件系统程序将整数转换为S5 TIME格…

发那科机器人协同作业程序,博途西门子1200搭配-威纶通触摸屏

发那科机器人协同作业程序&#xff0c;博途西门子1200搭配-威纶通触摸屏&#xff0c;真实项目&#xff0c;程序已经调试完毕&#xff0c;稳定运行。 程序特点&#xff1a; 1.含有机器人电脑可读源程序&#xff0c; 2.plc程序采用博途scl与梯形图混合编程&#xff0c;中文注解&…

「项目案例」使用西门子博途 SCL高级语言编写

此项目用博途 SCL高级语言编写如何开启运行时间最少的几台设备 需求&#xff1a; 如果客户共有8台水泵&#xff0c;4用4备&#xff0c;但每次启动设备时累计运行时需要最运行时间最短的4台运行。 解析&#xff1a; 如果使用梯形图来写的话&#xff0c;此程序会非常复杂&#xf…

西门子1500博途医药系统程序案例

西门子1500博途医药系统程序案例。 标准化编程 具体为医药制品&#xff0c;及空调恒温恒湿&#xff0c;PID控制博图程序&#xff0c;带昆仑流程图&#xff0c;西门子1500PLC和昆仑通态触摸屏上位软件&#xff0c;博图版本V16及以上。 适合研究学习标准程序设计。 ID:811668227…

TIA portal西门子博途安装时一直提示重启怎么办?

TIA portal西门子博途安装时一直提示重启怎么办? 在安装西门子的某些软件的时候,经常提示要重启,而且重启之后依然提示重启,让人比较烦恼,这个问题是由以下原因引起的: 一般系统文件无法删除时,比如其他程序正在占用等等,系统会把这些文件保存在注册表该减值下面,以便…

西门子1500PLC博途程序实例,大型程序fanuc机器人汽车焊装自动生产线程序,程序硬件结构包括1台西门子1500PLC程序,2台触摸屏TP1500程序

西门子1500PLC博途程序实例&#xff0c;大型程序fanuc机器人汽车焊装自动生产线程序&#xff0c;程序硬件结构包括1台西门子1500PLC程序&#xff0c;2台触摸屏TP1500程序 9个智能远程终端ET200SP Profinet连接 15个Festo智能模块Profinet通讯 10台Fanuc发那科机器人Profinet通讯…