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



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

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

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

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

分配和更新是重复发生的,直到收敛。 最终结果是点及其各自质心之间的平方误差之和最小化。

编辑:

为什么使用 K 表示

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

它在确定锚框方面真正做了什么

  1. 它将为每个表示形状、位置、大小等的预测变量创建一个锚框(即 k 均值中的聚类)。
  2. 对于每个锚框,计算哪个对象的边界框具有最高的重叠除以非重叠。这称为并集或借条上的交叉点。
  3. 如果最高 IOU 大于 50%(可以自定义),请告诉锚框它应该检测到它具有最高 IOU 的对象。
  4. 否则,如果 IOU 大于 40%,请告诉神经网络真正的检测是模棱两可的,不要从该示例中学习。
  5. 如果最高 IOU 小于 40%,则它应该预测没有对象。

谢谢!

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

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

K 均值的指标

  1. 欧几里得距离
  2. 欠条(杰卡德指数)

事实证明,欠条比以前更好

Jaccard 索引 =(所选框和簇头框之间的交集)/(所选框和聚类头框之间的并集)

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

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

相关内容

  • 没有找到相关文章

最新更新