3.3目标探测
今天我们来构建一个对象检测算法,我们将学习如何通过卷积网络进行对象检测,采用的是基于滑动窗口的目标检测算法.
假如你想构建一个汽车检测算法,步骤是首先创建一个标签训练集,也就是X和Y表示适当准确的汽车图片样本,这张图片x是一个正样本,因为它是一辆汽车图片。中间几张图片也有汽车,但是后面两张没有汽车,出于对我们对这个训练集的期望,你一开始可以使用适当剪切的图片,就是整张图片X几乎都被汽车占据。
你可以照张照片,然后剪切,减掉汽车以外的部分,使汽车居于中心位置,并基本占据整张图片,有了这个标签训练集,就可以开始训练卷积网络了。
输入这些简单剪切过的图像,卷积网络输出Y,0或1表示图片中有汽车或没有汽车,训练完这个卷积网络,就可以用它来实现滑动窗口目标检测。
具体步骤如下,假设这是一张测试图片:
首先选定一个特定大小的窗口,比如图片下方这个窗口,将这个红色小方块,输入卷积网络,卷积网络开始进行预测,即判断红色方框内有没有汽车,滑动窗口目标检测算法接下来会继续处理第2个图像,即红色方框稍向右滑动之后的区域,并输入给卷积网络,因此输入给卷积网络的只是红色方框内的区域,再次运行卷积网络,然后处理第3个图像,依次重复操作,直到这个窗口滑过图像的每一个角落。
思路:以固定步幅滑动窗口,遍历图像的每个区域。把这些剪切后的小图像输入卷积网络,对每个位置按0或1进行分类,这就是所谓的图像滑动窗口操作。
(ps:可以根据卷积网络对输入大小的要求,调整这个区域。)
滑动窗口目标检测方法也有很明显的缺点,就是计算成本,因为你在图片中剪切出太多小方块,卷积网络要一个个的处理,如果你选用的步幅很大,显然会减少输入卷积网络的窗口个数,但是粗粒度可能会影响性能,板子如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多,这意味着超高的计算成本。
B站视频来源:【中英字幕】吴恩达深度学习课程第四课 — 卷积神经网络_哔哩哔哩_bilibili