Press "Enter" to skip to content

动手学习深度学习——锚框

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边界从而更准确地预测目标的真实边界框.不同的模型使用的区域采样方法可能不同。 这里我们介绍其中的一种方法: 以每个像素为中心,生成多个缩放比和宽高比(aspect ratio)不同的边界框。 这些边界框被称为 锚框 (anchor box)

 

用锚框检测的步骤

 

基于锚框的目标检测算法就是随机生成多个锚框,比较这些锚框与真实边缘框的差异来预测

提出多个被称为锚框的区域(边缘框)
预测每个锚框里是否含有关注的物体
如果是,预测这个锚框到真实边缘框的偏移

 

处理锚框

 

即计算锚框与真实边缘框的距离

 

并交比(IoU)
用来计算两个框之间的相似度

 

0表示无重叠,1表示重合

这是Jaccard指数的一个特殊情况

杰卡德系数(Jaccard)可以衡量两组之间的相似性。 给定集合和,他们的杰卡德系数是他们交集的大小除以他们并集的大小:

 

赋予锚框编号

 

为了训练目标检测模型,我们需要每个锚框的 类别(class)和偏移量 (offset)标签,其中前者是与锚框相关的对象的类别,后者是真实边界框相对于锚框的偏移量。

每个锚框是一个训练样本
将每个锚框,要幺标注成背景,要幺关联上一个真实边缘框
我们可能会生成大量锚框

这可能会导致大量的父类样本

将真实边界框分配给锚框

算法步骤:

举例:
矩阵的横向(1,2,3,4)表示边缘框(即图像中四个物体的真实边框),纵向(1到9表示随机生成的锚框)
假设矩阵X中的最大值x23,我们将真实边界框B3分配给锚框A2。然后,我们丢弃矩阵第2行和第3列中的所有元素,在剩余元素(阴影区域)中找到最大的x71,然后将真实边界框B1分配给锚框A7。丢弃矩阵第7行和第1列中的所有元素,在剩余元素(阴影区域)中找到最大的x54,然后将真实边界框分配B4给锚框A5。 丢弃矩阵第5行和第4列中的所有元素,在剩余元素(阴影区域)中找到最大的x92,然后将真实边界框B2分配给锚框A9。之后,我们只需要遍历剩余的锚框A1,A3,A4,A6,A8,然后根据阈值确定是否为它们分配真实边界框。

使用非极大值抑制输出(NMS)

 

当有许多锚框时,可能会输出许多相似的具有明显重叠的预测边界框,都围绕着同一目标。 为了简化输出,我们可以 使用非极大值抑制(non-maximum suppression,NMS)合并属于同一目标的类似的预测边界框 。

 

工作原理

我们以图像的每个像素为中心生成不同形状的锚框。
交并比(IoU)也被称为杰卡德系数,用于衡量两个边界框的相似性。它是相交面积与相并面积的比率。
在训练集中,我们需要给每个锚框两种类型的标签。一个是与锚框中目标检测的类别,另一个是锚框真实相对于边界框的偏移量。
在预测期间,我们可以使用非极大值抑制(NMS)来移除类似的预测边界框,从而简化输出

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。