Widows下Faster R-CNN的MATALB配置(GPU)
说在前面,这篇是关于Windows下Faster R-CNN的MATLAB配置,GPU版本;CPU版本见:Widows下Faster R-CNN的MATALB配置(CPU);
相比较来说,CPU版本相对容易一些,因为涉及到GPU的计算,还需要配置CUDA以及CuDNN;
下面将分成三个部分进行介绍:
- 准备工作:下载caffe、faster rcnn源码、安装cuda、cudnn;
- VS2013编译caffe: 编译支持matlab接口的caffe;
- Faster R-CNN的MATLAB源码测试:
环境配置:
Windows 10
VS 2013
CUDA 7.5, CuDNN V5
MATLAB 2018a
1. 准备工作
1.1 安装CUDA、CuDNN
有关安装CUDA的过程见:Windows下安装CUDA8.0;该文章记录的是安装CUDA 8.0的过程以及在VS上的使用;
附加说明:
建议使用CUDA 7.5,CuDNN V5;
注意:将CuDNN压缩包解压到与下面的caffe与faster rcnn位于同级目录;
1.2 Faster R-CNN的MATLAB源码
下载faster_rcnn的matlab源码:下载地址;
得到./faster_rcnn文件夹;
打开matlab,定位到./faster_rnn/,目录结构如下图所示;

部分文件夹介绍:
experiment/:主要是用于testing/training的脚本;
external/:主要存放成功编译的提供matlab接口的caffe;(后面将花费很多时间在这个上面)
fetch_data/:作者提供的一些用于下载的脚本文件;
其中的都是一些依赖方法,大家可以去看一下;
1.3 Microsoft-Caffe
下载Microsoft提供的caffe:下载地址;
解压得到./caffe文件夹;
目前,我们得到两个文件夹;

1.4 matlab指定C/C++编译器
打开matlab,执行:
mex -setup
选择 Microsoft Visual C++ 2013 (C) 进行C语言编译,如下图:

2. VS2013编译Caffe
2.1 CommonSettings.props
打开./caffe/windows/,找到CommonSettings.props.example文件,复制后,将名称改为CommonSettings.props,如下图:

使用Notepad打开·./caffe/windows/CommonSettings.props,根据自己的配置,做如下修改:
- 第一处红框:使用CUDA加速计算、仅使用CPU计算,两者选其一;由于我们配置GPU,CUDA版本7.5,因此配置如图;
- 第二处红框:提供matlab接口;
- 第三处红框:指定CuDNN V5的路径,我的配置路径如图所示;也就是说将下载好的CuDNN压缩包解压到
G:\ObjectDetection\Faster R-CNN\Faster R-CNN_GPU中; - 第四处红框:修改两个位置,一个是MATLAB的安装路径,另一个如图;
补充说明:
有关<CudaArchitecture>compute_35,sm_35;compute_52,sm_52</CudaArchitecture>,可以修改为与自己显卡相对应的计算能力,提示说可以减少编译时间;
有关显卡的计算能力查询,见:英伟达GPU显卡计算能力评估(深度学习);


2.2 项目-属性配置
修改完成,使用VS2013打开./caffe/windows/Caffe.sln,双击即可;
打开之后,将Debug模式调成Release模式;(在调试的过程中,可能会重新加载项目,注意需要调整成Release)
之后,
libcaffe项目右键—> 属性—>配置属性—> C/C++ —> 常规,将将警告视为错误修改为否;
否则,编译libcaffe时会报下面的错误;
提示出现:error C2220:...,表示alt_sstream_impl.hpp文件编码格式错误;解决方法是:双击错误信息,弹出错误提示信息,确定后打开一个alt_sstream_impl.hpp文件,然后Ctrl+S进行保存即可;
2.3 添加roi_pooling_layer
打开解决方案资源管理器,
在项目libcaffe中添加roi_pooling_layer.cu, roi_pooling_layer.cpp, roi_pooling_layer.hpp:
libcaffe/cu/layers/右键—>添加—>现有项,添加./caffe/src/caffe/layers/roi_pooling_layers.cu文件;libcaffe/include/layers/右键—>添加—>现有项,添加加./caffe/include/caffe/layers/roi_pooling_layers.hpp文件;libcaffe/src/layers/右键—>添加—>现有项,添加./caffe/src/caffe/layers/roi_pooling_layers.cpp文件;
2.4 编译libcaffe
选中项目libcaff,右键—> 重新生成;
首先会自动还原NuGet包,然后生成成功;
======== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
(如果出现错误(不包含警告),仔细检查上面配置是否正确;)
2. 5 编译matcaffe
如果上面幸运的话,没出什么错,那这里也不会遇到什么麻烦了;
类似重新生成libcaffe,以同样的方式,选择matcaffe,右键—> 生成;
成功后,输出:
========== 生成: 成功 2 个,失败 0 个,最新 1 个,跳过 0 个 ==========
到目前为止,我们已经有了四个文件夹,如下图所示:
./caffe/:表示microsoft提供的caffe;./cuda/:表示CuDNN V5的文件,解压到该处;./faster_rcnn/:表示faster r-cnn的matlab源码;./NugetPackages/:就是在编译libcaffe时还原出来的NuGet包;- 另外,
./caffe/Build/x64/Release/下就是得到caffe;

其中,./caffe/Build/文件夹就是编译caffe得到文件;
如果在./caffe/Build/x64/Release/matcaffe+caffe/private/文件夹下,有caffe_.mexw64文件表明caffe的matlab接口编译正确;
3. Faster R-CNN的MATLAB源码测试
3.1 external
在Faster R-CNN的源码中,我们看到有./faster_rcnn/external/caffe/文件夹,该文件夹是为了存放编译好的caffe;
而在这里,并不打算将编译好的caffe复制到该文件夹下,而是通过设置系统环境变量和添加matlab搜索路径;
具体步骤如下:
- 将
./caffe/Build/x64/Release/添加到系统变量的path中; - 将
./caffe/Build/x64/Release/matcaffe/添加到matlab的搜索路径中; - 将
./caffe/matlab/+caffe/文件夹(不包含子文件夹)下的所有.m文件拷贝到/caffe/Build/x64/Release/matcaffe/+caffe/文件夹下; - 重启电脑,完成caffe在matlab中的配置;
3.2 Preparation for Testing
- Run
fetch_data/fetch_caffe_mex_windows_vs2013_cuda65.mto download a compiled Caffe mex (for Windows only).- Run
faster_rcnn_build.m- Run
startup.m
其中,
- 第0步:表示下载作者提供的编译好的caffe,因为我们已经编译好了,这里不需要执行;
- 第1步:执行
faster_rcnn_build.m;
打开faster_rcnn_build.m后,修改nvmex.m文件,如下图:
- 按照VS的安装位置修改红框内的路径;
- 第二个红框注意修改CUDA版本;
- 其他变量都是通过系统变量来获取得到的;

补充说明:
在使用Matlab 2018a执行faster_rcnn_build.m时,总是报错:
LIBCMT.lib(crt0dat.obj) : error LNK2005: _amsg_exit 已经在 MSVCRT.lib(MSVCR120.dll) 中定义
LIBCMT.lib(crt0dat.obj) : error LNK2005: _initterm_e 已经在 MSVCRT.lib(MSVCR120.dll) 中定义
...
不知道怎么解决,幸好没有将之前安装matlab 2016a卸载,使用matlab2016a再执行,就成功通过了;
第2步:执行
start_up.m文件;这是因为,我们没有将编译好的caffe放在
./external/caffe/文件夹下;因此,根据错误提示,需要在
./external/caffe/文件夹下新建一个空白名为matlab的文件夹;然后,再执行
start_up.m,就不会报错了;
3.2 Testing Demo
- Run
fetch_data/fetch_faster_rcnn_final_model.mto download our trained models.- Run
experiments/script_faster_rcnn_demo.mto test a single demo image.
其中,
第0步:下载作者提供的训练好的模型文件;
其中下载链接好像需要翻墙,如果有需要的话,可以从这里下载:下载地址,提取码:62n6;
下载完成后,解压到./faster_rcnn/中,覆盖原来的./faster_rcnn/output/文件夹,以及多出了五张图片;
第1步:执行脚本文件
experiments/script_faster_rcnn_demo.m,测试;当然该脚本中的参数,可以适当调整;
由于我的笔记本不行,即使换成ZF-Net也跑步了,检测的结果了,结果应该和Widows下Faster R-CNN的MATALB配置(CPU)是一致;
Widows下Faster R-CNN的MATALB配置(GPU)的更多相关文章
- Widows下Faster R-CNN的MATALB配置(CPU)
目录 1. 准备工作 2. VS2013编译Caffe 3. Faster R-CNN的MATLAB源码测试 说实话,费了很大的劲,在调试的过程中,遇到了很多的问题: 幸运的是,最终还是解决了问题: ...
- widows下 python环境变量配置
widows下 python环境变量配置 便于cmd命令行操作,例如:直接进入Python解释器环境.使用pip安装模块等.
- ubuntu下升级R版本
ubuntu下升级R版本 在测试<机器学习 实用案例解析>一书的邮件分类代码时,windows系统下rstudio中无法读取特殊字符,在ubuntu下可以.在ubuntu虚拟机下安装t ...
- CentOS下通过yum安装svn及配置
CentOS下通过yum安装svn及配置 1.环境centos5.5 2.安装svnyum -y install subversion 3.配置 建立版本库目录mkdir /www/svndata s ...
- Linux下oracle11gR2系统安装到数据库建立配置及最后oracle的dmp文件导入一站式操作记录
简介 之前也在linux下安装过oralce,可每次都是迷迷糊糊的,因为大脑一片空白,网上随便看见一个文档就直接复制,最后搞了乱七八糟,虽然装上了,却乱得很,现在记录下来,希望能给其他网上朋友遇到问题 ...
- CentOS 6.3下rsync服务器的安装与配置[转]
CentOS 6.3下rsync服务器的安装与配置 一.rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也 ...
- CentOS下Samba文件服务器的安装与配置
CentOS下Samba文件服务器的安装与配置 http://blog.csdn.net/limingzhong198/article/details/22064801 一.安装配置 1. 安装sam ...
- Linux 下的权限改变与目录配置
Linux 下的权限改变与目录配置 ./代表本目录的意思. (1):用户与用户组, 1:文件所有者,文件被某一用户所有 2:用户组: 对文件给与一个或者多个用户权限配置 3:其它人: (2):l ...
- r.js合并实践 --项目中用到require.js做生产时模块开发 r.js build.js配置详解
本文所用源代码已上传,需要的朋友自行下载:点我下载 第一步: 全局安装 npm install -g requirejs 第二步: 1.以下例子主要实现功能, 1)引用jq库获取dom中元素文本, ...
随机推荐
- 流畅python学习笔记:第十六章:协程
通常在python进行编程一般都是使用多线程或者多进程来实现.这里介绍另外一种并发的方式,就是协程,但和多线程以及多进程不一样的是,协程是运行在单线程当中的并发.来看下具体的例子: def simpl ...
- POJ 3714 Raid 近期对点题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- spring mvc头
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- 剑指Offer:对称的二叉树【28】
剑指Offer:对称的二叉树[28] 题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 题目分析 Java题解 /* publi ...
- windows下创建做一个类似与linux 的SFTP
在项目中经常需要做通过ftp上传文件到ftp上,如果服务器是windows版的服务器又该如何做呢,下面就给大家介绍一个软件:freeSSHd 软件地址 http://www.freesshd.c ...
- 20145239 实验一 Java开发环境的熟悉(Windows + IDEA)
实验一 Java开发环境的熟悉(Windows + IDEA) 实验内容 1.使用JDK编译.运行简单的Java程序:2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JV ...
- M1卡的工作原理【转】
本文转载自:https://blog.csdn.net/zmq5411/article/details/52042457 M1卡的工作原理 本篇对M1卡的编程是利用上述第二种方法.M1卡最为重要的优点 ...
- hihocoder hiho第38周: 二分·二分答案 (二分搜索算法应用:二分搜索值+bfs判断可行性 )
题目1 : 二分·二分答案 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回和上上回里我们知道Nettle在玩<艦これ>,Nettle在整理好舰队之后 ...
- Appium——api常用函数
appium常用函数介绍: 获取页面信息: 1. def get_current_activity(cls, driver): ''' 获取当前页面的activity :param drive ...
- 一小时搞明白自定义注解(Annotation)
原文链接:http://blog.csdn.net/u013045971/article/details/53433874 什么是注解 Annotation(注解)就是Java提供了一种元程序中的元素 ...