Caffe三方库相关资料、编译方法和注意事项[补坑中]
2017-05-16 11:18
323 查看
微在Nuget上传了Caffe所需的所有3rd-Library,因此不想了解和编译Caffe三方库的同学,可以略过以下内容。
附微软提供的Windows版本Caffe
Google
对于Windows版本,需要对代码进行如下修改:
- 注释掉c.cc文件中的
- 在port.h文件中
如果在Visual Studio 2015中,还需要进行如下修改:
- x64平台中添加预定义宏WIN32
- 注释掉port_win.h中的
- boost.chrono (libboost_chrono-*.lib)
- boost.data_time (libboost_date_time-*.lib)
- boost.filesystem (libboost_filesystem-*.lib)
- boost.system (libboost_system-*.lib)
- boost.thread (libboost_thread-*.lib)
- boost.python (libboost_python-*.lib)
其中,boost.python仅在使用宏
Boost编译方法:
解压下载的压缩包之后,在Visual Studio的编译环境下运行boottrap.bat,得到b2.exe之后,运行如下命令:
由于我目前下载的Boost 1.64版本,python版本3.5,以上命令编译无法得到libboost_python-*.lib库,因此我参考Boost官方文档添加了配置文件user-config.jam,内容如下:
相应的编译命令修改为:
这样编译后会得到libboost_python3-*.lib,但是在项目中依然会提示找不到libboost_python-*.lib库文件,因此需要将libboost_python库添加到忽略列表中,添加对libboost_python3的引用;
参考
[1] http://stackoverflow.com/questions/15881771/boost-1-53-python-fatal-error-lnk1104-boost-python-vc110-mt-gd-1-53-lib
[2] http://blog.csdn.net/zengraoli/article/details/70187556
[3] http://blog.csdn.net/lpp0900320123/article/details/52014741
如果使用VS2013进行编译,则需要对openblas_config.h文件进行修改:
修改为
4000
附微软提供的Windows版本Caffe
glog
由Google提供的日志模块,通过设置FLAGS_log_dir来保存训练和测试日志。通过CMake生成VS项目并编译,仅编译Release版本即可,似乎在Caffe中不能够使用静态库(反正我从来没配置成功过);
gflags
命令行参数解析,解析CMD命令参数,可以通过宏DEFINE_string定义参数以及参数说明,并用
ParseCommandLineFlags函数对参数进行解析。通过CMake生成VS项目并编译;
protobuf
存储数据结构信息,构造网络模型,保存网络权值等。通过CMake生成VS项目并编译;googletest
用于对代码进行测试,如果不编译和运行caffe中的测试代码,则仅需要头文件。在编译protobuf的时候,如果需要生成相应的测试项目,也需要googletest和googlemock;leveldb
由Google提供的一个高效的key-value数据库。Git项目需要切换到WINDOWS分支,并参考WINDOWS文档说明进行编译,该项目需要Boost的支持;对于Windows版本,需要对代码进行如下修改:
- 注释掉c.cc文件中的
#include <unistd.h>
- 在port.h文件中
#include "port/port_android.h"之后添加
#elif defined(LEVELDB_PLATFORM_WINDOWS) #include "port\port_win.h" #endif
如果在Visual Studio 2015中,还需要进行如下修改:
- x64平台中添加预定义宏WIN32
- 注释掉port_win.h中的
#define snprintf _snprintf
Boost
提供智能指针以及多线程和时间函数的支持。如果在VS2013中使用Boost1.60以上的版本,需要将VS升级到Update 5;Caffe中仅使用了以下6个静态库:- boost.chrono (libboost_chrono-*.lib)
- boost.data_time (libboost_date_time-*.lib)
- boost.filesystem (libboost_filesystem-*.lib)
- boost.system (libboost_system-*.lib)
- boost.thread (libboost_thread-*.lib)
- boost.python (libboost_python-*.lib)
其中,boost.python仅在使用宏
WITH_PYTHON_LAYER时才会被用到(“*”会随着编译环境以及Boost版本变化),另外,如果要使用libboost_python的静态库,在项目中需要添加宏定义
BOOST_PYTHON_STATIC_LIB,否则默认链接boost.python的动态库;
Boost编译方法:
解压下载的压缩包之后,在Visual Studio的编译环境下运行boottrap.bat,得到b2.exe之后,运行如下命令:
b2 stage toolset=msvc-14.0 address-model=64
由于我目前下载的Boost 1.64版本,python版本3.5,以上命令编译无法得到libboost_python-*.lib库,因此我参考Boost官方文档添加了配置文件user-config.jam,内容如下:
# Configure specific Python version. using python : 3.5 #: C:/Program Files/Python35/python.exe #: C:/Program Files/Python35/include #directory that contains pyconfig.h #: C:/Program Files/Python35/libs #directory that contains python27.lib #: <toolset>msvc ;
相应的编译命令修改为:
b2 stage toolset=msvc-14.0 address-model=64--user-config=user-config.jam
这样编译后会得到libboost_python3-*.lib,但是在项目中依然会提示找不到libboost_python-*.lib库文件,因此需要将libboost_python库添加到忽略列表中,添加对libboost_python3的引用;
参考
[1] http://stackoverflow.com/questions/15881771/boost-1-53-python-fatal-error-lnk1104-boost-python-vc110-mt-gd-1-53-lib
[2] http://blog.csdn.net/zengraoli/article/details/70187556
[3] http://blog.csdn.net/lpp0900320123/article/details/52014741
OpenCV
在Caffe中仅用OpenCV读取图象数据。官方提供x64预编译版本;OpenBlas
科学运算库,可以用Intel MKL替代如果使用VS2013进行编译,则需要对openblas_config.h文件进行修改:
#if (defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ (__GNUC__ >= 3 && !defined(__cplusplus)) || \ _MSC_VER >= 1800) // Visual Studio 2013 supports complex
修改为
#if (defined(__STDC_IEC_559_COMPLEX__) || __STDC_VERSION__ >= 199901L || \ (__GNUC__ >= 3 && !defined(__cplusplus))) // Visual Studio 2013 does not support complex
HDF5
HDF是用于存储和分发科学数据的一种自我描述、多对象文件格式,可以用于对Caffe输入数据进行存储和读取,可以用于回归网络中浮点型标签的存储。官方提供预编译版本;LMDB
非关系型数据库,不支持超过2G以上的数据。创建静态库项目,将midl.h、lmdb.h以及midl.c、mdb.c文件到项目中并进行编译;Nvidia
CUDA
Nvidia GPU运算库。由于CUDA仅能够在x64平台下运行,因此Caffe不支持x86的GPU运算,但是可以在x86平台下编译CPU版本;CUDNN
CUDA加速,下载压缩包后解压,将解压的文件拷贝到CUDA对应的文件夹中即可;GCC
x64平台中需要libgcc_s_seh-1.dll、libgcc_s_sjlj-1.dll、libgfortran-3.dll、libquadmath-0.dll;4000
相关文章推荐
- NSBundle(获取资源路径方法)的相关使用方法和注意事项
- gcc 编译选项及相关注意事项
- pthread-win32库编译及使用方法注意事项
- pthread-win32库编译及使用方法注意事项
- hadoop初学入门之一:相关博文资料与注意事项
- 线程同步相关知识,synchronized方法注意事项
- caffe在编译时注意事项
- 编译动态库与静态库的注意事项和方法
- mysql主从服务器的创建方法和需要注意的相关事项
- JSP四种注释方法及相关注意事项
- Application和四大组件启动时的方法顺序和相关注意事项
- pthread-win32库编译及使用方法注意事项
- VS2008环境下CEGUI 0.7.1及相关工具的编译(转载 + 额外的注意事项)
- 使用ILSpy软件反编译.Net应用程序的方法及注意事项
- 编译动态库与静态库的注意事项和方法
- window下编译Caffe时(Windows10+Caffe+CUDA7.5+VS2013)注意事项
- Qt Creator中编译gRPC相关项目的注意事项(windows平台)
- WebService中方法的相关注意事项
- 自定义View相关可以重写的方法及作用 需要注意的事项
- jdbctemplate方法在调用时 的相关配置以及注意事项