windows+caffe+vs2013+cuda6.5配置记录

隔了大半年,因为论文的需要,又重新开始研究caffe。感谢niuzhiheng’s GitHub大神的贡献,caffe已经可以在Windows下使用了。参考了很多大神的博客,成功的在自己的笔记本配置好了Windows版本的caffe。现将自己的配置过程和配置中遇到的问题记录下来,希望能对大家有所帮助。

1.配置环境

我在自己的笔记本配置的caffe,配置的环境为:Windows 7 64位 + cuda6.5 + Opencv2.49 + VS2013。假设在配置caffe之前,你已经准备好这些。

本文中将给出一些编译好的依赖库,如果你也是用的Windows 7 64位+VS2013,可以直接使用。

2.准备依赖库

在Windows下配置caffe,一个很主要的问题就是依赖库的编译。不像在Ubuntu下那么方便,在Windows下,依赖库都需要使用vs2013进行编译才能使用。下面我将介绍caffe需要的依赖库(如果你也是win7 64位+VS2013,可以直接使用我提供的依赖库)。

2.1 boost

boost可以下载源码进行编译,也可以直接下载安装文件。我使用的是后者,方便、快捷。

我使用的是:boost_1.56_0-msvc-12.0-64.exe

下载地址:http://sourceforge.net/projects/boost/files/boost-binaries/1.56.0/

注意下载适合你的配置环境的boost版本即可。

下载完毕,双击运行安装文件即可。

2.2 Glog+Gflag+Protobuf+LevelDB+HDF5+LMDB+Openblas

这一部分的很多都是谷歌的开源库,不容易下载(你懂的)。所以我使用的是Neil Z. SHAO‘s Blog

提供的编译好的。由于大神给的地址是谷歌网盘,不容易下载。我将它转至百度盘。

下载地址:http://pan.baidu.com/s/1mg1iJrE

下载完,解压得到3rdparty文件夹。在下一段将会用到。

3.建立caffe工程

准备好了caffe需要的依赖库和环境之后,下面就可以建立caffe的vs项目,进行编译了。

3.1 下载caffe源码

可以从caffe的github主页下载源码。

下载地址:Caffe’s GitHub

解压文件,假设caffe源码所在目录为CAFFE_ROOT。

3.2 准备项目需要的依赖库和系统环境变量

经过上一阶段的准备,caffe项目所需的依赖库都已经准备好。

1.首先设置系统环境变量(以我的为例):

CUDA_PATH_V6_5 安装好cuda6.5之后,会自动添加环境变量CUDA_PATH_V6_5

OPENCV_2_49 D:/Tools/opencv2.49/build/

BOOST_1_56 D:/Tools/boost_1_56_0

2.将3rdparty文件夹放到CAFFE_ROOT

3.3 用vs建立caffe项目

1.用VS2013在CAFFE_ROOT下建立 win32 console application,选择空项目。

将项目的平台由32位改为64位

2.修改项目属性

项目——属性——C/C++——常规——附加包含目录

添加:

../include;

../src;

../3rdparty/include;

../3rdparty;

../3rdparty/include;

../3rdparty/include/openblas;

../3rdparty/include/hdf5;

../3rdparty/include/lmdb;

../3rdparty/include/leveldb;

../3rdparty/include/gflag;

../3rdparty/include/glog;

../3rdparty/include/google/protobuf;

项目——属相——VC++目录——包含目录

添加:

$(CUDA_PATH_V6_5)\include;

$(OPENCV_2_49)\include;

$(OPENCV_2_49)\include\opencv;

$(OPENCV_2_49)\include\opencv2;

$(BOOST_1_56)

项目——属性——链接器——常规——附加库目录

添加:

$(CUDA_PATH_V6_5)\lib\$(PlatformName);

$(OPENCV_2_49)\x64\vc12\lib;

$(BOOST_1_56)\lib64-msvc-12.0;

..\3rdparty\lib;

项目——属性——链接器——输入——附加依赖项

debug添加:

opencv_ml249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
cudart.lib
cuda.lib
nppi.lib
cufft.lib
cublas.lib
curand.lib
gflagsd.lib
libglog.lib
libopenblas.dll.a
libprotobufd.lib
libprotoc.lib
leveldbd.lib
lmdbd.lib
libhdf5_D.lib
libhdf5_hl_D.lib
Shlwapi.lib
gflags.lib
libprotobuf.lib
leveldb.lib
lmdb.lib
libhdf5.lib
libhdf5_hl.lib

release添加:

opencv_ml249.lib
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib
cudart.lib
cuda.lib
nppi.lib
cufft.lib
cublas.lib
curand.lib
gflags.lib
libglog.lib
libopenblas.dll.a
libprotobuf.lib
libprotoc.lib
leveldb.lib
lmdb.lib
libhdf5.lib
libhdf5_hl.lib
Shlwapi.lib

3.4 编译caffe

配置好caffe项目的属性之后,下面就可以一步一步的编译caffe了。

3.4.1 编译./src中的文件

首先,将../src文件夹中的*.cpp文件添加到工程中。

依次编译每一个*.cpp文件。

1.编译blob.cpp

直接编译时会报错,缺少文件”caffe\proto\caffe.pb.h”

这个时候需要将proto.exe放到../3rdparty/bin文件夹

将GernaratePB.bat放在../scripts文件夹

下载地址:http://pan.baidu.com/s/1pJ7Onph

运行bat脚本文件即可生成caffe.pb.h

然后就可以成功编译。

2.编译common.cpp

直接编译这个文件,会出现关于getidfopen_s的错误。可通过如下步骤修改:

在代码前面添加:#include <process.h>

修改项目属性:项目——属性——C/C++——预处理器——预处理器定义

添加:_CRT_SECURE_NO_WARNINGS

在代码中getid的位置进行如下修改:

#ifdef _MSC_VER

pid = getid();

#else

pid = _getid();

#endf

修改完毕之后,可以成功编译。

3.编译net.cpp

直接编译这个文件,会出现关于mkstep、close、mkdtemp的错误。需要进行如下修改:

在io.hpp头文件中添加:#include “mkstep.h”

在io.hpp头文件中,在close()的位置进行如下修改:

#ifdef _MSC_VER

close(fd);

#else

_close(fd);

#endif

在mkdtemp的位置进行如下修改:

#ifndef _MSC_VER

char* mkdtemp_result = mkdtemp(temp_dirname_cstr);

#else

errno_t mkdtemp_result = _mktemp_s(temp_dirname_cstr, sizeof(temp_dirname_cstr));

#endif

修改完毕,可以成功编译。

4.编译solver.cpp

直接编译会出现关于snprintf的错误,需要进行如下修改:

#ifdef _MSC_VER

#define snprinf sprintf_s

#endif

修改完毕,可以成功编译。

5.其他剩余的cpp文件也依次编译

3.4.2 编译./src/layers中的文件

将./src/layers中的所有的cpp和cu文件都添加到项目中。

右键点击cu文件,修改属性。

在bnll_layer.cu文件,进行如下修改:

float kBNLL_THRESHOLD = 50 ——> #define kBNLL_THRESHOLD 50.0

依次编译所有的文件。

3.4.3 编译./src/util中的文件

将./src/util中所有的文件添加到项目

1.在io.cpp中

修改ReadProtoFromBinaryFile函数

O_RDONLY  ——> O_RDONLY | O_BINARY

在代码中进行如下修改:

#ifdef _MSC_VER

#define open _open

#endif

将close()改为_close()

2.在math_functions.cpp中

做如下修改:

#define __builtin_popcount __popcnt

#define __builtin_popcountl __popcnt

3.在db.cpp中

作如下修改:

#ifdef _MSC_VER

#include <direct.h>

#endif

修改CHECK_EQ

#ifdef _MSC_VER

CHECK_EQ(_mkdir(source.c_str()),0)<<”mkdir”<<source<<”failed”;

#else

CHECK_EQ(mkdir(source.c_str(),0744),0)<<”mkidr”<<source<<”failed”;

#endif

4.依次编译其他文件

3.4.4 编译./src/proto中的文件

参照上一步,将proto中的文件都添加到项目。

修改属性:

项目——属性——C/C++——预处理器——预处理器定义

添加:_SCL_SECURE_NO_WARNINGS

编译所有文件。

3.4.5 编译./tools中的文件

本文件夹下有多个cpp文件,通过它们的名字就可以知道相应的功能。添加不同的cpp文件到项目中,然后生成项目,就可以得到不同功能的exe文件。

将caffe.cpp添加到工程,生成项目,得到caffe.exe文件,可用于训练模型

将computer_image_mean.cpp添加到工程,生成项目,得到的exe文件可用于将训练样本转换为caffe使用的leveldb/lmdb数据集。

依次类推。

自此,caffe在Windows下的编译已经完毕,接下来就可以使用它来训练自己的模型了。

最后,本文主要参考Neil Z. SHAO‘s Blog,感谢博主的贡献。

时间: 2024-12-18 07:18:22

windows+caffe+vs2013+cuda6.5配置记录的相关文章

QT5.6.2基于VS2013开发环境配置(Win7 64位)

1) 在https://www.qt.io/download-open-source/#section-2页面下载如下文件: Qt 5.6.2 for Windows 64-bit (VS 2013, 832 MB) Visual Studio Add-in 2.0.0 for Qt5 MSVC 2013 (9 MB) 2) 自动安装上述两个文件,可选QT安装路径(如D盘),安装完成之后打开VS2013,可发现多出QT VS TOOLS菜单 3) 打开QT VS TOOLS菜单下的Qt Opti

windows下手动安装和配置xamarin

安装xamarin xamarin官方给出了两种安装方式,自动安装和手动安装. 自动安装比较简单,到http://xamarin.com/download下载xamarininstaller.exe 运行后它会自动下载所需组件.过程还是比较简单的,下面重点说明一下手动安装和配置xamarin. 由于我的系统(win8.1 64位)在运行xamarininstaller.exe时老是报错,给xamarin的支持组发了个邮件,他们回复说还是手动安装吧,并把各个组件的下载链接发了过来.这段时间在网上查

关于写入Windows Log Event却没有任何记录的问题

在本机或者服务器上,写入Windows Event Log日志代码,执行了没有报错,但是打开Windows Event Log记录面板,却看不到任何记录,很可能是你当前用户没有权限是写入东西.此时,我们做一些配置,就可以使当前用户拥有写入Event Log的权限. 设置:"开始->运行",输入命令,"regedt32",找到"System->CurrentControlSet->Services->Eventlog",选择

Windows Server 2012 R2 DNS配置

DNS配置 打开"网络和共享中心"在安装完域控制器后,DNS地址已转变为指向本地的127.0.0.1,可以更改为本机IP192.168.0.2 2.在Server Manager中打开Tools内的DNS组件 3.正向查找区域如下图所示 4.在Reverse Lookup Zones新建区域 5.新建"反向查找区域向导" 6.这里有三种区域类型: 1)        主区域 2)        辅助区域 3)        末节区域 我们选择"主区域&qu

ACE在windows下的编译及配置(VS2010)

ACE在windows下的编译及配置(VS2010) 分类:             -[小西南]-              2013-08-06 16:17     2354人阅读     评论(6)     收藏     举报 目录(?)[+] 1 下载ACE 2 创建ACE的配置文件 3 编译ACE库 4 可为ACE目录设置环境变量 5 VS2010 ACE配置 6 测试操作是否成功 系统:win7 开发环境:Visual Studio 10 ACE版本:ACE-6.2.0 参考了很多师

(Win8.1)VS2013环境下配置OpenGL

一.配置OpenGL 1.首先,下载glut.rar文件,这个网上搜一下都能够找到,亦可以从opengl官网下载,点击打开链接. 2.解压后可以得到5个文件:glut.h.glut.dll.glut.lib.glut32.lib.glut32.dll.然后, (1)把glut.h文件放在C:\ProgramFiles\Microsoft SDKs\Windows\v7.0A\Include\gl文件夹下面: 网上的教程说是放在该目录下,但是v7.0好像根本就没有Include更别说子目录了,但是

Windows JDK环境变量的配置

下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 安装 计算机-->属性-->高级系统设置-->高级-->环境变量-->用户变量: 新建 JAVA_HOMED:\Program Files\Java\jdk1.8.0_05 (JDK的安装路径) 新建 PATH%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin 新建 CLASSPATH.;%JAVA_HOME%\

Windows下安装Resin及配置详解与发布应用

关于Resin的好处,网上介绍了一大堆,小编经不住诱惑,决定试用一下.目前Resin的最新版本为:4.0.40,可以从官网直接下载. 1. 将下载下来的Resin包解压开,会看到一大堆的文件,有一些关键的文件,我们需要了解一下. resin-4.0.40 resin安装目录   --conf/resin.properties 配置属性   --conf/resin.xml 配置文件   --conf/licenses/ 许可信息文件   --conf/keys/ openSSL 秘钥   --w

我的vim配置记录

配置路径,/etc/vim/vimrc,这个是系统的vim配置,如果一台PC多个用户使用,每个用户的习惯不同的话,可以使用不同的配置,在用户目录下新建一个.vimrc的文件就可以了. 我目前是将配置写在系统的配置中,我的配置文件如下所示: set nu set tabstop=4 set autoindent set matchtime=1 set hlsearch set cindent set shiftwidth=4 set ruler set showmode colorscheme d