R-CNN

论文:Rich feature hierarchies for accurate object detection and semantic segmentation
来源:CVPR 2014

1. Motivation

  • 传统的滑动窗口检测器具有很多缺点
    在这里插入图片描述
  • 从Alexnet提出后,作者等人思考如何利用卷积网络来完成检测任务,即,如何将AlexNet在ImageNet目标识别的能力泛化到PASCAL VOC目标检测上面来,此时需要解决2个主要问题:如何利用深度神经网络去做目标的定位?如何在一个小规模的数据集上训练能力极强的网络模型?
  • 贡献:
    (1)首次将卷积神经网络应用在自底向上的候选区域,从而进行目标分类与定位。
    (2)提出新的观点:迁移学习。当缺乏大量的标注数据时,比较好的可行手段是,进行神经网络的迁移学习,即,采用在其它大型数据集训练过后的神经网络,然后在小规模特定的数据集中进行微调。
    (3)在Pascal VOC 2012的数据集上,能够将目标检测的验证指标 mAP 提升到58.5%,这相对于之前最好的结果提升了近30%。

2. R-CNN

2.1 整体流程

AlexNet网络为基准,R-CNN的检测步骤概述如下:

  1. 产生候选区域:使用Selective Search找出输入图片中可能存在目标的侯选区域region proposals
  2. 调整候选区域尺寸:调整候选区域尺寸使其适应AlexNet网络的输入大小( 227 × 227 227 \times 227 227×227)。
  3. CNN提取特征:使用同一个CNN分别对每一个候选区域提取出4096维特征向量。
  4. 线性SVM二分类:使用预先训练好的线性SVM对提取到的特征向量进行二分类(80个SVM for COCO)。
  5. 边界框回归:修正bbox,对bbox做回归微调。
  6. NMS:剔除重叠建议框,得到该类中得分最高的一些建议框。
    在这里插入图片描述
    在这里插入图片描述

2.2 Training

  • R-CNN的训练过程包括,训练CNN(预训练+微调)+训练SVM+训练边界框回归器。

2.2.1 训练CNN

  • R-CNN采用“Supervised pre-training + Domain-specific fine-tuning”来训练CNN,即先在ImageNet上进行预训练,然后在目标检测数据集上微调。
  • 理由:AlexNet是针对ImageNet训练出来的模型,卷积部分可以作为一个好的特征提取器,后面的全连接层可以理解为 一个好的分类器。R-CNN需要在现有的模型上微调卷积参数,进行迁移学习。
  • 好处:解决目标检测数据集不足的问题,这样做可以提升目标检测的性能,后续的目标检测算法几乎都采用了这种训练方法。
  • 微调的具体做法
    (1) 将AlexNet的预测层(最后一层全连接层,1000层)替换为新的 N + 1 N+1 N+1维的全连接层;
    (2) 按照以下规则判断所有候选区域的正负性(R-CNN将此IoU阈值设置为0.5)。
    (3) 将第2步中得到的正负样本进行尺寸变换,使得大小一致,然后作为预训练好的网络的输入,继续训练网络。
类型满足条件
正样本分别计算该region proposal与当前图像上所有ground truth之间的IoU,若最大的IoU大于某一预先设定的阈值thres,则认为该region proposal为正样本,其类别为产生最大IoU的ground truth的类别
负样本若该region proposal与当前图像上所有ground truth之间的IoU均小于某一预先设定的阈值thres,则认为该region proposal为负样本(背景类)
  • 注意:在微调时,为解决正负样本不平衡的问题,在每一个batch中保证正负样本的比例为1:3。

2.2.2 训练SVM

  • 对于每一个类别分别训练一个线性SVM二分类器
    在这里插入图片描述

2.2.3 训练边界框回归器

  • 在使用SVM对候选区域进行打分后,如果直接以候选区域所给出的边界框作为最终的预测框,会使得目标定位不准确(如下图的人)。此时需要引入一种方法来对候选区域框进行调整,从而增加定位精度。R-CNN采用线性回归的方法进行边界框精修。
    在这里插入图片描述
  • 假设候选框和真实框的匹配对为 ( P , G ^ ) (P,\hat G) (P,G^),其中候选框 P = ( P x , P y , P w , P h ) P=(P_x,P_y,P_w,P_h) P=(Px,Py,Pw,Ph),真实框 G ^ = ( G ^ x , G ^ y , G ^ w , G ^ h ) \hat G=(\hat G_x,\hat G_y,\hat G_w,\hat G_h) G^=(G^x,G^y,G^w,G^h),我们构建以下训练标签 t = ( t x , t y , t w , t h ) t=(t_x,t_y,t_w,t_h) t=(tx,ty,tw,th)
    { t x = ( G ^ x − P x ) / P w t y = ( G ^ y − P y ) / P h t w = log ⁡ ( G ^ w / P w ) t h = log ⁡ ( G ^ h / P h ) \left\{ \begin{aligned} t_x & = & (\hat G_x-P_x)/P_w \\ t_y & = & (\hat G_y-P_y)/P_h\\ t_w & = & \log(\hat G_w/P_w) \\ t_h & = & \log(\hat G_h/P_h) \\ \end{aligned} \right. txtytwth====(G^xPx)/Pw(G^yPy)/Phlog(G^w/Pw)log(G^h/Ph)
  • 中心点训练标签归一化:消除目标尺度对回归性能的影响(其影响体现在loss中)
  • 宽高训练标签对数化:消除目标尺寸对回归性能的影响(其影响体现在loss中),此外保证后续的预测结果的不会超出有效范围。
  • 边界框回归器主要学习候选框到真实框的一种转换,那么回归器的训练目标就是尽量使回归器输出与训练标签的MSE尽可能小,由于训练标签采用的是偏移量,那么回归器输出也是偏移量,假设其为 Δ = ( δ x , δ y , δ w , δ h ) \Delta=(\delta_x,\delta_y,\delta_w,\delta_h) Δ=(δx,δy,δw,δh),则优化以下问题:
    在这里插入图片描述上式中, ϕ 5 ( P i ) \phi_5(P^i) ϕ5(Pi)表示CNN对候选区域 P P P所提取到的pool5特征, w w w是回归器参数。显然,在做边界框回归时将边界框的4维变量看成是相互独立的变量。
  • 在测试阶段,当我们得到回归器的输出 Δ = ( δ x , δ y , δ w , δ h ) \Delta=(\delta_x,\delta_y,\delta_w,\delta_h) Δ=(δx,δy,δw,δh)后,可以根据以下公式得到最终预测结果:
    { G x = P x + δ x P w G y = P y + δ y P h G w = P w e x p ( δ w ) G h = P h e x p ( δ h ) \left\{ \begin{aligned} G_x & = & P_x+\delta_xP_w\\ G_y & = & P_y+\delta_yP_h\\ G_w & = & P_wexp(\delta_w) \\ G_h & = & P_hexp(\delta_h) \\ \end{aligned} \right. GxGyGwGh====Px+δxPwPy+δyPhPwexp(δw)Phexp(δh)
  • 如何构造 ( P , G ^ ) (P,\hat G) (P,G^)? 对于每一个 G ^ \hat G G^,先找到与其IoU最大的 P P P,若 I O U ( P , G ^ ) > 0.6 IOU(P,\hat G)>0.6 IOU(P,G^)>0.6,则 G ^ \hat G G^ P P P成功匹配,否则匹配不成功。在IoU较大时,边界框回归才可以看成是线性回归。

3. 实验

  • 实验结果表明,使用边界框回归或更强大的骨干网络,均可以提升目标检测的mAP

在这里插入图片描述

注:T-Net指AlexNet,O-Net指VGG16,BB 指Bounding-box Regression。

4. 优缺点

4.1 优点

  • 第一次利用CNN进行特征提取,并极大地提高了目标检测的准确度(VOC07数据集上,mAP由33.7%提高到58.5%)。

4.2 缺点

  • 训练阶段多,步骤繁琐,训练耗时:微调网络+训练SVM+训练边界框回归器。
  • 需要进行候选区域裁剪:候选区域要经过crop/warp进行固定大小,无法保证图片不变形。
  • 存在冗余计算,处理速度慢:候选区域之间存在非常多的冗余,使用同一个CNN多次提取特征。使用GPU,VGG16模型处理一张图像需要47s,AlexNet则需要13s。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值