Caff-SSD在Windows编译

首先,我想说的是如果想用VS2015或者更高版本的童鞋放弃吧鄙视,别入坑了。。。。

 

一开始就是用的VS2015+Cuda 8.0+Cudnn V5,弄到最后发现它本身是用VS2015之前的版本写的,带的库是vc12(VS2013),而VS2015则是vc14.(相信很多用VS的会遇到平台版本这个问题)

举个栗子:

LNK1104 无法打开文件“libboost_date_time-vc140-mt-gd-1_59.lib”

 

所以到最后跳到虚拟机里进行编译,环境是:Win7+VS2013+Cuda 7.5+Cudnn V4

(回来修改:阿勒,虚拟机跑不了,虚拟机的显卡驱动的虚拟的,不是Nvidia的)

下载不说了,到官网下载,直接搜Cuda或者Cudnn,去官网下相应的版本

Caffe-SSD的microsoft版本:https://github.com/conner99/caffe

 

一、配置CPU版本的

这个相对来说比较简单,是很容易成功的(如果是上面的环境的话)

1、解压github上下的文件caffe-ssd-microsoft.zip,进入~\caffe-ssd-microsoft\windows下。

     找到文件CommonSettings.props.example,修改其名称为:CommonSettings.props

     打开该文件:修改下面

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

其实这里就可以编译(这里只讲编译libcaffe,其他类似)了,但是接下来会报一些稀奇古怪的错,我整理了一下,全放在文章末尾,因为我根本不记得顺序了QAQ。

 

二、配置GPU版本的

修改CommonSettings.props

<CpuOnlyBuild>false</CpuOnlyBuild>
        <UseCuDNN>true</UseCuDNN>
        <CudaVersion>7.5</CudaVersion>

解压官网下的cudnn-7.0-win-x64-v4.0.zip,里面有个cuda文件夹,把该文件夹放到自己定义的路径下,如我的是:

D:\SoftWare\Caff_Enviro\cudnn

修改CommonSettings.props

<!-- CuDNN 3 and 4 are supported -->
        <CuDnnPath>D:\SoftWare\Caff_Enviro\cudnn\</CuDnnPath>

右键libcaff,生成,不要以为一下就能成功,bug都在文章末尾。

不过,最后弄出来的时候感觉世界都明亮了。。。。

 

 

 

下面就是一大波僵尸bug来袭了,我尽力回忆。。

Bug1、

这是代码有错误,慢慢修改

一定要注释掉 detection_output_layer.hpp和detection_output_layer.cu和detection_output_layer.cpp有关regex 和rv的引用和语句 

 

error MSB3721: 命令“……”已退出,返回代码为2

Bug2、

无法打开cudnn.h,这个是你配置GPU的时候修改的CommonSettings.props路径是否正确了,一定是cuda文件的上一级路径。

Bug3、

编译项目,报错“未能生成object文件(视警告为错误)”,解决方法:右击选择属性->配置属性->c/c++->常规,将“警告视为错误”的选项改“否”

 

Bug4、

GLOG_NO_ABBREVIATED_SEVERITIES

解决:在工程加上预编译宏GLOG_NO_ABBREVIATED_SEVERITIES

C/C++   -->  预处理器   -->   预处理器定义   -->  加上GLOG_NO_ABBREVIATED_SEVERITIES

 

Bug5、

找不到".\caffe\3rdparty\hungarian.h"文件

解决:在路径.\caffe-master\include\caffe\3rdparty\下添加hungarian.h文件。编译项目,报错:找不到".\src\caffe\3rdparty\hungarian.cpp"文件,在路径.\caffe-master\src\caffe\3rdparty\下添加hungarian.cpp文件

在这里找这个文件,链接:http://pan.baidu.com/s/1mhYuf7y 密码:3jp2

Bug6、

expected an identifier in caffe.pb.h 

解决:修改bbox_util.cu,注释掉所有带thrust的语句

修改detection_output_layer.cu和detection_output_layer.cpp文件,注释掉所有regex和rv的语句
 //boost::regex exp("\"(null|true|false|-?[0-9]+(\\.[0-9]+)?)\"");

//std::string rv = boost::regex_replace(ss.str(), exp, "$1");  
//outfile << rv.substr(rv.find("["), rv.rfind("]") - rv.find("["))  
//    << std::endl << "]" << std::endl; 

修改detection_output_layer.hpp,注释#include“boost/regex.hpp”
//#include <boost/regex.hpp>  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值