这里的环境是WIN10+cuda v7.5 +cudnn v4 + opencv + pycharm+VS2013
使用的是GPU,我的GPU是titan16G+内存32G
首先是caffe的文件以及第三方库的编译,这里提供一个已经编译好的的连接,我就是从那里下好然后编译完毕的。
点击打开链接 happynear的
然后就是如何编译python接口。
1、首先先生成两个python文件,在src/caffe/proto/extract_proto.bat 里生成caffe_pb2.py 这个之后有用。
2、然后打开已经给好的caffe/buildVS2013,打开里面已经有的工程文件,正常的情况下应该是有7个工程,选中pycaffee单独作为要编译的项目。如图所示:
把pycaffe作为单启动。注意需要在release x64位下编译。
如果没有这个的话,就将这个文件夹里python文件夹中的项目加入即可。如果没有python项目,就自己建一个,将python文件夹里的cpp文件加入就可以了。
3、选择pycaffe的属性,将配置属性下的VC++目录中的包含目录和库目录填上你python所在的include和libs 再在C/C++的目录下的附加包含目录一项中添加
以我的python为例。D:/python27/Lib;D:/python/include/ 以及D:/Python27/Lib/site-packages/numpy/core/include 如果你安装了CUDNN这里可以在预处理器那里把USE_CUDNN加上,同时在LINKER的输入目录下的附加依赖库中加入cudnn的lib文件。
3、开始编译即可。这里要注意一定要和caffe、caffelib在一个项目里编译,否则会报错。
4、编译成功后会在caffe/python/caffe下生成_caffe.pyd 是打不开的
5、配置python环境:需要几个额外库
Cython>=0.19.2
numpy>=1.7.1
scipy>=0.13.2
scikit-image>=0.9.3
matplotlib>=1.3.1
ipython>=3.0.0
h5py>=2.2.0
leveldb>=0.191
networkx>=1.8.1
nose>=1.3.0
pandas>=0.12.0
python-dateutil>=1.4,<2
protobuf>=2.5.0
python-gflags>=2.0
pyyaml>=3.10
Pillow>=2.3.0
six>=1.1.0
其中numpy要装MKL版本的,不然scipy装上了BLAS不能用
leveldb没有windows版本的,不过我找到了可以使用的办法。见这个博客:
点击打开链接
如果有pip install 装不上的,可以上这个网站找 wheel文件安装就可以了
点击打开链接
6、最后把目录中python下的caffe文件夹复制到python27/Lib/site-packages就可以了。
测试的时候只需要在控制台下输入import caffe 看能载入就知道成功了:)
第一步,准备工作1.首先从网址下载Caffe-Windows安装
2.安装Visual Studio 2013;
3.如果与需要使用NVIDIA显卡的请安装Cuda和CuDNN,不需要可以不装;
4.将.\windows\CommonSettings.props.example 复制一份并修改为 .\windows\CommonSettings.props,然后打开做如下修改:
1)如果不使用GPU,不安装CUDA和CuDNN,将CpuOnlyBuild 改为 true ,并且 UseCuDNN 改为 false;
2)安装CuDNN的情况下,将CuDNND路径复制到CuDnnPath;
3)选择支持Python或者MATLAB接口,当然也可以两个都支持,设置PythonSupport或者MatlabSupport为true,同时将Python或者MATLAB路径分别粘过来PythonDir和MatlabDir。
第二步,编译
打开.\windows\Caffe.sln,编译Caffe/convert_imageset、caffe、libcaffe、convert_mnist_data等,可以根据提示和需要进行,生成的caffe.exe为训练与测试的主程序,convert_imageset为将训练和测试数据生成LMDB使用的程序。
解决方法:(1)搜索工程中的forward_gpu_gemm函数,原调用函数为:在调用函数中添加一个参数“false”,如下:(2)编译会遇到问题:errorC1083:无法打开包括文件:"device_atomic_functions.hpp",可以直接把这个头文件给注释掉,工程中多处调用这个头文件,要都注释掉。注:该解决方法参考自http://www.ithao123.cn/content-10715084.html3.编译过程中遇到问题caffe.obj:errorLNK2001:无法解析的外部符号"__declspec(dllimport)void__cdeclgoogle::ShowUsageWithFlagsRestrict(charconst*,charconst*)"(__imp_?ShowUsageWithFlagsRestrict@google@@YAXPEBD0@Z)2>caffe.obj:errorLNK2001:无法解析的外部符号"__declspec(dllimport)void__cdeclgoogle::SetUsageMessage(classstd::basic_string,classstd::allocator>const&)"(__imp_?SetUsageMessage@google@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)2>caffe.obj:errorLNK2001:无法解析的外部符号"__declspec(dllimport)void__cdeclgoogle::SetVersionString(classstd::basic_string,classstd::allocator>const&)"(__imp_?SetVersionString@google@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)2>caffe.obj:errorLNK2001:无法解析的外部符号"__declspec(dllimport)public:__cdeclgoogle::FlagRegisterer::FlagRegisterer(charconst*,charconst*,charconst*,charconst*,void*,void*)"(__imp_??0FlagRegisterer@google@@QEAA@PEBD000PEAX1@Z)2>common.obj:errorLNK2001:无法解析的外部符号"__declspec(dllimport)unsignedint__cdeclgoogle::ParseCommandLineFlags(int*,char***,bool)"(__imp_?ParseCommandLineFlags@google@@YAIPEAHPEAPEAPEAD_N@Z)2>../../bin\caffe.exe:fatalerrorLNK1120:5个无法解析的外部命令解决方法:(1)下载新的动态链接库:;(2)解压后,替换3rdparty文件夹中的bin、lib、include文件夹;(3)打开各工程属性页,在链接器-》输入-》附加依赖项中添加“libgflags.lib”即可。4.编译过程主要遇到以上问题,运行classification_demo,结果如下:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)