Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境

和小伙伴一起折腾了好几天,终于在Window系统中成功配置了 Caffe的环境,写下这篇博客记录一下,希望能帮助到其他人。

1、结果

看了这么多在windows下配置Caffe的资料,没有看到谁说配置成功的标志是什么。当然有人会说是生成了caffe.exe文件,没错,确实是这个。但是我想说的是:生成caffe.exe之后,就是一闪而过的效果,并没有其他的提示。简单的在caffe.cpp中main()加入了system("pause");可以看到下面的提示:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第1张图片

希望以后的在caffe-window更新的源码中,能让caffe.exe在cmd窗口提示下面的话:   

congratulations,build successful!


2、参考的博客

言归正传,说一下从开始准备配置caffe到成功配置caffe主要参考的资料、遇到的问题、解决的办法。 


参考的第一篇资料:http://blog.csdn.net/wlin_/article/details/50445672  
一开始直接点击“本地Windows调试编译器”,报了265个错误,然后开始一个一个.cpp开始编译,在百度解决了这篇博客没有提到的问题之后,最后出现的错误 error LIK2001,百度了一下,应该是配置库出问题了,具体和源码有没有关系也不是很清楚,反正没有解决,就换其他方法了:
Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第2张图片
 

参考的第二篇博客:http://blog.csdn.net/quincuntial/article/details/50600474

这篇博客虽然没有直接用3rdParty,他是自己下各种工具来生成这些依赖文件、依赖库的,但是由于他采用的也是https://github.com/BVLC/caffe/tree/master/ 里面的源码,所以出现了上一篇博客中没有提到的问题,而我们是遇到了的。在依照这篇博客的最后生成了所需要的libgfortran-3.dll、libglog.dll、libopenblas.dll之后,还是没有成功生成caffe.exe,出现的问题和上面的差不多。


参考的第三篇资料:http://www.th7.cn/system/win/201507/121664.shtml
这篇里面开始提到了不同系统下的caffe源码,让我们开始觉得直接用https://github.com/BVLC/caffe/tree/master/份源码还是会出现问题,所以决定不再用官方的caffe-master源码


参考的第四篇资料:http://wenku.baidu.com/view/be6153c0453610661fd9f437
 按照这篇百度文库中的方法,可以成功生成caffe.exe了,这时候遇到了最后一个问题:应用程序无法正常启动(0xc000007b)。请点击“确定”关闭应用程序。

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第3张图片

最终在参考了https://github.com/happynear/caffe-windows 中的下面这段话,把问题成功解决了。

就是要把./3rdparty/bin 的路径加入到系统环境变量PATH中,也不知道为什么

如果上面是你遇到的问题,而刚好你按照上面的方法解决了,那就不需要看下面的内容了

3、自己正确配置的全过程

3.1安装软件

首先默认你的系统是Window7_64bit,为什么要装64位的系统,除了能使程序最大化使用内存之外,还有一个原因是:后面要装的Matlab2015b只有64bit

安装好显卡和驱动程序,这一步好像不是必须的

3.1.1  Visual Studio 2013

我装的版本是:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第4张图片

3.1.2  Cuda7.5

cuda官方下载网址,目前最新版本为cuda7.5,选择自己系统对应的版本下载安装程序。
这里需要注意的是不要选择精简模式安装,而是全部安装,因为网上有看到过,选择精简模式安装会出问题,但是我也没有实验过,个人认为在电脑配置允许、安装顺利的情况下,精简安装和全部安装还是建议选择后者。
安装好之后,在系统变量中会自动多了两个变量:
CUDA_PATH:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5
CUDA_PATH_V7_5:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5
然后在系统变量中再添加下面的值:
CUDA_SDK_PATH:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5
CUDA_LIB_PATH:%CUDA_PATH%\lib\x64
CUDA_BIN_PATH:%CUDA_PATH%\bin
CUDA_SDK_LIB_PATH:%CUDA_SDK_PATH%\common\lib\x64
CUDA_SDK_BIN_PATH:%CUDA_SDK_PATH%\bin\win64
然后,在系统变量Path中添加:
%CUDA_LIB_PATH%;
%CUDA_BIN_PATH%;
%CUDA_SDK_BIN_PATH%;
%CUDA_SDK_LIB_PATH%
此时可以用cmd测试是否安装成功了,如下图:

在我们自己的电脑上,安装了差不多两个多小时才完成。

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第5张图片


3.1.3 Opencv2.4.10

官网下载,得到opencv-2.4.10.exe 350MB,解压,放到合适目录就OK。比如我放的目录是C:\local\opencv
下面配置opencv的环境变量
直接在Path中添加:
C:\local\opencv\build\x86\vc12\bin;
C:\local\opencv\build\x64\vc12\bin;
可以用下面的代码测试是否成功配置了opencv的环境变量,当然在vs2013配置Opencv的过程也很需要,网上教程很多,这里只给出测试代码。

#include
#include 
#pragma comment(lib,"opencv_highgui2410d.lib")
 // 读入一张图片(游戏原画)
 Mat img = imread("F:\\VSWorkSpace\\222\\tst.jpg");
 // 在窗口中显示游戏原画
 imshow("游戏原画", img);
 waitKey();
}

最后能成功显示图像,而且在项目中点击exe文件也可以正常打开的话,就说明Opencv配置应该是没问题。
这里注意的是:图片的路径,如果给的是相对路径的话,可能会报莫名其妙的错误,应该是路径找的不正确,所以建议使用绝对路径。


3.2 源码和第三方库

3.2.1 caffe源码

源码很重要、源码很重要、源码很重要!!!
Windows库:链接:http://pan.baidu.com/s/1hqhQlUk  密码:g4xo

官方库:https://github.com/BVLC/caffe

下载得到caffe-master文件夹,把里面的data、examples、include、src、tools文件夹全部删除,并把caffe-master文件夹重命名为caffe

由于官方库是在Linux系统下配置的,移植到windows系统时,会出现一些代码缺失或不兼容的问题,需要修复后才到运行,这也可能是我们之前没有成功配置生成caffe.exe的原因。

解压得到caffe_brief文件夹,用里面的data、examples、include、src、tools复制到上面这个caffe文件夹中

3.2.2 第三方库

链接:http://pan.baidu.com/s/1qWOTuo8  密码:x6gi

解压得到3rdparty_all

把3rdparty放在caffe根目录下。

至此源码和依赖项就已经建好了,如下图所示。

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第6张图片

3.3 编译源码

3.3.1 建立项目

(1)、打开Visual Studio在caffe根目录下新建一个项目名为caffe的空项目。并设置为x64 Release平台,下面只讲解此平台的配置。如果你也像我这里已经设置了,那么接下来就不需要在Win32Debug、Win32Release、 Debug Release模式下进行配置,因为与之无关。

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第7张图片

(2)、然后把与\src\caffe对应的所有文件及文件夹添加进工程源文件中(test文件夹可以不加)

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第8张图片

3.3.2 配置属性

(1)、右键项目名>生成依赖项->生成自定义:勾选CUDA 7.5

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第9张图片

(2)、配置相关路径及选项,以下绝对路径需要根据实际作修改,打开项目属性:

1)、常规->输出目录:..\bin

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第10张图片

2)、VC++目录->包含目录:

..\..\src

..\..\include

..\..\3rdparty\include

..\..\3rdparty\include\hdf5

..\..\3rdparty\include\lmdb

..\..\3rdparty\include\openblas

C:\local\opencv\build\include

C:\local\opencv\build\include\opencv

C:\local\opencv\build\include\opencv2

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第11张图片

3)、VC++目录->库目录:

..\..\3rdparty\lib

C:\local\opencv\build\x64\vc12\lib

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第12张图片

4)、链接器->输入->附加依赖项:

cuda.lib
cudnn.lib
cudart.lib
curand.lib
gflags.lib
cublas.lib
libglog.lib
libprotoc.lib
libprotobuf.lib
libopenblas.dll.a
lmdb.lib
leveldb.lib
shlwapi.lib
szip.lib
zlib.lib
libhdf5.lib
libhdf5_hl.lib
opencv_core2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第13张图片

5)、C/C++->预处理器->预处理器定义:

USE_LMDB

USE_OPENCV

USE_LEVELDB

_CRT_SECURE_NO_WARNINGS

_SCL_SECURE_NO_WARNINGS

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第14张图片

6)、CUDAC/C++ -> Common -> Target Machine Platform:64-bit

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第15张图片

7)、CUDAC/C++ ->Device -> Code Generation:

compute_20,sm_20

compute_30,sm_30

compute_35,sm_35

compute_50,sm_50

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第16张图片

8)、把F:\VSWorkSpace\caffe\3rdparty\bin加入到系统环境变量path中!!!

3.3.2 编译,生成caffe.exe

(1)、接下来把源文件中所有的.cu文件,点击属性,在常规中的项类型中把“不参与生成”改成“CUDA C/C++”,在对每一个.cu文件进行单独编译。

这里我没有找到简便方法,就是说直接配置.cu文件的属性-常规-项类型,则所有的.cu文件都可以变成“CUDA C/C++”

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第17张图片

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第18张图片

如果上面这个步骤没有做,会出现下面图中的问题,因为默认的是.cu文件是“不参与生成”:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第19张图片


(2)、从根目录\tools文件夹里,把caffe.cpp添加进工程源文件中,再点击上面绿色的三角形“本地Windows调试器”开始生成整个项目:

这里注意,只需要把caffe.cpp添加进来,其他的不用,否则会出现主函数入口main冲突。

(3)、大概等个半个小时,可以成功在bin目录下生成caffe.exe等文件。

如图:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第20张图片

至此,在window下成功进行了配置,生成了caffe.exe。

最后再显示一下caffe.exe的界面:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第21张图片


4、测试mnist库

过程省略,如果想要测试的话,可以参考我第二步中给出的最后一篇百度文库的资料。这里我直接给出结果:

Win7_64bit + VS2013 + CUDA7.5 + Opencv2.4.10 成功配置Caffe环境_第22张图片




你可能感兴趣的:(原创,window,caffe,opencv)