tiny-dnn import caffe's model

最近的项目需要使用tiny-dnn导入caffe模型,这两天研究了一下这部分的内容,希望能给有相同需求的小伙伴提供一些参考。

需要用到的工具

  • Google protobuf
  • OpenCV
  • Visual Studio
  • CMake
  • Git

Google protobuf

介绍

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python等各种语言的 API。

windows环境下的配置

  • 从开始菜单中打开vs2015 x64 本机工具命令提示符
    tiny-dnn import caffe's model_第1张图片
    tiny-dnn import caffe's model_第2张图片

  • 切换至所需的目录
    例如:C:\Path\to>C:\Path\to>对应的是你想要把protobuf放置的目录)

  • 创建一个文件夹,用来放置protobuf的头文件
    C:\Path\to>mkdir install

  • 添加CMake和Git命令到环境变量中
    tiny-dnn import caffe's model_第3张图片

  • 使用git命令,从github上clone最新的源文件至本地
    C:\Path\to> git clone -b master https://github.com/google/protobuf.git

  • 进入protobuf

 C:\Path\to>cd protobuf
 C:\Path\to\protobuf>
  • 进入cmake文件夹
 C:\Path\to\protobuf\gmock>cd cmake
 C:\Path\to\protobuf\cmake>
  • 创建一个临时的build文件夹,并进入
C:\Path\to\protobuf\cmake>mkdir build & cd build
C:\Path\to\protobuf\cmake\build>
  • 创建Visual Studio 解决方案文件
    C:\Path\to\protobuf\cmake\build>mkdir solution & cd solution
    省略\solution>cmake -G "Visual Studio 12 2013 Win64" -DCMAKE_INSTALL_PREFIX=../../../../install ../..

  • 在solution文件夹中找到.sln文件,用Visual Studio打开,点击“生成解决方案”。然后就会在solution文件夹中的Debug/Release中生成响应的lib文件
    tiny-dnn import caffe's model_第4张图片
    tiny-dnn import caffe's model_第5张图片

  • 到这里protobuf就配置完成了

OpenCV配置(略)

tiny-dnn引入Caffe Model

下载tiny-dnn至本地

使用protoc生成caffe.pb.cc 和 caffe.pb.h

  • C:\Path\to\protobuf\cmake\build\solution\Release目录下找到protoc.exe文件
  • 将protoc.exe和caffe_converter.cpp(链接地址)放置在同一文件夹下
  • 在命令行中使用命令protoc caffe.proto --cpp_out=./生成caffe.pb.cc 和 caffe.pb.h

新建Visual Studio项目工程(可以选择win32控制台应用程序)

  • 配置opencv相关内容

  • 将caffe.pb.cc和caffe.pb.h、caffe_converter.cpp(tiny-dnn给出的tiny-dnn import caffe’s model的应用例子)拷贝至项目文件夹下,并包含进项目中
    tiny-dnn import caffe's model_第6张图片

  • 在包含目录中添加tiny-dnn的相关路径(添加头文件的相关内容)
    自己的路径名\tiny-dnn-master

  • 在包含目录中添加protobuf的相关路径(一开始使用git命令下载protobuf的路径)(添加头文件的相关内容)
    自己的路径名\protobuf\src

  • 在属性》链接器》输入》附加依赖项中添加编译生成的protobuf的相关lib名称,这些lib放在
    自己路径\protobuf\cmake\build\solution\Release
    tiny-dnn import caffe's model_第7张图片

tiny-dnn import caffe's model_第8张图片

  • 在属性》链接器》常规》附加库目录中添加上述lib文件的路径
    自己路径\protobuf\cmake\build\solution\Release

以上,就完成了相关配置工作

相关问题

  • 如果出现了以下类似的问题:
    error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease"
    解决方法:
    在工程上右键-》属性-》c/c++-》代码生成-》运行库
    改成(release为MT,debug为MTD)即可解决:

  • tiny-dnn给出的caffe_converter.cpp,其中main函数是有参数的,如果点击“本地windows调试器”运行代码时,会因为获取不到参数而报错,可以选择生成》生成解决方案 的方式来生成exe文件,然后通过命令行的方式调用该exe文件;也可以在 项目属性》调试》命令参数 中填加参数,这样就可以点击“本地windows调试器”运行代码。
    tiny-dnn import caffe's model_第9张图片

运行结果

tiny-dnn import caffe's model_第10张图片

你可能感兴趣的:(实验室项目)