Abstract
Cnn model 一个模型3个任务:classification,localization,detection
模型名叫overfeat
关键工具:multi scale and sliding window
Localization
预测bounding box
概率或精度提升,通过accumulation而非suppression
1、Introduction
Paragraph 1-2 th
Cnn 优劣势
-
优势:
1、end to end:整个系统从头到尾接受类似的训练,所有中间过程模型全部包干
2、无需人工设计特征规则
-
劣势:
对于标签数据集很贪婪
Paragraph 3 th
本文的目的:
-
介绍一个能做3个任务的模型(用一个convNet 进行对象检测,识别,定位)
-
通过增加预测的bounding box 来定位(localization)和检测(detection)
叠加localization的预测的好处:
-
无需做背景样本的训练
-
避免耗时复杂的抽样训练
-
不做背景样本训练也可以让模型聚焦positive classes 来提高预测精度
Paragraph 4th
提出一个难题
ImageNet数据集上的分类图片,物体大致分布在图片中心,但是感兴趣的物体常常在尺寸和位置(以滑窗的方式)上有变化
方案有3个组成部分
-
CNN + a multi scale, sliding window
存在的问题:
-
但是种滑窗的可视窗口可能只包涵物体的一个部分,而不是整个物体;
-
对于分类任务是可以接受的,但是对于定位和检测有些不适合
-
-
训练一个卷积网络不仅产生类别分布,还可以预测物体中心点和bounding box的长与宽
-
积累在每个位置和尺寸对应类别的置信度
Paragraph 5th
前人已经做了大量CNN+ multi-scale, sliding window 的尝试(不少效果不错)
Paragraph 6th
前人论文:
-
CNN预测物体相对窗口位置或物体的姿势
-
大家都尝试预测一些点来标注物体的位置
Paragraph 7th
前人论文:
-
CNN模型基于所在窗口和类别, 预测中心点pixel
-
好处:物体外形无需固定形态的边界框住
-
不好:需要pixel-level的标注(成本太大,样本少)
总结5-7th :在多缩放尺度下以滑窗的方式利用卷积网络用了预测和定位很早就有人提出了,一些学者直接训练卷积网络进行预测物体的相对于滑窗的位置或者物体的姿势。还有一些学者通过基于卷积网络的图像分割来定位物体。
Paragraph 8th
讲本文是首篇文献介绍CNN如何做到detection和localization ,即预测物体所在bounding box
2、vision Tasks
Paragraph 1th
Classification,localization,detection的关系:detection包含localization包含classification
Paragraph 2 th
报告了2013年imagenet ILSVRC的记过
ImageNet挑战中每张图,被分配与图像中的主要对象相对应的单个标签
对于模型而言
-
输出5个关于物品的猜测
-
一张图里,可能有5个或者更多物品, 除了核心物品,其他物品无label
-
5个猜测对应5个bounding boxes
-
评估的时候,通过IoU>0.5, 选择正确的bounding box
-
最后得到的输出 prediction是由 label + bounding box 组成
-
训练过程中针对错误的预测(fp)会被mean average precision 处罚
-
classification & localization 任务, 针对同一组数据或者使同一个物品,通常针对图片中唯一且最大的物品做分类和bounding box
3、classification
本文的模型设计
- 基于Krizhevskey 的 AlexNet 原型,在此基础上改进了模型设计和预测设计
3.1 Model design and Training
模型特点
-
采用和 AlexNet 的相同 input size 方法, 原图中最小边256
-
每张图随机截取5张图(包括从水平翻转的图中截取), 每张图221×221, 每个mini-batch 128张图片
-
weights的分布, 均值=0,方差=0.01
-
momentum(动量项)=0.6,L2 weight decay (权重衰减)=10e-5
-
学习率最初为 5×10e-2 , 在epoch 30,50,60,70,80中每轮减半
-
在FC(全连接层)(6th, 7th),dropout_rate=0.5
-
Layer1-5, conv layers,用relu + max_pooling
-
训练时,FC层的输出tensor被理解成1 × 1 conv层(1×1×channels),如table1
-
预测时因为样本大小不一,所有每层的输出tensor尺寸也不一样
本模型与AlexNet的不同之处
-
layer 1-5 没有使用constrast normalization(高度对比归一化)
-
Pooling regions 移动过程中不重叠
-
第1,2 conv层的stride 小,只有2( 2 instead of 4),stride越小,扫描更精细,精度损失少
FIG2
- 第一层filter可捕捉定向边缘,图案和斑点;第二层识别稍微更复杂一点的特征
3.2 Feature extractor
取名OverFeat 的特征提取器,有2 种模型:fast 和 accurate
3.3 multi-scale classification
Paragraph 1th
Multi-scale之前的模型面临的问题
- 采取10个截图的截取方法,此方法导致训练的时候很多图片区域被忽略,所以大量重复的地方浪费计算
- 单一的scale,sliding window,(降低了模型抓住合截取大小的图片的可能性,从而降低提高预测能力的可能性)
Paragraph 2th
本模型特点:
- 仔细扫描图片每个位置,采用不同的sliding window大小,More views for voting,这样针对不同大小的图片训练效果 高效且效果更稳定,所以 sliding window 对CNN 是高效适用的
中间段落:算法细节,主要讲述通过offset max-pooling 进行分类(这里采用的是table5中的scale 2 的 y 维 来讲述)
倒数第三段
- 将3个offset output 合二为一
倒数第二段
- 以上操作,对所有原图的水平翻转图也做一遍,针对每个scale,翻转,取spatial max for each class,然后对所有的 C-dim vectors (即 (e)的结果)取均值,最后根据需要提取top1 或者top5 classes
最后一段
-
模型由两部分,特征提取(1-5),分类(6-output)
-
特征提取的特点
-
没有多个filter独立通过模型取特征分类,再取均值
-
而时一次让多个filter window通过模型,这样的话模型计算更高效,更多部位被关注,预测更精准
-
3.4 results
- 6-scales + 更小stride 模型表现最好
3.5 convNets and Sliding window Efficiency
看图(上):
- 训练时,采用的时14×14的input,weights不变的情况下,layer output 由input size决定
看图(下):
- 测试时,weights不变,input size 16×16,output size也跟着变化,yellow grid cells
原本16×16的图应该切割成4张14×14的图,分别通过模型生成结果,在取4个结果均值,为最终结果,这样做很直观但是成本高,效率低;Now,不需要这么做了,直接用模型跑16×16的原图,一次计算搞定,weights不变,只是layer output 发生了变化,yellow grid cells 是增加的计算部分,如此计算效率大幅提升
4. Localization
-
为了能 bounding box预测,训练时用一个 regression network取代 classifer layers
-
将回归预测和每个位置的分类结果结合在一起,那么最后模型的输出:
- class prediction+ bounding box prediction
4.1 Generating Predictions
-
预测时:分类模型, bounding box模型,共享相同的weights或特征提取层
-
在最后用分类的3层 layer 来计算分类概率
-
然后将分类的3层换成 regressor,计算 bounding boxt位置
4.2 Regressor Training
reggressor的结构(替换分类的最后三层的结构):如上图所示,每个回归网络,以最后一个卷积层作为输入,回归层也有两个全连接层,隐层单元为4096,1024,最后的输出层有4个单元,分别是预测bounding box的四个边的坐标。和分类使用offset-pooling一样,回归预测也是用这种方式,来产生不同的预测结果
如何训练 regressor来预 Bounding box?
-
freeze分类模型训练过的前5层
-
用 regressor layers(3层)取代 classifer layers(3)
-
采用L2Ioss来训练 regressor weights
-
output bounding要有1000版本对应1000物体类别
-
训练用的 scales与类别训练时的样本 scalef保持一致
-
对比 predictions和 label bounding box来指导训练
-
如果预测的 bounding box与 label bounding box的交集占比少于50%,不用这个样本更新 weights,采用多个 scale来训练模型,能强化预测能力,scale变化幅度采用了较大的 ratio1.4,为了加速训练
4.3 Combining Predictions
-
在6个缩放比例上运行分类网络,在每个比例上选取top-k个类别,就是给每个图片进行类别标定
-
在每个比例上运行预测boundingbox网络,产生每个类别对应的bounding box集合Bs
-
各个比例的Bs到放到一个大集合B
-
将多个bounding box融合成一个的方法:具体过程应该是选取两个bounding box b1,b2;计算b1和b2的匹配分式,如果匹配分数大于一个阈值,就结束;否则用box_merge融合b1,b2成为一个平均中间的bounding box,然后把平均化的bounding box放入删除b1,b2的B中,再进行循环计算。
大概意思:不停的筛选和排除,直到留下一个 bounding box,筛选过程中, 所有的classifcation概率低的被排除,如果bounding boxes有很高的 confidence 且> 0.5以及很高的 match_scores,将会被留下
具体融合过程见下图:
-
不同的缩放比例上,预测结果不同,例如在原始图像上预测结果只有熊,在放大比例后(第三,第四个图),预测分类中不仅有熊,还有鲸鱼等其他物体
-
通过offset和sliding window的方式可以有更多的类别预测
-
在每个比例上预测bounding box,放大比例越大的图片,预测的bounding box越多
-
融合bouding box
在最终的分类中,鲸鱼预测和其他的物体消失不仅使因为更低的置信度,还有就是他们的bounding box集合Bs不像熊一样连续,具有一致性,从而没有持续的置信度积累。通过这种方式正确的物体持续增加置信度,而错误的物体识别由于缺少bounding box的一致性和置信度,最终消失。这种方法对于错误的物体具有鲁棒性
总结
- 通过multi-scale ,sliding window方式,用来分类,定位,检测
- 在一个卷积网络框架中,同时进行3个任务:分类,定位,检测
- 通过本篇论文主要用来理解FCN (全卷积神经网络)和offset pooling,将两者结合起来来提高分类的精度
Reference
[1] OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks
[2] [ILSVRC] 基于OverFeat的图像分类、定位、检测
[3] OverFeat paper