使用 K-means 聚类生成锚框,YOLO

yin*_*ang 3 bounding-box object-detection computer-vision k-means yolo

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

Vin*_*gde 6

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

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

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

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

编辑 :

为什么用K方式

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

它在确定锚框方面的真正作用

  1. 它将为每个代表形状、位置、大小等的预测器创建数千个锚框(即 k 均值中的集群)。
  2. 对于每个锚框,计算哪个对象的边界框具有最高重叠除以非重叠。这称为联合交叉或 IOU。
  3. 如果最高IOU大于50%(这个可以自定义),告诉anchor box检测IOU最高的物体。
  4. 否则如果 IOU 大于 40%,告诉神经网络真正的检测是不明确的,不要从那个例子中学习。
  5. 如果最高IOU小于40%,那么应该预测没有对象。

谢谢!