目标检测1——R-CNN
R-CNN
[Rich feature hierarchies for accurate object detection and semantic segmentation]
非end-to-end模型
2014年CVPR论文
模型描述
- 通过 Selective Search(下面简称SS)方法对每张图片挑出 2000 个可能的候选框。
- 将选出的候选框warp到固定的输入尺寸(227x227,必须要固定尺寸是因为模型最后有 一个全连接和SVM需要固定的特征大小 ),分别进入基础的卷积神经网络(AlexNet)进行特征提取(所以每张图片有 2000 个候选框都要分别 过一遍卷积神经网络,导致耗时很长)。
- 将每个候选框的全连接特征(Fc7,4096 维)通过 SVM 模型得到分类结果(每个类别都训练一个 SVM分类模型)。
- 对于有类别的候选框,将其最后一层卷积层(Conv5)出来的结果(应该是6x6x256)经过bounding box(下面简称bbox)的回归模型,得到对候选框中心位置(x, y)、长宽(h, w)的调整参数。
Backbone Model:AlexNet
论文链接
五组卷机+2层全连接
Warp
- 周围取一小块区域等比缩放到需要的尺寸
- 周围进行0的填充
- 直接放缩到需要的尺寸
分类部分
使用卷积网络最后一层全联接Fc7特征训练SVMs分类器,每个类别都有一个SVM分类器,并使用Hinge loss。
- 正样本:所有Ground-truth区域(下面简称GT)
- 负样本:跟GT重合IoU ≤ 0.3的SS区域
注: 如果碰到有很多False Positive(FP 负样本被判断为正样本)的情况,可以把这些FP收集起来,对SVMs进行二次训练。
Bounding Box回归
输入:从SS中得到的某个候选框的中心点位置、宽、长:
P
=
(
p
x
,
p
y
,
p
w
,
p
h
)
P=(p_x, p_y, p_w, p_h)
P=(px,py,pw,ph)
label:GT的中心点位置、宽、长:
G
=
(
g
x
,
g
y
,
g
w
,
g
h
)
G = (g_x, g_y, g_w, g_h)
G=(gx,gy,gw,gh)
目标输出:中心位置的偏移量(x、y分别被w、h归一化)、宽长的偏移量:
(
d
x
,
d
y
,
d
w
,
d
h
)
(d_x, d_y, d_w, d_h)
(dx,dy,dw,dh)
损失函数:
其中
ϕ
5
\phi_5
ϕ5是Conv5
注:上面内容部分参考小象学院的课件
模型效果
运行时间
在detect阶段,计算region proposals和features,每张图片在GPU耗时13s,CPU耗时53s
Results on PASCAL VOC
极大提高了mAP,目前VOC 2010 test上的mAP是53.7%
模型训练
- **Supervised pre-training: **使用ImageNet数据,AlexNet网络进行CNN的预训练(学习率为0.01)
- **Domain-specific fine-tuning: **对于新的detection任务、和对warp后的VOC图像的分类任务,使用SGD方法进行finetune,将原1000-way的分类层改成21-way的(20+1背景),所有IoU≥0.5的region proposals为正样本,其他为负样本,学习率为0.001,每个batch选取32个正样本(不限制类别)、96个背景样本(正负样本1:3)
- **Object category classifiers:**虽然2中使用fc来进行分类的训练,但实际中用的是多个linear SVMs进行分类,且这里取IoU大于0.3作为正样本(通过grid search得到)