目标检测之Rjin2055金沙网站-CNN

2019-05-28 作者:科学研究   |   浏览(200)

以下为正文。

R-CNN是Ross Girshick在论文《Rich feature hierarchies for accurate object detection and semantic segmentation 》中提出的一种将CNN用于目标检测(object detection)并取得显效果的新算法。该算法一经问世,变得到广泛关注,并迅速发展出Fast R-CNN, Faster R-CNN, Mask R-CNN等一系列相关算法。

jin2055金沙网站 1

R-CNN解决了Object detection两个关键问题:

本文介绍目标检测的常见算法之一:R-CNN。

  1. 速度!经典的目标检测算法使用滑动窗法依次判断所有可能的区域。R-CNN用Selective search算法从图片中提取2000多个候选Region,之后仅在这些Region上提取特征,进行判断。
  2. 数据集太少!论文使用了两个数据集:
    a. ImageNet ILSVC 2012 每张图片都是特定类别。1000个类别。图片数量巨大,但图片内容简单,一张图片只有一个物体。 使用这个数据集预训练一个CNN分类器。
    b. PASCAL VOC 20102012, 该数据集标注了20种不同的物体类别和位置。如:人,交通工具,动物,家具等。该数据集的特色是接近现实世界的场景, 每张图片有多个物体,不过数据量比较少。

jin2055金沙网站 2

● R-CNN的网络结构

目标检测

R-CNN网络结构

R-CNN

R-CNN训练步骤

R-CNN是“Region-based Convolutional Neural Networks”的缩写,这里是原论文。它包括三个部分:

  1. 使用Selective search算法从图片中提取2000多个候选Region(将在后面的论文笔记中介绍Selective search提取算法)。提取的Region大小,长宽比例都不一样;但CNN的输入的图片必须大小固定的。因而,在交给CNN处理之前需要调整各个Region大小;论文中的处理方法是简单粗暴地把Region缩放或拉伸到227 * 227像素。
    a. 注: warp前,先把Region原始边框向外扩16像素。类似于增加16像素内边距。
  2. 将处理后的Region丢给CNN训练,每个Region将提取出一个4096维的特征向量。CNN的架构跟Krizhevsky提供的一样, 5个卷积层,2个fc层(将在后面的论文笔记详细介绍Krizhevsky的CNN在图片分类中的应用)。
  3. 论文为PASCAL VOC 的每个类别都训练一个SVM。将CNN输出的每个Region的特征向量,输入给每个类别的SVM处理打分,得分最高的类别作为这Region的类别。
    a. non-maximum suppression过滤Region, 对任意两个Region,如果他们的IoU(intersection-over-union)大于某个阈值(比如:0.5),则删除得分比较低的Region,保留得分高的Region。
    b. 最后保留得分最高K个Region作为输出

生成物体类别无关的Region proposal的模块。这里没有任何神经网络,它使用图像处理的技术产生可能包含物体的候选区域

● R-CNN训练的要点

一个CNN来提取固定大小的特征。这个CNN只是用来提取特征。

  1. 使用ILSVRC 2012的数据预先训练CNN, 该CNN是用于图片识别,最后输出的是一个1000维数组,代表输入图片属于各个类别的概率。将CNN用于object detection时要稍作修改,最后输出层需要改为输出N 1(N为类别的数目,此处为20,1是加一个背景)
  2. 然后用PASCAL VOC 2012数据进行微调fine-tuning: We treat all region proposals with 0.5 IoU over- lap with a ground-truth box as positives for that box’s class and the rest as negatives 。在每次训练迭代中都使用32个正样本(包括所有类别)和96个背景样本组成的128张图片的batch进行训练(这么做的主要原因还是正样本图片太少了)
    3. SVM的训练:对每个类都训练一个线性的SVM分类器,训练SVM的正样本就是ground-truth框中的图像,完全不包含的region proposal应该是负样本。但是对于部分包含某一类物体的region proposal使用IoU阈值的方法,这次的阈值为0.3,计算每一个region proposal与标准框的IoU,小于0.3的作为负样本,其他的全都丢弃。

每个类别都有一个线性的SVM分类器来判断候选区域是否属于这个类别

● R-CNN的不足之处

它的思路比较简单:首先我们找到可能包含物体的区域,然后用目标识别(Object Recogntion)算法来判断它是否属于猫,是否属于狗,然后选择概率最高的输出。不过和目标识别任务有一点不同在于:目标识别我们假设一张图片一定包含某个目标,比如ImageNet的图片一定是1000个分类中的某一个;但是一个候选的区域里可能不包含1000个分类中的任何物体,因此需要一个”background”类来表示1000个分类之外的物体。

  1. 速度比较慢,很多重复的卷积计算
  2. 网络的各部分需要分开训练,不能同时训练
  3. Proposal Region需要拉伸归一化到统一尺寸,会导致物体变形影响准确率

Region Proposal算法的输入是一张图片,输出是多个可能包含物体的区域。为了保证不漏过可能的物体,Region Proposal可能会输出并不包含物体的区域,当然有的区域也可能包含物体的一部分,或者某些区域虽然包含物体,但是它也包含了很多物体之外的内容。这些区域大小是不固定的,可能它们直接可能会重叠。一个“好”的Region Proposal算法应该召回率要高,准确率也要高(不输出明显不包含物体的区域),当然最理想的情况是图片中有几个物体,它就输出这些物体的Bounding Box。不过这是不可能也是没必要的,否则它就已经完成了目标检查的任务了!准确判断图片是否包含物体会由物体识别算法来完成,因此Region Proposal算法的主要目标是在高召回率的前提下保证一定的准确率。另外它的计算速度也不能太慢。

如下图所示,Region Proposal算法可能会输出蓝色的区域,它们可能只包含物体的一部分。我们的物体识别算法输出的概率没有绿色区域的高,而且它们又有重叠,因此我们最终会判定绿色的区域是包含物体的区域。

jin2055金沙网站 3

Region Proposal

Region Proposal

最简单的的Region Proposal就是滑动窗口,但是于物体的大小不是固定的,因此我们需要穷举所有可能,这样的计算量会非常大。因此我们需要更好的算法。有很多算法用于Region Proposal,R-CNN使用的是seletive search算法。

selective search算法首先使用基于图的图像分割算法,根据颜色对图像进行分割。如图所示,左边是原图,而右图是分割之后的图。

jin2055金沙网站 4

那我们能不能直接把分割处理的区域作为后续的区域呢?答案是否定的,原因是:

很多物体可能包含多个区域

有遮挡的物体,比如咖啡杯里有咖啡,这个方法是无法分割出来的

当然我们可以通过聚类再生成包含物体的区域,但是这些区域通常会包含目标物体之外的其它物体。我们的目标并不是需要实现物体切分,而是用来生成可能包含物体的候选区域。因此我们会把原来的图片做更细(oversegment)的切分,如下图所示,然后通过聚类的方法来生成更多的候选区域。

jin2055金沙网站 5

本文由jin2055金沙网站发布于科学研究,转载请注明出处:目标检测之Rjin2055金沙网站-CNN

关键词: jin2055金沙网站