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

为了避免下文的某些地方和实际阅读的童鞋的不一样,给出我自己的caffe的配置过程,http://blog.youkuaiyun.com/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,所以在程序第一行添加

  1. #define USE_OPENCV 1  
  2. #define CPU_ONLY 1  
#define USE_OPENCV 1
#define CPU_ONLY 1

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

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

debug编译配置

包含目录:

  1. E:\caffe\include;  
  2. E:\NugetPackages\glog.0.3.3.0\build\native\include;  
  3. E:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include;  
  4. E:\NugetPackages\OpenCV.2.4.10\build\native\include;  
  5. E:\NugetPackages\boost.1.59.0.0\lib\native\include;  
  6. E:\NugetPackages\gflags.2.1.2.1\build\native\include;  
  7. E:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\include;  
  8. E:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\include;  
  9. E:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\include;  
  10. E:\NugetPackages\protobuf-v120.2.6.1\build\native\include;  
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额外加下面的目录(根据自己实际安装目录修改):

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

库目录:

  1. E:\caffe\Build\x64\Debug;  
  2. E:\NugetPackages\OpenCV.2.4.10\build\native\lib\x64\v120\Debug;  
  3. E:\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  4. E:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  5. E:\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  6. E:\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  7. E:\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  8. E:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib;  
  9. E:\NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Debug\dynamic;  
  10. E:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\x64;  
  11. E:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\lib\x64\v120\Debug;  
  12. E:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\lib\x64;  
  13. E:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\x64;  
  14. E:\NugetPackages\protobuf-v120.2.6.1\build\native\lib\x64\v120\Debug;  
  15. E:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib;  
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额外加下面的目录(根据自己实际安装目录修改):

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

链接->输入:

  1. caffe.lib;  
  2. compute_image_mean.lib;  
  3. convert_imageset.lib;  
  4. convert_mnist_data.lib;  
  5. libcaffe.lib;  
  6. opencv_highgui2410d.lib;  
  7. opencv_imgproc2410d.lib;  
  8. opencv_objdetect2410d.lib;  
  9. opencv_core2410d.lib;  
  10. opencv_ml2410d.lib;  
  11. libboost_date_time-vc120-mt-gd-1_59.lib;  
  12. libboost_filesystem-vc120-mt-gd-1_59.lib;  
  13. libboost_system-vc120-mt-gd-1_59.lib;  
  14. libglogD.lib;  
  15. hdf5.lib;  
  16. hdf5_cpp.lib;  
  17. hdf5_f90cstub.lib;  
  18. hdf5_fortran.lib;  
  19. hdf5_hl.lib;  
  20. hdf5_hl_cpp.lib;  
  21. hdf5_hl_f90cstub.lib;  
  22. hdf5_hl_fortran.lib;  
  23. hdf5_tools.lib;  
  24. szip.lib;  
  25. zlib.lib;  
  26. LevelDbD.lib;  
  27. lmdbD.lib;  
  28. libprotobufD.lib;  
  29. libopenblas.dll.a;  
  30. gflags_nothreadsd.lib;  
  31. gflagsd.lib;  
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额外加下面的目录(根据自己实际安装目录修改):

  1. cublas.lib  
  2. cuda.lib  
  3. cublas_device.lib  
  4. cudnn.lib  
  5. cudadevrt.lib  
  6. cudart.lib  
  7. cudart_static.lib  
  8. cudnn_static.lib  
  9. cufft.lib  
  10. cufftw.lib  
  11. curand.lib  
  12. cusolver.lib  
  13. cusparse.lib  
  14. nppc.lib  
  15. nppi.lib  
  16. npps.lib  
  17. nvblas.lib  
  18. nvcuvid.lib  
  19. nvrtc.lib  
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编译配置

包含目录:

  1. E:\caffe\include;  
  2. E:\NugetPackages\boost.1.59.0.0\lib\native\include;  
  3. E:\NugetPackages\gflags.2.1.2.1\build\native\include;  
  4. E:\NugetPackages\glog.0.3.3.0\build\native\include;  
  5. E:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\include;  
  6. E:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\include;  
  7. E:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\include;  
  8. E:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\include;  
  9. E:\NugetPackages\OpenCV.2.4.10\build\native\include;  
  10. E:\NugetPackages\protobuf-v120.2.6.1\build\native\include;  
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额外加下面的目录(根据自己实际安装目录修改):

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

库目录:

  1. E:\caffe\Build\x64\Release;  
  2. E:\NugetPackages\boost_chrono-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  3. E:\NugetPackages\boost_date_time-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  4. E:\NugetPackages\boost_filesystem-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  5. E:\NugetPackages\boost_system-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  6. E:\NugetPackages\boost_thread-vc120.1.59.0.0\lib\native\address-model-64\lib;  
  7. E:\NugetPackages\gflags.2.1.2.1\build\native\x64\v120\dynamic\Lib;  
  8. E:\NugetPackages\glog.0.3.3.0\build\native\lib\x64\v120\Release\dynamic;  
  9. E:\NugetPackages\hdf5-v120-complete.1.8.15.2\lib\native\lib\x64;  
  10. E:\NugetPackages\LevelDB-vc120.1.2.0.0\build\native\lib\x64\v120\Release;  
  11. E:\NugetPackages\lmdb-v120-clean.0.9.14.0\lib\native\lib\x64;  
  12. E:\NugetPackages\OpenBLAS.0.2.14.1\lib\native\lib\x64;  
  13. E:\NugetPackages\OpenCV.2.4.10\build\native\lib\x64\v120\Release;  
  14. E:\NugetPackages\protobuf-v120.2.6.1\build\native\lib\x64\v120\Release;  
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额外加下面的目录(根据自己实际安装目录修改):

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

链接->输入:

  1. opencv_core2410.lib;  
  2. opencv_highgui2410.lib;  
  3. opencv_imgproc2410.lib;  
  4. caffe.lib;  
  5. libcaffe.lib;  
  6. gflags.lib;  
  7. libglog.lib;  
  8. libopenblas.dll.a;  
  9. libprotobuf.lib;  
  10. leveldb.lib;  
  11. lmdb.lib;  
  12. hdf5.lib;  
  13. hdf5_hl.lib;  
  14. libboost_date_time-vc120-mt-s-1_59.lib;  
  15. libboost_filesystem-vc120-mt-s-1_59.lib;   
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额外加下面的目录(根据自己实际安装目录修改):

  1. cublas.lib  
  2. cuda.lib  
  3. cublas_device.lib  
  4. cudnn.lib  
  5. cudadevrt.lib  
  6. cudart.lib  
  7. cudart_static.lib  
  8. cudnn_static.lib  
  9. cufft.lib  
  10. cufftw.lib  
  11. curand.lib  
  12. cusolver.lib  
  13. cusparse.lib  
  14. nppc.lib  
  15. nppi.lib  
  16. npps.lib  
  17. nvblas.lib  
  18. nvcuvid.lib  
  19. nvrtc.lib  
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的头文件,输入如下程序

  1. #include <caffe/common.hpp>  
  2. #include <caffe/layer.hpp>  
  3. #include <caffe/layer_factory.hpp>  
  4. #include <caffe/layers/input_layer.hpp>  
  5. #include <caffe/layers/inner_product_layer.hpp>  
  6. #include <caffe/layers/dropout_layer.hpp>  
  7. #include <caffe/layers/conv_layer.hpp>  
  8. #include <caffe/layers/relu_layer.hpp>  
  9.   
  10. #include <caffe/layers/pooling_layer.hpp>  
  11. #include <caffe/layers/lrn_layer.hpp>  
  12. #include <caffe/layers/softmax_layer.hpp>   
  13.   
  14. namespace caffe  
  15. {  
  16.       
  17.     extern INSTANTIATE_CLASS(InputLayer);  
  18.     extern INSTANTIATE_CLASS(InnerProductLayer);  
  19.     extern INSTANTIATE_CLASS(DropoutLayer);  
  20.     extern INSTANTIATE_CLASS(ConvolutionLayer);  
  21.     REGISTER_LAYER_CLASS(Convolution);  
  22.     extern INSTANTIATE_CLASS(ReLULayer);  
  23.     REGISTER_LAYER_CLASS(ReLU);  
  24.     extern INSTANTIATE_CLASS(PoolingLayer);  
  25.     REGISTER_LAYER_CLASS(Pooling);  
  26.     extern INSTANTIATE_CLASS(LRNLayer);  
  27.     REGISTER_LAYER_CLASS(LRN);  
  28.     extern INSTANTIATE_CLASS(SoftmaxLayer);  
  29.     REGISTER_LAYER_CLASS(Softmax);  
  30.           
  31. }  
#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都可以运行。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值