论文阅读 || 目标检测系列 —— RCNN详解

目录

1. 相关概念

2 R-CNN的结构

2.1 候选框的提取

2.2 缩放候选区域

2.3 通过CNN提取特征向量

2.4 目标种类分类器

2.5 修正bbox

1) 候选框P 到预测框G'的平移缩放

2) 回归器的搭建

3 可视化、框架精简和错误检测

3.1 可视化

3.2 消融研究(Ablation studies)

3.3 测量误差分析


1. 相关概念

                                     这里写图片描述

物体检测,可能会存在多个目标。这需要 (1)判断每个物体的类别   (2)准确定位出物体的位置。上面图片中有猫有狗有黄鸭子,这是多物体检测。

物体检测算法中经常用的的概念:Bbox、IoU、非极大抑制

【Bbox(Bounding Box)】

  • bbox是包含物体的最小矩形,该物体应在最小矩形内部,如上图红蓝绿的三个框。目标检测中关于物体位置的信息,输出是一组 (x,y,w,h) 数据。其中x,y代表bbox的左上角,w,h代表bbox的宽和高。

【IoU(Intersection over Union)】

  • IoU的作用:在训练网络时,经常依据候选区域和标定区域的IoU值来确定正负样本。
  • IoU的计算:对于两个区域R和R’,则两个区域的重叠程度overlap计算如
                                                  
                                                                      

【非极大值抑制(Non-Maxinum Suppression,又称NMS)】

  • 非极大值抑制可以看做局部最大值的搜索问题,NMS是许多计算机视觉算法的部分。如何设计高效的NMS算法对许多应用十分关键。例如:视频跟踪、数据挖掘、3D重建、物体识别以及纹理分析等。
  • NMS在目标检测上的应用:NMS就是把不是极大值的抑制掉,在物体检测上,就是对一个目标有多个标定框,使用非极大抑制算法去掉多余的标定框。如下图,前者有多个标定框,使用NMS后,留下最合适的框
                                   
  • 具体操作步骤:(一张图片上有猫,假设有N个框,每个框被分类器计算得分Si,1<=i<=N)
    • 0. 构建一个集合H,初始化包括N个框;
          构建一个集合O,初始化空集
    • 1. 将集合H中的框按得分大小排序,将得分最高的框m,从集合H移至O
    • 2. 遍历集合H中的框,分别与框m计算IoU。如果高于阈值(一般为0.3~0.5),则认为与此框重叠,将此框从集合H删除
    • 3. 回到第1步,进行迭代,直至集合H为空。集合O中的框为我们所需(集合O中有几个框,图片中就有几只猫)

2 R-CNN的结构

在RCNN模型之前,较好的物体检测模型DPM使用了一堆传统的算法模型,在VOC数据集上表现大约在30mAP。R-CNN开创性的提出了深度神经网络来做物体检测,并提出了一系列在较少标注集下的训练模型的方法。后续的SPPNet、Fast R-CNN、Faster R-CNN模型都是基于这个思路的。

下面是模型的示意图:

                                  这里写图片描述

                                           

R-CNN模型的处理流程

  • 1.selective search:获取输入图片,提取约2000个候选区域
  • 2. CNN:  放缩候选区域同等大小,分别输入CNN,得到特征向量
  • 3. SVM + NMS:将CNN的输出输入到SVM中进行类别判定,再使用非极大值抑制,得到最合适的框
  • 4. 修正bbox

测试时,【分类】先对带测试图片提取约2000个候选区域,将每个区域都进行放缩,然后将缩放后的图片输入CNN进行特征提取。然后使用SVM对CNN输出的特征向量进行打分(每类都有一个SVM,21类就有21个分类器),对打好分的区域使用NMS(每类都单独使用),去掉一些不合适的候选框。【定位】将候选框的图片通过CNN的pool5的特征向量,输入到回归器中,微调框的坐标。

运行时分析。相比于当时的技术,RCNN的目标识别是高效的。
原因:(参数变少)1.CNN的参数是所有类别共享的;2.RCNN生成的特征维度较少。论文拿应用在UVA采用的空间金字塔技术相比,它们生成的特征维度是360k,而RCNN为4k多。
RCNN的特征提取时间,GPU--13s/张,CPU--53s/张。RCNN可扩展更多类别,处理100k中类别,在多核CPU上只需要10多秒。处理100k个预测,需要1.5GB内存空间(UVA需要134GB)
 

2.1 候选框的提取

可行方法:

  • 滑窗的方法:由于一张图片上物体的大小和位置不固定,滑窗会使工作量巨大,且难实现
  • 使用“传统成熟”的方法:本文选择了selective search方法。这种方案较为成熟,实现较为简便

2.2 缩放候选区域

Selective Search在一张图片上提取出约2000个候选区域(长宽不固定)。因为CNN对输入图像的大小限制(这里使用的AlexNet的输入大小227x227),所以要将候选区域进行固定尺寸的缩放。

缩放分为两类(该部分在原文附录A)

  • 1. 各向同性缩放,长宽放缩相同的倍数
    • tightest square with context:
      把候选区域(region proposal)的边界扩展为正方形,灰色部分用原始图片中相应像素填补,如下图(B)
    • tightest square without context:
      把候选区域(region proposal)的边界扩展为正方形,灰色部分不填充,如下图(C)所示
  • 2. 各向异性缩放,长宽缩放的倍数不同
    • 图像可能失真,直接将长宽缩放到227*227,如下图(D)所示
  • 在缩放之前,作者考虑,在候选区域周围padding额外的原始图片像素。下图的第一层是padding=0,第二层是padding=16
  • 结论:采用各向异性缩放并且padding=16的时候效果最好

                                      

2.3 通过CNN提取特征向量

CNN用来提取候选区域的更高级更抽象的特征。高级特征作为下一步分类器的输入数据,从而得到物体的位置和种类

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

1. 有监督的预训练

  • 训练的时候,先使用 ILSVR2012 数据库训练AlexNet。训练任务是图片分类,因为这个数据库没有分类的标定数据

2. fine-turning 训练的设定

  • 数据集:PASCAL VOC,有20类
  • FC的设定:最后一层FC的输出由1000更换为21
  • 优化器:SGD
  • 初始学习率:0.001(初始化预训练的0.1倍:使fine-tuning有效的进行而不会破坏初始化的结果)
  • batch:128 = 正样本32 + 负样本96。【正样本】候选区域与ground truth的IoU大于0.5的候选区域(跨所有类别);【负样本】不是正样本的样本)
  • 保存的数据:训练完成后,我们移除网络的最后一个FC层,此时网络输出4096维。对于一张图片,计算所有的候选区域 (2000个) 通过卷积模块的特征向量(4096维),并保存到硬盘上(此处的保存和后面训练的获取,非常耗时)

【使用fine-tuning的原因】:是当数据量不够的时候,常用的一种训练方式(先用别的数据库训练网络,然后再用自己的数据库微调训练)
【IoU的阈值为0.5的原因】:CNN模型容量大,需要的数据多。所以放宽了限制,获得到更多正样本的数据,防止过拟合

2.4 目标种类分类器

SVM:前面的CNN在候选区域上提取了特征向量(FC7层的特征),例如2000个候选区域,会提取出来2000*4096的特征向量。用这些特征向量同时训练N(类别数)个二分类的SVM,SVM的权重矩阵为4096*N。

  • 训练SVM的样本
    • 【正样本】紧紧包裹ground truth的候选区域。
    • 【负样本】候选区域与ground truth的IoU小于0.3的候选区域。其余样本忽略。
    • 负样本中,阈值=0.3的选择很重要,是在验证集上基于{0,0.1,0.2,0.3,0.4,0.5}中选择的。如果选择为0.5,mAP可以降低5个点,设置0,降低4个点。
    • SVM的训练数据太大,无法一下子读取到电脑内存中,作者采取了Hard negetive mining 的手段(没有仔细了解)
  • 使用SVM的原因
    • CNN对小样本容易过拟合,需要大量的训练数据。故在fine-tuning阶段,定义IoU>0.5来扩大正样本数量。这样训练会导致网络定位准确度下降,但能够得到想要的特征提取模块,所以再训练个SVM,对特征向量进行分类
    • SVM适用于小样本训练,其原理就是最小距离最大化,故对样本IoU限制严格。

非极大值抑制:经过SVM分类后,输出所有候选框的得分(2000x20的得分矩阵),然后使用非极大值抑制得到最想要的候选框。大概步骤如下

  • 分别对2000x20维矩阵中每列 按从大到小进行排序
  • 对于每一列,小于阈值a的候选框,认为框内不存在该列所表示类的物体,所以去除。剩余N个框
  • 对于每一列,对这N个框 进行NMS
  • 遍历完2000x20维矩阵所有列,对每个类别进行NMS,得到最终的不同物体的候选框

2.5 修正bbox

bbox回归认为候选区域和ground-truth之间时线性关系。原因:最后从SVM内确定出来的区比较接近ground-truth,近似理解过线性关系。

训练回归器的输入为N对值,((P^{^{i}},G^{i}))_{i=1,2,...,N},分别为候选区域的框坐标和真实的框的坐标。

1) 候选框P 到预测框G'的平移缩放

(我们要学习的就是四个变换 dx(P), dy(P), dw(P), dh(P))

  • 先做平移(Δx,Δy)
                                     
  • 再做尺度缩放(Sw,Sh)
                                          

2) 回归器的搭建

【输入】

  • 样本值:这里的输入不是Proposal的P=(Px,Py,Pw,Ph),而是Proposal在Pool5(CNN的特征提取模块)后的特征向量。【正样本】候选区域与ground-truth的IoU大于0.6
  • 标签值:
                                        

【输出】需要进行平移变换和尺度缩放的
                                                    

【目标函数】
                                                   

其中,是输入Proposal在pool5的特征向量,是我们要学习的参数

【损失函数】
                                   


 

可视化、框架精简和错误检测

3.1 可视化

在卷积神经网络中,第一层捕获的特征肉眼可视,通常捕获物体的边缘,及突出的颜色信息。越往后的卷积越抽象。
Zeiler 和 Fergus提出了一种基于反卷积手段的可视化研究,RCNN作者提供了一个没有参数的方法,简单直接

思路:选出CNN某层,把它当成一个物体分类器,然后计算所有候选区域(约1000万)通过该部分CNN的特征矩阵。不同channel的特征表示网络对图片上channel种行为响应。我们把特征矩阵按channels划分,得到channels个激活值。然后将相同channel的所有候选区域的激活值,进行排序。展示每个channel上的激活值最高的若干个候选区域。

在这里:可视了第五层的池化层pool5,feature map为6x6x256(忽略边界效应,在网络输入为227x227时,每个pool5单元拥有195x195的感受野)。可以理解为:feature map可以得到256个激活值,表示了对256种行为(网络的256个卷积)响应的程度。

下图展示了256个特征中的6个,每个特征取激活值最高的16个区域。

这个实例来自于VOC 2007上调优的CNN。这些特征都是按照形状、纹理、颜色和材料的特质分布式表示。
第二行--狗和斑点,第三行--红斑点、人脸等....。卷积层提取了图像的抽象特征,后续的FC层,则对这些丰富的特征建立大量的组合来表达各种不同的事物。

3.2 消融研究(Ablation studies)

pool5:输出6x6x512=9216维。
fc6-relu:输出4096。与pool5做了一个4096x9216+4096的运算。
fc7-relu:输出4096。与fc6做了一个4096x4096+4096的运算。

无调优的各层性能

所有参数只在ILSVRC2012上面预训练(上表1-3行)。

  • fc7的特征相对于fc6层的特征表现不够好:这就意味着29%(约1680万)的CNN网络参数对于mAP没有意义
  • fc6与pool5能产生相似的结果:pool5特征更具有代表性(网络特征提取模块只使用了CNN参数的6%)
  • 说明:CNN网络最有代表性的作用来自于卷积网络,而不是参数更多的全连接网络。

有参数调优的各层性能

在VOC2007 trainval上调整我们的CNN参数(表3-6行)

  • fc7比pools高出7.2%(未调整时0.3%):这表明从ImageNet中学习的pool5的特征是一般性的,并且大部分的改进是从非线性获取的。

3.3 测量误差分析

略。3.2中部分内容和3.3涉及之前的目标检测算法,使用的是机器学习,并不是很明白,所以不做分析

 

参考论文:
https://blog.csdn.net/u011974639/article/details/78053203
https://blog.csdn.net/v1_vivian/article/details/78599229
https://blog.csdn.net/just_sort/article/details/80697779

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值