滑动窗口(Sliding Windows)
拿车辆识别举例,首先我们把图片切割成很多正方型,为了保证不丢失信息,每个正方形都与上一个正方形有重叠.
因为我们不确定图片中目标的大小,所以可以使用不同大小的正方形对图片进行切割.
然后把这些正方形分别用神经网络进行识别,留下那些识别到对象的正方形:
分类器有可能会有误报的情况,我们可以使用热力图查看哪些区域确信度最大:
用方框画出确信度最大的区域:
假设我们需要识别28x28x3的图片,我们需要分别以不同的尺寸对图片进行切割,假设以14x14进行切割可以切割出8x8张图片:
然后将切割好的图片输入到神经网络中进行分类,神经网络的输入尺寸为14x14x3,使用不同尺寸切割的图片可以resize为神经网络的输入尺寸:
神经网络的输出是1x1x4的分类结果.8x8张图片会得到8x8x4的分类输出.
滑动窗口的卷积实现方法
滑动窗口确实可以工作,但是它有个非常明显的缺点,滑窗需要切割出非常多的小图片,再加上需要以不同大小的窗口切割图片,所以我们需要非常多次数的分类.
我曾经用python实现的一个滑窗程序,识别一张图片近乎需要一分钟,它太慢了.之所以这么慢的原因是滑动窗口做的很多重复的计算,因为滑窗切割出的很多图片都有重叠的部分.</