使用 K 均值聚类生成锚框,YOLO

Generating anchor boxes using K-means clustering , YOLO

我想了解 YOLO 的工作原理以及它如何检测图像中的对象。我的问题是,k-means 聚类在检测对象周围的边界框方面​​起什么作用?谢谢。

K-均值聚类算法是数据科学中非常著名的算法。该算法旨在将 n 观察划分为 k 个集群。主要包括:

  1. 初始化:K表示(即质心)是随机生成的。
  2. 分配:通过将每个观测值与最近的质心相关联来形成聚类。

  3. 更新集群:新创建的集群的质心变得平均。

Assignment 和Update 重复发生直到收敛。 最终结果是点和各自质心之间的误差平方和最小。

编辑:

Why use K means

  1. K-means 与其他无监督学习算法相比,计算速度更快、效率更高。不要忘记时间复杂度是线性的。
  2. 它产生比层次聚类更高的聚类。更多的集群有助于获得更准确的最终结果。
  3. 当质心为 re-computed.
  4. 时,实例可以更改集群(移动到另一个集群)
  5. 即使您的某些假设被打破,也能正常工作。

what it really does in determining anchor box

  1. 它将为每个表示形状、位置、大小等的预测变量创建数千个锚框(即 k-means 中的簇)
  2. 对于每个锚框,计算哪个对象的边界框具有最高的重叠除以 non-overlap。这称为 Intersection Over Union 或 IOU。
  3. 如果最高IOU大于50%(可以自定义),告诉anchor box它应该检测它拥有最高IOU的对象。
  4. 否则,如果 IOU 大于 40%,则告诉神经网络真实检测是模糊的,不要从该示例中学习。
  5. 如果最高IOU小于40%,那么应该预测没有对象

谢谢!

通常,对象的边界框由以下形式的元组给出 (x0,y0,x1,y1) 其中x0,y0为左下角坐标,x1,y1为右上角坐标。

需要从这些坐标中提取宽度和高度,并根据图像宽度和高度对数据进行归一化。

K 均值指标

  1. 欧氏距离
  2. IoU(杰卡德指数)

IoU 结果比以前更好

杰卡德指数=(选中框与簇头框的交集)/(选中框与簇头框的并集)

在初始化时,我们可以选择 k 个随机框作为我们的簇头。根据IoU值>阈值将anchor boxes分配给各个簇,并计算簇的平均IoU。

这个过程可以重复直到收敛。