zoukankan      html  css  js  c++  java
  • 用vs2013创建caffe工程

    caffe C++接口使用配置

    含caffe源码的配置方式(CPU only)

    • 首先使用源码按照官方的方式编译Debug版Caffe【官方参考】,我们需要编译后所生成的如下文件:

      • caffeproto-d.lib
      • caffe.pb.h
        > 注:因为编译caffe时的依赖文件很难下载,所以这里给出了百度网盘的分享链接,下载完成之后放在C盘下当前用户的文件夹中(以我的机器为例:C:UsersHJiahu.caffedependenciesdownloadlibraries_v140_x64_py35_1.1.0.tar.bz2
    • 编译完caffe后将install文件夹下的include文件夹复制出来与caffe源码(位于根目录中src目录下)一起放在同一个文件夹caffe_src下(这样做是为了方便。只有编译后的include文件夹下才有caffe.pb.h文件)。caffe_src的结构如下:

      - caffe_src 
      	- include
      		- caffe
      			- layers
      			- proto
      				- caffe.pb.h
      			- util
      			...
      	- src
      		- caffe
      			- layers
      			- solvers
      			- util
      			...
      
    • 创建vs控制台空项目(注意将解决方案平台设置为x64,而不是x86),将上面caffe_src中所有的代码都添加当前项目中(注意:所有代码包含子目录中的代码,为了方便可以在项目中添加新的筛选器,便于文件的管理)。

    • 将对应的依赖文件添加到项目中

      • 依赖的头文件

        • I:learn_caffelearn_caffecaffe_srcinclude,这个就是上面提到的从install文件夹中复制出来的include目录
        • C:***.caffedependencieslibraries_v140_x64_py35_1.1.0librariesinclude,这个和下面的内容源于编译caffe时自动下载的依赖包。
        • C:***.caffedependencieslibraries_v140_x64_py35_1.1.0librariesincludeoost-1_61
      • 在预处理定义中添加如下内容

        	CPU_ONLY
        	_SCL_SECURE_NO_WARNINGS
        	_CRT_SECURE_NO_DEPRECATE
        	_CRT_NONSTDC_NO_DEPRECATE
                            USE_LMDB
                            USE_OPENCV
        
      • 库目录(将上面提到的caffeproto-d.lib也复制到下面的文件夹中)

        • C:***.caffedependencieslibraries_v140_x64_py35_1.1.0librarieslib

        • 为了方便,我使用我自己编译的opencv库,因为只要添加一个库就好:opencv_world320d.lib,同样要把对应的库文件夹添加到项目中。

        • 所有依赖库文件如下所示(其实我并不知道哪些是必须的所以就把能加的都加上去了):

          caffeproto-d.lib
          opencv_world320d.lib
          boost_chrono-vc140-mt-gd-1_61.lib
          boost_date_time-vc140-mt-gd-1_61.lib
          boost_filesystem-vc140-mt-gd-1_61.lib
          boost_system-vc140-mt-gd-1_61.lib
          boost_thread-vc140-mt-gd-1_61.lib
          boost_timer-vc140-mt-gd-1_61.lib
          libopenblas.dll.a
          caffehdf5_D.lib
          caffehdf5_cpp_D.lib
          caffehdf5_hl_D.lib
          caffehdf5_hl_cpp_D.lib
          caffezlibd.lib
          caffezlibstaticd.lib
          gflagsd.lib
          glogd.lib
          leveldbd.lib
          libboost_chrono-vc140-mt-gd-1_61.lib
          libboost_system-vc140-mt-gd-1_61.lib
          libboost_timer-vc140-mt-gd-1_61.lib
          libcaffehdf5_D.lib
          libcaffehdf5_cpp_D.lib
          libcaffehdf5_hl_D.lib
          libcaffehdf5_hl_cpp_D.lib
          libprotobufd.lib
          libprotocd.lib
          lmdbd.lib
          snappy_staticd.lib
          snappyd.lib
                          ntdll.lib  
          
    • 在编译的时候系统会提示无法打开lib*.lib文件,我的系统中主要是boost中的一些lib。其实这些lib在文件夹中是存在的只是命名的方式不对。将库文件夹中对应的lib文件前面加上lib三个字母就可以了。例如我的系统中提示找不到boost_thread-vc140-mt-gd-1_61.lib,在同一个文件夹中创建一个副本并重新命名为libboost_thread-vc140-mt-gd-1_61.lib就行了。

    • 添加一个main函数后就可以一步一步调试caffe代码了(我直接从源代码tools文件夹中把caffe.cpp复制出来作为调试入口文件)。

    不含caffe源码的配置方式(仅使用caffe的头文件 CPU only)

    编译caffe (这里编译release版)

    配置vs2013

    • 配置当前项目为Release x64

    • 包含目录为

      G:caffe_reluildlibrariesincludeoost-1_61
      G:caffe_reluildlibrariesinclude
      G:caffe_reluildinstallinclude
      
    • 库目录为

      G:caffe_reluildlib
      G:caffe_reluildlibrarieslib
      C:CNNsopencv_with_worldx64vc12lib
      
    • 添加两个预处理宏

      USE_OPENCV
      CPU_ONLY
      
    • 附加库为

      opencv_world310.lib
      gflags.lib
      glog.lib
      libprotobuf.lib
      libprotoc.lib
      caffe.lib
      proto.lib
      
    • 与上同,修改boost_thread-vc120-mt-1_61.lib等文件的名称

    不含caffe源码的配置方式(仅使用caffe的头文件 GPU cuda&cudnn)

    先使用官网提供的方法编译caffe
    下面的库需要加入到vs2013中

    opencv_world320d.lib
    caffe-d.lib
    caffeproto-d.lib
    libprotobufd.lib
    libopenblas.dll.a
    gflagsd.lib
    glogd.lib
    cublas.lib
    cuda.lib
    cudnn.lib
    cudart.lib
    curand.lib
    caffehdf5_D.lib
    caffehdf5_hl_D.lib
    caffezlibd.lib
    libboost_thread-vc140-mt-gd-1_61.lib (如果是vs2013的话这里是120,具体boost库的名称要按照编译器的提示添加)
    
  • 相关阅读:
    自定义的事件管理器
    解决修改表结构,添加外键时出现“约束冲突”的错误
    jQuery学习(二) 自定义扩展函数
    iBt(001-004)原文与试译
    老婆怀孕了!(5+6)
    Mac_如何打开系统文件library
    Mac_如何通过命令行装包到ios手机
    MAC干净卸载pycharm
    selenium自动化_如何启动safari浏览器
    selenium自动化_click方法点击无效
  • 原文地址:https://www.cnblogs.com/jiahu-Blog/p/6423962.html
Copyright © 2011-2022 走看看