Win7(64位)+VS2013+cuda7.5环境下搭建深度学习Caffe计算框架

来源:互联网 发布:搜索引擎算法定义 编辑:程序博客网 时间:2024/05/21 22:46

         

     0、前言

            经过一个星期,在查阅了很多网络资源(例如欧新宇薛开宇大神等)后,终于在不断摸索中,找到适合了自己电脑配置【Win7(64)+VS2013+cuda7.5】的Caffe教程。感谢happynear大神[如何快糙好猛地在Windows下编译CAFFE并使用其matlab和python接口]、小咸鱼_前辈[Windows下用VS2013加载caffemodel做图像分类],这两位前辈的博客给了我非常大的帮助,尤其是,happynear的博客会关注官网最新动态,不断更新上传的原创Github源码,且非常有爱的贴出亲手制作的第三方库以及已经转换好的MNIST的leveldb数据文件,解决了困惑我好几天的关于如何配置boost、snappy等依赖库的问题,让我这枚门外小菜鸟以最简洁明了的方式成功编译Caffe,对他们的无私付出表示衷心的感谢,我会继续关注并学习他们以及更多前辈的优秀博文。

             我在自己小本本上跑通了深度学习Caffe框架经典的MNIST测试集,灰常鸡冻。【如图1所示】在经过4000次的迭代后,正确率为0.9911。证实,我的Caffe框架搭建完成,且各种配置无误。


图1 Win7(64位)下MNIST测试结果

            终于跑通MNIST,我想做些这几天来的搭建Caffe记录,以便今后的学习。内容是以本机配置:Win7(64位)+Visual Studio 2013+OpenCV3.1.0(点击详见)+CUDA 7.5(配置CUDA,点击详见)+Python 2.7.0+笔记本自带显卡:NVDIA FeForce 610M(【计算机>>属性>>设备管理器>>显示适配器】即可查看,注意安装NVDIA驱动)为基础,转载了happynear及小咸鱼_的部分博文,尽量忠于原文,并在他们的基础上,关于我的安装时候出现的问题做些整理。(我本人整合了二位的内容,并尽可能认真地给出了自己出现的常见问题、相应解决方法,图1-10都是本人的工程截图。因此恬不知耻的标了原创二字,若本文引文中的任一原作者认为此举不妥,请务必与我联系立刻修改。捂脸==)

         不多说了,本文内容如下

一、准备

  happynear的Windows下的caffe源代码:https://www.github.com/happynear/caffe-windows。有happynear亲手制作的第三方库http://pan.baidu.com/s/1bSzvKa,在源码的根目录下建立个3rdparty文件夹,把文件解压进去就可以了。解压好之后,要将3rdparty/bin文件夹添加到环境变量的PATH(计算机>>属性>>高级系统设置>>系统属性>>环境变量【如图2所示】),这样才能让程序找到这些第三方库的dll。在第三方库包中还提供了openblas的库文件。

  

图2 添加环境变量3rdparty/bin

二、编译

  编译非常简单,分为以下几步:
  1、双击./src/caffe/proto/extract_proto.bat批处理文件来生成caffe.pb.hcaffe.pb.cc两个c++文件,和caffe_pb2.py这个Python使用的文件。
  2、打开./buildVS2013/MainBuilder.sln,打开之后切换编译模式至Release X64模式。如果打开之后显示加载失败,可能你的CUDA版本和我不一致,我的是CUDA 7.5版,这时就要用记事本打开./buildVS2013目录下各个文件夹内的.vcxproj文件,搜索CUDA 7.5,把这个7.5换成你自己的CUDA版本,就可以正常打开了。

        3、右键caffe项目,

        a.修改附加包含目录

                C/C++ >> 常规>>附加包含目录>>修改如下(CUDA路径按自己的修改)【如图3、4所示】

图3 附加包含目录

图4 修改附加包含目录

        b.修改附加库目录
                链接器 >> 常规>>附加库目录修改如下(CUDA路径按自己的修改)【如图5、6所示】:

图5 附加库目录

图6 修改附加库目录


           设置好之后,右键解决方案,重新生成。倘若,编译结束后会出现失败**个,因为你可能没有配置matlab接口和python接口,所以这些编译失败。我使用的是python接口【如图4、6所示】。如果需要matlab接口,可参考小咸鱼_的博文设置(路径按自己的设置),

     4、另外,如果你的显卡比较老或者没有显卡,请使用./build_cpu_only/MainBuilder.sln

  5、点上边工具栏中的绿色三角编译吧。编译大概需要半小时左右,请耐心等待。
  
  如果要用matlab wrapper来提取特征、观察训练好的权重的话呢,只需要把matcaffe项目里面的matlab目录修改成你自己的,然后编译,你就能从matlab/+caffe/private文件夹里面找到一个叫caffe_.mexw64的文件啦。
  python的wrapper类似,把pycaffe项目里的python目录改成你自己的(happynear用的是Anaconda),就能在python/caffe文件夹中生成_caffe.pyd的python dll文件。

三、测试

  到 http://pan.baidu.com/s/1mgl9ndu 下载已经转换好的MNIST的leveldb数据文件,解压至./examples/mnist文件夹中,然后运行根目录下的run_mnist.bat即可开始训练,训练日志会保存在./log文件夹中,以INFO开头,txt格式的日志文件中。

ps:如果你编译成功的话,不要忘了给happynear大神的github工程点个star!
star

四、常见问题

        我在做MNIST数据集测试时,遇到了以下问题:

问题1:cudnn_conv_layer.cpp: Check failed:status==CUDNN_STATUS_SUCCESS<6 vs. 0>
      CUDNN_STATUS_ARCH_MISMATCH

*********check failure stack trace:***************

            解决:运行caffe训练时,提示以上错误:简单讲就是GPU的加速性能不够,CUDNN只支持CUDA Capability 3.0以上的GPU加速。因为我笔记本上的GeForce 610M的CUDA Capability是2.1,而官方的cudnn加速是不支持3.0以下的版本的。于是, 我是在度娘上找到了这个链接,方法可行且操作性强。在每个项目点击右键【属性>>C/C++>>所有选项>>预处理器定义>>编辑,每个项目都去掉:USE_CUDNN,重新执行以下即可(再次强调,每个项目必须都检查务必确认删除USE_CUDNN)。【如图7、8所示】

图7 预处理器

图8 预处理器删除USE_CUDNN

            问题2:im2col.cu         Check failed :error == cudaSuccess<8 vs. 0> invalid device function
                              ****Check failure stack trace:**********

            解决:报错提示的是: invalid device function,则需要修改CUDA C/C++选项下的Device。在每个项目点击右键【属性>>CUDA C/C++>>Device>>Code Generation>>编辑,添上compute_20,sm_20,重新执行以下即可(再次强调,每个项目必须都检查务必确认添上compute_20,sm_20)。详见这个链接。另外要注意检查NVIDIA显卡的驱动是否与CUDA的版本匹配,不匹配就尽量更新NVIDIA的显卡驱动。【如图9、10所示】

图9 CUDA Device

图 10 修改CUDA Device

         至此,本文完。再次感谢Caffe前辈们的热心分享,使我顺利搭建Caffe。

         我很庆幸能够得到帮助,收获了顺利解决问题的成就感。感叹“网络资源是无限”之余,大神们的严谨博学、不断探究、乐于无私地分享传递他们的所知所得更让我敬佩。学海无涯,他们是我努力前行的榜样。

                                                                            

参考网址

1.如何快糙好猛地在Windows下编译CAFFE并使用其matlab和python接口

2.Windows下用VS2013加载caffemodel做图像分类

3.运行caffe时报错:Check failed: status == CUDNN_STATUS_SUCCESS

4.Windows下编译CAFFE+CUDA, 运行时提示status == CUDNN_STATUS_SUCCESS错误


0 0
原创粉丝点击