目录
论文: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的检测步骤概述如下:
- 产生候选区域:使用Selective Search找出输入图片中可能存在目标的侯选区域region proposals
- 调整候选区域尺寸:调整候选区域尺寸使其适应AlexNet网络的输入大小( 227 × 227 227 \times 227 227×227)。
- CNN提取特征:使用同一个CNN分别对每一个候选区域提取出4096维特征向量。
- 线性SVM二分类:使用预先训练好的线性SVM对提取到的特征向量进行二分类(80个SVM for COCO)。
- 边界框回归:修正bbox,对bbox做回归微调。
- 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^x−Px)/Pw(G^y−Py)/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。