Caffe(卷积神经网络框架)

2023-01-30 83阅读

温馨提示:这篇文章已超过541天没有更新,请注意相关的内容是否还可用!

Caffe

卷积神经网络框架

Caffe,全称Convolutional Architecture for Fast Feature Embedding,是一个兼具表达性、速度和思维模块化的深度学习框架。由伯克利人工智能研究小组和伯克利视觉和学习中心开发。虽然其内核是用C++编写的,但Caffe有Python和Matlab 相关接口。Caffe支持多种类型的深度学习架构,面向图像分类和图像分割,还支持CNN、RCNN、LSTM和全连接神经网络设计。Caffe支持基于GPU和CPU的加速计算内核库,如NVIDIA cuDNN和Intel MKL。

中文名快速特征嵌入的卷积结构
外文名Convolutional Architecture for Fast Feature Embedding
特点清晰,可读性高,学习快速
接口Python和Matlab 相关接口
实质一种深度学习框架

简介

Caffe是一个深度学习框架,最初开发于加利福尼亚大学伯克利分校。Caffe在BSD许可下开源,使用C++编写,带有Python接口。是贾扬清在加州大学伯克利分校攻读博士期间创建了Caffe项目。项目托管于GitHub,拥有众多贡献者。Caffe应用于学术研究项目、初创原型甚至视觉、语音和多媒体领域的大规模工业应用。

随着社会经济水平的不断提高和信息时代的不断发展,图像逐渐成为信息传输的重要载体。但是,图像从采集和传送的过程中容易出现失真问题,造成图像内容无法真实、准确地表达出来。在这样的背景下,卷积神经网络图像识别技术应运而生,在实现图像清晰度识别方面发挥出重要作用。

雅虎还将Caffe与Apache Spark集成在一起,创建了一个分布式深度学习框架CaffeOnSpark。2017年4月,Facebook发布Caffe2,加入了递归神经网络等新功能。2018年3月底,Caffe2并入PyTorch。

特点与结构

特点

Caffe 完全开源,并且在有多个活跃社区沟通解答问题,同时提供了一个用于训练、测试等完整工具包,可以帮助使用者快速上手。此外 Caffe 还具有以下特点:

模块性:Caffe 以模块化原则设计,实现了对新的数据格式,网络层和损失函数轻松扩展。

表示和实现分离:Caffe 已经用谷歌的 Protocl Buffer定义模型文件。使用特殊的文本文件 prototxt 表示网络结构,以有向非循环图形式的网络构建。

Python和MATLAB结合: Caffe 提供了 Python 和 MATLAB 接口,供使用者选择熟悉的语言调用部署算法应用。

GPU 加速:利用了 MKL、Open BLAS、cu BLAS 等计算库,利用GPU实现计算加速。

结构

简单来讲,Caffe 中的数据结构是以 Blobs-layers-Net 形式存在。其中,Blobs 是通过 4 维向量形式(num,channel,height,width)存储网络中所有权重,激活值以及正向反向的数据。作为 Caffe 的标准数据格式,Blob 提供了统一内存接口。Layers 表示的是神经网络中具体层,例如卷积层等,是 Caffe 模型的本质内容和执行计算的基本单元。

layer 层接收底层输入的 Blobs,向高层输出 Blobs。在每层会实现前向传播,后向传播。Net 是由多个层连接在一起,组成的有向无环图。一个网络将最的 data 数据层加载数据开始到最后的 loss 层组合为整体。 

其他深度学习框架

在深度学习初始阶段,每个深度学习研究者都需要写大量的重复代码。为了提高工作效率,这些研究者就将这些代码写成了一个框架放到网上让所有研究者一起使用。接着,网上就出现了不同的框架。随着时间的推移,最为好用的几个框架被大量的人使用从而流行了起来。[全世界最为流行的深度学习框架有PaddlePaddle、Tensorflow、Caffe、Theano、MXNet、Torch和PyTorch。

TensorFlow(Google)

自2015年底以来,TensorFlow的库已正式在GitHub上开源,被广泛应用于学术研究和工业应用。一些值得注意的用途包括DeepSpeech,RankBrain,SmartReply和On-DeviceComputerVision。可以在TensorFlow的GitHub项目中查看一些最佳官方用途、研究模型、示例和教程。

Theano(蒙特利尔大学)

Theano是蒙特利尔大学蒙特利尔学习算法小组开发的一个开源项目。其一些最突出的特性包括GPU的透明使用,与NumPy紧密结合,高效的符号区分,速度/稳定性优化以及大量的单元测试。但是,2017年11月开始不再积极维护。原因在于Theano多年来推出的大部分创新技术现在已被其他框架所采用和完善。

Torch(NYU/Facebook)

Torch是Facebook的开源机器学习库、科学计算框架和基于Lua编程语言的脚本语言。它提供了广泛的深度学习算法,并已被Facebook、IBM、Yandex和其他公司用于解决数据流的硬件问题。

PyTorch(Facebook)

PyTorch在学术研究者中很受欢迎,也是相对比较新的深度学习框架。Facebook人工智能研究组开发了PyTorch以应对一些在前任数据库Torch使用中遇到的问题。由于编程语言Lua的普及程度不高,Torch永远无法经历GoogleTensorFlow那样的迅猛发展。因此,PyTorch采用已经为许多研究人员、开发人员和数据科学家所熟悉的原始Python命令式编程风格。同时它还支持动态计算图,这一特性使得其对时间序列以及自然语言处理数据相关工作的研究人员和工程师很有吸引力 。

PaddlePaddle

PaddlePaddle是百度研发的开源开放的深度学习平台,是国内最早开源、也是当前唯一一个功能完备的深度学习平台。依托百度业务场景的长期锤炼,PaddlePaddle有最全面的官方支持的工业级应用模型,涵盖自然语言处理、计算机视觉、推荐引擎等多个领域,并开放多个领先的预训练中文模型,以及多个在国际范围内取得竞赛冠军的算法模型。

PaddlePaddle同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数、数百个几点的高效并行训练,也是最早提供如此强大的深度学习并行技术的深度学习框架。PaddlePaddle拥有强大的多端部署能力,支持服务器端、移动端等多种异构硬件设备的高速推理,预测性能有显著优势。

目前PaddlePaddle已经实现了API的稳定和向后兼容,具有完善的中英双语使用文档,形成了易学易用、简洁高效的技术特色。

MXNet

MXNet的主要作者是李沐,最早就是几个人抱着纯粹对技术和开发的热情做起来的,如今成了亚马逊的官方框架,有着非常好的分布式支持,而且性能特别好,占用显存低,同时其开发的语言接口不仅仅有Python和C++,还有R,Matlab,Scala,JavaScript,等等,可以说能够满足使用任何语言的人。但是MXNet的缺点也很明显,教程不够完善,使用的人不多导致社区不大,同时每年很少有比赛和论文是基于MXNet实现的,这就使得MXNet的推广力度和知名度不高。

参考资料

1.深度学习下的卷积神经网络图像清晰度识别分析·中国知网

目录[+]