caffe windows7 64x 无GPU vs2013环境下编译与调用

来源:互联网 发布:烟花算法引论pdf下载 编辑:程序博客网 时间:2024/06/01 19:00

首先要在微软的github上下载windows版本的caffe。

下载后,将caffe-master/windows/CommonSettings.props.example复制为CommonSettings.props,用vs打开,修改如下:      

 <CpuOnlyBuild>true</CpuOnlyBuild> <UseCuDNN>false</UseCuDNN>

python的相关项设置如下:

    <PropertyGroup Condition="'$(PythonSupport)'=='true'">        <PythonDir>D:\WinPython-64bit-2.7.10.1\python-2.7.10.amd64</PythonDir>        <LibraryPath>$(PythonDir)\libs;$(LibraryPath)</LibraryPath>        <IncludePath>$(PythonDir)\include;$(IncludePath)</IncludePath>    </PropertyGroup>

其中python版本最好用2.7的,使用3.5的貌似会不兼容,个人没尝试过。

设置完后,可以下载caffe依赖库,打开Caffe.sln编译时vs会自动下载,但是速度比较慢,我从大神的博客里找到了一个网盘下载版,并放到了我的网盘中,可以在这里下载:

链接:http://pan.baidu.com/s/1gfkq3Z1 密码:kea8
下载完后,把NugetPackages与caffe-master放在同级目录下,然后打开Caffe.sln,即可编译。

Release版本的编译一般不会出错,但是Debug版本的编译在我这里遇到了报错,是与python有关的,原因好像是编译调用python的object.h和pyconfig.h的时候,加载了错误的lib。

博客“c++调用python链接问题及解决”中提到了解决方法。

问题:链接时报告1>pythonIniti.obj : error LNK2019: 无法解析的外部符号 __imp___Py_NegativeRefcount,该符号在函数 "public: __thiscall boost::python::api::object_base::~object_base(void)" (??1object_base@api@python@boost@@QAE@XZ) 中被引用1>pythonIniti.obj : error LNK2001: 无法解析的外部符号 __imp___Py_RefTotal解决方法修改两个头文件1 注释掉object.h第56行//#define Py_TRACE_REFS2 pyconfig.h 375行//#    define Py_DEBUG

这两个头文件都在python目录下的include里面。修改完成后再编译debug版即可编译成功。

当caffe全部编译完成后,可以用cmd打开caffe-master\Build\x64\Release中的caffe.exe运行,来测试是否编译成功。

自己写的程序调用编译好的caffe库时,需要在vs里设置inclulde、附加库目录和lib的名字。

include的设置:


附加库目录的设置:


lib的设置:

caffe.liblibcaffe.libcompute_image_mean.libconvert_imageset.libconvert_mnist_data.libopencv_highgui2410d.libopencv_imgproc2410d.libopencv_objdetect2410d.libopencv_core2410d.libopencv_ml2410d.liblibboost_date_time-vc120-mt-gd-1_59.liblibboost_filesystem-vc120-mt-gd-1_59.liblibboost_system-vc120-mt-gd-1_59.liblibglog.libhdf5.libhdf5_cpp.libhdf5_f90cstub.libhdf5_fortran.libhdf5_hl.libhdf5_hl_cpp.libhdf5_hl_f90cstub.libhdf5_hl_fortran.libhdf5_tools.libszip.libzlib.libLevelDb.liblmdb.liblibprotobuf.liblibopenblas.dll.agflags_nothreadsd.libgflagsd.lib

项目属性中将上面的几项设置好之后,就可以调用caffe及相关依赖库了。

有一点需要注意的是,如果不使用GPU,需要在自己的代码里加上#define CPU_ONLY 1  的代码,否则即使你调用的是无GPU版本的caffe,在编译程序时,也会去调用cuda的相关库。






原创粉丝点击