2D目标检测:RCNN系列文章

RCNN系列介绍了从最初的区域提案网络(RCNN)到Fast RCNN,再到Faster RCNN的演化,提高了目标检测的速度和准确性。Fast RCNN通过端到端训练和RoI池化层减少了计算冗余,而Faster RCNN引入了区域提案网络(RPN)实现更快的检测。最后,Mask RCNN增加了分割功能。这些方法在PASCAL VOC和MS COCO等数据集上进行了训练和评估。
摘要由CSDN通过智能技术生成

RCNN

标题:Rich feature hierarchies for accurate object detection and semantic segmentation
作者:Ross Girshick 作者主页
来源:arXiv:1311.2524
代码:MATLAB/Caffe

要解决的问题

  • 利用深度网络对目标进行定位
  • 利用少量带注释的检测数据训练大容量模型。
    在这里插入图片描述

RCNN算法分为4个步骤:

1、 候选区域生成: 采用Selective Search 方法生成1K~2K个候选区域

2、 特征提取: 对每个候选区域,使用CNN提取特征
输入:227*227(候选区域采用采用各向异性缩放、padding=16处理后的精度最高——下图中D列的第二行)
在这里插入图片描述
采用AlexNet,在ImageNet数据集上先进行预训练,然后用得到的参数作为初始化值,在PASCAL VOC数据集上再一次训练,进行fine-tuning(迁移学习
在这里插入图片描述在这里插入图片描述
输出:4096维的特征向量

3、 类别判断: 特征送入每一类的SVM分类器,判别是否属于该类
CNN在训练的时候,对训练数据做了比较宽松的标注,比如一个bounding box可能只包含物体的一部分,那也把它标注为正样本,用于训练;采用这个方法的主要原因在于因为CNN容易过拟合,所以需要大量的训练数据,所以在CNN训练阶段我们是对Bounding box的位置限制条件限制的比较松(IoU只要大于0.5都被标注为正样本了);然而svm训练的时候,因为SVM适用于少样本训练,所以对于训练样本数据的IoU要求比较严格,我们只有当bounding box把整个物体都包含进去了,我们才把它标注为物体类别,然后训练SVM。

4、位置精修: 使用回归器精细修正候选框位置

Fast RCNN

标题:Fast R-CNN
作者:Ross Girshick 作者主页
来源:arXiv:1504.08083
代码:作者——Python and C++ (using Caffe) // tensorflow

RCNN存在的问题

  1. 训练分多步骤
  2. 时间和空间开销大(RCNN一张图像内候选框之间大量重叠,提取特征操作冗余;在训练SVM和回归的时候需要用网络训练的特征作为输入,特征保存在磁盘上再读入的时间开销较大)
  3. 测试比较慢(每张图片的每个region proposal都要做卷积,重复操作太多)

在Fast RCNN之前提出过SPPnet来解决R-CNN中重复卷积问题,但SPPnet仍然存在与R-CNN类似的缺陷:

  1. 训练分多步骤
  2. 空间开销大

主要贡献

  1. 训练是端到端的,使用多任务损失函数(同时进行多类检测的可能性)
  2. mAP高于R-CNN、SPPnet
  3. 训练时可以更新所有网络层
  4. 特性缓存都暂存在显存中,不需要磁盘存储

框架
在这里插入图片描述

  • 输入:224 x 224的归一化图像+RoIs
  • 输出
    分类:K+1类
    bounding box偏移: t k = ( t x k , t y k , t w k , t h k , ) t^{k}=(t_x^{k},t_y^{k},t_w^{k},t_h^{k},) tk=(txk,tyk,twk,thk,)
    在这里插入图片描述
  • RoI pooling layer
    • 前向传播:
      使用max pooling将大小不一的region proposals转化为固定大小的H x W(本文:7 x 7)
    • 反向传播
      x i x_i xi为输入层的节点, y r j y_rj yrj为第r个候选区域的第j个输出节点:
      在这里插入图片描述
      其中判决函数 δ ( i , j ) δ(i,j) δ(i,j)表示 i 节点是否被 j 节点选为最大值输出。不被选中有两种可能: x i x_i xi不在 y j y_j yj范围内,或者 x i x_i xi不是最大值。
      在这里插入图片描述
      判决函数 δ ( i , r , j ) δ(i,r,j) δ(i,r,j)表示 i i i节点是否被候选区域 r r r的第 j j j个节点选为最大值输出。代价对于 x i x_i xi的梯度等于所有相关的后一层梯度之和。
  • 分层数据
    在调优训练时,每一个mini-batch中首先加入N张完整图片,而后加入从N张图片中选取的R个候选框。这R个候选框可以复用N张图片前5个阶段的网络特征。
    本文:N=2, R=128。
  • 训练数据构成
    N张完整图片以50%概率水平翻转。
    R个候选框的构成方式如下:在这里插入图片描述
  • 损失函数
    在这里插入图片描述注:[smoothL1] 中的x即为[公式] 即对应坐标的差距。该函数在 (−1,1) 之间为二次函数,而其他区域为线性函数,作者表示这种形式可以增强模型对异常数据的鲁棒性。

结果
基于VGG16的Fast RCNN模型在训练速度上比R-CNN快大约9倍,比SPPnet快大约3倍;测试速度比R-CNN快大约213倍,比SPPnet快大约10倍,在运行时,检测网络对图像的处理时间为0.3秒(不包含候选区域提取);在PASCAL VOC2012数据集上的mAP大约为66%。

Faster RCNN

标题:Faster R-CNN
作者:Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun
来源:arXiv:1506.01497
代码:https://github.com/ShaoqingRen/faster_rcnn

之前存在的问题
regional proposal需要单独计算

主要贡献

  1. 提出RPN,可以同时预测bound box和objectness score
  2. 提出了anchor box,可以用多种宽高比和尺度来预测proposal
  3. 几乎是cost-free的,因为RPN和提取特征的CNN网络共享参数
  4. 可以使得整个目标检测的网络进行端对端的训练

框架
在这里插入图片描述
Faster RCNN的网络模型

  • Shared Conv Layers:使用13个卷积和4个pooling层来提取图片的feature map,这部分是Fast R-CNN模块和Region Proposal Network模块共享的。
  • Region Proposal Network:用神经网络取代传统的方法来产生region proposal。
  • RoI pooling:根据region proposal和feature map来提取每个region对应的feature,这和Fast R-CNN中的 RoI Pooling Layer相同。
  • Classification and Regression:和Fast R-CNN类似,这部分主要完成两个工作:
    (1)经过FC layer + softmax进行分类,主要是对object proposal进行分类的,一共包括(K+1)类,即K类物体加上1个背景类。
    (2)经过FC layer + bbox regressor输出的,为K个类各输出4个值(K*4),而这4个值代表着精修的bounding box position。

各层更具体的分析可看:https://zhuanlan.zhihu.com/p/61202658

数据集

  1. PASCAL VOC
  2. ILSVRC
  3. MS COCO

训练过程
和之前的目标检测网络训练类似,都是在一个预训练网络的基础上进行训练的。在本文中主要使用4-step交替训练法来训练Faster R-CNN,主要步骤如下:

  1. 首先使用在ImageNet预训练的网络来训练RPN网络。
  2. 同样使用ImageNet预训练的网络来训练一个单独Fast
    R-CNN检测网络,网络中的proposal是第一步训练RPN网络中得到的porposal。
  3. 使用上一步训练的detection网络的参数来初始化练RPN网络,并且在训练过程中固定shared conv layers这部分,只更新RPN网络专有的那些层。
  4. 接着固定shared conv layers这部分,只更新Fast R-CNN专有的那些层,其中proposal也是上一步训练RPN网络中得到的proposal。

Mask RCNN

参考文档

[1] RCNN- 将CNN引入目标检测的开山之作
[2] Fast R-CNN
[3] Selective Search for Object Detection
[4] 作者在ICCV15上的讲座 Training R-CNNs of various velocities
[5] shenxiaolu1984:【目标检测】Fast RCNN算法详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值