前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【连载22】OverFeat

【连载22】OverFeat

作者头像
lujohn3li
发布2020-03-16 17:29:26
3940
发布2020-03-16 17:29:26
举报
文章被收录于专栏:机器学习爱好者社区

计算机视觉有三大任务:分类(识别)、定位、检测,从左到右每个任务是下个任务的子任务,所以难度递增。OverFeat是2014年《OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks》中提出的一个基于卷积神经网络的特征提取框架,论文的最大亮点在于通过一个统一的框架去解决图像分类、定位、检测问题,并提出feature map上的一个点可以还原并对应到原图的一个区域,于是一些在原图上的操作可以转到在feature map上做,这点对以后的检测算法有较深远的影响。它在ImageNet 2013的task 3定位任务中获得第一,在检测和分类任务中也有不错的表现。

OverFeat分类任务

文中借鉴了AlexNet的结构,并做了些结构改进和提高了线上inference效率,结构如下:

相对AlexNet,网络结构几乎一样,区别在于:

去掉了LRN层,不做额外归一化操作 使用区域非重叠pooling 前两层使用较小的stride,从而产生较大的feature map,提高了模型精度

  • Offset Pooling 分类任务中一大亮点是提出利用Offset Pooling做多尺度分类的概念,在一维情况的解释如下:

a图代表经过第5个卷积层后的feature map有20个神经元,选取stride=3做非重叠pooling,有以下3种方式:(通常我们只使用第一种)

△=0分组:[1,2,3],[4,5,6],[7,8,9],...,[16,17,18] △=1分组:[2,3,4],[5,6,7],[8,9,10],...,[17,18,19] △=2分组:[3,4,5],[6,7,8],[9,10,11],...,[18,19,20]

在二维情况下,输入图像在经过FCN及第5个卷积层后得到若干个feature map,使用3x3 filter在feature map上做滑动窗口(注意此时不在原图上做,节省大量计算消耗)。按上图的原理,滑动窗口总共要做9次,从(0,0), (0,1), (0,2), (1,0), (1,1), (1,2), (2,0), (2,1), (2,2)处分别滑动。得到的feature map分别经过后面的3个FC层,得到多组特征,最后拼接起来得到最终特征向量并用于分类。

  • Inference自适应输入图片大小 训练模型时往往采用的是固定大小图片(后面的SPP-net、Fast R-CNN等模型通过SPP或ROI pooling可以允许输入大小可变),当inference阶段遇到比规定大小更大的图片时怎么办?可以利用Fully Convolutional Networks(《Fully Convolutional Networks for Semantic Segmentation》)的思想:把卷积层到全连接层映射看成对整张图的卷积操作,把全连接层到全连接层的映射可以看成采用1x1卷积核的卷积操作。以下图说明:

绿色代表卷积核,蓝色代表feature map,当输入大于规定尺寸时,在黄色区域会有额外计算,最终的输出也不是一个值而是一个矩阵,可以用各种策略输出最终结果,比如一种简单做法是用矩阵平均值作为最终分类结果。

OverFeat定位任务

  • 回归训练 相对于分类问题,定位问题可以与其共享前1~5层网络结构,这种方式也被后面的模型所借鉴,区别是增加了一个l_2的回归损失函数,基本思路是对同一张图缩放产生多尺度图片做输入,用回归网络预测Bounding Box(后面简写为BB)后再做融合,需要注意回归层是与类别相关的,如果有1000个类则有1000个版本,每类一个。回归示意图如下:

第5层pooling结果作为输入,共256个通道,以FCN的思想理解,先走一个4096通道的全连接层再走一个1024通道的全连接层,与前面类似使用Offet Pooing和滑动窗口对每类生成一个4通道矩阵,4个通道分别代表BB的四条边的坐标。

  • 网络输出 回归网络的输出例子如下,单图下生成多个BB的预测,这些BB倾向于收敛到一个固定位置并且可以定位物体姿势多样化的情况,当然计算复杂度不小,所以没法用到实时检测中。
  • 预测融合策略 a. 同一幅图在6种不同缩放尺度下分别输入分类网络,每种尺度下选top k类别作为标定,用表示; b. 对任意尺度s分别输入BB 回归网络,用表示每个类别对应的BB集合; c. 将所有合并为大集合; d. 重复以下过程直到结束: 其中match_score为两个BB的中心点之间的距离及BB重合区域面积之和,box_merge为两个BB坐标均值,过程很好理解:所有分类(如可能有熊、鲸鱼等)的BB被放在一个大集合,多尺度得到的分类集合中,正确分类会占有优势(置信度、匹配度、BB连续度等),随着迭代的过程正确分类的BB被加强,错误分类的BB被减弱直到消失,不过这个方法确实复杂,可以看到在后来的算法有各种改进和替换。

OverFeat检测任务

与分类类似但需要考虑位置信息,同样采用网络结构共享特征提取,在预测分类中还需要加“背景”这一类。

代码实践

可参见:OverFeat

‍‍‍‍‍‍‍‍

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习爱好者社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OverFeat分类任务
  • OverFeat定位任务
  • OverFeat检测任务
  • 代码实践
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档