序章:深度学习图像识别前置知识



前言

本章内容将简要叙述一些常见概念如人工智能机器学习深度学习之间的关系,以及部分常用的深度学习框架,为之后基于深度学习的图像识别技术奠定基础。


一、深度学习与人工智能的关系

人工智能是计算机科学的一个分支,该领域的研究包括了机器人、机器视觉、语言识别、NLP(Natural Language Processing)和专家系统等。而我们常说的人工智能是一个比较大的领域,其中就包括了机器学习、模式识别等,其中,神经网络是机器学习的一个方法,而深度学习又是神经网络方法的一个子集,关系如下图所示:

图1 关系

二、常见深度学习框架

1.Theano

Theano是MILA集团在加拿大魁北克的蒙特利尔大学发布的一个python库,并以一位希腊数学家名字命名。Theano的诞生是为了执行深度学习中的大规模神经网络算法,可以被理解为一个数学表达式的编译器(高级计算器??)。

Theano in github

图2 Theano in github

随着Tensorflow的崛起,Theano日渐式微,标志性事件是其创始者之一Lan Goodfellow都跑去开发Tensorflow了。但Theano作为python的第一个深度学习框架,最初是为了学术研究而设计,直到目前仍有许多学者使用该python库,同时也为之后的深度学习框架开发奠定了基本的设计方向:以计算图为框架的核心并采用GPU加速。


tips:深度学习的小白可以用Theano练手,但对于职业开发者还是建议选择Tensorflow。


2.Tensorflow

2015.11.10,Google推出了全新的机器学习开源工具Tensorflow,该工具由Google Brain团队基于DistBelief深度学习基础架构搭建,Google几乎在所有应用程序中都使用Tensorflow来实现机器学习。同时,Tensorflow在很大程度上看作是Theano的后继者,不仅因为他们有很大一批共同的开发者,还有相近的设计理念。
Tensorflow 官网

图3 Tensorflow 官网

目前Tensorflow编程接口支持python,C++,Java,Go,R,由于其使用C++ Eigen库,所以库可以在ARM架构上进行编译和优化,这也就意味着用户可以在各种服务器和移动设备上部署自己的训练模型,而无需执行单独的模型解码器或者加载python解释器。

tips:①由于Tensorflow的接口一直在快速迭代,容易出现版本不兼容问题;②对于同一个功能,Tensorflow提供了良莠不齐的实现方法,初学者尤其要注意避免入坑;③入门难度大,Tensorflow创造了如命名空间、PlaceHolder等诸多抽象概念,较难理解;④虽然Tensorflow是当今最为热门的深度学习框架,但并不完美,目前各公司使用的框架也不统一,多学习几个框架还是很有必要的!


3.MXNet

MXNet是Amazon的李沐团队开发的深度学习框架,提供R,Julia,C++,Scala,Matlab,Golang,Java的接口,能运行在任何你可以想象的硬件上(包括手机)。MXNet以其超强的分布式支持,明显的内存、现存优化和明显优于其他框架的扩展性能而为人们所称道。但同时又因为它推广力度不够,迭代速度快且接口文档不完善,导致新手用户难以掌握MXNet,老用户也需要时长查阅源码才能理解接口的用法。
MXNet 官网

图4 MXNet 官网

tips:MXNet文档比较混乱不适合新手入门,但其分布性能强大,语言支持较多,可以部署在云平台。


4.Keras

Keras是一个由纯python语言编写而成的高层神经网络API,对新手极为友好深度学习框架之中最容易上手的一个)。它提供了一致而简洁的API,能够极大坚守一般应用下用户的工作量,避免重复造轮子,支持无缝GPU和CPU转换。为了屏蔽后端的差异性,Keras做了层层封装,导致其运行过于缓慢,同时也使得学习Keras会很快遇到瓶颈,很难真正学到深度学习的内容(不停地在调用接口)。
Keras 中文文档

图5 Keras 中文文档

tips:Keras比较适合新手作为练习使用,但不适合学习深度学习。


4.Pytorch

Pytorch是一个python优先的深度学习框架,使用强大的GPU加速的Tensor计算(有点像Numpy),构建基于tape的autograd系统的深度神经网络,并拥有着活跃的社区(Pytorch提供了完整的文档和循序渐进的指南,作者也在亲自维护论坛,还有Facebook的人工智能研究院在对它进行强力支持哦)。

Pytorch 官网

图6 Pytorch 官网

相对于Tensorflow,Pytorch的优点是它的图是动态的,且整体设计较为整洁,而Tensorflow是静态图,不易于扩展,上手难度不低。

tips:综合一下,对于我来说还是Pytorch比较适合上手。


5.Caffe

Caffe是基于C++语言编写的深度学习框架,作者是中国人贾扬清,提供Matlab和python的接口。由于是早期的深度学习框架,其存在可扩展性差,安装过程需要大量依赖库和手动实现新层前向和反向传播的缺陷。

Caffe 说明文档

图7 Caffe 说明文档

Caffe2出自Facebook人工智能实验室与应用机器学习团队,但贾扬清仍是主要贡献者之一。Caffe2在工程上做了很多优化如运行平台、可扩展性等,在设计上与Tensorflow相像。
Caffe2 官网

图8 Caffe2 官网

tips:至今工业界和学术界仍有很多人在使用Caffe,而Caffe2的出现为我们(调参人)提供了更多选择。


总结

本文章较为粗浅的介绍了常见概念之间的关系,以及目前流行深度学习框架的大体情况和它们的链接,有条件的话各位看官也可以一一尝试一下。下一章不出意外的话我会从最基本的KNN写起,在讲算法的时候顺便把numpy和开发环境带出来,就不用单独列一章内容来说。









今天就到这里吧,宝们晚安( ̄o ̄) . z Z

参考文献

《深度学习与图像识别:原理与实践(Deep Learning and Image Recognition: Principle and Practice)》魏溪含 涂铭 张修鹏 著

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值