1. OpenCV
https://github.com/opencv/opencv

OpenCV是迄今为止最古老也是最受欢迎的开源计算机视觉库,旨在为计算机视觉应用提供通用底层算法。
支持跨平台应用,支持Windows,Linux,Android和macOS。支持各种主流的开发语言,例如:Python,Java,C++等。OpenCV有一个Python Wrapper,支持GPU的CUDA模型。包含一些可以转换为TensorFlow模型的模型。最初由Intel开发,现在可以在开源BSD许可证下免费使用。
OpenCV的主要功能包括:
- 2D和3D图像工具包
- 人脸识别
- 手势识别
- 运动检测
- 人机交互
- 对象检测
- 图像分割和对象识别
2. Scikit-Image
https://github.com/scikit-image/scikit-image

Scikit-Image是公认的最方便的Python视觉库,它是Scikit-Learn的一个扩展库。是监督和无监督机器学习最常用的工具之一。可以用于将NumPy数组作为图像对象进行处理。
以下是使用Scikit-image进行硬币识别的例子。
1 | import skimage as ski image = ski.data.coins() # ... or any other NumPy array! edges = ski.filters.sobel(image) ski.io.imshow(edges) ski.io.show() |

3. Pillow (PIL Fork)
https://github.com/python-pillow/Pillow

Pillow是一个Python编写的图像处理库。它支持Windows、Mac OS X和Linux平台,可以在C和Python语言中使用Pillow库。主要用于阅读和保存不同格式的图像,Pillow还包括各种基本图像变换功能,例如:旋转、合并、缩放等。
4. TorchVision
https://pytorch.org/vision/stable/index.html

TorchVision是PyTorch库的一个扩展库,TorchVision拥有计算机视觉中最常见的图像转换功能,还包含计算机视觉神经网络的数据集和模型架构以及常见数据集。TorchVision旨在为方便使用PyTorch模型进行计算机视觉图像转换,而无需将图像转换为NumPy数组。TorchVision可以用于Python和C++语言开发环境。可以通过pip install将TorchVision与PyTorch库一起搭配使用。
以下是预训练分割模型的使用例子。


5. MMCV
https://github.com/open-mmlab/mmcv

MMCV是一个基于PyTorch的图像/视频处理和转换器。它支持Linux、Windows和macOS等系统,是计算机视觉研究人员最常用的包之一。支持Python和C++开发语音。
6.YOLO
https://github.com/ultralytics/ultralytics

YOLO是最快的计算机视觉工具之一,由Joseph雷德蒙和Ali Farhadi于2016年开发,专门用于实时图像对象检测。YOLO使用将神经网络,将图像划分为网格,然后同时预测每个网格,以提高识别效率。
目前YOLO已经发布V8。YOLOv8 是一款前沿、最先进(SOTA)的模型,基于先前 YOLO 版本的成功并引入了新的功能和改进,进一步提升了性能和灵活性。YOLOv8 的快速、准确且易于使用,使其成为各种对象检测与跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。
7. TensorFlow

TensorFlow是由GoogleBrain团队开发并于2015年11月发布的AI框架,旨在促进构建AI模型的过程。它有一些扩展解决方案,如针对浏览器和Node.js的TensorFlow.js,以及针对终端设备的TensorFlow Lite。另外,TensorFlow还提供了一个更好的框架TensorFlow Hub。这是一个更易于使用的平台,可以使用TensorFlow Hub实现重复使用BERT和Faster R-CNN训练模型、查找可随时部署的模型、托管模型以供他人使用。
TensorFlow允许用户开发与计算机视觉相关的机器学习模型,例如:人脸识别、图像分类、目标检测等。与OpenCV一样,Tensorflow也支持各种语言,如Python、C、C++、Java或JavaScript。

8. Keras

Keras是一个基于Python的开源软件库,对初学者来说特别易用,它允许快速构建神经网络模型,是一个模块化的AI工具箱,计算机视觉工程师可以利用它来快速组装应用、训练模型。Keras的底层框架使用TensorFlow,并且拥有强大的社区支持,因此用户众多。可以使用Keras实现的内容例如:
- 图像分割和分类
- 手写识别
- 三维图像分类
- 语义图像聚类
9.MATLAB
https://ww2.mathworks.cn/products/matlab.html

MATLAB是Matrix Laboratory的缩写,但它是一个付费编程平台,适合用于如机器学习、深度学习、图像处理、视频信号处理等方面的应用,是一个受到工程师和科学家喜欢的编程平台。它配备了一个计算机视觉工具箱,包含许多算法能力,如:
- 视频目标检测与目标跟踪
- 物体识别
- 校准摄像机
- 处理三维视觉
10.NVIDIA CUDA-X
https://developer.nvidia.com/gpu-accelerated-libraries

CUDA是计算统一设备架构的首字母缩写,而NVIDIA CUDA-X是CUDA的更新版本。NVIDIA CUDA-X是一个GPU加速库和工具的集合,可以开始使用新的应用程序或GPA加速。它包含数学库、并行算法库、图像和视频库、通信库和深度学习库,可用于各种任务,例如:人脸识别、图像处理、3D图形渲染等。它兼容大多数操作系统,并且支持许多主流AI编程语言,如:C、C++、Python、Fortran、MATLAB等。
11.NVIDIA Performance Primitives
https://developer.nvidia.com/npp

CUDA(Compute Unified Device Architecture的缩写)是NVIDIA开发的并行计算平台和应用程序编程接口(API)模型。它允许开发人员使用GPU(图形处理单元)的强大功能来加快处理密集型应用程序的速度。
该工具包包含NVIDIA Performance Primitives(NPP)库,可为多个领域(包括计算机视觉)提供GPU加速的图像、视频处理和信号处理功能。此外,CUDA架构可用于各种开发任务,例如:人脸识别、图像处理、3D图形渲染等。它支持各种编程语言,包括C、C++、Python、Fortran或MATLAB,并且还与大多数操作系统兼容。
12.OpenVINO

OpenVINO是Open Visual Inference and Neural Network Optimization的缩写。它是一套非常全面的计算机视觉工具。它由英特尔开发,是一个可以免费使用的跨平台框架,具有多种视觉处理能力,包括:
- 对象检测
- 人脸识别
- 图像彩色化
- 运动识别
13.PyTorch
https://github.com/pytorch/pytorch

PyTorch是一个Python的开源机器学习框架,主要由Facebook的AI研究小组开发。在构建复杂体系结构时具有很大的灵活性。可以用于机器视觉方面开发图像评估模型、图像分割、图像分类等。
14.Caffe
https://caffe.berkeleyvision.org/
CAFFE是Convolutional Architecture for Fast Feature Embedding的缩写。是一个易于使用的开源深度学习和计算机视觉框架,由加州大学伯克利分校开发。它使用C++编写,支持多种开发语言,支持多种用于实现图像分类和图像分割的深度学习架构。Caffe可以用于视觉、语音和多媒体领域的应用,支持图像分割、分类等模型开发。
15.Detectron2
https://github.com/facebookresearch/detectron2

Detecrton 2是由Facebook AI Research(FAIR)开发的基于PyTorch的模对象检测库。Detectron 2是Detection的升级版;包括:Faster R-CNN、Mask R-CNN、RetinaNet、DensePose、Cascade R-CNN、Panoptic FPN和TensorMask等模型。Detecrton 2的功能包括:密集位姿预测、全景图像分割、联合分割、对象检测等。
16.SimpleCV

SimpleCV是一个开源免费的机器视觉框架。通这个框架,可以轻松访问OpenCV等几个高性能的计算机视觉库,而无需深入了解位深度、颜色空间、缓冲区管理或文件格式等复杂概念。
从TensorFlow 到 Caffe2:盘点深度学习框架 - allcloud - 博客园
Excerpt
机器之心报道 本文首先介绍GitHub中最受欢迎的开源深度学习框架排名,然后再对其进行系统地对比 下图总结了在GitHub中最受欢迎的开源深度学习框架排名,该排名是基于各大框架在GitHub里的收藏数,这个数据由MitchDeFelice在2017年5月初完成。 TensorFlow 地址:http
机器之心报道
本文首先介绍GitHub中最受欢迎的开源深度学习框架排名,然后再对其进行系统地对比
下图总结了在GitHub中最受欢迎的开源深度学习框架排名,该排名是基于各大框架在GitHub里的收藏数,这个数据由MitchDeFelice在2017年5月初完成。
TensorFlow
地址:https://www.tensorflow.org/
TensorFlow最开始是由谷歌一个称之为DistBeliefV2的库发展而来,它是一个公司内部的深度神经网络库,隶属于谷歌大脑项目。有一些人认为TensorFlow是由Theano彻底重构而来。
谷歌开源TensorFlow后,立即吸引了一大批开发爱好者。TensorFlow可以提供一系列的能力,例如图像识别、手写识别、语音识别、预测以及自然语言处理等。2015年11月9号,TensorFlow在Apache2.0协议下开源发布。
TensorFlow1.0版本已于2017年2月15日发布,这个版本是之前8个版本的优化改进版,其致力于解决Tensorflow之前遇到的一系列问题以及完善一些核心能力。TensorFlow获得成功的因素有:
TensorFlow提供了如下工具:
TensorBoard:对于网络模型和效果来说是一个设计优良的可视化工具。TensorFlowServing:可以保持相同的服务器架构和API,使得部署新算法和实验变得简单。TensorFlowServing提供了与TensorFlow模型开箱即用的整合,但同时还能很容易扩展到其它类型的模型和数据。
TensorFlow编程接口支持Python和C++。随着1.0版本的公布,Java、Go、R和HaskellAPI的alpha版本也将被支持。此外,TensorFlow还可在谷歌云和亚马孙云中运行。
随着0.12版本的发行,TensorFlow将支持Windows7、Windows10和Server2016。由于TensorFlow使用C++Eigen库,所以库可在ARM架构上编译和优化。这也就意味着你可以在各种服务器和移动设备上部署你的训练模型,而无需执行单独的模型解码器或者加载Python解释器。
TensorFlow支持细粒度的网格层,而且允许用户在无需用低级语言实现的情况下构建新的复杂的层类型。子图执行操作允许你在图的任意边缘引入和检索任意数据的结果。这对调试复杂的计算图模型很有帮助。
分布式TensorFlow(DistributedTensorFlow)被加进了0.8版本,它允许模型并行,这意味着模型的不同部分可在不同的并行设备上被训练。
自2016年3月,斯坦福大学、伯克利大学、多伦多大学和Udacity都将这个框架作为一个免费的大规模在线开放课程进行教授。
TensorFlow的缺点如下:
TensorFlow的每个计算流都必须构造为一个静态图,且缺乏符号性循环(symbolicloops),这会带来一些计算困难。没有对视频识别很有用的三维卷积(3-Dconvolution)。尽管TensorFlow现在比起始版本(v0.5)快了58倍,,但在执行性能方面依然落后于竞争对手。
Caffe
地址:http://caffe.berkeleyvision.org/
Caffe是贾扬清的杰作,目前他在FacebookAI平台担任首席工程师。Caffe可能是自2013年底以来第一款主流的工业级深度学习工具包。正因为Caffe优秀的卷积模型,它已经成为计算机视觉界最流行的工具包之一,并在2014年的ImageNet挑战赛中一举夺魁。Caffe遵循BSD2-Clause协议。
Caffe的快速使其完美应用于实验研究和商业部署。Caffe可在英伟达单个K40GPU上每天处理6000万张图像。这大概是1毫秒预测一张图片,4毫秒学习一张图片的速度,而且最新的版本处理速度会更快。
Caffe基于C++,因此可在多种设备上编译。它跨平台运行,并包含Windows端口。Caffe支持C++、Matlab和Python编程接口。Caffe拥有一个庞大的用户社区,人们在其中为被称为「ModelZoo(https://github.com/BVLC/caffe/wiki/Model-Zoo)」的深度网络库做贡献。AlexNet和GoogleNet就是社群用户构建的两个流行网络。
虽然Caffe在视频识别领域是一个流行的深度学习网络,但是Caffe却不能像TensorFlow、CNTK和Theano那样支持细粒度网络层。构建复杂的层类型必须以低级语言完成。由于其遗留架构,Caffe对循环网络和语言建模的支持总体上很薄弱。
Caffe2
目前,贾扬清和他在Facebook的团队正在开发新一代框架Caffe2。今年4月18日,Facebook开源了Caffe2。Caffe2与Caffe的区别是什么?Caffe2更注重模块化,在移动端、大规模部署上表现卓越。如同TensorFlow,Caffe2使用C++Eigen库,支持ARM架构。
用一个实用脚本,Caffe上的模型可轻易地被转变到Caffe2上。Caffe设计的选择使得它处理视觉类型的难题时很完美。Caffe2延续了它对视觉类问题的支持,且增加了对自然语言处理、手写识别、时序预测有帮助的RNN和LSTM支持。
期待不久之后能看到Caffe2超越Caffe,就像它宣称的那样在深度学习社区流行。
在本周三英伟达推出Volta架构的第一块加速卡TeslaV100后,Caffe的开发者第一时间展示了TeslaV100在Caffe2上运行ResNet-50的评测。数据显示在新框架和新硬件的配合下,模型每秒钟可以处理4100张图片。
链接:https://caffe2.ai/blog/2017/05/10/caffe2-adds-FP16-training-support.html
CNTK
链接:https://github.com/Microsoft/CNTK/wiki
微软的CNTK(MicrosoftCognitiveToolkit)最初是面向语音识别的框架。CNTK支持RNN和CNN类型的网络模型,从而在处理图像、手写字体和语音识别问题上,它是很好的选择。使用Python或C++编程接口,CNTK支持64位的Linux和Windows系统,在MIT许可证下发布。
与TensorFlow和Theano同样,CNTK使用向量运算符的符号图(symbolicgraph)网络,支持如矩阵加/乘或卷积等向量操作。此外,像TensorFlow和Theano一样,CNTK有丰富的细粒度的网络层构建。构建块(操作)的细粒度使用户不需要使用低层次的语言(如Caffe)就能创建新的复杂的层类型。
CNTK也像Caffe一样基于C++架构,支持跨平台的CPU/GPU部署。CNTK在AzureGPULab上显示出最高效的分布式计算性能。目前,CNTK不支持ARM架构,这限制了其在移动设备上的功能。
MXNet
MXNet(发音为mix-net)起源于卡内基梅隆大学和华盛顿大学的实验室。MXNet是一个全功能、可编程和可扩展的深度学习框架,支持最先进的深度学习模型。MXNet支持混合编程模型(命令式和声明式编程)和多种编程语言的代码(包括Python、C++、R、Scala、Julia、Matlab和JavaScript)。2017年1月30日,MXNet被列入ApacheIncubator开源项目。
MXNet支持深度学习架构,如卷积神经网络(CNN)、循环神经网络(RNN)和其包含的长短时间记忆网络(LTSM)。该框架为图像、手写文字和语音的识别和预测以及自然语言处理提供了出色的工具。有些人称MXNet是世界上最好的图像分类器。
MXNet具有可扩展的强大技术能力,如GPU并行和内存镜像、快速编程器开发和可移植性。此外,MXNet与ApacheHadoopYARN(一种通用分布式应用程序管理框架)集成,使MXNet成为TensorFlow有力的竞争对手。
MXNet不仅仅只是深度网络框架,它的区别在于支持生成对抗网络(GAN)模型。该模型启发自实验经济学方法的纳什均衡。
Torch
Torch由Facebook的RonanCollobert和SoumithChintala,Twitter的ClementFarabet(现任职于英伟达),以及GoogleDeepMind的KorayKavukcuoglu共同开发。很多科技巨头(如Facebook、Twitter和英伟达)都使用定制版的Torch用于人工智能研究,这大大促进了Torch的开发。Torch是BSD3协议下的开源项目。然而,随着Facebook对Caffe2的研究,以及其对移动设备的支持,Caffe2正成为主要的深度学习框架。
Torch的编程语言为Lua。Lua不是主流语言,在开发人员没有熟练掌握Lua之前,使用Torch很难提高开发的整体生产力。
Torch缺乏TensorFlow的分布式应用程序管理框架,也缺乏MXNet和Deeplearning4J对YARN的支持。缺乏多种编程语言的API也限制了开发人员。
PyTorch
PyTorch由AdamPaszke、SamGross与SoumithChintala等人牵头开发,其成员来自FacebookFAIR和其他多家实验室。它是一种Python优先的深度学习框架,在今年1月被开源,提供了两种高层面的功能:
使用强大的GPU加速的Tensor计算(类似numpy)
构建于基于tape的autograd系统的深度神经网络
该框架结合了Torch7高效灵活的GPU加速后端库与直观的Python前端,它的特点是快速成形、代码可读和支持最广泛的深度学习模型。如有需要,你可以复用你最喜欢的Python软件包(如numpy、scipy和Cython)来扩展PyTorch。该框架因为其灵活性和速度,在推出以后迅速得到了开发者和研究人员的青睐。随着GitHub上越来越多代码的出现,PyTorch作为新框架缺乏资源的问题已经得以缓解。
Deeplearning4J
地址:https://deeplearning4j.org/
Deeplearning4J(DL4J)是用Java和Scala编写的Apache2.0协议下的开源、分布式神经网络库。DL4J最初由SkyMind公司的AdamGibson开发,是唯一集成了Hadoop和Spark的商业级深度学习网络,并通过Hadoop和Spark协调多个主机线程。DL4J使用Map-Reduce来训练网络,同时依赖其它库来执行大型矩阵操作。
DL4J框架支持任意芯片数的GPU并行运行(对训练过程至关重要),并支持YARN(Hadoop的分布式应用程序管理框架)。DL4J支持多种深度网络架构:RBM、DBN、卷积神经网络(CNN)、循环神经网络(RNN)、RNTN和长短时间记忆网络(LTSM)。DL4J还对矢量化库Canova提供支持。
DL4J使用Java语言实现,本质上比Python快。在用多个GPU解决非平凡图像(non-trivialimage)识别任务时,它的速度与Caffe一样快。该框架在图像识别、欺诈检测和自然语言处理方面的表现出众。
Theano
地址:http://deeplearning.net/software/theano/
Theano由蒙特利尔大学算法学习人工智能实验室(MILA)维护。以Theano的创始人YoshuaBengio为首,该实验室是深度学习研究领域的重要贡献者,拥有约30至40名学生和教师。Theano支持快速开发高效的机器学习算法,在BSD协议下发布。
Theano的架构如同一个黑箱;整个代码库和接口使用Python,其中C/CUDA代码被打包成Python字符串。这使得开发人员很难导航(navigate)、调试和重构。
Theano开创了将符号图用于神经网络编程的趋势。Theano的符号式API支持循环控制(即scan),这使得实现RNN容易且高效。
Theano缺乏分布式应用程序管理框架,只支持一种编程开发语言。Theano是很好的学术研究工具,在单个CPU上运行的效率比TensorFlow更有效。然而,在开发和支持大型分布式应用程序时,使用Theano可能会遇到挑战。
在了解这些深度学习框架的基本内容后,下面我们可以看看它们之间在库资源、建模能力、速度等度量下的对比情况。
这组对比参考了多种公开基准评测,以及我们在图像/语音识别应用时对这些技术的主观印象。此外,你需要注意:
语言
当你开始一个深度学习项目时,你最好使用一个支持你所会语言的框架。比如Caffe(C++)和Torch(Lua)只能支持有限的语言(最近,随着PyTorch的出现,情况有所改观)。所以如果你希望选用上述两个框架,我们建议你事先熟悉C++或Lua语言。相比之下,TensorFlow与MXNet具有丰富的多语言支持,即使你对C++感到陌生也可以使用它们。
教程和资源
目前,各类深度学习框架的教程与可利用的资源在质量和数量上有着显著的不同。Theano,TensorFlow,Torch和MXNet有着很详尽的文档教程,很容易被初学者理解和实现。与此相比,虽然微软的CNTK和英特尔的NervanaNeon也是强大的工具,我们却很少能见到有关它们的新手级资料。此外,在研究过程中,我们发现GitHub社区的参与度不仅可以用于准确地评价不同工具的开发水平,而且还是在搜索StackOverflow或repo的GitIssues时能否快速解决问题的参考性指标。当然,作为谷歌提供的框架,TensorFlow理所当然地在教程,资源,开发者和社区贡献者的数量上遥遥领先。
CNN建模能力
卷积神经网络(CNN)经常被用于图像识别、推荐引擎和自然语言识别等方向的应用。CNN由一组多层的神经网络组成,在运行时会将输入的数据进行预定义分类的评分。CNN也可用于回归分析,例如构成自动驾驶汽车中有关转向角的模型。在横评中,我们评价一种框架的CNN建模能力考虑到以下几个特性:定义模型的机会空间、预构建层的可用性、以及可用于连接这些层的工具和功能。我们发现,Theano,Caffe和MXNet都有很好的CNN建模能力。其中,TensorFlow因为易于建立的InceptionV3模型,Torch因为其丰富的CNN资源——包括易于使用的时间卷积集使得这两种框架在CNN建模能力上脱颖而出。
RNN建模能力
循环神经网络(RNN)常用于语音识别,时间序列预测,图像字幕和其他需要处理顺序信息的任务。由于预建的RNN模型不如CNN数量多,因此,如果你已经有一个RNN深度学习项目,优先考虑旧RNN模型是在哪种框架里实现的最重要。目前,Caffe上的RNN资源最少,而Microsoft的CNTK和Torch有丰富的RNN教程和预构建模型。当然,最流行的TensorFlow中也有一些RNN资源,TFLearn和Keras中更有很多使用TensorFlow的RNN示例。
架构
为在特定框架中构建和训练新模型,易于使用和模块化的前端是至关重要的。TensorFlow,Torch和MXNet都有直观而模块化的架构,让开发相对变得简单。相比之下,我们在Caffe这样的框架上需要进行大量的工作才能创建一个新层。另外我们发现在开发过程中,因为有TensorBoardwebGUI等应用的存在,TensorFlow极易在训练中和训练后进行debug和监控。
速度
Torch和Nervana具有开源卷积神经网络基准测试的最佳性能:
https://github.com/soumith/convnet-benchmarks/blob/master/README.md
Tensorflow的性能在大多数测试中是具有竞争力的,而Caffe和Theano稍稍落后:
https://github.com/tobigithub/tensorflow-deep-learning/wiki/tf-benchmarks
微软声称他们的CNTK在一些RNN训练任务中有最快的速度。
在另一项对比Theano、Torch和TensorFlow的RNN性能的研究中,Theano是其中最快的:
https://arxiv.org/abs/1511.06435
多GPU支持
大多数深度学习应用都需要用到巨量的浮点运算(FLOP)。例如,百度的DeepSpeech识别模型需要10sExaFLOPs用于训练,这是大于10e18的计算量:
https://arxiv.org/abs/1512.02595
考虑到目前英伟达Pascal架构的TitanX等顶级显卡可以每秒执行10e9FLOP:
https://www.nvidia.com/en-us/geforce/products/10series/titan-x-pascal/
因此,假如需要在大型数据集上训练一个新模型——用单GPU机器的话——可能会需要一个星期之久。为了减少构建模型所需的时间,我们需要使用多GPU并联的方式组建自己的机器。幸运的是,上述大部分架构都可以很好地支持多GPU运算。其中,据报道MXNet有着最好的多GPU优化引擎:
http://www.allthingsdistributed.com/2016/11/mxnet-default-framework-deep-learning-aws.html
Keras兼容性
Keras是一个用于快速构建深度学习原型的高级库。我们在实践中发现,它是数据科学家应用深度学习的好帮手。Keras目前支持两种后端框架:TensorFlow与Theano,而且Keras再过不久就会成为TensorFlow的默认API:
http://www.fast.ai/2017/01/03/keras/
尽管如此,Keras的作者表示,这一高级库在未来仍会作为支持多种框架的前端存在:
https://github.com/fchollet/keras/issues/5050#issuecomment-272945570
总结
如果你想要开始深度学习,你应该从评估自己的团队技能和业务需求开始。例如,如果一个以Python为中心的团队想开发图像识别的应用程序,你应该使用TensorFlow,因为它有丰富的资源,较好性能和完整的原型工具。如果一个有Lua能力的团队希望将RNN大规模应用到生产环境中去,他们则会受益于Torch的高速和强大的RNN建模能力。
未来,我们将继续讨论在更大规模的应用中这些框架的表现。这些挑战包括多机并联时的多GPU优化,多种开源库的兼容性,如CMUSphinx和Kaldi等,尽请期待。
深度学习领域发展迅猛,江湖风起云涌。在此,咪博士为大家细细盘点、比较,各大深度学习框架。也祝大家都能训出好模型,调出好参数。
以下是咪博士的观点,供大家参考:
- 如果你是初学者,那么推荐选择 Keras 或 Gluon 这样简单易用的接口入门。至于是 Keras 还是 Gluon 就不必太纠结了,因为二者都很容易上手,完全可以都学一下。如果非要分个先后的话,可以先试试 Gluon 毕竟开发者是中国人,有官方出品的中文教程带你入门。
- 学完 Keras 或 Gluon “前端”框架之后,再选择一个“后端”框架深入学习,TensorFlow (Keras 后端) 或 MXNet (Gluon 后端) 是咪博士推荐的 2 个后端框架。TensorFlow 谷歌 (Google) 出品,MXNet 有 亚马逊 (Amazon) 支持,它们都是非常优秀的深度学习框架。至于是 TensorFlow 还是 MXNet,那就得看你的需求了。TensorFlow 受众更广,但是性能较差,而且不支持动态计算图;MXNet 目前还比较小众,但性能较好,而且支持动态计算图,十分方便搞自然语言处理 (NLP) 的朋友。
- 学习完后端框架之后,你就可以非常灵活地定制自己的神经网络,自由地在深度学习的世界里翱翔了。这里候,如果你有兴趣(或需要),可以试试其他的一些框架,如 PyTorch (灵活多变,适合研究), Caffe2 (性能优化,手机也能跑), Deeplearning4j (Java 首选,整合 Hadoop, Spark), 以及 ConvNetJS (Js 开发,浏览器上玩深度学习)。
- 其他一些深度学习框架,诸如 Theano (Lasagne, 以及 Blocks), Torch, Caffe, CNTK, Chainer, Paddle, DSSTNE, DyNet, BigDL, Neon 等,由于众多原因,咪博士就不给大家推荐了。
下面是详细的比较和说明:
一、推荐使用
受到 Torch 启发,Keras 提供了简单易用的 API 接口,特别适合初学者入门。其后端采用 TensorFlow, CNTK,以及 Theano。另外,Deeplearning4j 的 Python 也是基于 Keras 实现的。Keras 几乎已经成了 Python 神经网络的接口标准。
亚马逊 (Amazon) 和 微软 (Microsoft) 于 2017 年 10 月联合推出的深度学习 API。Gluon 类似 Keras,提供了简单易用的 API 接口。但和 Keras 不一样的地方是,Gluon 还支持动态计算图(对自然语言处理特别有用)。Gluon 后端目前采用 MXNet,未来还将支持微软的 CNTK。
谷歌 (Google) 大厂出品,追随者众多。相比其他框架,TensorFlow 速度较慢,但它提供的 TensorBoard 可视化工具还是很不错的。
已被 亚马逊 (Amazon) 选为 AWS 上的深度学习框架,支持动态图计算。MXNet 有许多中国开发者,因而有非常良好的中文文档支持。Gluon 接口使得 MXNet 像 Keras 一样简单易用。
二、值得一试
背后金主是 脸书 (Facebook) ,同样支持动态计算图,提供很好的灵活性,适合研究。
同样是 脸书 (Facebook) 出品,为生产环境设计,提供在各种平台(包括移动设备)的运行时。
与其他(大多数)基于 Python 的深度学习框架不同,Deeplearning4j 基于 Java 开发,与 Hadoop, Spark 生态结合得很好。尤其令人称道的是其优秀的文档,官司方文档直接就有中文版本。另外,虽然是面向 Java 的框架,Deeplearning4j 也提供了 Python 的接口(基于 Keras 实现)
基于 Javascript 的深度学习框架,可以在浏览器中训练深度神经网络。最重要的用途是帮助学习 Deep Learning
三、不推荐
Theano, Lasagne, 以及 Blocks
Yoshua Bengio 于 2017 年 09 月宣布不再维护 Theano,所以这个项目事实上已经宣告死亡了。其他基于 Theano 的库,如 Lasagne 和 Blocks,也可以散了。
Torch
虽然设计精良(Keras 就是参考 Torch 设计的),但它基于 Lua 语言,太过小众了。而且 Facebook 已经推出了 Python 版本的 PyTorch 了。
Caffe
Caffe2 已经正式发布了,彻底取代 Caffe 只是时间问题罢了。
CNTK
微软出品,授权协议有一些特别,而且似乎也没有什么特别亮眼的地方。
Chainer
曾经是动态计算图的首选框架,特别适用于自然语言处理。但是,现在许多其他的框架,如 MXNet, PyTorch, 以及 DyNet 也支持该特性,所以 Chainer 的这一优势也就不复存在了。
Paddle
百度的深度学习框架,受众太小。
DSSTNE
曾是亚马逊的深度学习引擎,但是很小众,而且现在亚马逊又选择了 MXNet,所以 DSSTNE 的前途就更渺茫了。
DyNet
源自卡耐基梅隆大学,支持动态计算图,但是太小众了。
BigDL
Intel 基于 spark 的深度学习库,但只能运行在 Intel 芯片之上。
Neon
据说速度很快,但太过小众,而且发展还不完善,许多特性还不支持。
参考
- https://deeplearning4j.org/compare-dl4j-tensorflow-pytorch
- http://docs.chainer.org/en/stable/comparison.html
- http://www.ipaomi.com/2017/11/06/2018-年-深度学习框架-盘点-比较-推荐/
【坚信技术技术改变世界】 【欢迎学习交流】 【免费】【视频教程】【问答社区】 【爱跑咪】【http://www.iPaoMi.com】 【QQ交流: 57148911】