目录
1、目标定位
2、特征点检测
3、目标检测
4、滑动窗口的卷积实现
5、Bounding Box 预测(Bounding box predictions)
6、交并化
7、非极大值抑制
8、Anchor Boxes
9、YOLO算法
1、目标定位
2、特征点检测
- 如何检测特征点(以人的部位为例)
(1)、准备一个卷积网络和一些特征集,将人脸图片输入卷积网络,输出 1 或 0, 1 表示有人
脸,0 表示没有人脸。然后输出(𝑙1𝑥,𝑙1𝑦)……直到(𝑙64𝑥,𝑙64𝑦)
(2)、这里有129 个输出单元,其中1表示图片中有人脸,因为有64个特征,64×2=128,
3、目标检测
- 滑动窗口目标检测算法
(1)、选定一个特定大小的窗口,比如上面图片中的窗口,将这个红色小方块输入卷积神经网
络,卷积网络开始进行预测,即判断红色方框内有没有汽车
(2)、迭代上面的图片中的每一个窗口中的图片,进行重复的操作。红色小方块中的图片输入
卷积神经网络中进行预测,若有汽车则输出1,否则为0
- 滑动窗口目标检测算法的缺点
(1)、滑动窗口目标检测算法也有很明显的缺点,就是计算成本,因为你在图片中剪切出太多
4、滑动窗口的卷积实现
- 神经网络的全连接层转化成卷积层
(1)、首先要把神经网络的全连接层转化成卷积层
(2)、前几层和之前的一样,而对于下一层,也就是这个全连接层,我们可以用 5×5 的过滤器来
实 现,数量是 400 个(编号 1 所示),输入图像大小为 5×5×16,用 5×5 的过滤器对它进行卷 积
操作,过滤器实际上是 5×5×16,因为在卷积过程中,过滤器会遍历这 16 个通道,所以这 两处的
通道数量必须保持一致,输出结果为 1×1。假设应用 400 个这样的 5×5×16 过滤器, 输出维度就
是 1×1×400,我们不再把它看作一个含有 400 个节点的集合,而是一个 1×1×400 的输出层。从数
学角度看,它和全连接层是一样的,因为这 400 个节点中每个节点都有一个 5×5×16 维度的过滤
器,所以每个值都是上一层这些 5×5×16 激活值经过某个任意线性函数的输出结果
(3)、用的是 1×1 卷积,假设有 400 个 1×1 的过滤器,在这 400 个过滤器的作用下,下一层的
维度是 1×1×400,它其实就是上个网络中 的这一全连接层。最后经由 1×1 过滤器的处理,得到一
个 softmax 激活值,通过卷积网络, 最终得到这个 1×1×4 的输出层
- 通过卷积实现滑动窗口对象检测算法
(2)、假设剪切出这块区域(编号 1), 传递给卷积网络,第一层的激活值就是这块区域(编号
2),最大池化后的下一层的激活值是这块区域(编号 3),这块区域对应着后面几层输出的右上
角方块(编号 4,5,6)。所以该卷积操作的原理不需要把输入图像分割成四个子集,分别执行前
向传播, 而是把它们作为一张图片输入给卷积网络进行计算,其中的公共区域可以共享很多计
算(通过共享计算一次性得出迭代四个窗口的结果),就像这里看到的这个 4 个 14×14 的方块一样
(3)、滑动窗口的实现过程,在图片上剪切出一块区域,假设它的大小是 14×14,把它输入到卷
积网络。继续输入下一块区域,大小同样是 14×14,重复操作,直到某个区域识别到汽车
5、Bounding Box 预测(Bounding box predictions)
(1)、解决基于卷积实现的滑动窗口对象检测算法中精准边界框的问题
(2)、采用YOLO 算法解决上述算法存在的问题
6、交并化
(1)、评价定位算法是否准确
7、非极大值抑制
(1)、算法可能对同一个对象做出多次 检测,所以算法不是对某个对象检测出一次,而是检测出
多次。非极大值抑制这个方法可以确保算法对每个对象只检测一次
(2)、(右边车辆)中是 0.9,然后就说这是最可靠的检测,所以就用高亮标记,就说这里找到
了一辆车。这么做之后,非极大值抑制就会逐一审视剩下的矩形,所有和这个最大的边框有很高交
并比,高度重叠的其他边界框,那么这些输出就会被抑制。所以这两个矩形𝑝𝑐分别是 0.6 和 0.7,
这两个矩形和淡蓝色矩形重叠程度很高,所以会被抑制,变暗,表示它们被抑制了
(3)、逐一审视剩下的矩形,找出概率最高,𝑝𝑐最高的一个,在这种情况下是 0.8, 认为这里检
测出一辆车(左边车辆),然后非极大值抑制算法就会去掉其他 loU 值很高的矩形。所以现在每个
矩形都会被高亮显示或者变暗,如果直接抛弃变暗的矩形,那就剩下高亮显示的那些,这就是最
后得到的两个预测结果
(4)、非最大值意味着只输出概率最大的分类结果,但抑制很接近,但不是最大的其他预测结
果,所以这方法叫做非极大值抑制
8、Anchor Boxes
(1)、一个格子检测多个对象
9、YOLO算法
(1)、如果使用两个 anchor box,那么对于 9 个格子中任何一个都会有两个预测的边界框其
中一个的概率𝑝𝑐很低。但 9 个格子中,每个都有两个预测的边界框,比如得到的边界框是是这样
的,注意有一些边界框可以超出所在格子的高度和宽度(编号 1 所示)。接下来抛弃概率很低的
预测,去掉这些神经网络,这里很可能什么都没有,所以需要抛弃这些(编号 2 所示)
(2)如果有三个对象检测类别,检测行人,汽车和摩托车,对于每个类别单独运行非极大值抑
制,处理预测结果所属类别的边界框,用非极大值抑制来处理行人类别,用非极大值抑制处理车子
类别,然后对摩托车类别进行非极大值抑制,运行三次来得到最终的预测结果。所以算法的输出最
好能够检测出图像里所有的车子,还有所有的行人(编号 3 所示)