深度学习系列之R-CNN 个人总结

Paper地址:R-CNN

一、Object Detection With R-CNN

这里写图片描述

目标检测有两大任务:一个是确定object的类别,另一个是确定object的位置

基本流程如下:

1.给出一张图片,利用selective search生成约2000个region proposals
2.将proposal resize到固定大小,然后输入到CNN,提取每个proposal 固定长度 (4096维)的特征向量。
3.将提取的特征输入到FC层,利用SVM对该proposal进行打分、分类。SVM权重(4096,C)
4.针对每一个类别:
(1)对每个region的score进行排序,设一个阈值,将score低于阈值的region去掉。
(2)使用NMS(非极大值抑制):选取得分最大的region,计算其与其他region的IoU,如果IoU大于给定阈值,则去掉其他region。然后在剩下的region中,选择得分次大值,重复之前的流程。最后剩下的基本就是包含object的bbox了。
5.对于判断为本类的候选框,且与GT的IoU大于0.6的。利用回归模型对bbox进行位置精修(位置精修内容较多,放后面)
6.这样,类别和位置都得到了

由于在目标检测上,标注的数据少,因此本文:
首先在ImageNet数据集上进行有监督预训练
然后在object detection这一特定领域的数据集PASCAL上进行fine-tuning。

二、位置精修

利用回归模型对bbox的位置进行精细修改,回归模型如下:

P(Px,Py,Pw,Ph)表示region proposal的位置
G(Gx,Gy,Gw,Gh)表示GT的位置

通过如下公式修正proposal的位置
这里写图片描述
其中:
d(P)是proposal的pool5 feature的线性函数。公式中的fi5(P)则是pool5的4096维feature。
这里写图片描述

此时,我们需要优化W。(正则项lambda=10000)
这里写图片描述
其中,
这里写图片描述

三、训练

训练的目的:得到最优的参数

预训练完成后,将N+1维的layer替换1000维的layer。然后将与GT的IoU >= 0.5 的bbox作为正样本,其余作为负样本。每次SGD迭代时,使用32个正样本box(对所有类)和96个背景box,构建128个样本的mini-batch。
在训练SVM分类器这边:将每类的GT作为正样本,IoU小于0.3的作为负样本。

四、参考文献

1.https://wenku.baidu.com/view/cb977f29f68a6529647d27284b73f242336c31df.html
2.http://blog.csdn.net/App_12062011/article/details/67632620

猜你喜欢

转载自blog.csdn.net/leewanzhi/article/details/79553869
今日推荐