caffe-ocr win7+vs2017 cpu编译(非MKL版本)

一、源码下载

  1、下载源码,caffe-ocr 项目地址:https://github.com/senlinuc/caffe_ocr

  下载下来如下,caffe-vsproj里是作者建好的工程,工程是vs2015的:

  

 

 

二、编译

  1、打开caffe-vsproj中的caffe.sln,因为我的是vs2017打开会提示要升级啥的,就让它升级了。然后工程打开后有三个项目,其中caffe和libclassification两个加载失败,右键项目编辑caffe.vcxproj和libClassification.vcxproj两个修改里面的平台(改140->141),还有两个cuda相关路径删掉,然后重新加载项目就加载成功了。

  2、选择 Release和win32,直接编译出现很多错误,作者直接给的库好像64位的,基本不能用。

  3、只能自己重新编译那些依赖库

    (1)caffe项目:    

      libprotobuf.lib库,地址:https://github.com/protocolbuffers/protobuf

      gflags.lib,地址:https://github.com/gflags/gflags

      glog.lib,地址:https://github.com/google/glog

      hdf5.lib,hdf5_hl.lib,地址:https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.0/bin/

 

      libopenblas.lib,地址:https://github.com/xianyi/OpenBLAS/releases

      项目属性里修改头文件路径(**\include\,有的路径还到下一层目录,具体缺少哪个头文件源文件夹下搜一下然后添加路径);

      lib路径(**\lib\);

      附加依赖项(libprotobuf.lib,gflags.lib,glog.lib,hdf5.lib,hdf5_hl.lib,libopenblas.lib);

      预处理器定义(WIN32,NDEBUG,_CONSOLE,_LIB,CPU_ONLY,_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING,_CRT_SECURE_NO_WARNINGS,HAVE_CXX11_ATOMIC,GLOG_NO_ABBREVIATED_SEVERITIES,NO_STRICT,WIN32_LEAN_AND_MEAN,NOMINMAX);

      链接器-输入-模块定义文件(Source.def删掉);

      然后单独编译caffe项目成功;

    (2)libclassification项目

      用的lib,也是上面编译好的这几个替代作者的那几个,以及include头文件也替代,不过多了一个opencv,我用的是3415,作者是2410,把作者的2410都替代了,也包括2410的opencv   include目录头文件。

      同上,项目属性里修改头文件路径(**\include\,有的路径还到下一层目录,具体缺少哪个头文件源文件夹下搜一下然后添加路径);

      lib路径(**\lib\);

      附加依赖项(opencv_world3415.lib,zlib.lib,gflags.lib,glog.lib,libopenblas.lib,libprotobuf.lib,libprotoc.lib,leveldb.lib,hdf5.lib,hdf5_hl.lib,Shlwapi.lib,comctl32.lib);

      预处理器定义(WIN32,_CRT_SECURE_NO_WARNINGS,CPU_ONLY,NDEBUG,_WINDOWS,_USRDLL,LIBCLASSIFICATION_EXPORTS,_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING,HAVE_CXX11_ATOMIC);

      链接器-输入-模块定义文件(Source.def删掉);

      C++ - 预编译头 选择不使用预编译头;

      然后单独编译libclassification项目成功,后面再编译更快的MKL版本;

    (3)ocr_test项目

      项目属性里修改头文件路径(**\include\,有的路径还到下一层目录,具体缺少哪个头文件源文件夹下搜一下然后添加路径);

      lib路径(**\lib\);

      附加依赖项(libClassification.lib,opencv_world3415.lib);

      预处理器定义(WIN32,NDEBUG,_CONSOLE,CPU_ONLY);

      链接器-输入-模块定义文件(Source.def删掉);

      C++ - 预编译头 选择不使用预编译头;

      常规-字符集-选择使用多字节字符集

      编译出现map错误,添加#include <map> ,以及修改 //#pragma comment(lib,"libClassificationCPU-MKL.lib") 到 #pragma comment(lib,"libClassification.lib")

,然后单独编译ocr_test项目成功;

 

三、测试

  下载模型文件(https://github.com/senlinuc/caffe_ocr),在此地址里作者给了已经训练好的模型文件下载路径。

  修改main函数里的路径,测试如下:

  

 

 

四、下一步编译MKL版本

 

posted on 2021-10-12 18:11  WenJXUST  阅读(116)  评论(0)    收藏  举报