OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks
OverFeat 是早期经典的 One-Stage 目标检测的算法。这篇论文使用了很少的改动,把同一个 CNN 网络用到了三个计算机视觉的任务上(分类,定位,检测)。
本论文的主要贡献在于:(1)对多个任务使用几乎相同的网络(2)实现了多尺度的预测(FCN 思想)(3)提出 offset max-pooling(4)通过累积预测来求 bounding box(而不是传统的非极大值抑制)
一、计算机视觉任务
图一:计算机视觉任务。第一幅图:分类,第二幅图:定位,第三附图:检测,第四幅图:分割。
计算机视觉有四大基本任务,分别是:分类、定位、检测、分割(见图一)。其中分类任务是所有任务的基础。因为对于一幅图像,可能含有多个物体。所以分类任务是对图像中主体事物类别的判断。定位任务也是单目标任务,和分类任务唯一的不同是,不仅需要分类还需要把判别出的主体事物的边界框出来。目标检测是多目标任务,是对图像中各种需要检测的物体如果出现用边界框框住,并判别其类别。分割任务和检测任务的区别就在于是框的形状是物体的边界形状。
二、分类
(一)模型设计
模型的设计借鉴 AlexNet 的设计方式
表1:fast model
表2:accurate model
作者提出了一个特征的提取器命名为 “OverFeat”(见表1,表2)。其中,表一是模型的快速版本(fast model),表二是模型的高准确率版本(accurate model)。
网络输入图片大小为 221 x 221,网络结构方面基本上和 AlexNet 是一样的,也是使用了 ReLU 激活,最大池化。不同之处在于:(1)没有使用局部响应归一化层(2)没有采用重叠池化的方法(3)在第一层卷积层,stride 为 2,这个与 AlexNet 不同(AlexNet 选择的步长是 4,在网络中,如果 stride 选择比较大得话,虽然可以减少网络层数,提高速度,但是却会降低精度)。
需要注意的是我们需要把 f7 这一层,看成是卷积核大小为 5 x 5 的卷积层,这里的思想和 FCN 类似,FCN 的思想见下面的多尺度训练部分详解。
在第五个卷积层后使用 offset max-pooling,具体详解见如下内容。
(二)offset max-pooling
图2:offset max-pooling 一维过程
对于普通的池化层,我们都是将 feature map 的第一个像素和卷积核的第一个像素对齐后开始池化。我们知道对于池化过程,如果步长不能整除 feature map 大小 + 2 padding - 卷积核大小,那么最终输出的特征图大小就会向上取整。换句话说就是先把图像的大小填补成能被刚好池化的大小,再进行池化。(卷积操作相反,是向下取整)。
我们先把原问题化简为 1 维。实际上我们还有一种思路,也就是 offset max-pooling 的思路。就是我们可以将池化的窗口给个偏移值 Δ \Delta Δ,再进行池化。见上图(b)。如果我们不使用 offset max-pooling,因为不能正好池化,我们需要将(a)填充至 21 个像素。这样就能被 3 x 3 的池化窗口正好池化。这样得到的池化结果的长度为 7。而使用 offset max-pooling,我们可以将偏移值分别设置为 0,1,2。这样我们就能得到 3 个长度为 6 的 pixel(如果是 2 维,我们就会得到 3 x 3 = 9 个 池化结果)。然后再把池化后的结果送入之后的网络,也就是(d)固定尺寸为 5 的卷积,得到最后的输出。
这种方法为最终的结果提供了更多的视图,保持了效率的同时,增强了鲁棒性。
(三)训练细节
和 AlexNet 相似,作者先把图像缩减到 256 x 256,然后对图形进行 221 x 221 的 10-crop 裁剪。将裁剪后的图像送至网络中。batch size = 128,权重的初始化为正态分布: ( μ , σ ) = ( 0 , 1