Fast RCNN

Fast RCNN是加强版的SPPnet,SPPnet的细节可以参考这里,Fast RCNN相比于RCNN在时间和性能上都做了改进。它避免对一幅图片的多个proposal分别计算CNN特征(大量的重复计算),而是对整幅图提取CNN特征之后,再划分对应proposal,从而加提高了检测效率;同时对RCNN的pipeline方法做了一定整合,提升了检测性能。

1 论文信息

发表会议:ICCV2015

代码

2 Motivation

SPPnet基于RCNN做改进,它主要有2个亮点:

  • 原图不用resize到统一大小,可直接输入网络,避免失真。因为CNN限制输入的size主要是因为全连接层的结点数是固定的,卷积层是无所谓的,所以在SPPnet中,对最后一个卷积层的结果做固定尺度(如1×1, 2×2, 4×4)的spatial pooling,使得全连接层结点数固定。
  • 不用对原图的多个互相重叠的proposal各自计算CNN特征,只需对原图计算CNN特征,然后将原图proposal的位置映射到特征图上即可。

Faster CNN借鉴了这两点,并且为了整合检测pipeline,将object classification和spatial location都整合到一个网络中,使得它们可以协同地训练。

3 Method

3.1 网络结构

3.2 主要步骤

  • 经过多层的卷积和pooling得到一组feature map
  • 通过SPP net中的ROI projection在这层feature map上找到原图的proposal对应的区域(ROI)
  • 利用spatial pooling的思路,对每个ROI做pooling。具体来说就是把h×w的ROI划分为H×W个grid/sub-window,每个grid大小是h/H × w/W,在每个grid内取max。
  • 把ROI pooling layer对每个ROI(对应回原图就是每个proposal)输出的H×W长的max pooling feature vector接全连接层
  • 全连接层之后有两个输出层,一个softmax分类器,输出该ROI对应的proposal的object类别,一个是bounding box回归层,输出category specific bounding box

3.3 网络训练

3.3.1 用预训练的网络初始化

  • 首先对于pretrained ImageNet CNN,把最后一个pooling layer改为ROI pooling layer,并且设置H和W使得spatial pooling feature的维度和全连接层第一层的结点数一致。
  • 把网络的最后一个全连接层和softmax层换成两个输出层(object分类和bbox回归)。

3.3.2 finetune网络

  • share computation

在RCNN中和SPPnet中,特征提取的CNN是直接使用pretrained model,检测误差用来训练后面的分类和bbox回归。因为Fast RCNN是对整张图计算CNN特征之后才划分proposal,通过这种共享,可以将误差回传到特征提取部分。

  • loss function

object class有K类,对于每个ROI,p是一个K+1维概率值,是该ROI对应与原图的proposal的分类打分。u代表object class的ground truth,tu=(tux,tuy,tuw,tuh)是该ROI属于类别u时预测的bbox,v是bbox的ground
truth。 

L(p,u,tu,v)=Lcls(p,u)+λ[u≥1]Lloc(tu,v)

其中Lcls(p,u)=−logpu是预测结果中真实类别u的概率, Lloc(tu,v)=∑i∈x,y,w,hsmmothL1(tui−vi)是把预测结果中真实类别对应的bbox和groundtruth的坐标值进行比较,这里smooth函数的设计使得对outlier更加鲁棒。

  • batch sampling

网络训练时的batch size会对训练结果有一定影响,论文中经过多次实验确定参数。

  • bp

重新定义了网络结构和网络训练的目标函数后,要重新推导BP,主要是ROI pooling layer的误差回传,实质上这里和max pooling是类似的,因为是grid内取max,所以需要找到grid内的max值的位置然后收集残差即可:∂L∂xi=∑r∑j[i=i∗(r,j)]∂L∂yrj

4 Summary

Fast RCNN通过ROI映射使得一幅图中的proposal共享卷积层,大大减少前向传播的运算量,使得检测速度更快。进一步整合RCNN中的特征提取和目标检测,联合训练网络,提高了检测性能。

时间: 2024-12-25 20:18:08

Fast RCNN的相关文章

rcnn、fast-rcnn和faster-rcnn

作者:铁胆火车侠 链接:https://www.zhihu.com/question/35887527/answer/99689222 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. R-CNN:针对区域提取做CNN的object detction. <img src="https://pic1.zhimg.com/36bb2ec6663657eff23edcef578fe3b0_b.jpg" data-rawwidth="62

【一图看懂】计算机视觉识别简史:从 AlexNet、ResNet 到 Mask RCNN

[导读]Medium 用户 Đặng Hà Thế Hiển 制作了一张信息图示,用专业.简洁并且最有吸引力的方式--信息图示,讲述计算机视觉(CV)物体识别的现代史.不仅总结了CV 6 大关键技术和目标识别的重要概念,整个信息图示从 2012年 AlexNet 赢得了 ILSVRC(ImageNet大规模视觉识别挑战赛)说起,总结了至今关键的 13 大模型及其概念,比如 VGGNet.ResNet.Inception 到最近的 Mask RCNN.作者特别强调,所有参考文献都精挑细选,以便读者

faster rcnn test demo ---repaired for video input and save the image, label, score et al. into .mat format

faster rcnn test demo ---repaired for video input and save the image, label, score et al. into .mat format function script_faster_rcnn_demo() close all; clc; clear mex; clear is_valid_handle; % to clear init_key run(fullfile(fileparts(fileparts(mfile

Faster RCNN 运行自己的数据,刚开始正常,后来就报错: Index exceeds matrix dimensions. Error in ori_demo (line 114) boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(

function script_faster_rcnn_demo() close all; clc; clear mex; clear is_valid_handle; % to clear init_key run(fullfile(fileparts(fileparts(mfilename('fullpath'))), 'startup')); %% -------------------- CONFIG -------------------- opts.caffe_version = '

大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术

雷锋网按:作者山世光博士,中科院计算所研究员.博导,主要从事计算机视觉.模式识别.机器学习等相关研究工作.迄今已发表CCF A类论文50余篇,全部论文被Google Scholar引用9000余次.现任IEEE TIP,TIPNeurocomputing和PRL等国际学术刊物的编委(AE).研究成果曾获2005年度国家科技进步二等奖和2015年度国家自然科学奖二等奖. 本文中,山世光博士主要给我们分享梳理了物体检测技术的近期进展.  1.  Viola-Jones人脸检测器   物体检测在整个计

一文读懂深度学习框架下的目标检测(附数据集)

从简单的图像分类到3D位置估算,在机器视觉领域里从来都不乏有趣的问题.其中我们最感兴趣的问题之一就是目标检测. 如同其他的机器视觉问题一样,目标检测目前为止还没有公认最好的解决方法.在了解目标检测之前,让我们先快速地了解一下这个领域里普遍存在的一些问题. 目标检测 vs 其他计算机视觉问题图像分类 在计算机视觉领域中,最为人所知的问题便是图像分类问题. 图像分类是把一幅图片分成多种类别中的一类.  ImageNet是在学术界使用的最受欢迎的数据集之一,它由数百万个已分类图像组成,部分数据用于Im

干货 | 算法工程师入门第三期——黄李超讲物体检测

雷锋网(公众号:雷锋网)按:地平线大牛讲堂算法工程师入门第三期重磅来袭!本期地平线深度学习算法工程师黄李超将为大家带来物体检测相关内容的分享,全文约8000字,建议阅读时间20分钟,欢迎转发或收藏. 前期传送门: 干货 | 算法工程师入门第一期--罗恒讲深度学习 干货 | 算法工程师入门第二期--穆黎森讲增强学习(一) 干货 | 算法工程师入门第二期--穆黎森讲增强学习(二) 本次分享主要针对一些对深度学习和物体检测感兴趣的同学.内容主要包括: 第一,什么是物体检测,如何去评价一个物体里系统的好

目标检测101:一文带你读懂深度学习框架下的目标检测

从简单的图像分类到3D位置估算,在机器视觉领域里从来都不乏有趣的问题.其中我们最感兴趣的问题之一就是目标检测. 如同其他的机器视觉问题一样,目标检测目前为止还没有公认最好的解决方法.在了解目标检测之前,让我们先快速地了解一下这个领域里普遍存在的一些问题. 目标检测 vs 其他计算机视觉问题图像分类 在计算机视觉领域中,最为人所知的问题便是图像分类问题. 图像分类是把一幅图片分成多种类别中的一类. ImageNet是在学术界使用的最受欢迎的数据集之一,它由数百万个已分类图像组成,部分数据用于Ima

人脸检测发展:从VJ到深度学习(下)

雷锋网按:本文作者邬书哲, 中科院计算所智能信息处理重点实验室VIPL课题组博士生,研究方向:目标检测,尤其关注基于深度学习的目标检测方法. |深度学习给目标检测带来的变革      人脸检测作为一种特定类型目标的检测任务,一方面具有其自己鲜明的特点,需要考虑人脸这一目标的特殊性,另一方面其也和其它类型目标的检测任务具有一定的共性,能够直接借鉴在通用目标检测方法上的研究经验.     目标检测任务作为一个分类问题,其不仅受益于计算机视觉领域相关技术的不断发展,在机器学习领域的研究进展同样也对目标