【IT168 评论】Caffe是由贾扬清在伯克利上学期间开发的,该项目已经开放源码,目前已获得社区贡献以及伯克利视觉和学习中心(BVLC)赞助。广泛来说,BVLC现在是伯克利人工智能研究(BAIR)实验室的一部分。同样,Caffe也已经超出了视觉范围,包括非视觉深度学习部分,虽然已发布的Caffe模型绝大多数仍然与图像和视频相关。
Caffe是一个由表达式,速度和模块化组成的深度学习框架。其优势在于Caffe的模型和优化是通过没有硬编码的配置来定义的,以及在GPU机器上设置了一个flag以方便在CPU和GPU之间切换,然后部署到集群或移动设备上。
与此同时,随着我们进入2017年,Caffe已经在1.0.0 RC 3版本几乎停留一年了。虽然有一些代码改进和可见进度,但项目仍然不稳定。目前很多人认为Caffe的安装和配置还比较复杂,但文档可以接受。
▲在Caffe演示中,基于网络的图像分类示例使用卷积神经网络,这也是Caffe的强大之一。该演示使用提供的范例是正常的,但我自己的图像没有试验成功,即便我的图片已经符合所列出的要求。
Caffe功能和用例
Caffe是一个代码经过良好测试的开放框架,以及深度学习模型和实例,使用以纯C ++编写的核心库与CUDA,以及命令行,Python和MATLAB接口为主。
Facebook使用Caffe模型对上传图像进行有害内容检测,这是一个很重要的功能,但摄影师对这种直接过滤而不考虑艺术背景的方式很不赞同。
Caffe另一大新颖技术是“微调”。这是一个对大量数据训练模型的过程,例如ImageNet的图像关键词标签,编辑神经网络参数以及使用预训练参数作为学习新技能的起点,例如图像样式识别,微调技术有时可以减少新类的训练时间。
Caffe安装
当我几个月前第一次尝试查看Caffe时,当时我无法在MacOS Sierra上构建Caffe可执行文件,追踪问题发现有一行显示在makefile文件中明确引用旧版本操作系统框架。我决定等维护者开始构建Sierra,再继续审查处理。我也希望,Nvidia很快就会开始支持Xcode 8,使我可以在不影响其他项目的前提下构建Caffe与CUDA GPU支持。
▲在MacBook Pro上,在2.6 GHz Intel Core i7 CPU上培训MNIST LeNet大约需要7.5分钟,10,000次迭代。这个速度足够快,可以与运行LeNet的其他框架相媲美。但是在CUDA GPU上,如果适合GPU的RAM,则只需要一分钟。
更新存储库后,我可以构建和测试CPU的可执行文件,以及配置Python库以便执行示例Jupyter notebook。然而,当笔记本使用shell脚本访问单元格时,Python就会崩溃。
▲在MacOS Sierra上,可以将Caffe导入Jupyter Notebook,但无法下载预先训练的CaffeNet模型。
我试着在Windows 10上安装Caffe,在Caffe中有相应支持。新的CMake构建声称是可以执行的,但似乎没有创建可执行文件。 一旦将项目从Visual Studio 2013转换到Visual Studio 2015,旧版本的Visual Studio确实可以正常工作。但是,无法安装python,甚至不能启动Jupyter Notebook。
由于Caffe的“home”系统是Ubuntu,我启动了一个Ubuntu“Trusty”虚拟机,并根据文档尝试构建Caffe。这一次,我可以构建和测试可执行文件,但还是不能运行Python。
这让我只有两个选项,选择故障排除或者故障安装:在Docker中构建和运行,或在云中运行预配置的机器映像。在存储库中读取Docker文件的文档比较模糊,Docker脚本在Ubuntu上安装项目的方式与文档中提到的不同,新手安装可能需要花费几天时间,但安装完你就会发现实际只需要一个小时就可以。
Caffe运行
Caffe有命令行,Python和MATLAB接口。由于目前缺少MATLAB副本,我没有尝试测试该接口。Caffe依赖ProtoText文件来定义其模型和求解器。 如下所示,显示了参考“CaffeNet”图像分类器的模型和求解器配置。
▲Caffe依赖ProtoText文件来定义其模型和求解器。这个ProtoText文件定义了用于ImageNet图像分类的参考CaffeNet(修改的AlexNet)卷积模型。
▲这个ProtoText文件定义了CaffeNet(修改的AlexNet)求解器用于ImageNet图像分类。注意,可以在此文件中设置GPU或CPU模式。
Caffe在其模型模式中逐层定义网络。网络定义从输入数据到整个模型。当数据和派生数据向前向后遍历网络时,Caffe存储,通信和操作信息为blob(二进制对象),内部以C语言方式存储N维数组。图层对blob执行操作,它们构成了Caffe模型组件。
一旦你建立了PyCaffe,你就可以在Caffe上运行Python脚本,并且能够运行Jupyter Notebook。如上所述,我在运行Jupyter Notebook时遇到了一些问题,虽然我可以在NBViewer中查看已发布的notebook,如下所示。
▲在NBViewer中显示的预先计算的Caffe Jupyter Notebook。这本解释了使用一只可爱的小猫在Caffe上实验的过程。建议使用该模型需要在GeForce GT 650M上有超过1GB的GPU内存可用,原始图像应使用g2.2xlarge或更好的实例。
结语
Caffe目前的社区比较懒散,导致该项目后期的发展缓慢。在社区中发问,很难得到答复。相比之下,AWS不仅具有可用于GPU的实例,而且还提供具有Caffe预构建并具有GPU支持的AMI映像。亚马逊不再是拥有这种支持的唯一云。还可以考虑Azure Batch Shipyard及其使用NC系列实例的深度学习,Google云也即将加入这场战争。
正如我们所看到的,Caffe是一个深度学习框架,从Berkeley的视觉和学习研究中心成长起来的,目前仍然强调图像处理,尽管其范围有所扩大。与其他深度学习框架相比,Caffe开发人员对项目的成熟度,可移植性和迭代速度有待提高。如果现有的Caffe模型符合你的需求或可以根据你的目的微调,建议使用。否则,建议使用TensorFlow,MXNet或CNTK。