目标检测:1. R-CNN

R-CNN是一种基于深度学习的目标检测方法,通过卷积神经网络(CNN)提取特征和线性SVM分类实现目标检测。文章介绍了R-CNN的两大创新:使用CNN进行区域提议的特征提取和预训练加微调的训练策略。流程包括区域提议、特征提取、分类和边界框回归。尽管R-CNN在当时取得了显著成果,但也存在计算效率低和重复计算等问题。
摘要由CSDN通过智能技术生成

R-CNN

arXiv
在此之前,目标检测性能最好的方法是复杂的集成系统,通常将多个低级图像特征与高级上下文结合在一起。本文提出了一个简单且可拓展的方法:R-CNN,主要有两点创新:

  • 将大容量卷积神经网络用于自底向上的区域提议,以便于定位和分割目标,即使用卷积特征替代原有人工特征
  • 当标签训练数据很少时,先使用辅助任务对模型进行有监督预训练,然后再进行特定领域的微调,可以显著提高性能,即训练+微调

传统特征如SIFT和HOG可以类比于灵长类视觉系统的第一个皮层区域,但是识别通常发生在下游的几个阶段,这表明分层次、多阶段计算特征会更有利于视觉识别。

CNN展现出强大的特征提取能力,但是如何将其应用于目标检测任务中需要面对两个问题:如何使用深度网络定位目标;如何使用很少数量的标注目标训练大容量模型。这两个问题分别对应上述两个创新点。

R-CNN流程

首先从输入图片中生成大约2000个与类别无关的区域提议,然后将其变换为固定大小的图像,使用CNN从每一个区域提议提取固定长度的特征向量,最后使用线性SVM对每个区域进行分类。

R-CNN目标检测系统主要由三个模块构成:

  • 生成类别无关的区域提议,作为检测器的候选检测目标

    使用选择性搜索(SS)方法生成候选区域提议

  • 卷积网络从候选区域提取固定长度的特征向量

    CNN输入图像大小为 227 × 227 227\times227 227×227,输出维度为4096

  • 一系列类别指定的线性SVM分类器

在测试时,使用SS方法提取大约2000个区域提议,将每个提议框扭曲到固定输入大小,使用CNN计算特征,使用训练好的SVM对每一个类别进行打分,最后使用非极大值抑制(NMS)方法剔除IOU大于阈值的区域。

训练过程:

  • 监督预训练

    在辅助数据集(ImageNet)上对CNN进行分类预训练

  • 特定域微调

    为了将模型迁移到目标检测任务与目标检测数据集,使用扭曲区域提议对CNN模型进行训练,将最后的1000分类全连接层替换为 N + 1 N+1 N+1类全连接层( N N N个待检测目标和背景),将与GT边界框IOU大于等于0.5的区域提议视为正样本,其余视为负样本。

  • 目标类别分类

    对每一个类样本训练一个二分类器,将与GT边界框IOU大于0.3的视为正样本,其余视为负样本,由于样本不均衡,采用硬负样本挖掘方法进行训练。

  • 边界框回归

    对于N个训练对集合 { ( P i , G i ) } i = 1 , ⋯   , N \{(P^i,G^i)\}_{i=1,\cdots,N} {(Pi,Gi)}i=1,,N,其中 P i = ( P x i , P y i , P w i , P h i ) P^i=(P^i_x,P^i_y,P^i_w,P^i_h) Pi=(Pxi,Pyi,Pwi,Phi)是提议框 P i P^i Pi的中心像素坐标以及宽和高,对应的GT边界框 G i G^i Gi与之类似。我们的目标是学习一个变换能够将提议框 P P P映射到GT边界框 G G G

    用四个函数来参数化这个变换: d x ( P ) , d y ( P ) , d w ( P ) , d h ( P ) d_x(P),d_y(P),d_w(P),d_h(P) dx(P),dy(P),dw(P),dh(P),前两个指定边界框 P P P的中心尺度不变平移,后两个指定边界框 P P P的宽和高的对数空间变换。学习到这些函数后,我们可以将输入提议框变换到预测GT边界框 G ^ \hat G G^
    G ^ x = P w d x ( P ) + P x G ^ y = P h d y ( P ) + P y G ^ w = P w exp ⁡ ( d w ( P ) ) G ^ h = P h exp ⁡ ( d h ( P ) ) \hat G_x = P_wd_x(P)+P_x\\ \hat G_y = P_hd_y(P)+P_y\\ \hat G_w = P_w\exp(d_w(P))\\ \hat G_h = P_h\exp(d_h(P)) G^x=Pwdx(P)+PxG^y=Phdy(P)+PyG^w=Pwexp(dw(P))G^h=Phexp(dh(P))
    其中 d ∗ ( P ) d_*(P) d(P)是由 p o o l 5 pool_5 pool5特征线性变换得到的,记为 ϕ 5 ( P ) \phi_5(P) ϕ5(P),则有 d ∗ ( P ) = w ∗ T ϕ 5 ( P ) d_*(P)=\boldsymbol w^T_*\phi_5(P) d(P)=wTϕ5(P),其中 w ∗ \boldsymbol w_* w是学习参数,使用正则化最小二乘目标(岭回归)进行优化:
    w ∗ = arg ⁡ min ⁡ w ∗ ^ ∑ i N ( t ∗ i − w ^ ∗ T ϕ 5 ( P i ) ) 2 + λ ∥ w ^ ∗ ∥ 2 \boldsymbol w_*=\mathop{\arg\min}_{\hat{\boldsymbol w_*}}\sum^N_i(t^i_*-\hat{\boldsymbol w}_*^T\phi_5(P^i))^2+\lambda\|\hat{\boldsymbol w}_*\|^2 w=argminw^iN(tiw^Tϕ5(Pi))2+λw^2
    其中回归目标 t ∗ t_* t由训练对 ( P , G ) (P,G) (P,G)得到:
    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 ) 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) tx=(GxPx)/Pwty=(GyPy)/Phtw=log(Gw/Pw)th=log(Gh/Ph)
    仅使用靠近GT边界框的提议框 P P P进行训练,即将 P P P G G G进行指定:当且仅当IOU大于阈值(0.6)时,才将 P P P与具有最大IoU的GT边界框 G G G匹配。

总结:R-CNN模型共分为5步:

  1. 对CNN模型使用ImageNet进行监督预训练
  2. 使用目标检测数据集对CNN模型的全连接层进行微调训练
  3. 使用SS算法提取图像中的候选区域并调整大小,输入到CNN模型中获得固定维度的特征
  4. 对每一类别训练SVM二分类器,利用提取的特征来对候选区域进行分类
  5. 使用含有校正因子的线性回归模型对候选框位置进行回归修正

R-CNN取得不错的检测结果,但是有以下缺点:

  1. 提取区域提议会占用大量存储空间,且这一步花费时间很大
  2. 将待选区域进行裁剪,变形以适应固定输入大小会导致输入信息丢失
  3. 每一个区域提议都要经过CNN处理,之间存在大量重叠,重复计算特征导致计算浪费
  4. CNN模型,SVM分类器以及边界框线性回归模型分别训练,导致整个模型训练困难
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值