windows下让自己的程序调用caffe库

 

为了避免下文的某些地方和实际阅读的童鞋的不一样,给出我自己的caffe的配置过程,http://blog.csdn.net/qq_14845119/article/details/52415090

同时,本人将NugetPackages根目录下的glog,LevelDB,protobuf目录中lib下面的debug目录中相应的lib后面都加上D重命名了一下。

NOW,go ahead!

 

 

本文将通过一个最简单的caffenet的调用,讲解windows下的caffe库调用。

首先,新建一个端口程序,将E:\caffe\examples\cpp_classification目录下的classification.cpp,复制到刚才新建的工程,并添加进去。然后去caffe zoo下载

deploy.prototxt

bvlc_reference_caffenet.caffemodel

imagenet_mean.binaryproto

synset_words.txt

cat.jpg

并放到刚才新建的工程目录中。

对原始classification.cpp进行相应的修改,

由于本人电脑没有GPU,所以在程序第一行添加

 

#define USE_OPENCV 1
#define CPU_ONLY 1

 

在main函数中做如下修改,即将刚才下载的模型文件导进去。

 

然后按照下面的进行相应的配置。

debug编译配置

包含目录:

E:\caffe\include;
E:\NugetPackages\glog.0.3.3.0\build\native\include;
E:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include;
E:\NugetPackages\OpenCV.2.4.10\build\native\include;
E:\NugetPackages\boost.1.59.0.0\lib\native\include;
E:\NugetPackages\gflags.2.1.2.1\build\native\include;
E:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\include;
E:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\include;
E:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\include;
E:\NugetPackages\protobuf-v120.2.6.1\build\native\include;

 

使用GPU额外加下面的目录(根据自己实际安装目录修改):

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

 

库目录:

 

E:\caffe\Build\x64\Debug;
E:\NugetPackages\OpenCV.2.4.10\build\native\lib\x64\v120\Debug;
E:\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib;
E:\NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Debug\dynamic;
E:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\x64;
E:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\lib\x64\v120\Debug;
E:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\lib\x64;
E:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\x64;
E:\NugetPackages\protobuf-v120.2.6.1\build\native\lib\x64\v120\Debug;
E:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib;

使用GPU额外加下面的目录(根据自己实际安装目录修改):

 

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

 

 

 

链接->输入:

caffe.lib;
compute_image_mean.lib;
convert_imageset.lib;
convert_mnist_data.lib;
libcaffe.lib;
opencv_highgui2410d.lib;
opencv_imgproc2410d.lib;
opencv_objdetect2410d.lib;
opencv_core2410d.lib;
opencv_ml2410d.lib;
libboost_date_time-vc120-mt-gd-1_59.lib;
libboost_filesystem-vc120-mt-gd-1_59.lib;
libboost_system-vc120-mt-gd-1_59.lib;
libglogD.lib;
hdf5.lib;
hdf5_cpp.lib;
hdf5_f90cstub.lib;
hdf5_fortran.lib;
hdf5_hl.lib;
hdf5_hl_cpp.lib;
hdf5_hl_f90cstub.lib;
hdf5_hl_fortran.lib;
hdf5_tools.lib;
szip.lib;
zlib.lib;
LevelDbD.lib;
lmdbD.lib;
libprotobufD.lib;
libopenblas.dll.a;
gflags_nothreadsd.lib;
gflagsd.lib;

 

使用GPU额外加下面的目录(根据自己实际安装目录修改):

cublas.lib
cuda.lib
cublas_device.lib
cudnn.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cudnn_static.lib
cufft.lib
cufftw.lib
curand.lib
cusolver.lib
cusparse.lib
nppc.lib
nppi.lib
npps.lib
nvblas.lib
nvcuvid.lib
nvrtc.lib

 

 

release编译配置

 

 

包含目录:

E:\caffe\include;
E:\NugetPackages\boost.1.59.0.0\lib\native\include;
E:\NugetPackages\gflags.2.1.2.1\build\native\include;
E:\NugetPackages\glog.0.3.3.0\build\native\include;
E:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\include;
E:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\include;
E:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\include;
E:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include;
E:\NugetPackages\OpenCV.2.4.10\build\native\include;
E:\NugetPackages\protobuf-v120.2.6.1\build\native\include;

 

使用GPU额外加下面的目录(根据自己实际安装目录修改):

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

 

库目录:

 

E:\caffe\Build\x64\Release;
E:\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\lib;
E:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib;
E:\NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Release\dynamic;
E:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\x64;
E:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\lib\x64\v120\Release;
E:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\lib\x64;
E:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\x64;
E:\NugetPackages\OpenCV.2.4.10\build\native\lib\x64\v120\Release;
E:\NugetPackages\protobuf-v120.2.6.1\build\native\lib\x64\v120\Release;

 

使用GPU额外加下面的目录(根据自己实际安装目录修改):

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

 

链接->输入:

 

opencv_core2410.lib;
opencv_highgui2410.lib;
opencv_imgproc2410.lib;
caffe.lib;
libcaffe.lib;
gflags.lib;
libglog.lib;
libopenblas.dll.a;
libprotobuf.lib;
leveldb.lib;
lmdb.lib;
hdf5.lib;
hdf5_hl.lib;
libboost_date_time-vc120-mt-s-1_59.lib;
libboost_filesystem-vc120-mt-s-1_59.lib; 

使用GPU额外加下面的目录(根据自己实际安装目录修改):

 

cublas.lib
cuda.lib
cublas_device.lib
cudnn.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cudnn_static.lib
cufft.lib
cufftw.lib
curand.lib
cusolver.lib
cusparse.lib
nppc.lib
nppi.lib
npps.lib
nvblas.lib
nvcuvid.lib
nvrtc.lib

 

 

 

 

 

错误解决指引

(1)

 

c/c++->命令行,输入-D_SCL_SECURE_NO_WARNINGS

(2)

 

 

 

 

在工程中添加一个head.h的头文件,输入如下程序

#include <caffe/common.hpp>
#include <caffe/layer.hpp>
#include <caffe/layer_factory.hpp>
#include <caffe/layers/input_layer.hpp>
#include <caffe/layers/inner_product_layer.hpp>
#include <caffe/layers/dropout_layer.hpp>
#include <caffe/layers/conv_layer.hpp>
#include <caffe/layers/relu_layer.hpp>

#include <caffe/layers/pooling_layer.hpp>
#include <caffe/layers/lrn_layer.hpp>
#include <caffe/layers/softmax_layer.hpp> 

namespace caffe
{
	
	extern INSTANTIATE_CLASS(InputLayer);
	extern INSTANTIATE_CLASS(InnerProductLayer);
	extern INSTANTIATE_CLASS(DropoutLayer);
	extern INSTANTIATE_CLASS(ConvolutionLayer);
	REGISTER_LAYER_CLASS(Convolution);
	extern INSTANTIATE_CLASS(ReLULayer);
	REGISTER_LAYER_CLASS(ReLU);
	extern INSTANTIATE_CLASS(PoolingLayer);
	REGISTER_LAYER_CLASS(Pooling);
	extern INSTANTIATE_CLASS(LRNLayer);
	REGISTER_LAYER_CLASS(LRN);
	extern INSTANTIATE_CLASS(SoftmaxLayer);
	REGISTER_LAYER_CLASS(Softmax);
		
}

并且在classification.cpp中输入#include"head.h",调用该.h头文件。

(3)

 

将E:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib目录下的8个文件全部复制到工程目录下。

 

程序运行

当上面的所有问题都解决后,运行程序就会生成如下的结果,效果和linux上运行的效果是一样的。debug和release都可以运行。

 

 

 

 

 

 

 

 

 

 

 

评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值