Widows下Faster R-CNN的MATALB配置(GPU)

目录

  • 1. 准备工作
  • 2. VS2013编译Caffe
  • 3. Faster R-CNN的MATLAB源码测试



说在前面,这篇是关于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

  1. Run fetch_data/fetch_caffe_mex_windows_vs2013_cuda65.m to download a compiled Caffe mex (for Windows only).
  2. Run faster_rcnn_build.m
  3. Run startup.m

其中,

  1. 第0步:表示下载作者提供的编译好的caffe,因为我们已经编译好了,这里不需要执行;
  2. 第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再执行,就成功通过了;


  1. 第2步:执行start_up.m文件;

    这是因为,我们没有将编译好的caffe放在./external/caffe/文件夹下;

    因此,根据错误提示,需要在./external/caffe/文件夹下新建一个空白名为matlab的文件夹;

    然后,再执行start_up.m,就不会报错了;

3.2 Testing Demo

  1. Run fetch_data/fetch_faster_rcnn_final_model.m to download our trained models.
  2. Run experiments/script_faster_rcnn_demo.m to test a single demo image.

其中,

  • 第0步:下载作者提供的训练好的模型文件;

    其中下载链接好像需要FQ,如果有需要的话,可以从这里下载:下载地址,提取码:62n6;

    下载完成后,解压到./faster_rcnn/中,覆盖原来的./faster_rcnn/output/文件夹,以及多出了五张图片;

  • 第1步:执行脚本文件experiments/script_faster_rcnn_demo.m,测试;

    当然该脚本中的参数,可以适当调整;

由于我的笔记本不行,即使换成ZF-Net也跑步了,检测的结果了,结果应该和Widows下Faster R-CNN的MATALB配置(CPU)是一致;

原文地址:https://www.cnblogs.com/chenzhen0530/p/10954733.html

时间: 2024-08-08 10:13:29

Widows下Faster R-CNN的MATALB配置(GPU)的相关文章

Ubuntu下NFS和TFTP服务器的配置

一.NFS的配置 NFS主要用于Libera系统的软件安装,数据存储等.通常NFS安装于一台Linux PC机上,在Libera的嵌入式系统上挂载该远程文件系统,可以方便的为Libera安装和更新软件,以及导出采集到的数据.1.Ubuntu默认没有nfs服务,需要自己安装nfs服务    $sudo apt-get install nfs-kernel-server2.新建NFS目录用于文件共享,修改NFS配置文件/etc/exports    2.1在/opt下新建目录nfs(当然也可以按你自

Linux下oracle系统安装到数据库建立配置及最后oracle的dmp文件导入一站式操作记录

简介 之前也在linux下安装过oralce,可每次都是迷迷糊糊的,因为大脑一片空白,网上随便看见一个文档就直接复制,最后搞了乱七八糟,虽然装上了,却乱得很,最近几天因为离职,交接的时候又要安装oracle,发现老遇到错误,导致装不上了,通过这次我好好的研究了下oracle,非要搞清楚它,现在记录下来,希望能给其他网上朋友遇到问题时提供点帮助,该篇文件借鉴大量网友的总结,首先谢谢他们! 安装环境 Linux 服务器: SuSe11-linux      64/32位 Oracle服务器: Ora

RHEL Linux6.3下的vnc安装和多用户配置

VNC (Virtual Network Computer)是虚拟网络计算机的缩写.VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的.VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美. 在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和vncconnect.大多数情况下用户只需要其中的两个命令

在Linux下安装R语言软件

安装环境: centos.R3.0.1 1.在终端下下载: #cd /usr/local/ #wget http://mirror.bjtu.edu.cn/cran/src/base/R-3/R-3.0.1.tar.gz  (终端下输入) 2.解压文件: #tar -zxvf R-3.0.1.tar.gz #cd R-3.0.1 3.安装文件 #yum install gcc-gfortran #yum install glibc-headers #yum install gcc-c++ #yu

Linux系统下Oracle 11g的安装和配置使用

因项目需求,需要在64位linux系统中安装Oracle 11g,在网上查了很多内容,结合自己的实际经验,终于安装成功,记录下来,分享给有需要的同志们,不谢哈!^_^ 一.修改操作系统核心参数 在Root用户下执行以下步骤: 1)修改用户的SHELL的限制,修改/etc/security/limits.conf文件 输入命令:vi /etc/security/limits.conf,按i键进入编辑模式,将下列内容加入该文件. ? oracle soft nproc 2047 oracle har

Linux 下的权限改变与目录配置

Linux 下的权限改变与目录配置 ./代表本目录的意思. (1):用户与用户组, 1:文件所有者,文件被某一用户所有 2:用户组:    对文件给与一个或者多个用户权限配置 3:其它人: (2):linux用户身份与用户组记录的文件 1:root 相关信息记录到 /etc/passwd中 2:个人密码记录到/etc/shadow中 3:linux所有的组名记录在/etc/group中 (3):linux文件权限概念 :permission deny,无权限的提示 (4):linux 的权限属性

Mac下搭建svn服务器和XCode配置svn

http://www.cnblogs.com/iihe602/p/3277735.html Mac下搭建svn服务器和XCode配置svn 分类: iOS2013-01-14 14:36 5781人阅读 评论(0) 收藏 举报 先打开命令行终端. 1.创建svn repository svnadmin create /yourpath/svnroot/repository 2.配置svn用户权限. / yourpath /svnroot/repository/conf/目录下存在3个文件: au

Linux下oracle11gR2系统安装到数据库建立配置及最后oracle的dmp文件导入一站式操作记录(转)

简介 之前也在linux下安装过oralce,可每次都是迷迷糊糊的,因为大脑一片空白,网上随便看见一个文档就直接复制,最后搞了乱七八糟,虽然装上了,却乱得很,最近几天因为离职,交接的时候又要安装oracle,发现老遇到错误,导致装不上了,通过这次我好好的研究了下oracle,非要搞清楚它,现在记录下来,希望能给其他网上朋友遇到问题时提供点帮助,该篇文件借鉴大量网友的总结,首先谢谢他们! 安装环境 Linux 服务器: SuSe11-linux      64/32位 Oracle服务器: Ora

CentOS 6.3下rsync服务器的安装与配置[转]

CentOS 6.3下rsync服务器的安装与配置 一.rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录. Rsync 是用于取代rcp的一个工具,Rsync使用所谓的 “Rsync 算法” 来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快.您可以参考 How Rsync Works A Prac