Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx

上传人:b****3 文档编号:16758837 上传时间:2022-11-25 格式:DOCX 页数:19 大小:701.61KB
下载 相关 举报
Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx_第1页
第1页 / 共19页
Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx_第2页
第2页 / 共19页
Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx_第3页
第3页 / 共19页
Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx_第4页
第4页 / 共19页
Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx

《Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx》由会员分享,可在线阅读,更多相关《Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

Caffe+VS+CUDA75+Matlab配置流程Word文档格式.docx

7.4打开gflags.sln,右键生成32位/64位的Debug/Release库

8Glog配置

下载Glog库,解压。

打开根目录下google-glog.sln,右键生成32位/64位的Debug/Release库

9LevelDB配置

9.1下载LevelDB库,解压。

9.2点Configure,选择“Visual 

9.3设置Boost路径

Boost_INCLUDE_DIR:

D:

\boost_1_59_0

9.3点Configure后,点Generate,生成leveldb.sln

9.4打开leveldb.sln,右键生成32位/64位的Debug/Release库

注:

第1次生成后,会有几项失败的,再右键生成1次便可。

10LMDB配置

10.1下载LMDB库,解压。

10.2打开VisualStudio,文件->

新建->

从现有代码创建项目

 

10.3选上源代码文件夹,并命名项目

10.4下一步,项目类型:

控制台应用程序项目

10.5完成后,设置:

项目属性->

配置属性->

配置类型:

静态库(.lib)

10.6添加unistd.h、getopt.h、getopt.c到工和源文件里

unistd.h下载地址:

getopt.h、getopt.c下载地址:

http:

//ieng6.ucsd.edu/~cs12x/vc08install/getopt9.zip

10.7把包含#include<

unistd.h>

改为#include"

unistd.h"

,接着,右键生成32位/64位的Debug/Release库

11ProtoBuf配置

下载ProtoBuf库,解压。

打开根目录/vsprojects/protobuf.sln,分别右键libprotobuf、libprotoc、protoc生成32位/64位的Debug/Release库

12HDF5安装

下载HDF5安装包hdf5-1.8.16-win64-vs2013-shared.zip,装完后:

***************************************

经过上面的准备,下面开始配置caffe

1下载Berkeley官方caffe库,解压出一个caffe-master文件夹(即根目录)。

2其他辅助工具:

链接:

密码:

v0gq

3准备第3方库,在caffe根目录下建3rdparty文件夹,再建如下子文件夹:

把前面生成的dll库、lib库、.h头文件,放在对应的文件夹里。

bin、include、lib里的文件如下图,3rdparty.7z下载地址:

4h9p

4打开VisualStudio,在根目录下新建一个项目名为caffe的空项目,并设置为x64Release平台,下面只讲解此平台的配置,Debug平台与此类似。

4.1右键项目名->

生成依赖项->

生成自定义:

勾选CUDA7.5

4.2在编译protobuf时已生成protoc.exe,把它拷到\src\caffe\proto目录下,打开cmd,到该目录下输入:

protoccaffe.proto--cpp_out=./将生成caffe.pb.cc和caffe.pb.h文件。

4.3把与\src\caffe对应的所有文件及文件夹添加进工程里(test文件夹可以不加)

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

常规->

输出目录:

..\bin

VC++目录->

包含目录:

..\..\src

..\..\include

..\..\3rdparty\include

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

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

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

\opencv2.4.10\build\include

\opencv2.4.10\build\include\opencv

\opencv2.4.10\build\include\opencv2

C:

\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v7.5\include

库目录:

..\..\3rdparty\lib

\boost_1_59_0\stage\lib

\opencv2.4.10\build\x64\vc12\lib

\ProgramFiles\NVIDIAGPUComputingToolkit\CUDA\v7.5\lib\x64

链接器->

输入->

附加依赖项:

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

C/C++->

预处理器->

预处理器定义:

USE_LMDB

USE_OPENCV

USE_LEVELDB

_CRT_SECURE_NO_WARNINGS

_SCL_SECURE_NO_WARNINGS

CUDAC/C++->

Common->

TargetMachinePlatform:

64-bit

Device->

CodeGeneration:

compute_20,sm_20

compute_30,sm_30

compute_35,sm_35

compute_50,sm_50

4.5下面开始逐步编译并修改bug

(1)编译common.cpp,右键选择编译。

从输出错误列表中定位相应的错误:

添加:

#include<

process.h>

修改:

getpid()->

_getpid()

以上编译成功后才接着下面的编译

(2)编译solver.cpp

snprintf()->

sprintf_s()

(3)编译caffe.cpp,从根目录\tools文件夹里,把caffe.cpp添加进工程源文件中。

4.6上面几个文件编译成功后,开始生成整个项目:

生成结束后会出现大量错误,需要反复生成多次才能找出所有的错误,下面逐一修复:

(1)在cudnn.hpp文件中的cudnnGetErrorString函数名前添加:

CUDNNWINAPI

(2)在signal_handler.cpp文件中,修改:

constfloatkBNLL_THRESHOLD=50.->

#definekBNLL_THRESHOLD50.0

(3)在bnll_layer.cu文件中,添加:

#defineSIGHUP1

#defineSA_RESTART0x0002

#definesigfillset(set)(*(set)=~(sigset_t)0,0)

typedefunsignedintsigset_t;

structsigaction{

void(*sa_handler)(int);

sigset_tsa_mask;

intsa_flags;

};

并注释这些出错语句:

if(sigaction(SIGHUP,&

sa,NULL)==-1){

LOG(FATAL)<

<

"

CannotinstallSIGHUPhandler."

;

}

if(sigaction(SIGINT,&

CannotinstallSIGINThandler."

(4)在hdf5.cpp文件中,修改:

给switch(class_)中的每个case分支加上花括号

(5)在db_lmdb.cpp文件中,添加:

#include<

direct.h>

并把mkdir()改为_mkdir(),且将第2个参数去除

(6)在contrastive_loss_layer.cpp文件中,修改为:

(7)在math_functions.cpp文件中,添加:

#define__builtin_popcount__popcnt

#define__builtin_popcountl__popcnt

(8)在io.cpp文件中,添加:

io.h>

并修改函数名:

open()->

_open();

close()->

_close()

(9)在common.cpp文件中,添加:

boost/date_time.hpp>

voidinitGlog(){

FLAGS_log_dir="

.\\log\\"

_mkdir(FLAGS_log_dir.c_str());

std:

:

stringLOG_INFO_FILE;

stringLOG_WARNING_FILE;

stringLOG_ERROR_FILE;

stringLOG_FATAL_FILE;

stringnow_time=boost:

posix_time:

to_iso_extended_string(boost:

second_clock:

local_time());

now_time[13]='

-'

now_time[16]='

LOG_INFO_FILE=FLAGS_log_dir+"

INFO"

+now_time+"

.txt"

google:

SetLogDestination(google:

GLOG_INFO,LOG_INFO_FILE.c_str());

LOG_WARNING_FILE=FLAGS_log_dir+"

WARNING"

GLOG_WARNING,LOG_WARNING_FILE.c_str());

LOG_ERROR_FILE=FLAGS_log_dir+"

ERROR"

GLOG_ERROR,LOG_ERROR_FILE.c_str());

LOG_FATAL_FILE=FLAGS_log_dir+"

FATAL"

GLOG_FATAL,LOG_FATAL_FILE.c_str());

并修改GlobalInit()函数:

voidGlobalInit(int*pargc,char***pargv){

//Googleflags.

gflags:

ParseCommandLineFlags(pargc,pargv,true);

initGlog();

google:

InitGoogleLogging(*(pargv)[0]);

(10)在base_data_layer.cpp文件中,初始化:

cudaStream_tstream=nullptr;

在base_data_layer.cpp文件中,初始化:

以上不一定能修复所有代码bug,如还未生成成功,请自行修复。

5上面生成成功后会在根目录\caffe\bin下生成一个caffe.exe,重命名为caffe_gpu.exe,防止被覆盖,后面将会用到。

经过上面过程,caffe已经编译完成,下面开始测试mnist库

1下载辅助工具

1.1把wget库解压,并添加环境变量:

Path=D:

\wget-1.11.4b

1.2把7za.exe、wget.exe、libiconv2.dll、libintl3.dll、libssl32.dll放进\3rdparty\bin

把get_mnist.bat放进\data\mnist

把create_mnist.bat、train_lenet.bat放进\examples\mnist

1.3双击运行\data\mnist\get_mnist.bat,将自动下载并解压mnist数据库。

或者下载已经解压好的数据库放在此路径下:

bbsb

或者到官方网站下载,解压并命名为对应的名字即可:

2添加环境变量,把\3rdparty\bin添加到环境变量中

Path=E:

\caffe3\caffe-master\3rdparty\bin

2.1把工程源文件中的caffe.cpp移除,将

\examples\mnist\convert_mnist_data.cpp添加到项目的源文件中,生成项目。

运行完后convert_mnist_data.cpp有错,需要修复:

,并把mkdir()作如下修改:

分别对mdb_env、mdb_txn、db初始化:

2.2生成成功后,把\caffe\bin\caffe.exe重命名为convert_mnist_data.exe。

2.3下载辅助dll库:

zigr

把刚下载和之前生成的dll库放进\3rdparty\bin,有:

libquadmath-0.dll

libgcc_s_seh-1.dll

libgcc_s_sjlj-1.dll

libgfortran-3.dll

libglog.dll

libopenblas.dll

cudnn64_70.dll

2.4在\examples\mnist\下新建mnist_test_leveldb和mnist_train_leveldb两个文件夹,双击运行create_mnist.bat,生成leveldb数据格式。

或者下载已经转换好的数据放在此路径下:

jdks

3下面开始训练和测试

3.1打开lenet_train_test.prototxt文件,把里面所有的lmdb替换成leveldb。

3.2把\caffe\bin\caffe_gpu.exe重命名为caffe.cpp,再双击运行\examples\mnist\train_lenet.bat,开始训练和测试,运行结果:

以上结果是在teslak20cGPU上的测试结果,测试10000个样本大约需要165ms,准确率为:

99.01%(每次测试的结果会有点波动)。

上面程序通过修改\examples\mnist\lenet_solver.prototxt文件中的属性,可以设定不同的测试条件。

下面开始配置NVidia提供的开源库cuDNN,该库专用于深度学习框架,以提高训练效率。

1在上面工程的基础上,把convert_mnist_data.cpp移除,将根目录\tools\caffe.cpp重新添加到工程源文件中。

预处理器定义,添加:

USE_CUDNN

2把cuDNN库中的cudnn64_70.dll、cudnn.h、cudnn.lib分别拷到\3rdparty\的bin、include、lib文件夹里。

接着,右键生成项目。

3项目生成成功后,把\caffe\bin\caffe.exe备份,命名为:

caffe_cudnn.exe,以防止被覆盖(用到时把名字改回caffe.exe即可)。

4双击运行\examples\mnist\train_lenet.bat,开始训练和测试,运行结果:

以上结果是在teslak20cGPU上,使用cuDNNv3库的测试结果,测试10000个样本大约需要168ms,准确率为:

99.11%(每次测试的结果会有点波动)。

以上是在VisualStudio平台下测试的,下面开始配置MatlabR2014a。

1下载修复后的caffe_.cpp文件:

rob6

把刚下载的caffe_.cpp和matcaffe.def拷到\matlab\+caffe\private,并覆盖原有的文件。

2在上面工程的基础上,把caffe.cpp移除,将根目录\matlab\+caffe\private\caffe_.cpp添加到工程源文件中。

3配置属性,打开项目属性:

..\..\matlab\+caffe\private

目标文件名:

caffe_

目标文件扩展名:

.mexw64

\ProgramFiles\MATLAB\R2014a\extern\include

\ProgramFiles\MATLAB\R2014a\extern\include\win64

\ProgramFiles\MATLAB\R2014a\extern\lib\win64\microsoft

libmx.lib

libmex.lib

libmat.lib

模块定义文件:

../../matlab/+caffe/private/matcaffe.def

4右键生成项目,将会生成\matlab\+caffe\private\caffe_.mexw64,这是matlab的库文件。

5测试

5.1把前面下载到的bvlc_reference_caffenet.caffemodel放进\models\bvlc_reference_caffenet

5.2打开Matlab,把路径改为caffe根目录,输入:

addpath./matlab

5.3把路径改为\matlab\demo,classification_demo是一个分类函数,模型已经训练好即bvlc_reference_caffenet.caffemodel,这是1000分类的模型,调用格式:

其中,s是各类的分数,l是该图像的预测标签。

具体分类:

//www.image-net.org/challenges/LSVRC/2012/

参考网址:

//caffe.berkeleyvision.org/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1