包含libopenblasvs2013的词条

您所在的位置:网站首页 opencv_imgproc249dll 包含libopenblasvs2013的词条

包含libopenblasvs2013的词条

#包含libopenblasvs2013的词条| 来源: 网络整理| 查看: 265

如何在VS2013中使用caffe接口

 观察caffe-master的第三方程序包,这个与caffe-master本文件夹都需要加上去的。所以在属性表里,先后需要include以下这些:(路径请自行修改)

D:\caffe-master\include

D:\NugetPackages\boost.1.59.0.0\lib\native\include

D:\NugetPackages\glog.0.3.3.0\build\native\include

D:\NugetPackages\gflags.2.1.2.1\build\native\include

D:\NugetPackages\protobuf-v120.2.6.1\build\native\include

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

D:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include

D:\caffe-master\include\caffe\layers

D:\NugetPackages\OpenCV.2.4.10\build\native\include

D:\NugetPackages\OpenCV.2.4.10\build\native\include\opencv

D:\NugetPackages\OpenCV.2.4.10\build\native\include\opencv2

最后一项是CUDA的配置路径,找一下应该就可以找到。

那么我们的附加依赖项需要添加:

libcaffe.lib

libprotobuf.lib

opencv_highgui2410.lib

opencv_core2410.lib

opencv_imgproc2410.lib

libglog.lib

gflags.lib

libopenblas.dll.a

hdf5.lib

hdf5_hl.lib

cublas.lib

cublas_device.lib

cuda.lib

cudadevrt.lib

cudnn.lib

cudart.lib

cufft.lib

cudart_static.lib

cufftw.lib

cusparse.lib

cusolver.lib

curand.lib

nppc.lib

OpenCL.lib

对了,最后别忘了配置环境变量哟,配置完之后重启一遍:

D:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib

D:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\bin\x64

D:\NugetPackages\glog.0.3.3.0\build\native\bin\x64\v120\Release\dynamic

D:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\bin\x64

D:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib

D:\NugetPackages\OpenCV.2.4.10\build\native\bin\x64\v120\Release

D:\caffe-master\Build\x64\Release

那么在做完这些之后,我们就可以在新建工程里使用Caffe的接口了

[img]caffe windows10 vs2013怎么配置

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

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

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

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

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

提供的编译好的。

下载完,解压得到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文件夹

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

然后就可以成功编译。

2.编译common.cpp

直接编译这个文件,会出现关于getid和fopen_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下的编译已经完毕,接下来就可以使用它来训练自己的模型了。

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

一、准备

需要用到的东西我已经帮大家全部准备好了,有2016年2月4日刚刚从caffe官方master分支fork过来的源代码。有我自己亲手制作的第三方库,在源码的根目录下建立个3rdparty文件夹,把文件解压进去就可以了。

解压好之后,要将3rdparty/bin文件夹添加到环境变量的PATH中,这样才能让程序找到这些第三方库的dll。

最后是CUDA和MKL了,MKL是可选的,大家可以去Intel官方申请,如果不用cpu模式的话其实也无所谓,在第三方库包中我还提供了openblas的库文件。

我使用的是CUDA 7.5版,建议大家也安装这个版本。

二、编译

编译非常简单,分为以下几步:

1、双击./src/caffe/proto/extract_proto.bat批处理文件来生成caffe.pb.h和caffe.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版本,就可以正常打开了。

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

3、点上边工具栏中的绿色三角编译吧。编译大概需要半小时左右,请耐心等待。

如果要用matlab wrapper来提取特征、观察训练好的权重的话呢,只需要把matcaffe项目里面的matlab目录修改成你自己的,然后编译,你就能从matlab/+caffe/private文件夹里面找到一个叫caffe_.mexw64的文件啦。

python的wrapper类似,把pycaffe项目里的python目录改成你自己的(我用的是Anaconda),就能在python/caffe文件夹中生成_caffe.pyd的python dll文件。

三、测试

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

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

四、旧更新日志

2015/02/25 微软制作了一个caffe的windows版,他们更加专业,做出来的solution更加容易维护,第三方库完全由Nuget进行管理,几乎不用配置什么东西

2015/12/09 我总结了一下比较常见的问题,写在 里,而且未来会持续更新,如果碰到问题请先查看这个FAQ列表。

2015/09/14 Caffe现在支持单机多GPU啦,直接在caffe命令后面加--gpu=all或--gpu=0,1 即可使用多个GPU进行训练。

如果使用多gpu训练,不要直接点cmd窗口的X,最好使用Ctrl+C来终止程序,不然显卡驱动有时候会崩溃。

还有如果要在训练中途存一个snapshot,可以用Ctrl+Break。

因此一个正常的终止训练的操作是:

先Ctrl+Break保存当前工作状态,然后Ctrl+C终止训练。

2015/08/18 lmdb现在已经可以使用了,不过磁盘必须是NTFS格式的才可以。有需要的请到下载,并覆盖掉3rdparty/lib 中同名的文件,然后右键各个工程-仅用于项目-仅链接 即可,无需重新生成。

2015/08/08 有很多人报告(包括我自己)cuDNN v3 的速度比v2慢很多,因此master分支被我回滚回v2版本了,所幸cuDNN向下兼容,所以无需再次下载第三方库。

2015/08/06 新版caffe-windows上线了,由于vs2012编译速度太慢,从这个版本开始,不再对vs2012提供支持。

2015/07/07 现在caffe也支持VS2013了,第三方库全部更新至最新版本。请从下载并替换掉原有的build文件夹,其他步骤与先前版本一致。如果发现bug,烦请反馈给我,留言或在github上提issue均可。

2015/06/07 添加Insanity Layer(即randomized leaky rectified linear units),我也不知道为什么叫Insanity。。论文上说效果比PReLU还好些。

2015/06/05 将Caffe版本更新至6月5日的master分支,与上一版最大的不同在于matlab接口更加丰富,cudnn更新至v2版,所以要重新下载第三方库。

2015/06/05 Batch Normalization更新至新版,现在的默认mnist测试文件即为使用了Batch Normalization层的版本。

2015/05/29 发现上个版本的lmdb.lib使用了别人在vs2013下编译的版本,现改为vs2012版;

2015/05/29 添加了提取任意层特征的matlab接口,使用方法:

OUTPUT = caffe('get_features', INPUT, 'layername1,layername2...');11

例如:f = caffe('get_features', H, 'conv51,pool5'); 返回的f为2*1的cell类型,里面记录了层的名称和该层的特征。

现在有了更好的方法来获得每层特征,该函数不再更新。请参见新版matlab接口。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3