sgd 参数 详解_Object DetectionRCNN论文详解

662018d88e898c36782d6ae718237271.gif

物体检测常用算法的概念

下面我们讲解一下在物体检测算法中常用到的几个概念:Bbox,IoU,非极大值抑制。

Bounding Box(bbox)

bbox是包含物体的最小矩形,该物体应在最小矩形内部.

下图的包围小猫的红色矩形框:

05d7952156f278385f58a5e9f724726e.png

这里注意到物体检测中关于物体位置的信息输出是一组(x,y,w,h)" role="presentation" style=" outline: 0px; display: inline; line-height: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">(x,y,w,h)(x,y,w,h)数据,其中x,y" role="presentation" style=" outline: 0px; display: inline; line-height: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">x,yx,y代表着bbox的左上角(或者其他固定点,可自定义),对应的w,h" role="presentation" style=" outline: 0px; display: inline; line-height: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">w,hw,h表示bbox的宽和高.一组(x,y,w,h)" role="presentation" style=" outline: 0px; display: inline; line-height: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">(x,y,w,h)(x,y,w,h)可以唯一的确定一个定位框。

Intersection over Union(IoU)

对于两个区域R" role="presentation" style=" outline: 0px; display: inline; line-height: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">RR和R′" role="presentation" style=" outline: 0px; display: inline; line-height: normal; word-spacing: normal; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border-width: 0px; border-style: initial; border-color: initial; ">R′R′,则两个区域的重叠程度overlap计算如下:

0fbb8a980d29a3b5b37e92f28fd9e229.png

602d14fb55ec33792e472cc34fdd8326.png

在训练网络的时候,我们常依据侯选区域和标定区域的IoU值来确定正负样本。

非极大值抑制NMS

非极大值抑制(NMS)可以看做是局部最大值的搜索问题,NMS是许多计算机视觉算法的部分。如何设计高效的NMS算法对许多应用是十分关键的,例如视频跟踪、数据挖掘、3D重建、物体识别以及纹理分析等。

这里我们主要针对非极大值抑制在物体检测上的应用,非极大值抑制就是把不是极大值的抑制掉,在物体检测上,就是对一个目标有多个标定框,使用极大值抑制算法滤掉多余的标定框。

下图一个小猫有多个红框标定:

7c42dd4668421bc0c0e786ce37dab27b.png

我们使用非极大值抑制算法后:

297fd0c6135980a689f10e53dd7ee788.png

RCNN论文详解

RGB大神的(Ross Girshick)这篇paper,改变了图像领域检测物体的实现思路,R-CNN是以深度学习为基础的物体检测的模型,以R-CNN为基点,后续的SPPNet、Fast R-CNN、Faster R-CNN模型都是照着这个思路,下面就来细致学习R-CNN模型。

在R-CNN模型出现之前,较好的物体检测模型DPM使用了一堆传统的算法模型,在VOC数据集上表现大约在30mAP左右。R-CNN开创性的提出了用深度神经网络来做物体检测。并且提出了一系列在较少标注集下的训练模型方法。

Introduction

R-CNN在物体检测上的解决方案

e6a8dfe6a8cce4c699679ef06fbcdc42.png

aed12e5f8b636001b46af2b00dd73921.png

4ff2ccdfcfbd8e6e6c42264e44e1038c.png

R-CNN模型的处理流程:

  1. 找出图片中可能存在目标的侯选区域

  2. 通过CNN对候选区域提取特征向量

  3. 在候选区域的特征向量上训练分类器,分类器用于判别物体并得到bbox

  4. 修正bbox,对bbox做回归微调

下面就来一个一个步骤讲解~

找出图片中可能存在目标的侯选区域

一张图片上存在的物体,大小/位置不固定,如果我们用滑窗的方法去寻找可能存在物体,工作量非常大,且很难实现。R-CNN模型使用的方法是先使用“传统成熟”的方法找出一组图像中可能存在目标的侯选区域(region proposals),产生侯选区域的方案可减少在一张图片上寻找物体的复杂度,且很大可能的保存了图片上所有存在物体的区域,这一方案发展的较为成熟,实现起来较为简便。

常用的产生侯选区域的方法:

1f42773400778218374453d272aad35f.png

R-CNN最终选择的产生候选区域产生的方法是selective search,

下图是selective search在图片上提取侯选区域的过程:

3d2d28196335a14b448d6c56ee703e61.png

Selective Search在一张图片上提取出来大概2000个侯选区域,需要注意的是这些候选区域的长宽不固定。而在下一层使用CNN提取特征向量时,需要接受固定长度的输入,故我们需要对候选区域做一些长度上的修改。

论文对图片做了两种方法的比较:

  • 各向异性缩放,即直接缩放到指定大小,这可能会造成不必要的图像失真

  • 各向同性缩放,在原图上出裁剪侯选区域,在边界用固定的背景颜色(采用侯选区域的像素颜色均值)填充到指定大小

49355439fff47a497502f882fcd75f77.png

经过一系列的实验,作者发现采用各向异性缩放的实验精度最高,就采用这个方法了。

通过CNN对候选区域提取特征向量

用CNN的作用是在侯选区域的基础上提取出更高级、更抽象的特征,高级特征的作用是为下一步的分类器作为输入数据,分类器依据高级特征回归出物品的位置和种类。

在讲到CNN用作分类问题时,CNN的多个卷积层可以宽泛的认为是对原图像的特征提取,并且这样的特征提取具有平移不变性。我们把CNN当做特征提取的模板,把需要提取特征的图片塞给它,训练好我们需要的CNN,就可以获取到我们想要的特征向量。

网络的训练

CNN的训练分为以下几个过程:

  • 有监督的预训练
    一般的CNN模型层数多,模型的容量大,在标定数据少的情况下,这样的数据量是不够从新训练一个CNN模型的。故我们采用已训练好的AlexNet/VGG16模型的卷积层参数,使用这样已训练好的网络参数,可以较好的提取图片的特征。这样的操作有一个专业的名词-迁移学习(这里不做讨论)。

    7ffef9cee2c860ebae1b0dfc063b7415.png

  • fine-tuning
    AlexNet是针对ImageNet训练出来的模型,AlexNet的卷积部分可以作为一个好的特征提取器,后面的全连接层可以理解为一个好的分类器。这里把AlexNet的softmax层替换为一个N+1神经元的输出层(N为存在物体的种类,即正样本;1为背景,即负样本)。然后做微调训练。

    d977347c7cd9cc8e9f230b053e99f9f6.png


    关于fine-tuning的训练细节

    原本ImageNet的输出类别有1000个,这里把1000个替换为21个(N=20,1为背景).
    使用的SGD,每个mini-batch取128.

    样本数量描述
    正样本32候选区域与ground-truth(图片物体标注区域)的IoU>0.5
    负样本96候选区域与ground-truth(图片物体标注区域)的IoU<0.5

    这里取IoU的阈值为0.5是因为CNN模型容量大,需要的数据多,故放宽限制,获取到更多的数据,防止模型过拟合。

    需要注意的是,我们在训练CNN的时候会在网络的后面加上一个分类层,在训练完毕后,我们会移除最后的分类层,直接提取到前面的FC层,AlexNet的FC层为4096维。


对于一张图片,使用训练好的CNN基础上,将所有的图片的所有侯选区域塞到CNN里面,把得到的pool5 feature存到硬盘里面(这里一存,后面训练一取,非常耗费时间)

d9b384bfe321f3afec57ade84a792104.png

在候选区域的特征向量上训练分类器

前面的CNN在侯选区域上提取出了特征向量,例如2000个侯选区域,那么提取出来的就是2000*4096这样的特征向量(AlexNet的第一个FC层维度为4096,故pool5的输出为4096)。用这些特征向量训练同时训练N个二分类的SVM,SVM的权重矩阵为4096xN(N为分类种类)。

这里你可能会问什么要使用SVM?而不是CNN过FC层直接softmax出来得了?

这是因为我们在训练CNN的时候选的数据比较宽泛(选择样本不够准确),直接使用softmax输出的效果不是很好,而这里在特征向量的基础上,再训练一组SVM效果会比较棒。但是需要注意的是,在训练SVM的时候,我们使用的样本是有变换的。

训练SVM时使用的样本

样本描述
正样本候选区域与ground-truth(图片物体标注区域)的IoU>0.7
负样本候选区域与ground-truth(图片物体标注区域)的IoU<0.3

这个0.7的阈值是做实验得出来的经验值。

10b0714616870afc03d709fa62454946.png

在经过SVM分类后,会输出一堆的候选框得分(是一个2000x20的得分矩阵),这时候我们需要用的非极大值抑制得到想要的候选框了.大概步骤如下:

  • 对矩阵按列从大到小排序

  • 每列的最大值向下做非极大值抑制,遍历完所有列

  • 依据阈值,得到候选区域的类型

注意到这里,我们得到的是一组预测好类别的候选区域了。

修正bbox,对bbox做回归微调

我们使用一个简单的bounding-box回归用于提高定位的表现。这个bbox回归应用在SVM分类器给每个候选区域打分后,bbox回归认为候选区域和ground-truth之间是线性关系(因为在最后从SVM内确定出来的区域比较接近ground-truth,这里近似认为可以线性关系)

d01f455067b396cf4f45f069e4262674.png


Bounding-box regression(边框回归详解)

5022270c4787aaa5f4105bbbadf777fd.png

c5418cd0dd6c6b76d354a3dec03f39fa.png

f76e40681e3ddc1c0d1ab7d5b9f82ab8.png

3f9ba2af121ed5c9ed4f76d9b6e3cd4d.png

注意:只有当Proposal和Ground Truth比较接近时(线性问题),我们才能将其作为训练样本训练我们的线性回归模型,否则会导致训练的回归模型不work(当Proposal跟G离得较远,就是复杂的非线性问题了,此时用线性回归建模显然不合理)

到这里,我们算是把R-CNN整个流程讲完了,后面还有一堆R-CNN的进化版~

RCNN论文下载

下载:https://www.lanzoui.com/iKVxUj0vmif 密码:bwpb

543cffa144eb74ede76662f2e46002af.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值