【新智元导读】新智元不久前盘点了2016年 Top50 的深度学习库,本文则根据 GitHub里星标(Star)数多少,整理了排名前16的深度学习应用项目,从风格迁移到生成图说、玩FlappyBird游戏、分辨视频里的不宜内容等,供你参考实践。这份榜单还会持续更新哦~
Neural Style
Star:12122
Github 地址:https://github.com/jcjohnson/neural-style
这个项目是用 Torch 对 Leon A. Gatys, Alexander S. Ecker, 和 Matthias Bethge 等人的论文“A Neural Algorithm of Artistic Style”的一个实现。论文中提出一种算法,用卷积神经网络将一幅图像的内容与另一幅图像的风格进行组合。下面是一个将梵高《星夜》的艺术风格转移到斯坦福大学校园夜景的照片中的效果:
将不同的艺术风格应用到同样一幅图像中会得出有趣的效果。论文中提供了各种风格的德国宾根大学图像:
Show and Tell: 神经图说生成器
Star:10563
GitHub 地址:https://github.com/tensorflow/models/tree/master/im2txt
这是 Oriol Vinyals et. al.(2016)的论文“Show and Tell: Lessons learned from the 2015 MSCOCO Image Captioning Challenge”的用TensorFlow实现的 image-to-text 图片说明生成模型。
Show and Tell 模型是一个学习如何描述图片的深度神经网络。生成的图片说明是一个完整的句子,下面是一些例子:
RocAlphaGo
Star:7734
Github 地址:https://github.com/Rochester-NRT/RocAlphaGo
这个项目是有学生主导的一个独立项目,使用 Python 和 Keras 重新实现了 DeepMind 在2016年发表的论文 "Mastering the game of Go with deep neural networks and tree search"(《用深度神经网络和树搜索学习围棋》)。使用 Python 和 Keras 的这个选择优先考虑了代码清晰度,至少在早期阶段是如此。
这个项目目前仍在进行中,还不是 AlphaGo 的完全实现。项目先期关注 DeepMind AlphaGo 中神经网络的训练方面,而且已经得到论文中的树搜索算法(tree search algorithm)的一个简单单线程的实现,虽然速度上无法与 DeepMind 相比。
Neural Doodle
Star:7306
Github 地址:https://github.com/alexjc/neural-doodle
使用深度神经网络把你的二流涂鸦变成艺术一般的作品!这个项目是 Champandard(2016)的论文 “Semantic Style Transfer and Turning Two-Bit Doodles into Fine Artworks”的一个实现,基于 Chuan Li 和 Michael Wand(2016)在论文“Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis”中提出的 Neural Patches 算法。这篇文章中深入解释了这个项目的动机和灵感来源:https://nucl.ai/blog/neural-doodles/
doodle.py 脚本通过使用1个,2个,3个或4个图像作为输入来生成新的图像,输入的图像数量取决于你希望生成怎样的图像:原始风格及它的注释(annotation),以及带有注释(即你的涂鸦)的目标内容图像(可选)。该算法从带风格图像中提取 annotated patches,然后根据它们匹配的紧密程度用这些 annotated patches 渐进地改变目标图像的风格。
Open Face
Star:6072
Github 地址:https://github.com/cmusatyalab/openface
OpenFace 是一个使用深度神经网络,用 Python 和 Torch 实现人脸识别的项目。神经网络模型基于 Google Florian Schroff 等人的 CVPR 2015 论文“FaceNet: A Unified Embedding for Face Recognition and Clustering” ,Torch 让网络可以在 CPU 或 CUDA 上运行。
这是CMU的一个使用深度神经网络进行人脸识别的免费、开源项目。该项研究得到美国国家科学基金会(NSF)的支持,以及英特尔、谷歌、 Vodafone、英伟达和 Conklin Kistler 的额外支持。这个 Github 库中包含 batch-represent、real-time web、compare.py、vis-outputs.lua、classifier.py 等的 demo 和测试、训练、评估等的代码。
srez
Star:3951
Github 地址:https://github.com/david-gpu/srez
srez(super-resolution through deep learning),即通过深度学习实现图像超分辨率。这个项目是利用深度学习将 16x16 的图像分辨率增加 4 倍,基于用来训练神经网络的数据集,所得到的图像具有鲜明的特征。
下图是这个网络所能做到的一个随机、没有特意挑选的示例。从左到右,第一列是 16x16 的输入图像,第二列是利用标准的双三次插值算法(bicubic interpolation)所能得到的结果,第三列是我们的神经网络的结果,然后最右列是原本的真实图像。
如你所见,神经网络能够产生与原始的人脸非常相似的图像。由于用于训练的数据集主要由面朝正前方而且光线良好的人脸图像组成,所以当脸的朝向不是正前方、光线不足或脸被眼镜或手遮住了部分时,输出的效果会比较差。
open_nsfw
Star:3076
Github 地址:https://github.com/yahoo/open_nsfw
这是雅虎构建的用于检测图片是否包含不适宜工作场所(NSFW)内容的深度神经网络项目,GitHub 库中包含了网络的 Caffe 模型的代码。检测具有攻击性或成人内容的图像是研究人员进行了几十年的一个难题。随着计算机视觉技术和深度学习的发展,算法已经成熟,雅虎的这个模型能以更高的精度分辨色情图像。
由于 NSFW 界定其实是很主观的,有的人反感的东西可能其他人并不觉得如何。雅虎的这个深度神经网络只关注NSFW内容的一种类型,即色情图片,所以该模型不适用于检测素描、文字、动画、暴力图片等内容。
NeuralTalk2
Star:3010
Github 地址:https://github.com/karpathy/neuraltalk2
循环神经网络(RNN)可以用于给图像取标题。NeuralTalk2 比原始版本的 NeuralTalk 更快而且性能更好。与原来的 NeuralTalk 相比,NeuralTalk2 的实现是批量的,可以使用 Torch 在 GPU上运行,并且支持 CNN 微调。这些都使得语言模型(~100x)的训练速度大大加快,但由于我们还有一个 VGGNet,因此总体上的提升没有很多。但是这仍然是个好模型,可以在 2~3 天里训练好,而且表现出的性能非常好。
Google Brain 2016年9月22日发布了 Vinyals et al.(2015)的图说模型(前文介绍的Show and Tell 模型)。它的核心模型与 NeuralTalk2(一个CNN后面跟着RNN)非常相似,但由于 Google 有更好的CNN,加上一些小技巧和更细致的工程,Google 发布的模型应该比 NeuralTalk2 的效果更好。这个项目里用 Torch 实现的代码将作为教育目的保留。
Colornet
Star:2956
Github 地址:https://github.com/pavelgonchar/colornet
Colornet 是一个给灰度图像自动上色的神经网络。效果如上图所示。
image-analogies
Star:2769
GitHub 地址:https://github.com/awentzonline/image-analogies
“神经图像类比”(neural image analogies)这个项目基本上是 A. Hertzmann et. al(2001)的论文“Image Analogies”的一个实现。在这个项目中,我们使用了 VGG16 的特征,利用 Chuan Li, Michael Wand (2016) 的论文“Combining Markov Random Fields and Convolutional Neural Networks for Image Synthesis”中描述的方法进行patch的匹配和混合。初始代码改编自 Keras 的“神经风格迁移”示例。
DeepLearningFlappyBird
Star:2143
Github 地址:https://github.com/yenchenlin/DeepLearningFlappyBird
这个项目使用深度Q网络(Deep Q-Network,DQN)学习玩 Flappy Bird 游戏。
这个项目灵感来自使用深度增强学习玩 Atari 游戏(Mnih, Volodymyr, et al. "Playing atari with deep reinforcement learning." 2013),论文中提出深度Q学习算法(Deep Q Learning algorithm),我们发现这个算法可以推广到 Flappy Bird 游戏上。
DQN 是一个卷积神经网络,用 Q-learning 的变体进行训练,其输入是原始像素,输出是一个预估未来的奖励的价值函数。由于DQN的训练的每个时间步骤都需要观察屏幕中的原始像素值,Kevin Chen 发现删除原始游戏中的背景可以让收敛更快。这个过程如下图所示:
neural-storyteller
Star:1753
GitHub 地址:https://github.com/ryankiros/neural-storyteller
Neural-storyteller 是一个能够根据图像内容生成一个小故事的循环神经网络。这个 GitHub 库里包含了使用任意图像生成故事的代码,以及用于训练新模型的说明。整个方法包含以下4个部分:
例如,对下面这张图像,模型生成的故事如下:
We were barely able to catch the breeze at the beach, and it felt as if someone stepped out of my mind. She was in love with him for the first time in months, so she had no intention of escaping. The sun had risen from the ocean, making her feel more alive than normal. She's beautiful, but the truth is that I don't know what to do. The sun was just starting to fade away, leaving people scattered around the Atlantic Ocean. I'd seen the men in his life, who guided me at the beach once more.
Miles Deep - AI Porn Video Editor
Star:1715
GitHub 地址:https://github.com/ryanjay0/miles-deep
这是一个在 Caffe 上实现的深度学习色情视频分类器/编辑器。使用有残差连接的卷积神经网络,Miles Deep 能根据性行为的类别将色情视频按没秒的场景快速分为六个类别,准确率达到 95%。然后,它能够利用该分类自动编辑视频,可以删除所有不包含性接触的场景,或者编辑出一个特定的行为。
与雅虎的使用相似架构的 NSFW 模型不同,Miles Deep 能区分裸体和其他显性的性行为之间的区别。这是第一个也是唯一一个也是唯一一个公开发布的色情内容分类及编辑工具。
Deep Jazz
Star:1381
GitHub 地址:https://github.com/jisungk/deepjazz
这是一个使用 Keras 和 Theano 生成爵士乐的深度学习项目。作者 Ji-Sung Kim 在参加黑客马拉松(hackathon)的36个小时内建成这个模型,它使用两个深度学习库 Keras 和 Theano 生成爵士音乐。具体来说,它构建两层的 LSTM,从跟定的 MIDI 文件中学习,利用深度学习技术生成音乐。
Deep Jazz 生成的 Jazz 可以在这个网站上欣赏:https://soundcloud.com/deepjazz-ai
Speech-to-Text-WaveNet
Star:1252
GitHub 地址:https://github.com/buriburisuri/speech-to-text-wavenet
这是一个基于 DeepMind 的 WaveNet 和 TensorFlow 的端到端句子级语音识别项目。这是DeepMind 的论文“WaveNet: A Generative Model for Raw Audio”的一个实现。虽然已经有研究者用 TensorFlow 实现了 WaveNet,但他们没有实现语音识别。DeepMind 最近的一些论文很难复制。这篇论文中省略了有关实现的具体细节,所以这个 GitHub 库中提供了作者的方式来补充缺失的细节。
最终的架构如下:
DeepMind-Atari-Deep-Q-Learner
Star:1193
GitHub 地址:https://github.com/kuz/DeepMind-Atari-Deep-Q-Learner
这个项目包含 DQN 3.0 的源代码,DQN 3.0 是一个基于 Lua 的深度增强学习架构,该架构对再现 DeepMind 2015年的 Nature 论文“Human-level control through deep reinforcement learning”是必要的。为了复制 DeepMind 的实验结果,需要安装以下内容:
这个 GitHub 库包含 Nature 论文上的原始代码以及作者的实验代码。使用 nVidia GTX 970 在Ubuntu 14.04上的测试结果如下: