基于Caffe的卷积神经网络算法研究(4)

2006年以后,才是深度学习真正意义上开始蓬勃发展的时代。 由Geoffrey Hinton及其团队提出深信度网络[6](Deep Belief Network)的非监督贪心逐层训练算法[7],改


2006年以后,才是深度学习真正意义上开始蓬勃发展的时代。

由Geoffrey Hinton及其团队提出深信度网络[6](Deep Belief Network)的非监督贪心逐层训练算法[7],改善了深层结构方面的计算难度,同时优化了深层神经网络。

在美国成立了许多深度学习研究中心,有很多高校和科研中心还得到了政府的大力支持,包括美国NEC研究中心、斯坦福大学等等。

2011年以后,深度神经网络[5]分别在语音识别等方面有了巨大成果,各项错误率大幅下降。也在这一时间段,由Andrew Ng吴恩达领导的谷歌实验室的谷歌大脑项目连接了16000台计算机,组合而成了一个大型神经网络,在记录了大量素材并充分训练后,成功自主在各类图片中识别出了猫。引起了广泛关注。

在2014年,吴恩达加入了百度深度学习研究院。不仅是他,在美国Facebook任职的徐伟等多批科学家也加盟了研究院,这无疑会使其发展得更为迅猛。

2016年,谷歌Deep Mind公司研究制造的AlphaGo与围棋大师李世石进行了围棋对战,结果以4:1的战绩大获全胜,这标志着深度学习的又一次进步。

随着深度学习的大力进步,社会上研发出了多种简便迅速的深度学习开源工具包和框架。例如DeepLearningToolBox,Teano,Torch7,Pylearn2,Caffe等各种深度学习框架。

而大多数市面上流通的深度学习框架中,训练完成的模型皆为独立的,并不能够在快速开发应用中使用,只有极少数有完整的开发模型,不过就算是这样少数的开发模型,大部分计算效率仍不是很高,为了解决这类问题,则出现了本文所研究的Caffe深度学习框架。

国内外研究现状

深度学习框架

许多研究机构已经开发出了很多关于深度学习的开源库以及各种深度学习框架。

一下为一些深度学习框架的介绍。

Framework License Core

language Binding(s) CPU GPU Open

source Training Pretrained

models Development

Caffe BSD C++ Python,

Matlab √ √ √ √ √ distributed

Cuda-convnet unspecified C++ Python √ √ √ discontinued

Decaf BSD Python √ √ √ √ discontinued

OverFeat unspecified Lua C++,Python √ √ centralized

Theano/Pylearn2 BSD Python √ √ √ √ distributed

Torch7 BSD Lua √ √ √ √ distributed

表 1.1 深度学习框架对比

Pylearn2

Pylearn2是由蒙特利尔大学开发的进行机器学习研究的开发库。它是基于Theano的扩展库。Pylearn2的优势在于其灵活,研究人员能够很快理解其代码原理从而进行精确配置,降低了对于使用者的要求。

Theano

Theano是由蒙特利尔大学的Bergstra等人于2010年提出的深度学习框架,它最开始是针对用户的特定需求进行高效降维数学运算的线性代数编辑器,而后由Bergstra团队说明了如何用次框架进行深度学习的模型训练。它拥有强大的数据稳定性和“最优化”架构。能够快速写入和执行。

Torch7

Torch7深度学习框架因使用了Lua语言从而使得计算速度极快,在嵌入式开发中此框架拥有独一无二的优势,因为开发者提供了C和C++的接口使得它可以与任意的C语言库相连。

Caffe

相较于上述几个框架而言,Caffe的优势更加明显。它能够使用文本形式对其网络结构进行编辑,而想要架构自己的网络模型也并不需要对于代码有深刻的了解,更可以对于现在常用的网络模型进行改进。配合CUDA,使用GPU并行计算可以极大提升运算效率,而要切换至CPU也仅需更改一条命令语句即可。还可以将训练好的模型迁移至Theano分析。

这是一个完全开源的框架,在github和csdn上也有专门的版块能够与他人讨论研究过程和成果。

图像识别