为了避免下文的某些地方和实际阅读的童鞋的不一样,给出我自己的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都可以运行。