《使用VS2013调用caffe》项目配置教程

本文介绍如何在VS2013环境下配置Caffe,并提供了详细的步骤指导,包括环境变量设置、项目配置、依赖项添加及解决常见错误等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c++调用caffe在caffe的example目录里面有。这篇博客并不分析调用的代码,而是VS2013对caffe调用的配置。


运行caffe所用到的第三方库可以在这里下载,该库已经包含opencv3.0。将第三方库解压至caffe主目录。


这里以配置release模式x64程序为例。以下编译CPU模式。


首先需要设置系统的环境变量。在环境变量的path中添加第三方库的bin目录。例如:E:\caffe\caffe-windows-master\3rdparty\bin


接下来的VS工程的配置

首先我们建立一个项目,新建项目->控制台程序->空项目。

1. 添加VC++包含目录

包含目录有三个:

.\3rdparty\include
.\include
.\src

2. 添加库目录

库目录有两个:

.\bin
.\3rdparty\lib

3. 添加附加依赖项

caffelib.lib
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
libprotobuf.lib
hdf5_tools.lib
hdf5_hl_fortran.lib
hdf5_fortran.lib
hdf5_hl_f90cstub.lib
hdf5_f90cstub.lib
hdf5_cpp.lib
hdf5_hl_cpp.lib
hdf5_hl.lib
hdf5.lib
zlib.lib
szip.lib
opencv_world300.lib
shlwapi.lib
leveldb.lib
libglog.lib
lmdb.lib
libopenblas.dll.a
libgflags.lib

4. 添加预处理器定义

_VARIADIC_MAX=10
WIN32
NDEBUG
_CONSOLE
CPU_ONLY
USE_OPENCV
USE_LEVELDB
USE_LMDB
_SCL_SECURE_NO_WARNINGS

5. 运行库改成多线程DLL

项目属性- -> C/C++ --> 运行库 --> 多线程DLL(/MD)


6. 编译运行

将caffe里example中cpp_classification的代码复制过来,编译运行。



7. 在代码中添加头文件

如此运行一般来说会报错。除非你直接在官方的解决方案上建立的工程。

报错信息为:

F0519 14:54:12.494139 14504 layer_factory.hpp:77] Check failed: registry.count(t ype) == 1 (0 vs. 1) Unknown layer type: SoftMax (known types: Convolution )




解决的方法很简单。新建一个头文件,比如:head.h。在头文件中添加如下代码:

#include "caffe/common.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/concat_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(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);
	extern INSTANTIATE_CLASS(ConcatLayer);

}

看自己报错的信息,少什么层就加上什么。每个网络用到的层不一样,所以以上代码并不是对所有工程通用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值