目标检测算法的分步介绍(第 1 部分)
英文原文: https://www.analyticsvidhya.com/blog/2018/10/a-step-by-step-introduction-to-the-basic-object-detection-algorithms-part-1/ 对原文的表达有部分改动 在本文中,我们将更深入地研究可用于目标检测的各种算法。我们将从 RCNN 家族的算法开始,即 RCNN、Fast RCNN 和 Faster RCNN。在本系列即将发布的文章中,我们将介绍更高级的算法,如 YOLO、SSD 等。 下图是说明目标检测算法如何工作的一个流行示例。图像中的每个物体,从一个人到一只风筝,都以一定的精度被定位和识别。 让我们从最简单的深度学习方法开始,也是一种广泛使用的方法,用于检测图像中的目标——卷积神经网络( CNN)。CNN 的内部工作原理如下: 我们将图像传递给网络,然后通过各种卷积和池化层处理,发送给全连接层。最后,我们以目标类别的形式获得输出。这相当简单,不是吗?对于每个输入图像,我们得到一个相应的类作为输出。我们可以使用这种技术来检测图像中的各种目标吗?让我们看看如何使用 CNN 解决一般的目标检测问题。 使用这种方法的问题在于图像中的目标可能具有不同的纵横比和空间位置。例如,在某些情况下,目标可能覆盖图像的大部分,而在某些情况下,目标可能仅覆盖图像的一小部分。目标的形状也可能不同(在现实生活中经常发生)。由于这些因素,我们将需要大量的区域,从而导致大量的计算时间。因此,为了解决这个问题并减少区域数量,我们可以使用基于区域的 CNN,它使用提案法选择区域。让我们了解这个基于区域的 CNN 可以为我们做什么。 与在大量区域上工作不同的是,RCNN 算法是在图像中选取一堆框并检查这些框中是否有任何一个包含任何目标。 RCNN 使用 selective search 从图像中提取这些框(这些框称为 regions)。 让我们首先了解什么是 selective search 以及它如何识别不同的 regions。基本上四个模式可以构成一个物体:不同的尺度、颜色、纹理和外壳。selective search 识别图像中的这些模式,并在此基础上提出各种regions。以下是selective search 工作原理的简要概述: 举个例子: 到目前为止,我们已经看到了 RCNN 如何实现目标检测。但是这种技术有其自身的局限性。由于以下步骤,训练 RCNN 模型既昂贵又缓慢: 所有这些过程结合起来使 RCNN 非常慢。对每张新图像进行预测大约需要 40-50 秒,这实质上使得模型在面对庞大的数据集时变得笨重且几乎无法构建。 好消息是——我们有另一种目标检测技术,它修复了我们在 RCNN 中看到的大部分问题。 我们还能做些什么来减少 RCNN 算法通常需要的计算时间?我们是否可以每张图像只运行一次并获取所有感兴趣的区域(包含某个目标的区域)。 RCNN 的作者 Ross Girshick 提出了这个想法,即每张图像只运行一次 CNN,然后找到一种方法在 2,000 个区域之间共享该计算。在 Fast RCNN 中,我们将输入图像提供给 CNN,后者反过来生成卷积特征图。使用这些地图,提取提议的区域。然后我们使用 RoI 池化层将所有提议的区域重塑为固定大小,以便可以将其馈入全连接网络。 让我们将其分解为简化概念的步骤: 因此,Fast RCNN 不是使用三个不同的模型(如 RCNN),而是使用单个模型从区域中提取特征,将它们分成不同的类,并同时返回识别类的边界框。 为了进一步分解,我将对每个步骤进行可视化。 这就是 Fast RCNN 如何解决 RCNN 的两个主要问题,1. 将每个图像的一个而不是 2,000 个区域传递给 ConvNet。2. 使用一个而不是三个不同的模型来提取特征、分类和生成边界框。 但即使是 Fast RCNN 也存在某些问题。它还使用 selective search 作为寻找感兴趣区域的建议方法,这是一个缓慢且耗时的过程。每张图像检测目标大约需要 2 秒,这与 RCNN 相比要好得多。但是当我们考虑大型现实生活数据集时,即使是 Fast RCNN 看起来也不那么快了。 Faster RCNN 是 Fast RCNN 的修改版本。它们之间的主要区别在于 Fast RCNN 使用 selective search 来生成感兴趣的区域,而 Faster RCNN 使用 Region Proposal Network ,又名 RPN。 RPN 将图像特征图作为输入并生成一组目标提议,每个提议的目标以分数作为输出。 Faster RCNN 方法通常遵循以下步骤: 让我简要解释一下这个区域提议网络(RPN)实际上是如何工作的。 首先,Faster RCNN 从 CNN 获取特征图并将它们传递给区域提议网络。 RPN 在这些特征图上使用一个滑动窗口,在每个窗口,它生成 k 个不同形状和大小的 Anchor 框: Anchor 框是固定大小的边界框,它们放置在整个图像中,具有不同的形状和大小。对于每个 Anchor,RPN 预测两件事: 我们现在有不同形状和大小的边界框,它们被传递到 RoI 池化层。在 RPN 步骤之后,有可能存在没有分配给它们的类别提议。我们可以获取每个建议并对其进行裁剪,以便每个建议都包含一个目标。这就是 RoI 池化层所做的。它为每个锚点提取固定大小的特征图: 然后将这些特征图传递到具有 softmax 和线性回归层的全连接层。它最终对目标进行分类并预测已识别目标的边界框。 到目前为止,我们讨论的所有目标检测算法都使用区域来识别目标。网络不会一次性查看完整图像,而是依次关注图像的各个部分。这会造成两个并发症:
经典目标检测算法介绍
姓名:牛晓银;学号:20181213993;学院:计算机科学与技术
转自:https://zhuanlan.zhihu.com/p/34142321
【嵌牛导读】:目标检测,也叫目标提取,是一种基于目标几何和统计特征的图像分割。随着计算机技术的发展和计算机视觉原理的广泛应用,利用计算机图像处理技术对目标进行实时跟踪研究越来越热门,对目标进行动态实时跟踪定位在智能化交通系统、军事目标检测及医学导航手术中手术器械定位等方面具有广泛的应用价值。
【嵌牛鼻子】:目标检测、检测模型、计算机视觉
【嵌牛提问】:你知道或者用过哪些目标检测算法?
【嵌牛正文】:
(一)目标检测经典工作回顾
本文结构
两阶段模型因其对图片的两阶段处理得名,也称为基于区域(Region-based)的方法,我们选取R-CNN系列工作作为这一类型的代表。
R-CNN: R-CNN系列的开山之作
论文链接: Rich feature hierarchies for accurate object detection and semantic segmentation
本文的两大贡献:1)CNN可用于基于区域的定位和分割物体;2)监督训练样本数紧缺时,在额外的数据上预训练的模型经过fine-tuning可以取得很好的效果。第一个贡献影响了之后几乎所有2-stage方法,而第二个贡献中用分类任务(Imagenet)中训练好的模型作为基网络,在检测问题上fine-tuning的做法也在之后的工作中一直沿用。
传统的计算机视觉方法常用精心设计的手工特征(如SIFT, HOG)描述图像,而深度学习的方法则倡导习得特征,从图像分类任务的经验来看,CNN网络自动习得的特征取得的效果已经超出了手工设计的特征。本篇在局部区域应用卷积网络,以发挥卷积网络学习高质量特征的能力。
R-CNN将检测抽象为两个过程,一是基于图片提出若干可能包含物体的区域(即图片的局部裁剪,被称为Region Proposal),文中使用的是Selective Search算法;二是在提出的这些区域上运行当时表现最好的分类网络(AlexNet),得到每个区域内物体的类别。
另外,文章中的两个做法值得注意。
一是数据的准备。输入CNN前,我们需要根据Ground Truth对提出的Region Proposal进行标记,这里使用的指标是IoU(Intersection over Union,交并比)。IoU计算了两个区域之交的面积跟它们之并的比,描述了两个区域的重合程度。
文章中特别提到,IoU阈值的选择对结果影响显著,这里要谈两个threshold,一个用来识别正样本(如跟ground truth的IoU大于0.5),另一个用来标记负样本(即背景类,如IoU小于0.1),而介于两者之间的则为难例(Hard Negatives),若标为正类,则包含了过多的背景信息,反之又包含了要检测物体的特征,因而这些Proposal便被忽略掉。
另一点是位置坐标的回归(Bounding-Box Regression),这一过程是Region Proposal向Ground Truth调整,实现时加入了log/exp变换来使损失保持在合理的量级上,可以看做一种标准化(Normalization)操作。
小结
R-CNN的想法直接明了,即将检测任务转化为区域上的分类任务,是深度学习方法在检测任务上的试水。模型本身存在的问题也很多,如需要训练三个不同的模型(proposal, classification, regression)、重复计算过多导致的性能问题等。尽管如此,这篇论文的很多做法仍然广泛地影响着检测任务上的深度模型革命,后续的很多工作也都是针对改进这一工作而展开,此篇可以称得上"The First Paper"。
Fast R-CNN: 共享卷积运算
论文链接: Fast R-CNN
文章指出R-CNN耗时的原因是CNN是在每一个Proposal上单独进行的,没有共享计算,便提出将基础网络在图片整体上运行完毕后,再传入R-CNN子网络,共享了大部分计算,故有Fast之名。
上图是Fast R-CNN的架构。图片经过feature extractor得到feature map, 同时在原图上运行Selective Search算法并将RoI(Region of Interset,实为坐标组,可与Region Proposal混用)映射到到feature map上,再对每个RoI进行RoI Pooling操作便得到等长的feature vector,将这些得到的feature vector进行正负样本的整理(保持一定的正负样本比例),分batch传入并行的R-CNN子网络,同时进行分类和回归,并将两者的损失统一起来。
RoI Pooling 是对输入R-CNN子网络的数据进行准备的关键操作。我们得到的区域常常有不同的大小,在映射到feature map上之后,会得到不同大小的特征张量。RoI Pooling先将RoI等分成目标个数的网格,再在每个网格上进行max pooling,就得到等长的RoI feature vector。
文章最后的讨论也有一定的借鉴意义:
multi-loss traing相比单独训练classification确有提升
multi-scale相比single-scale精度略有提升,但带来的时间开销更大。一定程度上说明CNN结构可以内在地学习尺度不变性
在更多的数据(VOC)上训练后,精度是有进一步提升的
Softmax分类器比"one vs rest"型的SVM表现略好,引入了类间的竞争
更多的Proposal并不一定带来精度的提升
小结
Fast R-CNN的这一结构正是检测任务主流2-stage方法所采用的元结构的雏形。文章将Proposal, Feature Extractor, Object Classification&Localization统一在一个整体的结构中,并通过共享卷积计算提高特征利用效率,是最有贡献的地方。
Faster R-CNN: 两阶段模型的深度化
论文链接: Faster R-CNN: Towards Real Time Object Detection with Region Proposal Networks
Faster R-CNN是2-stage方法的奠基性工作,提出的RPN网络取代Selective Search算法使得检测任务可以由神经网络端到端地完成。粗略的讲,Faster R-CNN = RPN + Fast R-CNN,跟RCNN共享卷积计算的特性使得RPN引入的计算量很小,使得Faster R-CNN可以在单个GPU上以5fps的速度运行,而在精度方面达到SOTA(State of the Art,当前最佳)。
本文的主要贡献是提出Regional Proposal Networks,替代之前的SS算法。RPN网络将Proposal这一任务建模为二分类(是否为物体)的问题。
第一步是在一个滑动窗口上生成不同大小和长宽比例的anchor box(如上图右边部分),取定IoU的阈值,按Ground Truth标定这些anchor box的正负。于是,传入RPN网络的样本数据被整理为anchor box(坐标)和每个anchor box是否有物体(二分类标签)。RPN网络将每个样本映射为一个概率值和四个坐标值,概率值反应这个anchor box有物体的概率,四个坐标值用于回归定义物体的位置。最后将二分类和坐标回归的损失统一起来,作为RPN网络的目标训练。
由RPN得到Region Proposal在根据概率值筛选后经过类似的标记过程,被传入R-CNN子网络,进行多分类和坐标回归,同样用多任务损失将二者的损失联合。
小结
Faster R-CNN的成功之处在于用RPN网络完成了检测任务的"深度化"。使用滑动窗口生成anchor box的思想也在后来的工作中越来越多地被采用(YOLO v2等)。这项工作奠定了"RPN+RCNN"的两阶段方法元结构,影响了大部分后续工作。
单阶段(1-stage)检测模型
单阶段模型没有中间的区域检出过程,直接从图片获得预测结果,也被成为Region-free方法。
YOLO
论文链接: You Only Look Once: Unified, Real-Time Object Detection
YOLO是单阶段方法的开山之作。它将检测任务表述成一个统一的、端到端的回归问题,并且以只处理一次图片同时得到位置和分类而得名。
YOLO的主要优点:
快。
全局处理使得背景错误相对少,相比基于局部(区域)的方法, 如Fast RCNN。
泛化性能好,在艺术作品上做检测时,YOLO表现比Fast R-CNN好。
YOLO的工作流程如下:
1.准备数据:将图片缩放,划分为等分的网格,每个网格按跟Ground Truth的IoU分配到所要预测的样本。
2.卷积网络:由GoogLeNet更改而来,每个网格对每个类别预测一个条件概率值,并在网格基础上生成B个box,每个box预测五个回归值,四个表征位置,第五个表征这个box含有物体(注意不是某一类物体)的概率和位置的准确程度(由IoU表示)。测试时,分数如下计算:
等式左边第一项由网格预测,后两项由每个box预测,以条件概率的方式得到每个box含有不同类别物体的分数。 因而,卷积网络共输出的预测值个数为S×S×(B×5+C),其中S为网格数,B为每个网格生成box个数,C为类别数。
3.后处理:使用NMS(Non-Maximum Suppression,非极大抑制)过滤得到最后的预测框
损失函数的设计
损失函数被分为三部分:坐标误差、物体误差、类别误差。为了平衡类别不均衡和大小物体等带来的影响,损失函数中添加了权重并将长宽取根号。
小结
YOLO提出了单阶段的新思路,相比两阶段方法,其速度优势明显,实时的特性令人印象深刻。但YOLO本身也存在一些问题,如划分网格较为粗糙,每个网格生成的box个数等限制了对小尺度物体和相近物体的检测。
SSD: Single Shot Multibox Detector
论文链接: SSD: Single Shot Multibox Detector
SSD相比YOLO有以下突出的特点:
多尺度的feature map:基于VGG的不同卷积段,输出feature map到回归器中。这一点试图提升小物体的检测精度。
更多的anchor box,每个网格点生成不同大小和长宽比例的box,并将类别预测概率基于box预测(YOLO是在网格上),得到的输出值个数为(C+4)×k×m×n,其中C为类别数,k为box个数,m×n为feature map的大小。
小结
SSD是单阶段模型早期的集大成者,达到跟接近两阶段模型精度的同时,拥有比两阶段模型快一个数量级的速度。后续的单阶段模型工作大多基于SSD改进展开。
检测模型基本特点
最后,我们对检测模型的基本特征做一个简单的归纳。
检测模型整体上由基础网络(Backbone Network)和检测头部(Detection Head)构成。前者作为特征提取器,给出图像不同大小、不同抽象层次的表示;后者则依据这些表示和监督信息学习类别和位置关联。检测头部负责的类别预测和位置回归两个任务常常是并行进行的,构成多任务的损失进行联合训练。
相比单阶段,两阶段检测模型通常含有一个串行的头部结构,即完成前背景分类和回归后,把中间结果作为RCNN头部的输入再进行一次多分类和位置回归。这种设计带来了一些优点:
对检测任务的解构,先进行前背景的分类,再进行物体的分类,这种解构使得监督信息在不同阶段对网络参数的学习进行指导
RPN网络为RCNN网络提供良好的先验,并有机会整理样本的比例,减轻RCNN网络的学习负担
这种设计的缺点也很明显:中间结果常常带来空间开销,而串行的方式也使得推断速度无法跟单阶段相比;级联的位置回归则会导致RCNN部分的重复计算(如两个RoI有重叠)。
另一方面,单阶段模型只有一次类别预测和位置回归,卷积运算的共享程度更高,拥有更快的速度和更小的内存占用。读者将会在接下来的文章中看到,两种类型的模型也在互相吸收彼此的优点,这也使得两者的界限更为模糊。
【目标检测】Fast R-CNN论文详解(Fast R-CNN)
2014年R-CNN横空出世,首次将卷积神经网络带入目标检测领域。受SPPnet启发,rbg在15年发表Fast R-CNN,它的构思精巧,流程更为紧凑,大幅提高目标检测速度。
在同样的最大规模网络上,Fast R-CNN和R-CNN相比,训练时间从84小时减少为9.5小时,测试时间从47秒减少为0.32秒。在PASCAL VOC 2007上的准确率相差无几,约在66%-67%之间。
关于R-CNN的一些总结见我另一篇文章 https://www.jianshu.com/p/c1696c27abf8
R-CNN中用CNN对每一个候选区域反复提取特征,而一张图片的2000个候选区域之间有大量重叠部分,这一设定造成特征提取操作浪费大量计算。
Fast R-CNN将整个图像归一化后直接送入CNN网络,卷积层不进行候选区的特征提取,而是在最后一个池化层加入候选区域坐标信息,进行特征提取的计算。
同上
R-CNN中目标分类与候选框的回归是独立的两个操作,并且需要大量特征作为训练样本。
Fast R-CNN将目标分类与候选框回归统一到CNN网络中来,不需要额外存储特征。
相比R-CNN最大的区别,在于RoI池化层和全连接层中目标分类与检测框回归微调的统一。
RoI池化层可以说是SPP(spatial pyramid pooling)的简化版,关于SPPnet的总结见我的另一篇文章 https://www.jianshu.com/p/90f9d41c6436 。RoI池化层去掉了SPP的多尺度池化,直接用MxN的网格,将每个候选区域均匀分成M×N块,对每个块进行max pooling。从而将特征图上大小不一的候选区域转变为大小统一的特征向量,送入下一层。
Fast R-CNN在特征提取上可以说很大程度借鉴了SPPnet,首先将图片用选择搜索算法(selective search)得到2000个候选区域(region proposals)的坐标信息。另一方面,直接将图片归一化到CNN需要的格式,整张图片送入CNN(本文选择的网络是VGG),将第五层的普通池化层替换为RoI池化层,图片然后经过5层卷积操作后,得到一张特征图(feature maps),开始得到的坐标信息通过一定的映射关系转换为对应特征图的坐标,截取对应的候选区域,经过RoI层后提取到固定长度的特征向量,送入全连接层。
在R-CNN中的流程是先提proposal,然后CNN提取特征,之后用SVM分类器,最后再做bbox regression进行候选框的微调;Fast R-CNN则是将候选框目标分类与bbox regression并列放入全连接层,形成一个multi-task模型。
cls_ score层用于分类,输出K+1维数组p,表示属于K类和背景的概率。 bbox_predict层用于调整候选区域位置,输出4*K维数组t,表示分别属于K类时,应该平移缩放的参数。
首先用ILSVRC 20XX数据集进行预训练,预训练是进行有监督的分类的训练。然后在PASCAL VOC样本上进行特定调优(fine tunning),调优的数据集中25%的正样本(与真实框IoU在0.5-1的候选框)、75%的负样本(与真实框IoU在0.1-0.5的候选框)。PASCAL VOC数据集中既有物体类别标签,也有物体位置标签,有20种物体;正样本仅表示前景,负样本仅表示背景;回归操作仅针对正样本进行。
在调优训练时,每一个mini-batch中首先加入N张完整图片,而后加入从N张图片中选取的R个候选框。这R个候选框可以复用N张图片前5个阶段的网络特征,文章中N=2,R=128。微调前,需要对有监督预训练后的模型进行3步转化:
图像分类任务中,用于卷积层计算的时间比用于全连接层计算的时间多,而在目标检测任务中,selective search算法提取的建议框比较多【约2k】,几乎有一半的前向计算时间被花费于全连接层,就Fast R-CNN而言,RoI池化层后的全连接层需要进行约2k次【每个建议框都要计算】,因此在Fast R-CNN中可以采用SVD分解加速全连接层计算,具体实现如下:
① 物体分类和窗口回归都是通过全连接层实现的,假设全连接层输入数据为x,输出数据为y,全连接层参数为W,尺寸为u×v,那么该层全连接计算为:
y=Wx (计算复杂度为u×v)
② 若将W进行SVD分解,并用前t个特征值近似代替,即:
W=U∑VT≈U(u,1:t)⋅∑(1:t,1:t)⋅V(v,1:t)T
那么原来的前向传播分解成两步:
y=Wx=U⋅(∑⋅VT)⋅x=U⋅z
计算复杂度为u×t+v×t,若t<min(u,v),则这种分解会大大减少计算量;
在实现时,相当于把一个全连接层拆分为两个全连接层,第一个全连接层不含偏置,第二个全连接层含偏置;实验表明,SVD分解全连接层能使mAP只下降0.3%的情况下提升30%的速度,同时该方法也不必再执行额外的微调操作。
R-CNN和SPPnet中采用RoI-centric sampling:从所有图片的所有候选区域中均匀取样,这样每个SGD的mini-batch中包含了不同图像的样本,不同图像之间不能共享卷积计算和内存,运算开销大。
Fast R-CNN中采用image-centric sampling: mini-batch采用层次采样,即先对图像采样【N个】,再在采样到的图像中对候选区域采样【每个图像中采样R/N个,一个mini-batch共计R个候选区域样本】,同一图像的候选区域卷积共享计算和内存,降低了运算开销。
image-centric sampling方式采样的候选区域来自于同一图像,相互之间存在相关性,可能会减慢训练收敛的速度,但是作者在实际实验中并没有出现这样的担忧,反而使用N=2,R=128的image-centric sampling方式比R-CNN收敛更快。
这里解释一下为什么SPPnet不能更新spatial pyramid pooling层前面的卷积层,而只能更新后面的全连接层? 一种说法解释卷积特征是线下计算的,从而无法在微调阶段反向传播误差;另一种解释是,反向传播需要计算每一个RoI感受野的卷积层梯度,通常所有RoI会覆盖整个图像,如果用RoI-centric sampling方式会由于计算too much整幅图像梯度而变得又慢又耗内存。
有的时候,好的成果并不一定全都是首创,Fast R-CNN就是一个很好的说明,SPPnet的池化思想在Fast上得到了简化与发扬,同时作者rbg在R-CNN的基础上进一步将检测框回归整合到了神经网络中来,使得Fast的训练测试速率得到非常大的提升。
论文原文:
https://www.semanticscholar.org/paper/Fast-R-CNN-Girshick/3dd2f70f48588e9bb89f1e5eec7f0d8750dd920a
参考文章:
https://blog.csdn.net/shenxiaolu1984/article/details/51036677
目标检测算法---faster rcnn 知识简要回顾(测试篇)
Faster RCNN检测部分主要可以分为四个模块:
1.特征抽取:用于抽取图像特征,一般可以使用vgg、resnet和mobilenet等backbone;
2.RPN(Region Proposal Network):用于产生候选框,主要做一些粗糙的分类和回归操作;
3.RoI Pooling:主要是为了解决全连接层需要固定尺寸输入,而实际输入大小不一的问题;
4.Classification and Regression:精细化分类和回归。
faster rcnn算法大致流程如下:
彩色图像通过backbone进行特征提取,输出最后一层的feature map。接着将这些feature map进一步做基于3x3卷积核的特征提取,该目的是增强模型的鲁棒性。将输出送入两个分支,第一个分支跟类别有关,这里主要是用于简单分类,区分是背景还是物体,这是针对anchor而言的;第二个分支则是用于初步预测候选框的偏移量,这个也是基于anchor而言的;再将前两个分支的结果送入图中的proposal中,首先会根据positive类的score筛选前6000个候选框,再将anchor的坐标和得到的偏移进行整合,得到初步候选框坐标,接着在做NMS,除去重叠严重的框,再经过了NMS后的框中,根据类别score取前300个框。然后将结果送入roi pooing层,用于生成固定尺寸的特征区域,以方便后边的全连接层接受信息;全连接层用于最后提取特征,得到精细的类别和框的偏移量。
R-CNN, Fast R-CNN, Faster R-CNN, YOLO:目标检测算法总结
参考链接 以下是文中涉及的算法的最原始的文章: 一个最直接的解决办法是从图中取不同的感兴趣区域,然后对这些区域用CNN进行分类,检测这些区域中是否有物体的存在。 但是待检测物体可能存在于图片的不同位置而且有不同的长宽比例。所以以上方法需要选取量非常大的区域并需要非常大的计算量。 因此,R-CNN, Fast R-CNN, Faster R-CNN, YOLO被开发去又快又准地找物体。 为了解决上述提到的有大量区域被选择的问题, Ross Girshick et al 提出了一种方法:用了选择性搜索从图片提取了2000个区域,这些区域被称为”region proposals“。 用这种办法,我们不需要去分类巨大数量的区域了,我们只需要去处理2000个区域。这2000个区域是用如下的选择性搜索算法(selective search algorithm)来找到的: 这篇文章 介绍了更多关于选择性搜索算法(selective search algorithm)的内容。 RCNN步骤: R-CNN存在的问题: Fast R-CNN的几个改进: The same author of the previous paper(R-CNN) solved some of the drawbacks of R-CNN to build a faster object detection algorithm and it was called Fast R-CNN. The approach is similar to the R-CNN algorithm. Fast R-CNN更快的原因是: Fast R-CNN更快: From the above graphs, you can infer that Fast R-CNN is significantly faster in training and testing sessions over R-CNN. When you look at the performance of Fast R-CNN during testing time, including region proposals slows down the algorithm significantly when compared to not using region proposals. Therefore, region proposals become bottlenecks in Fast R-CNN algorithm affecting its performance. 上面两个算法的缺点: selective search耗时 Both of the above algorithms(R-CNN & Fast R-CNN) uses selective search to find out the region proposals . Selective search is a slow and time-consuming process affecting the performance of the network. Faster R-CNN的改进: 不用selective search去找region proposals; 用network去找region proposals; Therefore, Shaoqing Ren et al . came up with an object detection algorithm that eliminates the selective search algorithm and lets the network learn the region proposals . Faster R-CNN的步骤: 时间上的对比: Faster R-CNN最快并且能用作实时目标检测 之前几种算法的缺点: 产生region的时候没有纵览整幅图。其实图的某些部分有更高的可能性包含物体。 All of the previous object detection algorithms use regions to localize the object within the image. The network does not look at the complete image. Instead, parts of the image which have high probabilities of containing the object . YOLO的思想: 用一个单独的网络去预测bounding boxes和bounding boxes中存在物体的概率 YOLO or You Only Look Once is an object detection algorithm much different from the region based algorithms seen above. In YOLO, a single convolutional network predicts (1) the bounding boxes and (2)the class probabilities for these boxes. YOLO的具体步骤: How YOLO works is that: YOLO的优缺点: