Advertisement

Ubuntu下运行Faster-Rcnn

阅读量:

Ubuntu下运行Faster-Rcnn

Faster-Rcnn 介绍

近日Shaoqing Ren发布了Faster-Rcnn的代码, 可以从他的GitHub仓库中获取, 其中还附带有详细的配置指南。
我随后在本地虚拟环境中进行了测试, 运行速度较之前有所提升。

SPP-Net、Fast-Rcnn、Faster-Rcnn均源自2014年Ross Girshick提出的RCNN模型的改进版本,在这一系列研究中包括SPP-Net与Faster-Rcnn均为Shaoqing Ren团队开发而成。此外部分来自微软亚研院的研究人员也对这一领域做出了重要贡献。不得不提的是Shaoqing Ren是一位非常杰出的人物,请访问他的个人主页了解其主要研究成果。他在ICCV、CVPR、ECCV三大顶会以及顶级期刊PAMI均发表了多篇论文,并在今年NIPS会议上发表了Faster-Rcnn相关成果这无疑是我的研究目标!

Faster RCNN相较于原始RCNN的主要改进在于通过将Object Proposal借助CNN网络实现,并将其与Detection相关的CNN网络进行融合而构建了一个端到端的目标检测框架。在之前的Fast RCNN中采用Selective Search方法生成Proposal时,在效果上较之其他方法较为出色但存在不足:该方法运行速度较慢且未能充分利用GPU加速带来的性能提升优势因而导致Proposal生成环节成为一个制约整体效率的关键环节。

而Faster-Rcnn有效解决了该问题,在提高Proposal生成速度的同时实现了两网整合优化。原先分离用于Detection的Proposal步骤被整合到一起使用,并通过梯度回传实现了两网间性能相互影响。在具体优化策略上采用的是交替更新策略:先固定其中一个网络参数进行更新后再切换至另一个网络进行调整如此往复以达到整体性能提升的目的

Faster-Rcnn 配置

参考Shaoqing Ren的配置说明:

(1) 安装Matlab 2014a
(2) 下载源代码

复制代码
    git clone --recursive https://github.com/ShaoqingRen/faster_rcnn.git

请将你之前配置好的Caffe Makefile.config复制到项目根目录下的./faster-rcnn/external/caffe,并更改为Matlab接口以兼容编译环境。确保在编译前已更改为Matlab接口后即可顺利编译。

复制代码
    make -j$(nproc)
    make matcaffe -j$(nproc)

A. 启动Faster-Rcnn系统时,请按照以下步骤操作:首先在faster-rcnn目录下打开Matlab软件;或者也可以直接启动Matlab后再切换到faster-rcnn目录进行操作。建议运行faster_rcnn_build.m脚本以完成编译过程;需要注意的是,在编译过程中如果未配备GPU硬件,则会在Compiling nms_gpu_mex阶段出现错误提示;但其他编译环节均能顺利完成;因此无需特别担心此问题的影响。
B. 启动相关软件后,默认会执行startup.m脚本;该脚本的作用是自动加载必要的工作路径;确保所有必要的资源和库能够被正确加载。
C. 完成初始化设置后,请下载并安装所需Faster-Rcnn模型文件;推荐从作者提供的GitHub仓库或百度网盘(链接:http://pan.baidu.com/s/1dDCsSm9)获取模型文件包;该途径可显著提升下载速度;下载完成后将压缩包解压至指定的`./faster-rcnn`目录中即可完成模型加载。
D. 在测试过程中,请避免直接运行包含GPU依赖的代码文件;即使代码注释中声明默认使用GPU处理也会导致无法正确运行出现错误提示;因此建议在没有GPU配置的情况下先运行基础测试代码。

复制代码
    %% -------------------- CONFIG --------------------
    opts.caffe_version          = 'caffe_faster_rcnn';
    opts.gpu_id                 = auto_select_gpu;
    active_caffe_mex(opts.gpu_id, opts.caffe_version);
    
    opts.per_nms_topN           = 6000;
    opts.nms_overlap_thres      = 0.7;
    opts.after_nms_topN         = 300;
    opts.use_gpu                = True;
    
    opts.test_scales            = 600;

修改后:

复制代码
    %% -------------------- CONFIG --------------------
    opts.caffe_version          = 'caffe_faster_rcnn';
    %opts.gpu_id                 = auto_select_gpu;
    %active_caffe_mex(opts.gpu_id, opts.caffe_version);
    
    opts.per_nms_topN           = 6000;
    opts.nms_overlap_thres      = 0.7;
    opts.after_nms_topN         = 300;
    opts.use_gpu                = false;
    
    opts.test_scales            = 600;

在运行此测试文件时,请注意以下几点:首先,默认加载的模型为VGG16架构。若在运行过程中遇到kill事件,则建议更换为ZF架构则更为合适。其次,请确保系统资源充足以避免内存不足的问题;对于配备有限内存设备的情况,请考虑使用小规模的ZF架构进行测试以获得更好的性能表现。

复制代码
    %% -------------------- INIT_MODEL --------------------
    %model_dir = fullfile(pwd, 'output', 'faster_rcnn_final', 'faster_rcnn_VOC0712_vgg_16layers'); %% VGG-16
    model_dir  = fullfile(pwd, 'output', 'faster_rcnn_final', 'faster_rcnn_VOC0712_ZF'); %% ZF
    proposal_detection_model    = load_proposal_detection_model(model_dir);

F.测试结果
我的CPU是I5-4460,测试速度是比Fast-Rcnn更快的。

复制代码
    fast_rcnn startup done
    001763.jpg (500x375): time 3.675s (resize+conv+proposal: 2.754s, nms+regionwise: 0.921s)
    004545.jpg (500x375): time 4.640s (resize+conv+proposal: 2.887s, nms+regionwise: 1.753s)
    000542.jpg (500x375): time 3.654s (resize+conv+proposal: 3.019s, nms+regionwise: 0.634s)
    000456.jpg (500x375): time 4.502s (resize+conv+proposal: 2.959s, nms+regionwise: 1.543s)
    001150.jpg (500x375): time 4.026s (resize+conv+proposal: 2.930s, nms+regionwise: 1.097s)
    mean time: 4.099s
    Cleared 0 solvers and 2 stand-alone nets
这里写图片描述
这里写图片描述

全部评论 (0)

还没有任何评论哟~