1. 锚框
锚框是用来预测真实的边缘框。
2. loU-交并比
- ioU用来计算两个框之间的相似度
- 0表示无重叠,1表示重合
- 这是Jacquard指数的一个特殊情况
- 给定两个集合A和B:
杰卡德系数(Jaccard)可以衡量两组之间的相似性。 给定集合A和B,他们的杰卡德系数是他们交集的大小除以他们并集的大小:
事实上,我们可以将任何边界框的像素区域视为一组像素。通 过这种方式,我们可以通过其像素集的杰卡德系数来测量两个边界框的相似性。 对于两个边界框,它们的杰卡德系数通常称为交并比(intersection over union,IoU),即两个边界框相交面积与相并面积之比,如 图13.4.1所示。 交并比的取值范围在0和1之间:0表示两个边界框无重合像素,1表示两个边界框完全重合。
3. 赋予锚框标号
- 每个锚框是一个训练样本
- 将被个锚框,要么标注成背景,要么关联上一个真实边缘框
- 我们可能会生成大量的锚框
- 这个导致大量的负类样本
4. 将真实边界框分配给锚框
下面用一个具体的例子来说明上述算法。
如 图13.4.2(左)所示,假设矩阵中的最大值为x23 ,我们将真实边界框A2分配给锚框B3。 然后,我们丢弃矩阵第2行和第3列中的所有元素,在剩余元素(阴影区域)中找到最大的x71,然后将真实边界框A7分配给锚框B1。 接下来,如 图13.4.2(中)所示,丢弃矩阵第7行和第1列中的所有元素,在剩余元素(阴影区域)中找到最大的x54,然后将真实边界框A5分配给锚框B4。 最后,如 图13.4.2(右)所示,丢弃矩阵第5行和第4列中的所有元素,在剩余元素(阴影区域)中找到最大的x92,然后将真实边界框A9分配给锚框B2。 之后,我们只需要遍历剩余的锚框,然后根据阈值确定是否为它们分配真实边界框。
需要注意:
- 锚框要么是固定生成的,要么是根据图片进来生成锚框。
- 赋予锚框标号是每次把图片读进来要做的一个操作。比如说,一张图片读进来,有9个锚框的话,就会生成9个训练样本(几个边缘框就是几个类别,几个锚框就是几个训练样本)。
所以一个图片读进来有可能会生成很多个训练样本,所以导致在目标检测时很有可能是一张一张读。因为内存可能放不下。
其实赋予标号的算法有很多种,这里只列出了一种。
5. 使用非极大值抑制(NMS)输出
6. 总结
- 一类目标检测算法基于锚框来预测
- 首先生成大量锚框,并赋予标号,每个锚框作为一个样本进行训练
- 在预测时,使用NMS来去掉冗余的预测