深度学习笔记(34) 目标检测

深度学习笔记(34) 目标检测

  • 1. 目标检测算法
  • 2. 图像滑动窗口操作
  • 3. 滑动窗口目标检测算法缺点


1. 目标检测算法

了解对象定位和特征点检测,现在来构建一个目标检测算法
通过卷积网络进行对象检测,采用的是基于滑动窗口的目标检测算法
假如想构建一个汽车检测算法

深度学习笔记(34) 目标检测_第1张图片
先创建一个标签训练集,也就是x和y表示适当剪切的汽车图片样本
这张图片(编号1)x是一个正样本
图片(编号2、3)也有汽车,但这两张(编号4、5)没有汽车

出于对这个训练集的期望,一开始可以使用适当剪切的图片
就是整张图片x几乎都被汽车占据
可以照张照片,然后剪切,剪掉汽车以外的部分
使汽车居于中间位置,并基本占据整张图片

有了这个标签训练集,就可以开始训练卷积网络了
输入这些适当剪切过的图片(编号6)
卷积网络输出y,0或1表示图片中有汽车或没有汽车


2. 图像滑动窗口操作

训练完这个卷积网络,就可以用它来实现滑动窗口目标检测,具体步骤如下
深度学习笔记(34) 目标检测_第2张图片
假设这是一张测试图片,首先选定一个特定大小的窗口,将这个红色小方块输入卷积神经网络
卷积网络开始进行预测,即判断红色方框内有没有汽车

滑动窗口目标检测算法接下来会继续处理第二个图像
即红色方框稍向右滑动之后的区域,并输入给卷积网络
因此输入给卷积网络的只有红色方框内的区域
再次运行卷积网络,然后处理第三个图像,依次重复操作,直到这个窗口滑过图像的每一个角落

为了滑动得更快,这里选用的步幅比较大
思路是以固定步幅移动窗口,遍历图像的每个区域
把这些剪切后的小图像输入卷积网络,对每个位置按0或1进行分类
这就是所谓的图像滑动窗口操作

重复上述操作,不过这次选择一个更大的窗口,截取更大的区域,并输入给卷积神经网络处理

在这里插入图片描述
可以根据卷积网络对输入大小调整这个区域,然后输入给卷积网络,输出0或1
再以某个固定步幅滑动窗口,重复以上操作,遍历整个图像,输出结果
再选择一个更大的窗口,再次滑动窗口检测目标
这样做,不论汽车在图片的什么位置,总有一个窗口可以检测到它
深度学习笔记(34) 目标检测_第3张图片


3. 滑动窗口目标检测算法缺点

滑动窗口目标检测算法也有很明显的缺点
就是计算成本,因为在图片中剪切出太多小方块,网络要一个个地处理

如果选用的步幅很大
显然会减少输入卷积网络的窗口个数
但是粗糙间隔尺寸可能会影响性能

反之,如果采用小粒度或小步幅,传递给卷积网络的小窗口会特别多
这意味着超高的计算成本

所以在神经网络兴起之前,人们通常采用更简单的分类器进行对象检测
比如通过采用手工处理工程特征的简单的线性分类器来执行对象检测

至于误差,因为每个分类器的计算成本都很低,它只是一个线性函数
所以滑动窗口目标检测算法表现良好,是个不错的算法
然而,卷积网络运行单个分类人物的成本却高得多,像这样滑动窗口太慢
除非采用超细粒度或极小步幅,否则无法准确定位图片中的对象


参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(33) 特征点检测
深度学习笔记(32) 目标定位
深度学习笔记(31) 迁移与增强
深度学习笔记(30) Inception网络
深度学习笔记(29) 1×1 卷积


谢谢!

你可能感兴趣的:(深度学习笔记)