OverFeat:基于卷积网络的集成识别、定位与检测
摘要:我们提出了一个使用卷积网络进行分类、定位和检测的集成框架。我们展示了如何在ConvNet中有效地实现多尺度和滑动窗口方法。我们还介绍了一种新的深度学习方法,通过学习预测对象边界来定位。然后通过边界框累积而不是抑制边界框以增加检测置信度。我们证明了使用一个共享网络可以同时学习不同的任务。该集成框架是ImageNet大型视觉识别挑战2013(ILSVRC2013)本地化任务的获胜者,在检测和分类任务方面取得了非常有竞争力的成果。在赛后工作中,我们为检测任务建立了一个新的技术状态。最后,我们从我们最好的模型中发布了一个特征抽取器OverFeat。
那么名字为什么叫OverFeat呢,OverFeat=Overall+Features,可以见这是一个特征抽取器。那么在发布OverFeat之前,作者又做了那些工作?
1 Introduction简介
识别图像中主要对象的类别是卷积网络(ConvNets)[17]应用多年的一项任务,不管这些对象是手写字符[16]、门牌号[24]、无纹理玩具[18]、交通标志[3,26]、加州理工101数据集的对象[14]还是1000类别的对象ImageNet数据集[15]。ConvNets在小型数据集(如Caltech-101)上的准确性虽然不错,但并没有打破记录。然而,更大的数据集的出现使得ConvNets能够显著地提高数据集的技术水平,例如1000类ImageNet[5]。
ConvNets用于许多这样的任务的主要优点是,整个系统从原始像素到最终类别都进行了端到端的训练,从而减少了手动设计合适的特征提取器的需求。主要的缺点是他们对标记的训练样本的胃口太大。
本文的主要目的是说明训练卷积网络同时对图像中的目标进行分类、定位和检测,可以提高分类精度和所有任务的检测和定位精度。本文提出了一种利用单一ConvNet实现目标检测、识别和定位的新方法。本文还介绍了一种通过累积预测边界盒进行定位和检测的新方法。我们建议,通过结合多种定位预测,无需对背景样本进行训练就可以进行检测,并且可以避免耗时和复杂的自举训练过程。不进行背景训练也让网络只关注积极的课程,以获得更高的准确性。在ImageNet ILSVRC 2012和2013数据集上进行了实验,并建立了ILSVRC 2013定位和检测任务的最新结果。
虽然ImageNet分类数据集中的图像很大程度上被选择包含填充图像大部分内容的粗略输入对象,但感兴趣的对象在图像中的大小和位置有时会有很大的变化。解决这个问题的第一个想法是在图像中的多个位置、以滑动窗口的方式以及在多个刻度上应用ConvNet。然而,即使这样,许多观察窗也可能包含对象的一个完全可识别的部分(例如,狗的头),但不是整个对象,甚至不是对象的中心。这导致了良好的分类,但定位和检测不好。因此,第二个想法是训练系统不仅生成每个窗口的类别分布,而且生成包含相对于窗口的对象的边界框的位置和大小的预测。第三个想法是在每个位置和大小为每个类别积累证据。
许多作者已经提出使用ConvNets来检测和定位多尺度上的滑动窗口,可以追溯到20世纪90年代早期的多字符字符串[20]、人脸[30]和手[22]。最近,ConvNets在自然图像的文本检测[4]、人脸检测[8,23]和行人检测[25]方面显示出了最先进的性能。
一些作者还建议训练ConvNets直接预测要定位的对象的实例化参数,例如相对于观察窗口的位置或对象的姿势。例如,Osadchy等人。[23]描述一种用于同时进行人脸检测和姿态估计的ConvNet。面由九维输出空间中的三维流形表示。流形上的位置指示姿势(俯仰、偏航和横滚)。当训练图像是人脸时,训练网络在流形上已知姿态的位置产生一个点。如果图像不是一个面,则输出被推离流形。在测试时,到流形的距离指示图像是否包含面,流形上最近点的位置指示姿势。泰勒等人。[27,28]使用ConvNet估计身体部位(手、头等)的位置,从而得出人体姿势。他们使用一个度量学习准则来训练网络,以生成身体姿势流形上的点。Hinton等人。还提出训练网络计算特征的显式实例化参数,作为识别过程的一部分[12]。
其他一些作者提出了通过基于ConvNet的分割来实现目标定位。最简单的方法是训练ConvNet将其观察窗口的中心像素(或体积图像的体素)分类为区域之间的边界。但是当区域必须分类时,最好进行语义分割。其主要思想是训练ConvNet将观察窗口的中心像素与其所属对象的类别进行分类,并将该窗口用作决策的上下文。应用范围从生物图像分析[21],移动机器人障碍物标记[10]到照片标记[7]。这种方法的优点是边界轮廓不需要是矩形,区域也不需要是很好的外接性对象。缺点是它需要密集的像素级标签进行训练。这种分割预处理或对象提议步骤最近在传统的计算机视觉中得到普及,以减少用于检测的位置、比例和纵横比的搜索空间[19、2、6、29]。因此,一种昂贵的分类方法可以应用于搜索空间中的最佳位置,从而提高识别精度。此外,[29,1]建议这些方法通过大幅度减少不可能的目标区域来提高准确性,从而减少潜在的误报。然而,在ILSVRC13检测数据集上,我们的稠密滑动窗口方法能够优于目标建议方法。
Krizhevsky等人。[15]最近使用大型ConvNet显示了令人印象深刻的分类性能。作者还参加了ImageNet 2012比赛,赢得了分类和本地化挑战。尽管他们展示了令人印象深刻的本地化性能,但还没有发表过描述他们的方法的著作。因此,我们的论文是第一篇对ConvNets如何用于ImageNet数据的定位和检测提供清晰解释的论文。
在本文中,我们使用的术语定位和检测与ImageNet 2013比赛中使用的术语一致,即唯一的区别是使用的评估标准,两者都涉及预测图像中每个对象的边界框。
2 Vision Tasks视觉任务
在本文中,我们探索了三个计算机视觉任务,按照难度的增加顺序:(i)分类,(ii)定位,和(iii)检测。每个任务都是下一个任务的子任务。虽然所有的任务都是使用一个单一的框架和一个共享的特征学习库来完成的,但是我们将在下面的章节中分别描述它们。
在整篇论文中,我们报告了2013年ImageNet大规模视觉识别挑战赛(ILSVRC2013)的结果。在这个挑战的分类任务中,每个图像被分配一个对应于图像中主要对象的标签。允许五次猜测才能找到正确答案(这是因为图像还可以包含多个未标记的对象)。本地化任务类似于每个图像允许5次猜测,但是另外,每次猜测都必须返回预测对象的边界框。要被认为是正确的,预测框必须至少与基本真实值匹配50%(使用PASCAL的并集对交集准则),并用正确的类标记(即,每个预测都是一个关联在一起的标签和边界框)。检测任务不同于定位,因为在每个图像中可以有任意数量的对象(包括零个),而误报则会受到平均精度的惩罚(mAP)(地图)测量。定位任务是分类和检测之间的一个方便的中间步骤,它允许我们独立于特定于检测的挑战(例如学习背景类)评估我们的定位方法。在图1中,我们展示了具有我们的定位/检测预测以及相应的基本事实的图像示例。注意,分类和本地化共享同一个数据集,而检测也有其他数据,对象可以更小。检测数据还包含一组缺少某些对象的图像。这可以用于引导,但我们还没有在这项工作中使用它。
3 Classification分类
我们的分类体系结构类似于Krizhevsky等人的最佳ILSVRC12体系结构。[15]。但是,我们在网络设计和推理步骤上进行了改进。由于时间的限制,Krizhevsky模型中的一些训练特征没有被挖掘出来,因此我们期望我们的结果能够得到进一步的改进。这些将在以后的工作第6节中讨论
3.1 Model Design and Training模型设计与培训
我们在ImageNet 2012训练集(120万张图片和C=1000个课程)上训练网络[5]。我们的模型使用了Krizhevsky等人提出的相同的固定输入大小方法。[15]在培训期间,但转向下一节所述的多尺度分类。每个图像都被降采样,因此最小尺寸为256像素。然后,我们提取5个大小为221x221像素的随机作物(及其水平翻转),并以128大小的小批量将其呈现给网络。网络中的权重随机初始化为(μ,σ)=(0,1×10-2)。然后,它们通过随机梯度下降进行更新,伴随着动量项0.6和1×10-5的2加权衰减。学习率最初为5×10-2,在(30、50、60、70、80)个阶段后连续下降0.5倍。在分类器的完全连接层(第6层和第7层)上使用速率为0.5的辍学[11]。
我们在表1和表3中详细说明了体系结构的大小。请注意,在训练期间,我们将此架构视为非空间(大小为1x1的输出映射),而不是产生空间输出的推断步骤。第1-5层与Krizhevsky等人相似。[15],使用校正(“relu”)非线性和最大合并,但有以下区别:(i)没有使用对比度规范化;(ii)合并区域是不重叠的;(iii)由于步幅较小(2而不是4),我们的模型具有更大的第一层和第二层特征映射。更大的步幅有利于速度,但会损害准确性。
在图2中,我们示出了来自前两个卷积层的滤波器系数。第一层过滤器捕获定向的边、图案和斑点。在第二层中,过滤器有多种形式,有些是漫反射的,有些是具有强线结构或定向边缘的。
3.2 Feature Extractor特征抽取器
在本文的基础上,我们开发了一个名为“OverFeat”1的特征抽取器,为计算机视觉研究提供了强大的特征。提供了两个模型,一个快速准确的模型。表1和表3描述了每个体系结构。我们还在表4中比较了它们的参数和连接。精确模型比快速模型更精确(14.18%的分类误差,而表2中的分类误差为16.39%),但是它需要的连接数几乎是快速模型的两倍使用7个精确模型组成的委员会,分类误差达到13.6%,如图4所示。
3.3 Multi-Scale Classification多尺度分类
在[15]中,多视图投票用于提高性能:平均一组固定的10个视图(4个角和中心,水平翻转)。然而,这种方法可以忽略图像的许多区域,并且当视图重叠时在计算上是多余的。此外,它仅适用于单个标度,这可能不是ConvNet以最佳置信度响应的标度。
相反,我们通过在每个位置和多个尺度上密集运行网络来探索整个图像。虽然滑动窗口方法在计算上可能会使某些类型的模型望而却步,但在ConvNets的情况下它本质上是有效的(见第3.5节)。这种方法为投票产生了更多的观点,这在保持效率的同时提高了稳健性。在任意大小的图像上卷积ConvNet的结果是每个尺度上的C维向量的空间映射。
然而,上述网络中的总子采样率是2x3x2x3或36。因此,当密集应用时,该体系结构只能沿每个轴在输入维度中每36个像素产生分类向量。与10视图方案相比,这种粗略的输出分布降低了性能,因为网络窗口与图像中的对象没有很好地对齐。网络窗口和对象越对齐,网络响应的可信度就越强。为了避免这个问题,我们采取了类似于Giusti等人提出的方法。[9],并在每个偏移处应用最后的子采样操作。这消除了这一层的分辨率损失,从而产生x12而不是x36的总子采样率。
我们现在详细解释如何执行分辨率增强。我们使用6个输入比例,结果是非制冷的5层不同分辨率的地图(详见表5)。然后,使用图3所示的以下过程将这些数据汇集起来并呈现给分类器:
(a)对于单个图像,在给定比例下,我们从非制冷的第5层功能图开始。
OverFeat:基于卷积网络的集成识别、定位与检测的更多相关文章
- 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn
https://www.cnblogs.com/31415926535x/p/11001669.html 基于卷积神经网络的人脸识别项目_使用Tensorflow-gpu+dilib+sklearn ...
- Pytorch实现基于卷积神经网络的面部表情识别(详细步骤)
文章目录 一.项目背景 二.数据处理 1.标签与特征分离 2.数据可视化 3.训练集和测试集 三.模型搭建 四.模型训练 五.完整代码 一.项目背景数据集cnn_train.csv包含人类面部表情的图 ...
- 基于卷积神经网络的面部表情识别(Pytorch实现)----台大李宏毅机器学习作业3(HW3)
一.项目说明 给定数据集train.csv,要求使用卷积神经网络CNN,根据每个样本的面部图片判断出其表情.在本项目中,表情共分7类,分别为:(0)生气,(1)厌恶,(2)恐惧,(3)高兴,(4)难过 ...
- keras基于卷积网络手写数字识别
import time import keras from keras.utils import np_utils start = time.time() (x_train, y_train), (x ...
- 深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统
基于卷积神经网络(CNN)的人脸在线识别系统 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统,系统将由以下几个部分构成: 制作人脸数据集.CNN神经网络模型训练.人脸检测.人脸 ...
- 基于CNN网络的汉字图像字体识别及其原理
现代办公要将纸质文档转换为电子文档的需求越来越多,目前针对这种应用场景的系统为OCR系统,也就是光学字符识别系统,例如对于古老出版物的数字化.但是目前OCR系统主要针对文字的识别上,对于出版物的版面以 ...
- 深度卷积网络(DCNN)和人类识别物体方法的不同
加州大学洛杉矶分校在PLOS Computing Biology上发表了一篇文章,分析了深度卷积网络(DCNN)和人类识别物体方法的不同:深度卷积网络(DCNN)是依靠物体的纹理进行识别,而人类是依靠 ...
- 利用TensorFlow识别手写的数字---基于两层卷积网络
1 为什么使用卷积神经网络 Softmax回归是一个比较简单的模型,预测的准确率在91%左右,而使用卷积神经网络将预测的准确率提高到99%. 2 卷积网络的流程 3 代码展示 # -*- coding ...
- R-FCN:基于区域的全卷积网络来检测物体
http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为“R-FCN: Object Detection via Region-ba ...
随机推荐
- input type=file accept中文件格式限制
原文链接:https://blog.csdn.net/usuallyuser/article/details/83060341 accept="application/msexcel,app ...
- google map api key配置
https://console.cloud.google.com/google/maps-apis/apis/maps-backend.googleapis.com/credentials?proje ...
- 小记---------Hadoop的MapReduce基础知识
MapReduce是一种分布式计算模型,主要用于搜索领域,解决海量数据的计算问题 MR由两个阶段组成:Map和Reduce,用户只需要实现map()和reduce()两个函数,即可实现分布式计算. 两 ...
- css样式实例
* { box-sizing: border-box; } /*box-sizing属性允许您以特定的方式定义匹配某个区域的特定元素*/ body { font: Arial; margin:; } ...
- eclipse 逆向生成hbm配置文件及pojo
1.eclipse配置hibernate环境 由于在公司中不能在线安装jboss Tools,只能简单介绍手动安装 在jboss官网下载对应自己eclipse的压缩包. 在eclipse 中选择Hel ...
- django 商城项目之购物车以及python中的一些redis命令
最近在用django restframe框架做一个商城项目,有一个关于购物车的业务逻辑,是用cookie和redis存储的购物车信息,在这里记录一下. 完成一个商城项目,如果不做一个购物车,就是十分可 ...
- php常用header状态
<?php //200 正常状态 header('HTTP/1.1 200 OK'); // 301 永久重定向,记得在后面要加重定向地址 Location:$url header('HTTP/ ...
- 利用lambda和条件表达式构造匿名递归函数
from operator import sub, mul def make_anonymous_factorial(): """Return the value of ...
- zk ui安装 (选装,页面查看zk的数据)
# 使用WEB UI查看监控集群-zk ui安装 cd /usr/local git clone https://github.com/DeemOpen/zkui.git yum install -y ...
- [Wpf]在C#中添加 collectionViewSource
Products = new ObservableCollection<Product>(products); ProductOptions = new ObservableCollect ...