1. 磐创AI-开放猫官方网站首页
  2. Medium

基于CNN的两级探测器综述与比较

R-CNN:具有CNN特色的地区(2014)

测试时间检测

  • 输入:一张测试图片。
  • 提取区域建议:使用选择性搜索提取约2000个区域建议。
  • 计算CNN的特点:包装每个提案并通过CNN(AlexNet)向前传播。
  • 区域分类:对于每个提取的特征向量,通过一组支持向量机对每个类别进行评分。对每个类单独应用贪婪非最大值抑制。

仅使用图像级注释预先训练CNN(AlexNet)关于ImageNet数据集(此数据的边界框标签不可用)。

为了使CNN适应新的任务(检测)和新域(扭曲的提案窗口),预先训练的CNN使用唯一的扭曲区域提案进一步微调。

图像输入:对于每个提案区域,按照CNN的要求将该区域的图像数据转换为固定像素大小(227×227)。无论候选区域的大小或长宽比如何,都应将其周围紧凑边界框中的所有像素扭曲为所需的大小。紧边界框是通过扩展原始框来创建的,以便在扭曲大小下,围绕原始框恰好有p(p=16)个像素的扭曲图像上下文。

输出层:将1000路分类层替换为随机初始化的(N+1)路分类层(N个对象类+背景)。培训标签定义为:

  • 正面例子:带有≥0.5IOU的区域提案与一个地面事实框重叠,作为该框类的正面内容。
  • 反面教材:睡觉地区倡议。

小批量:(大小=128)均匀抽样阳性32例,背景96例。

训练特定类别的线性支持向量机。正例和反例的定义与微调不同:

  • 正面例子:每个类的地面事实边界框。
  • 负面示例:带有≤0.3IOU0.3的区域提案与一个地面事实框重叠,作为该框的类的底片。

一旦(从微调的CNN中)提取了特征并分配了训练标签,则采用标准的硬否定挖掘方法优化每类一个线性支持向量机。

包围盒回归

训练线性回归模型以预测给定用于选择性搜索区域建议的pool5特征的新检测窗口。

缺点

大量重叠方案(一幅图像2000多个方框)的冗余特征计算导致检测速度极慢。

空间金字塔汇集网络:SPPNet(2014)

对R-CNN的改进

  • R-CNN很慢,因为它重复地将深卷积网络应用于每幅图像约2000个窗口。
  • SPPNet可以比R-CNN快几个数量级,因为它允许在整个图像上只运行一次卷积层(可能是在多个尺度上),然后在特征地图上提取每个候选窗口的特征。

测试时间检测

与R-CNN类似,唯一的区别是:

  • 计算CNN特征:不是计算每个提案区域的特征,而是计算整个图像上的特征地图,然后在特征地图上提取每个提案区域的特征。

空间金字塔池层


为了从特征地图中提取不同大小的建议区域的特征,在最后一卷积层的顶部添加了空间金字塔池层。空间金字塔池化可以通过在局部空间箱中进行池化(本文中的最大池化)来维护空间信息。这些空间存储箱的大小与图像大小成正比,因此无论图像大小如何,存储箱的数量都是固定的。因此,SPP层可以接受任意纵横比和比例的输入,并生成固定长度的输出,然后这些输出被馈送到完全连接的层中,以生成最终的特征。

空间金字塔汇集的输出是具有表示为M(k是最后卷积层中的滤波器数目)的仓数的km维向量。对于每个候选窗口,使用一个4级空间金字塔(1×1,2×2,3×3,6×6,共50个箱)来汇集特征。这将为每个窗口生成12,800-d(256×50)的表示。这些表示被提供给网络的完全连接层。

美国有线电视新闻网(CNN)监督的前期培训

在R-CNN之后,仅使用图像级注释对CNN(ZF-5)进行了关于ImageNet数据集的预培训。然而,对CNN结构有一个小的修改:在最后一卷积层之上添加l级空间金字塔汇合层,然后下一全连接层(FC6)的输入是l个输出的级联。

CNN特定领域的微调

类似于R-CNN的实现。但是,由于这些要素是从cv5要素地图汇集而来的,为简单起见,只对完全连接的图层进行了微调。

在这种情况下,数据层接受Conv5之后的固定长度的集合特征,随后是FC6、7层和新的(N+1)路FC8层。在每个小批次中,25%的样品呈阳性。

对象类别分类器

类似于R-CNN的实现。如果任何负值样本与另一个负值样本重叠超过70%,则删除该负值样本。

包围盒回归

类似于R-CNN的实现。然而,用于回归的特性是来自Conv5的集合特性,作为R-CNN中使用的pool5特性的对应物。用于回归训练的窗口是那些与地面真实窗口重叠至少50%的窗口。

缺点

  • 培训仍然是多阶段的。
  • SPPNet只微调其完全连接的层,而忽略所有之前的层。

Fast R-CNN(2015)

对R-CNN和SPPNet的改进

  • 更高的检测质量(MAP)。
  • 训练是单阶段的,采用多任务失利。与R-CNN和SPPNet不同,培训是一个多阶段的管道。
  • 培训可以更新所有网络层。与SPPNet不同,微调算法不能更新空间金字塔池之前的卷积层。
  • 功能缓存不需要磁盘存储。对于R-CNN和SPPNet,需要提取支持向量机和包围盒回归训练所需的特征并将其写入磁盘。

测试时间检测

  • 输入图像:测试图像。
  • 提取区域建议:提取约2000个区域建议并将其命名为感兴趣区域(ROI)。
  • 计算CNN特征:计算整个图像的特征图。每个ROI被汇集成固定大小的特征地图,然后通过全连通层(FCS)映射到特征向量。
  • 分类和包围盒回归:对于每个ROI r,网络产生两个输出向量:Softmax类概率和相对于r的每个类包围盒回归偏移量。

ROI层仅仅是SPPNet中使用的空间金字塔池层的特例,其中只有一个金字塔级别。每个ROI由四元组(r,c,h,w)定义,该四元组指定其左上角(r,c)以及其高度和宽度(h,w)。ROI最大合用的工作方式是将h×w ROI窗口划分为大约大小为h/H×w/W的子窗口的H×W网格,然后将每个子窗口中的值最大合用到相应的输出网格单元中。与标准最大池化一样,池化独立应用于每个要素贴图通道。

从预先训练的CNN初始化

预先训练好的CNN经历了三次转变:

  • 最后的最大池化层由ROI池化层代替,该ROI池化层通过将H和W设置为与网络的第一完全连接层兼容来配置(例如,对于VGG16,H=W=7)。与SPPNet相似,但只有一个金字塔级别(H×W)。
  • 网络的最后一个完全连接层和Softmax被替换为两个兄弟层:(1)K+1个类别上的完全连接层和Softmax;(2)特定于类别的边界盒回归变量。有了这两个新层,就不再需要特定于类的支持向量机和盒回归。
  • 网络被修改为接受两个数据输入:图像列表和这些图像中的ROI列表。

CNN特定领域的微调

每个训练ROI被标记有地面真实类u和地面真实包围盒回归目标v。

  • 前景(正)示例:具有≥0.5IOU的对象方案与地面实况边界框重叠。
  • 背景(负)示例:IOU最大且基本事实在[0.1,0.5]区间内的对象提案。

FAST R-CNN使用带有一个微调阶段的简化训练过程,该阶段使用多任务损失联合优化Softmax分类器和边界框回归变量:

  • L_cls(p,u):真类u的原木损失。
  • [U≥1]L_loc(tu,v):当u≥1.背景ROI忽略L_loc时,包围盒回归的鲁棒L1损失。

  • 超参数λ控制两个任务损失之间的平衡。

与SPPNet不同,SPPNet只对完全连接的层进行微调,而Fast R-CNN通过ROI池层的反向传播来更新所有网络层。

小批量:(大小R=128)均匀随机抽取N=2幅图像,每幅图像采样64个感兴趣区,其中25%的样本为前景示例。

用于更快检测的截断SVD

通过截断奇异值分解(SVD)加速大的全连通层。由权重矩阵W(u×v)参数化的层被近似分解为

截断的SVD将参数计数从uv减少到t(u+v),如果t远远小于min(u,v),这可能是显著的。

缺点

尽管Fast-RCNN成功地融合了R-CNN和SPPNet的优点,但其检测速度仍然受到区域提议的限制。

更快的R-CNN(2015)

对Fast R-CNN的改进

  • 通过引入区域建议网络(RPN)来去除区域建议,其中区域建议是由基于区域的检测器使用的卷积特征映射直接生成的。
  • RPN仅仅是一种完全卷积网络(FCN),并且可以针对生成具有大范围尺度和纵横比的检测建议的任务进行端到端的训练。
  • 快速R-CNN是深度完全卷积网络(建议区域)和快速R-CNN检测器(使用建议区域)的组合。整个系统是一个单一的、统一的目标检测网络。

测试时间检测

类似于快速R-CNN,但速度更快R-CNN生成区域建议(从RPN分支)并从同一网络计算CNN特征。采用非最大值抑制的方法来减少由于某些高度重叠的RPN方案而产生的冗余度,最终得到每幅图像约2000个方案区域。

地区建议书网络(RPN)


区域建议网络(RPN)是一个完全卷积网络,它将图像(任意大小)作为输入并输出一组矩形对象建议,每个矩形对象建议都有一个客观性分数。它与快速R-CNN目标检测网络共享一组公共卷积层。

为了生成区域建议,一个小网络在最后一个共享卷积层输出的卷积特征地图上滑动。该小网络以输入卷积特征图的n×n(在本文中为n=3)个空间窗口作为输入。每个滑动窗口被映射到一个低维特征,并被馈送到两个兄弟的完全连接层-盒回归层(REG)和盒分类层(CLS)。因为迷你网络以滑动窗口方式运行,所以完全连接的层在所有空间位置之间共享。

在每个滑动窗口位置,同时预测k个区域建议。因此,REG层输出4k个坐标,而CLS层输出2k个分数。相对于称为锚点的k个参考框,k个方案被参数化。锚定位于滑动窗口的中心,并与比例和纵横比相关联。本文使用3种不同的比例(128²、256²、512²)和长宽比(1:1、1:2、2:1),在每个滑动窗口产生k=9个锚点。因此,对于尺寸为W×H的卷积特征图,总共有WHK个锚。

为了训练RPN,为每个锚分配了一个二进制类别标签(对象或非对象)。

  • 正锚点:(I)IOU最高的一个或多个锚点与地面实况框重叠,或(Ii)借条重叠大于0.7的锚点与任何地面实况框重叠。
  • 负锚定:如果所有事实框的欠条比率都低于0.3。
  • 其他主播:既不积极也不消极的主播对培训目标没有贡献。


图像的损失函数定义为如图所示的LHS。这两个项由N_cls和N_reg归一化,并由平衡参数λ加权。在本文的实现中,N_cls=256是最小批量,N_reg~2400是锚位数。默认情况下,λ=10,因此这两个术语的权重大致相等。

边界框回归采用4个坐标的参数化,如LHS所示。这可以被认为是从锚盒到附近的地面真实盒的包围盒回归。

由于用于回归的特征在特征地图上具有相同的空间大小(3×3),为了考虑不同的大小,学习了一组k个包围盒回归变量。每个回归变量负责一个比例和一个纵横比,k个回归变量不共享权重。

小批量:(大小=256)选择包含许多正负示例锚点的单个图像。随机抽样256个主播,其中采样的正负主播的比例高达1:1,如果一幅图像中的正样本少于128个,则小批量填充负样本。

RPN和Fast R-CNN的共享功能

采用实用的4步训练算法,通过交替优化学习共享特征。

  • 步骤1:培训RPN。此网络使用ImageNet预先训练的模型进行初始化,并针对区域建议任务进行端到端微调。
  • 步骤2:使用STEP-1 RPN生成的建议,由Fast R-CNN培训单独的检测网络。该检测网络也由ImageNet预先训练的模型初始化。

此时,这两个网络不共享卷积层。

  • 步骤3:使用检测器网络初始化RPN训练,但修复共享卷积层,并且仅微调RPN特有的层。

现在这两个网络共享卷积层。

  • 第四步:保持共享的卷积层固定,微调Fast R-CNN的独特层。

因此,两个网络共享相同的卷积层并形成统一的网络。

功能金字塔网络(2017)

相对于速度更快的R-CNN的改进

  • 通过自然地利用ConvNet的特征层次的金字塔形状,以边际额外成本构建在所有级别都具有丰富语义的特征金字塔。
  • 在基本较快的R-CNN系统中使用FPN实现了SOTA性能。

测试时间检测

与其应用的检测系统相同。

要素金字塔网络

金字塔的构建包括(1)自下而上的路径;(2)自上而下的路径;(3)横向连接。

(1)自下而上路径是主干ConvNet的前馈计算,它计算由多个尺度的特征映射组成的特征层次,缩放步长为2。(通常有多个层生成相同大小的输出贴图,并且这些层被分组在相同的网络阶段中。)为每个阶段定义一个金字塔级别,并选择每个阶段的最后一个较晚的输出以形成特征地图的参考集合。这些要素地图将被丰富以创建要素金字塔。

具体地说,对于ResNet,选择每个阶段的最后剩余挡路输出的特征激活。对于vv2、v3、v4和v5输出,这些最后剩余块的输出被表示为{C2,C3,C4,C5}。它们相对于输入图像的步长为{4,8,16,32}像素。

(2)自上而下路径通过对来自较高金字塔层次的空间上较粗但语义上较强的特征地图进行上采样,使较高分辨率的特征产生幻觉。然后通过横向连接用来自自下而上路径的特征来增强这些特征。每个横向连接合并来自自下而上路径和自上而下路径的相同空间大小的特征地图。自下而上的功能地图具有较低级别的语义,但由于其子采样次数较少,因此其激活更精确地进行了本地化。

对于较粗分辨率的特征地图,我们将空间分辨率上采样2倍(最近邻上采样)。然后,通过逐个元素的加法将上采样的映射与相应的自下而上映射(其经历1×1卷积层以降低信道维数)合并。重复此过程,直到生成最精细的分辨率贴图。

为了开始迭代,在C5上附加1×1卷积层以产生最粗的分辨率图。最后,在每个合并后的地图上附加3×3的卷积,生成最终的特征地图,目的是减少上采样的混叠效应。这组最终的特征地图称为{P2,P3,P4,P5},分别对应于空间大小相同的{C2,C3,C4,C5}。

由于金字塔的所有级别与传统的特征化图像金字塔一样使用共享分类器/回归量,因此所有特征映射中的特征维数(通道数,表示为d)是固定的(在本文中d=256),因此所有额外的卷积层都具有d通道输出。

RPN的特征金字塔网络

在最初的RPN设计中,一个小的子网是在密集的3×3滑动窗口上,在单尺度卷积特征图上进行评估的。只需将单比例特征地图替换为FPN即可对其进行简单调整:将相同的子网附加到要素金字塔上的每一层。

由于子网在所有金字塔级别的所有位置上密集滑动,因此不再需要特定级别上的多比例锚点。相反,锚被设计为在{P2、P3、P4、P5、P6}上分别具有{32²、64²、128²、256²、512²}像素的面积,并且在每个级别具有多个纵横比{1:2、1:1、2:1}。金字塔上总共有15个锚。

训练标签在更快的R-CNN中按照相同的约定被分配给主播。请注意,地面真值框的比例并未显式用于将其指定给棱锥体的级别;相反,地面真值框与已指定给棱锥体级别的锚点相关联。该子网络的参数在所有特征金字塔级别之间共享,因为人们认为金字塔的所有级别共享相似的语义级别。

用于Fast R-CNN的特征金字塔网络

FAST R-CNN使用ROI池来提取特征,并且主要在单比例特征地图上执行。要将其与FPN一起使用,需要将不同比例的ROI(由RPN生成)分配给金字塔级别。宽度w和高度h的ROI通过以下方式分配给特征金字塔的级别P_k:

预测器头部(在Fast R-CNN中,头部是特定于类的分类器和边界盒回归变量)连接到所有级别的所有ROI。同样,无论其级别如何,头部都共享参数。

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/30/%e5%9f%ba%e4%ba%8ecnn%e7%9a%84%e4%b8%a4%e7%ba%a7%e6%8e%a2%e6%b5%8b%e5%99%a8%e7%bb%bc%e8%bf%b0%e4%b8%8e%e6%af%94%e8%be%83-2/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息