OverFeat:
3、Classification
3.2 Feature Extractor
网络有两个模型,一个偏向速度,一个偏向精度
3.3 multi-scale classification
什么是multi-view ?
multi-view voting用来提高测试性能:输入一张256x256的照片,图片的四个角和中间可以裁剪得到5张224x224的输入,将原图水平翻转再得5张,将这10张图片输入到模型中进行预测,然后取各预测值的均值
什么是 multi-scale?
图像尺度的不同。与multi-view voting不同的是,这里的图片尺度大小不同,而multi-view voting则仅仅是取图像不同的局部,这个局部是相同的图像的scale。
如何执行multi-scale操作?
使用不同的输入尺度,那么经过第五层的卷积就会得到不同的分辨率特征图
如何进行分辨率加强?
原本的下采用比率是36,也就是说每36个像素就会生成一个分类向量。加入了offset pooling 后,下采样成了12了,降低了分辨率的损失。
什么是offset pooling?
池化操作,会出现不能完全池化的情况,一般采用padding进行填充,但是这里则引入了offset,即如果不足,则移动起始点。例如,经过池化后会得到6x7x3x3xD,6x7是池化后维度,3x3则是偏置池化的次数,D是通道数。重点来了,以往的传统方法的分类器,要经过FC层,FC层是固定的输入,但是图像不一定是固定的,所以通过固定的窗口进行滑动来替换FC层,这里采用的是5x5大小的窗口。最终得到了2x3x3x3xC的特征值,通过reshape,将其转为6x9xC的输出特征值。原文是在一维上操作,这里是二维。
生成最终的的分类:
1)对每个尺度的每个类求空间池化
2)对不同尺度的输出C维(C是目标类的个数)向量求均值。
3)从均值类向量中取前1或者前5元素
3.5 ConvNets and Sliding Window Efficiency
使用卷积来替代滑动窗口,有几个好处,1、无需固定大小的图片2、减少了计算量。因为全连接要接收固定大小的输入,体现了1。而全连接对每个输入元素都有一个参数,求参数需要大量的计算,而卷积核共享了参数,体现了2。
4 localization
用回归网络替代了分类层来进行训练,从而得到每个空间位置和scale的BB。然后根据每个位置的分类结果来结合回归预测框。
4.1 Generating Predictions
对所有位置和scale同时运行分类和定位网络来得到所有的bb预测。分类网络为每个边界框指定了一个置信度。
4.2 Regressor Training
采用了与分类网络一样的特征提取层,使用2范数来作为真实框和预测框之间的loss,最后的回归层的基于特定类的,不同的类具有不同的回归器。使用一系列不同的scale来训练回归网络,这会提高匹配的精度和合并预测框的可信度。
4.3 Combining Predictions
用C_s表示s尺度的前k个类集合。通过在该尺度的空间位置上获取最大检测类输出来找到,用B_s表示回归网络对C_s上每个类进行预测的预测框集合。
对同一个类的预测框进行合并,每次计算两个框的score,如果大于指定的threshold则停止,否则从集合中移除两个框,再将两个框合并,放入集合。score计算方式是:两个边界框的中心与框的相交区域之间的距离总和
5、检测
检测训练类似于分类训练,但以空间方式进行。可以同时训练图像的多个位置。由于模型是卷积的,所有的权重在所有的位置共享。与本地化任务的主要区别在于,当没有对象存在时,需要预测背景类。传统上,负面例子最初是随机抽取进行训练的。然后,在引导过程中,最令人不快的负错误被添加到训练集中。独立的引导过程使训练变得复杂,并有负样本收集和训练时间不匹配的风险。此外,需要调整引导过程的大小,以确保训练不会在小范围内过度。为了避免所有这些问题,我们通过为每个图像选择一些有趣的负面例子,如随机的或最令人不快的例子,来进行动态的负面训练。这种方法在计算上更昂贵,但程序却更简单。由于特征提取最初是用分类任务进行训练的,因此检测微调不会太长。
总结
- 本文使用一个CNN来集成三个任务,分类,定位和检测(共享特征提取的特征)。
- 第一次具体解释了CNN是如何被用于定位和检测的。
- 提出了一个多尺度的,滑动窗口的方法,能够提升任务的表现。
- 在多尺度分类这一块,在feature map上滑窗,相比于传统的原始图像滑窗(用一个滑窗对整幅图像进行密集采样,然后处理每一个采样得到的图像,再组合结果),大大提高了效率。因为Feature map的size更小。