基于深度学习的目标检测方法:R-CNN

来源:互联网 发布:如何卸载mysql服务 编辑:程序博客网 时间:2024/05/18 00:08

R-CNN

目标检测方面比较全面的资料:https://handong1587.github.io/deep_learning/2015/10/09/object-detection.html

论文:Rich feature hierarchies for accurate object detection and semantic segmentation

该方法主要包括以下流程:候选框的选取、CNN、SVM分类器、修正目标框。

这里写图片描述

--------------------------------------------------------------------------------------------------------------------------------------------------------

候选框的选取

       目前有很多选取候选框的方法,如:objectness, selective search,category-independent object proposals, constrainedparametric min-cuts (CPMC), multi-scale combinatorial grouping 等方法,在该论文中采用的是selective search。

       采用selective search方法在一幅图像中产生2k个region proposals,且它们的大小不统一。然而,在CNN结构中需要输入固定大小的图像。因此,在利用CNN提取region proposal的特征时,需要对其进行处理,使其大小为227*227。处理方法有:


(A) the original object proposal at its actual scale relative to the transformed CNN inputs;   (B) tightest square with context;   (C) tightest square without context;    (D) warp. Within each column and example proposal, the top row corresponds top= 0 pixels of context padding while the bottom row has p= 16 pixels of context padding .

--------------------------------------------------------------------------------------------------------------------------------------------------------

CNN

      在论文中利用CNN提取object proposals的特征。由于样本比较少,在训练CNN时采用微调的方法,也就是先用ILSVRC2012数据集预训练CNN,再用object proposals来进一步训练CNN。采用如下方法构建样本:如果object proposal与ground-truth box的IOU大于0.5,就将该object proposal标定为正样本,否则将其标定为负样本。这样做的原因在于CNN需要大量的样本,如果标定条件比较严格的话,那么用于CNN的样本将会很少。

--------------------------------------------------------------------------------------------------------------------------------------------------------

SVM分类器

      在该论文中利用SVM分类器来进行分类,得到不同类别的评分结果。在训练SVM分类器时,由于SVM分类器需要的样本比较少,可以采用如下的方法构建样本:将ground-truth boxes标定为正样本;如果object proposal与ground-truth box的IOU小于0.3,将其标定为负样本;如果object proposal与ground-truth box的IOU大于0.3,但不是ground-truth box,就将其舍弃。

      在训练SVM分类器的时候,采用了standard hard negative mining method技巧。关于该方法,从知乎中看到的解释是:一般来说,训练一个SVM分类器,需要正负两个样本,比如,对于person detection,一幅图片中作为正样本的人物样本很少,但是随机产生用于训练的负样本(非人物样本)可能远远大于正样本,这样训练出来的SVM效果并不好,所以利用Hard negative mining方法,从负样本中选取出一些有代表性的负样本,使得分类器的训练结果更好。

     在测试时,对于得到的结果,需要进行非极大抑制(Nms),也就是,对于每种类别,如果一个区域与另一个区域的IoU大于一定值,且该区域的得分小于另一个区域的得分,则将区域去除,这样做的目的是消除多余的目标框,找到最佳的物体检测位置。

--------------------------------------------------------------------------------------------------------------------------------------------------------

修正目标框(bounding-box regression)

      目标检测的误差也来源于目标框的位置不准确,所以在该论文中,采用线性回归模型来修正目标框,并用到了region proposal的pool5 feature。   该回归模型的输入是 { (Pi, Gi) },其中,i = 1, 2, ... , N,  P = (Px, Py, Pw, Ph),G = (Gx, Gy, Gw, Gh),其目标是将proposed box (P) 转换为ground-truth box (G), 转换方法为:

        其中,平移缩放参数dx(P), dy(P), dw(P), dh(P)是pool5 feature的线性组合,用φ5(P) 表示pool5 feature,则有:dx(P) = W'xφ5(P)。该模型就是找到合适的W*,  * is one of x, y, w, h, 使其满足如下条件:


       

       对于训练样本(P, G),其回归目标tx, ty, tw, th计算如下:


       对于该回归模型,采用如下方法构建样本:如果候选框P与某个ground-truth box (G)的IoU最大,且大于0.6,则将该(P, G)作为训练样本。这样做的原因是如果P远离ground-truth boxs, 将P与某个ground-truth box作为训练样本进行训练是没有意义的。


目标检测方面,我看过的博客:

http://www.cnblogs.com/venus024/p/5590044.html#undefined

http://www.cnblogs.com/laiqun/p/5750450.html




阅读全文
0 0
原创粉丝点击