2.3 OverFeat

news/2024/7/7 9:51:46

目录

  • 2.3 OverFeat
    • 2.3.1 任务与评估指标
    • 2.3.2 OverFeat 模型设计
    • 2.3.3 多尺度分类
    • 2.3.4、OverFeat 视图
      • 参考文献

2.3 OverFeat

OverFeat 是 ILSVRC2013 中目标定位任务的冠军,它提出了一种集成式框架,将图像分类、目标定位以及目标检测三种任务的学习过程集成到同一个 CNN 模型下。其核心原理是利用多尺度选择以及滑动窗口方式进行目标扫描并通过 CNN 进行预测,另外在目标定位与检测任务中,边界框的预测值是通过累积方式而非传统的非极大抑制方式来增加检测置信度的,事实证明,该方式在当时的年代具有非常强的竞争力。本节内容将详细介绍 OverFeat 特征提取器。

OverFeat 与另一传奇模型 R-CNN 处于同一时期,R-CNN 的改进版本远超 OverFeat,在当时代表最先进的基于 CNN 网络架构的目标检测算法,且在后期逐步改进提出了 Fast R-CNN、Faster R-CNN 等家族式模型发展,OverFeat 实际上也早已退出了历史的舞台,但是其中的很多核心思想仍然值得我们去学习,去思考。

2.3.1 任务与评估指标

OverFeat 将图像分类、目标定位以及目标检测三个 CV 任务集成在一个框架下,三种任务分别有各自不同的评价指标:

  • 图像分类任务:给定一张图片,预测 5 种图片中包含的主体对象类别,若 5 种中存在争取类别标签则认为识别正确,否则识别错误

  • 目标定位任务:给定一张图片,除了上述的图像分类任务外,还需要预测该对象的区域位置,并用矩形框进行框定,且要求给定的边界框至少与真实边界框有 50% 的重叠度。

    每个边界框区域可以认为是一些像素的集合,例如,假设预测边界框的像素集合为 A A A,真实边界框的像素集合为 B B B,则要求 I o U = A ⋂ B A ⋃ B > 50 % IoU = \frac{A \bigcap B}{A\bigcup B} >50\% IoU=ABAB>50%

  • 目标检测任务:目标定位的任务主要是对主体目标进行位置检测,而目标定位任务则可能对图片中包含的所有对象进行位置定位,若无主体对象,则需要对背景图进行检测。其主要评价指标是 mAP(mean average precision).

可以看到,三种不同任务之间的难度逐步提升,且每一个任务均是后续任务的基础。

2.3.2 OverFeat 模型设计

OverFeat 使用的卷积框架主要借鉴自 AlexNet 网络架构,并基于此给出“快速”和“高精度”两个版本的架构,如下所示:
【图 1 快速计算版本, 24 × 24 24\times24 24×24 改为 28 × 28 28\times 28 28×28
【图 2 高精度版本】

与 AlexNet 网络相比,其主要却别在于:

  • 没有明显的正则化层被使用,不再使用 LRN
  • 采用非重叠的最大池化层
  • 高精度版本中,在第一、二层中采用更小的卷积步,可以得到更大的特征层。

两种不同版本模型之间的参数、计算量差异以及它们在图像分类任务上的性能如图 3 和 图 4 所示,尽管高精度版本的精度高,然而计算量却几乎是快速版本的两倍:
【图 3】 【图 4】

其中 o v e r F e a t − 1 overFeat-1 overFeat1 表示只使用单一的网络架构, o v e r F e a t − 7 overFeat-7 overFeat7 表示 7 种不同架构的组合平均值。Fine/coarse 表明在分类中池化操作的位移量,$Fine = 0, 1, 2; coarse = 0 $. 不同尺度的相关配置如图 5 所示:
【图 5】

2.3.3 多尺度分类

以 AlexNet 为例,其预测方法为在输入图像的四个角落以及中心位置裁剪 5 个区域并采用水平镜像翻转作为 10 个不同输入进行预测,并在结果上求平均值。然而这种裁剪方式可能会忽略掉图像中的许多区域,各个裁剪片段中也存在重叠区域,造成计算冗余。且该方法尺度单一,对于分类问题也许有效但对于定位或目标检测任务却很差。

利用滑动窗口对图像的每个位置的各个尺度下进行计算听起来有些疯狂甚至不切实际,然而对于 CNN 来说,卷积的过程本质上便可以理解为滑动窗口的扫描过程,但是对于一个 CNN 网络的架构,其输入层的接收尺寸是固定的,为了解决这个问题,我们保持网络输入不变,而将图像进行不同尺寸的缩放,如图 5 所示,整个卷积网络的目的是将图像的任意大小区域在每个尺度上映射到一个 C C C C C C 为分类标签数)维的输出空间上。

然而上述高度版网络架构上,存在两层步伐为 2 的卷积层以及两层间隔为 3 的池化层,整个特征提取器部分的下采样率为 2 × 2 × 3 × 3 = 36 2\times2\times3\times3=36 2×2×3×3=36。相当于在每一个维度上每个 36 个像素点产生一个分类向量。为了更加细粒度化,在第 5 层的池化操作中,我们采用偏移池化进行子采样。具体地,例如在第 5 层池化层的输入特征图大小为 20 × 20 × c h a n n e l 20\times 20\times channel 20×20×channel ,我们只考虑其中一个维度,利用三种不同的偏移量( Δ = 0 , 1 , 2 \Delta = 0,1,2 Δ=0,1,2)进行间距为 3 的池化,则池化后的维度为 6。如果考虑 2 维,则可以产生 9 种不同的组合。分类层(6、7、8 三层)则是将一个大小为 5 5 5 (如果考虑二维则是 5 × 5 5\times5 5×5)的输入空间映射为一个 C C C 维的输出值。因此上述经过 3 种不同偏移池化得到的 3 × 6 × c h a n n e l 3\times 6\times channel 3×6×channel 特征图经过分类层处理得到 3 × 2 × C 3\times 2\times C 3×2×C 的输出,即 6 × C 6\times C 6×C 的输出。整个过程如下图所示,图中 c h a n n e l = 256 channel=256 channel=256
【图 6】

考虑到每张图片做镜像处理,在 6 个不同的尺度上进行计算,则实际产生 12 组不同的特征向量组,分别代表不同镜像下的不同尺度获取的输出空间向量。则最终的计算结果为:首先在这 12 组中分别找出各类别所对应的最大特征值,例如对于第一种尺度我们最终得到 3 × 3 × C 3\times 3 \times C 3×3×C 的特征向量,每一个类别实际有 9 种不同的概率值数字,我们取 9 个数字中的最大值作为该类别在该镜像尺度下的特征值,则 12 组中最终得到一个 12 × C 12\times C 12×C 维的特征向量;其次,对每一个类别在这 12 种不同的镜像尺度组合下求平均值;最终根据 Top-1 或 Top-5 指标进行选择输出。

不过最终实验证明,这种策略对结果的提升影响并不大,而不同尺度上的处理以及模型融合对结果影响较大。另外网络在最后取消了传统 CNN 网络架构的全连接层,而是全部采用卷积层代替,即全卷积网络架构,它的主要优势在于保证了图像的空间结构,这对于目标检测以及语义分割等空间任务是非常重要的。

2.3.4、OverFeat 视图

OverFeat 在定位任务是在分类任务的基础上保持模型的特征提取层(15层)不边,将原有的分类层(68层)替换为全连接层,最后一层的输出维度为 4,分别表示边界框的 4 条边界信息,即将分类任务的分类任务替换为回归任务,另外分类任务在 softmax 下的输出值可以作为边界框的置信度使用。

具体的定位逻辑为:

  • 在不同的尺度上分别利用分类模型选择最高的 Top-K 种分类结果
  • 对于每种选定的分类结果在不同尺度的所有空间位置上进行边界框预测
  • 然后对边界框进行融合,同时考虑边界框的置信度,选择具有最高置信度的融合边界框作为最终定位结果。

整个架构的整体视图如下:
【图 7】

TODO: 作者在论文中并未给出该过程的详细过程,一些实现上的细节依赖于源码的解读,OverFeat 本质上是一个特征提取器,并非完整的分类或定位任务框架,加之年代久远,算法性能与目前先进模型相比较差,因此该部分相关内容我们暂不再详细介绍。

参考文献

1、 Sermanet, Pierre, David Eigen, Xiang Zhang, Michaël Mathieu, Rob Fergus, and Yann LeCun. “OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks” arXiv preprint arXiv:1312.6229 (2013).

2、CS231n tutorial slides


http://www.niftyadmin.cn/n/3657474.html

相关文章

ViewState 解码工具

每天都能收到不少的“无效的视图状态”这样的错误报告。今天突然想知道如果我只能看到ViewState的信息,即源文件中类似如下的这些信息时候,我是否能分析出ViewState中到底存在了那些信息。 结果发现了一个现成的解码工具,这个工具可以在如下地…

两个Cookie类

.Net 提供了两个Cookie类: System.Web.HttpCookie 类 和 System.Net.Cookie 类 对应的有两个Cookie 集合类 System.Web.HttpCookieCollection 类 和 System.Net.CookieCollection 类 我们一般来理解他们的区别就是下面简单的一句: System.Web 命名空间下的是给服务器…

2.4 R-CNN

目录2.4 R-CNN2.4.1 采样2.4.2 R-CNN 架构2.4.3 R-CNN 设计细节2.4.3.1 IoU 概念2.4.3.2 图片缩放策略2.4.3.3 预训练微调模式2.4.3.4 NMS 算法2.4.3.5 边界框回归参考资料2.4 R-CNN R-CNN 由 Ross Girshick(rbg) 提出,Ross Girshick是 Facebook 人工智能研究&…

使用 Request.QueryString 接受参数时,跟编码有关的一些问题

我们先来看以下几个请求,看a.aspx 页面用Request.QueryString接受到的是啥信息? 页面URLRequest.QueryString["info"]接受到的值案例一a.aspx?info%25 % 案例二a.aspx?info%bc%bc%ca%f5 情况分析: 案例一 a.aspx?info%25 为何…

2.5 SPPNet

目录2.5 SPPNet2.5.1 SPP 的目的2.5.2 SPP 架构2.5.3 SPP 用于目标检测2.5.4 候选区域映射参考资料2.5 SPPNet SPP(Spatial Pyramid Pooling,空间金字塔池化) 由何凯明团队在 ILSVEC 2014 中提出,利用空间金字塔池化方法可以提高已存在的一些 CNN 架构对…

e时代的精灵-----Web Service

e时代的精灵-----Web ServiceInternet/Intranet改变了世界,也改变了你和我的生活方式。 从Darpanet诞生的第一天起,便注定了这个精灵的出现。 我们不得不感谢NASA,因为它的一个偶然,导致了如此深刻而美妙的历史必然。 ---世界真美…

2.6 Fast R-CNN

目录2.6 Fast R-CNN2.6.1、Fast R-CNN 整体架构概览图2.6.2、Fast R-CNN 架构2.6.2.1 RoI 池化层2.6.2.2 多任务损失参考资料2.6 Fast R-CNN Fast R-CNN 是 rgb 完成的 R-CNN 家族中的第二篇重要作品,在 R-CNN 以及 SPPNet 的基础上做了许多优化工作,在…

1.7 BN-Inception

目录1.7 BN-Inception1.7.1 背景1.7.2 BN 计算过程1.7.3 BN 的优势参考资料Next1.7 BN-Inception 2015 年 2 月 Google 又发表了新的文章,在 GoogLeNet 中加入一个 Batch-normalized 层,习惯于将改进后的网络称为 BN-Inception。Batch-normalized 层的主…