封装caffe-windows-cpu(支持模型有多个输出)

本文介绍了如何在Windows上封装一个基于CPU的Caffe库,以支持具有多个输出的模型。首先从指定源下载并解压caffe-windows,接着将第三方库的bin目录添加到环境变量或复制其DLL文件。使用VS2013打开解决方案,修改项目设置以构建动态库,并调整编译和链接选项以适应多输出需求。在Net类中添加输出Blob名称的打印功能,创建新的头文件和源文件进行封装。最后提供了封装代码的下载链接。

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

注意:该版本为CPU版本。


用到的caffe-windows来自:https://github.com/happynear/caffe-windows

先下载caffe-windows,解压;然后下载第三方库:https://pan.baidu.com/s/1eStyfrc  解压到caffe-windows-master,看起来是这样:caffe-windows-master\3rdparty

把3rdparty的bin加入环境变量或者复制里面的dll到build_cpu_only\caffelib下(cudnn的不需要)。

打开caffe-windows-master\src\caffe\proto,双击extract_proto.bat,然后用VS2013打开./build_cpu_only/MainBuilder.sln。请确保为Release x64


1.右键caffelib项目,重命名为:multi_recognition_cpu(按个人爱好,其他名字也行,不改也可以);再右键该项目——>属性——>配置属性——>常规:

配置类型修改为动态库(.dll),目标扩展名修改为.dll


2.C/C++——>常规:

附加包含目录:

../../3rdparty/include

../../src

../../include

C/C++——>预处理器:

添加 MULTI_RECOGNITION_API_EXPORTS


3.链接器——>常规:

附加库目录:

../../3rdparty/lib


链接器——>输入:

去掉cuda和cudnn的lib(cu开头和cudnn开头的lib)


4.修改net.hpp和net.cpp

为了支持模型多输出,要知道输出的顺序,所以把输出blob的名字输出到控制台,打开net.hpp,给Net类添加:

protected:
	 std::vector<std::string> outputblobnames;

以及:

public:
  inline std::vector<std::string> output_blobs_names() const
  {
	  return outputblobnames;
  }

net.cpp修改:(最后一行,把输出blob名字保存到vector中)

for (set<string>::iterator it = available_blobs.begin();
      it != available_blobs.end(); ++it) {
    LOG_IF(INFO, Caffe::root_solver())
        << "This network produces output " << *it;
    net_output_blobs_.push_back(blobs_[blob_name_to_idx[*it]].get());
    net_output_blob_indices_.push_back(blob_name_to_idx[*it]);
	outputblobnames.push_back(*it);
  }


这样,属性就配置好了代码也修改完了,再右键该项目,添加新建项,有四个:

classification.h

classification.cpp

multi_recognition_cpu.h

multi_recognition_cpu.cpp


classification.h:

#ifndef C
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值