锚盒 (Anchor Boxes)

黎 浩然/ 22 9 月, 2023/ 机器学习/MACHINELEARNING, 目标检测/OBJECTDETECTION/ 0 comments

在目标检测任务中,我们通常将图像划分为多个网格,每个网格负责检测落在其内的对象。但是,在之前的目标检测算法中,每个网格只能检测一个对象。如果一个网格中有多个对象的中心点,那么该网格只能检测其中的一个对象。

为了解决这个问题,YOLO算法引入了 Anchor Boxes 的概念。Anchor Boxes是预先定义的一组不同形状的边界框,用于覆盖不同形状的对象。通过使用 Anchor Boxes,每个网格不仅能检测多个对象,还能根据对象的形状,将其与最合适的 Anchor Box 关联。

在训练阶段,每个对象会被分配到其中心点所在的网格,以及与其形状最相似(即 IOU 最高)的 Anchor Box。在预测阶段,算法会为每个网格的每个 Anchor Box 输出一个目标向量,然后根据对象的概率和边界框的位置,确定对象的位置和类别。

值得注意的是,Anchor Boxes的数量和形状是可以根据任务的需求进行调整的。在实际应用中,通常会通过聚类算法(如 K-means 算法)在训练数据集上的边界框尺寸来确定 Anchor Boxes 的数量和形状,以便更好地适应对象的尺寸分布。

在YOLO算法中,非极大值抑制(NMS)是按照类别进行的,而不是按照Anchor Box进行的。这意味着,如果一个物体类别的多个检测框(可能来自不同的Anchor Box)重叠在一起,那么它们就会被NMS处理,从而只保留其中的一个检测框。这是为了避免同一物体的多个检测框被认为是多个不同的物体。所以,即便物体的检测框位于不同的Anchor Box,它们仍然可能会相互抑制。

Share this Post

Leave a Comment

您的邮箱地址不会被公开。 必填项已用 * 标注

*
*