TensorFlow练习24: GANs-生成对抗网络 (生成明星脸)

GANs是Generative Adversarial Networks的简写,中文翻译为生成对抗网络,它最早出现在2014年Goodfellow发表的论文中:Generative Adversarial Networks。GANs是目前深度学习领域最火的网络模型,苹果最近发布的第一篇论文就是关于GANs的:SimGAN。

简单来说,GANs会学着生成和训练数据相似的数据,一个最典型的应用是生成图像。假设你有一堆猫的图片,你使用这些图片训练GANs,之后它会生成和训练数据相类似的猫的图片(它习的了猫的特征)。

GANs用到机器学习的两种模型:Generative生成模型和Discriminative判别模型。

GANs类比:假设G是大伪艺术家,以制作古董赝品为生,G的终极目标是以假乱真。但是呢,又有一些人以鉴宝为生(D)。开始你给D展示了一些古董真品,告诉D这是正品。然后G开始制作赝品,想骗过D,让他分辨不出真假。随着D看到越来越多的真品,G要骗过D就越来越难,当然,G也不是吃闲饭的,它会加倍努力的试图骗过D。随着这种对抗的持续,不仅D鉴宝的本领提高了,G也会越来越擅长制作赝品。这就是名字中生成-对抗的意思。 继续阅读TensorFlow练习24: GANs-生成对抗网络 (生成明星脸)

是AI就躲个飞机-纯Python实现人工智能

很久以前微信流行过一个小游戏:打飞机,这个游戏简单又无聊。在2017年来临之际,我就实现一个超级弱智的人工智能(AI),这货可以躲避从屏幕上方飞来的飞机。本帖只使用纯Python实现,不依赖任何高级库。

本文的AI基于neuro-evolution,首先简单科普一下neuro-evolution。从neuro-evolution这个名字就可以看出它由两部分组成-neuro and evolution,它是使用进化算法(遗传算法是进化算法的一种)提升人工神经网络的机器学习技术,其实就是用进化算法改进并选出最优的神经网络。

neuro-evolution

继续阅读是AI就躲个飞机-纯Python实现人工智能

可视化Google Inception V3模型的网络结构

深度学习涉及到图像就少不了CNN模型,前面我做过几个关于图像的练习,使用的CNN网络也不够”Deeper”。我在做对象检测练习( Object Detection)时,需要用到更复杂的网络结构。本帖就使用TensorBoard看看Inception V3模型的网络结构。

Inception (GoogLeNet)是Google 2014年发布的Deep Convolutional Neural Network,其它几个流行的CNN网络还有QuocNetAlexNetBN-Inception-v2VGGResNet等等。

Inception V3模型源码定义:tensorflow/contrib/slim/python/slim/nets/inception_v3.py

训练大的网络模型很耗资源,幸亏TensorFlow支持分布式:

继续阅读可视化Google Inception V3模型的网络结构

TensorFlow练习23: “恶作剧”

前面有一个帖《OpenCV检测场景内是否有移动物体》我用树莓派做了一个简单的Motion Detection,放在卫生间的,它会在我上大号时自动播放音乐。

我一个人租房,几个盆友周末时常会找我玩,他们觉得我做的Motion Detection很垃圾。于是我就想恶搞一下,用TensorFlow做一个“人脸识别”,在我上大号时播放音乐,如果是别人就播放《张震讲鬼故事》(@xingCI说放屁声更搞)。 继续阅读TensorFlow练习23: “恶作剧”

我是怎么学习英语的

网友提问:很多高质量的编程技术资源都是英文的,你是怎么学习英语的?

我先说一下我大学毕业时的英语水平,也就是3年前。你要知道的一点是,我一直就不是一个所谓的好学生,英语4级差不点就过了!现在的水平是读和听不费劲,写和说就不行了。我并没有刻意的学过英语,背单词啥的,而是在娱乐活动中就把英语学了。

我最初学英语的动机是看YouTube,YouTube上有很多好东西(川普和希拉里辩论撕B,我在YouTube上看的直播,很逗),洋文不好的话,看起来很费劲,很捉急。

我说一下我开始是怎么学英语的,不一定适合你。

有些洋文影视剧、动画做的非常优秀。首先我会找一些好片子,先带中文字幕看一遍,过一段时间在不带字幕看一遍,反反复复,看N遍,直到不看中文字幕能完全理解为止。

  • 看中文字幕的理解过程:听->中文->理解
  • 不看中文字幕的理解过程:听->理解(做到不用中间媒介,直接转换为意思)

当然,能让人看N遍的影视剧必然是精品,例如《肖申克的救赎》,我都忘了看多少遍了,著名台词 <“I guess it comes down to a simple choice, get busy living or get busy dying. “> <“First you hate ’em, then you get used to ’em. Enough time passes, gets so you depend on them. That’s institutionalized.”> <“It takes a strong man to save himself, and a great man to save another. “>。

还有就是尽可能多的接触英语资源,如Hacker News,刷Twitter(国际新闻大事件全都有)、听podcast、TED、国际名校公开课等等。这种方法学的可不止是英语,它还弥补了我颓废的大学4年。

至于写和说,说还好,写的话只能靠大量练习了。

如要转载,请保持本文完整,并注明作者@斗大的熊猫和本文原始地址: http://blog.topspeedsnail.com/archives/10921

TensorFlow练习22: 手写汉字识别

MNIST手写数字数据集通常做为深度学习的练习数据集,这个数据集恐怕早已经被大家玩坏了。本帖就介绍一个和MNIST类似,同时又适合国人练习的数据集-手写汉字数据集,然后训练一个简单的Deep Convolutional Network识别手写汉字。

识别手写汉字要把识别手写洋文难上很多。首先,英文字符的分类少,总共10+26*2;而中文总共50,000多汉字,常用的就有3000多。其次,汉字有书法,每个人书写风格多样。

手写汉字数据集: CASIA-HWDB

继续阅读TensorFlow练习22: 手写汉字识别

TensorFlow练习21: 把Deep Dream应用到视频上

前帖<实现谷歌Deep Dream>可以生成扭曲的图像,本帖就基于前一贴的代码在视频上应用Deep Dream,应该能生成比较抽的视频。

代码逻辑:

  1. 使用ffmpeg从视频中提取帧
  2. 为每一帧图像应用Deep Dream
  3. 使用ffmpeg把帧图像重新组合成视频,最后和音频合并

继续阅读TensorFlow练习21: 把Deep Dream应用到视频上

适合深度学习的机器配置

深度学习=大数据+超强计算力,这两个缺一不可。神经网络从上世纪80-90年代开始急速发展,但是由于数据量和计算力不够,导致在实际中应用不多,以至于神经网络从2000到2010年沉寂了近10年。从09年开始神经网络开始应用于语音识别、计算机视觉等领域,神经网络又开始流行了。神经网络还是那个神经网络,复苏的主要驱动力就是数据量和计算力。

The analogy to deep learning is that the rocket engine is the deep learning models and the fuel is the huge amounts of data we can feed to these algorithms. — Andrew Ng

为什么用GPU进行深度学习?

高端游戏玩家为获得更高的图形效果(3D、光照、防锯齿等等)需要选择高端显卡。如果你写过3D游戏,你应该知道图形操作需要大量的向量和矩阵运算,而这正是GPU最擅长的。

GPU是并行架构,擅长执行大矩阵乘法,而深度学习正好需要大量的矩阵运算。

CPU是设计用来进行更通用的运算,执行矩阵运算远远不及GPU。

适合深度学习的机器配置

继续阅读适合深度学习的机器配置

TensorFlow练习20: 使用深度学习破解字符验证码

验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册、灌水、发垃圾广告等等 。

验证码的作用是验证用户是真人还是机器人;设计理念是对人友好,对机器难。

TensorFlow练习20: 使用深度学习破解验证码

上图是常见的字符验证码,还有一些验证码使用提问的方式。

我们先来看看破解验证码的几种方式:

  1. 人力打码(基本上,打码任务都是大型网站的验证码,用于自动化注册等等)
  2. 找到能过验证码的漏洞
  3. 最后一种是字符识别,这是本帖的关注点

我上网查了查,用Tesseract OCR、OpenCV等等其它方法都需把验证码分割为单个字符,然后识别单个字符。分割验证码可是人的强项,如果字符之间相互重叠,那机器就不容易分割了。

本帖实现的方法不需要分割验证码,而是把验证码做为一个整体进行识别。

相关论文

使用深度学习+训练数据+大量计算力,我们可以在几天内训练一个可以破解验证码的模型,当然前提是获得大量训练数据。

继续阅读TensorFlow练习20: 使用深度学习破解字符验证码