kmeans-anchor-boxes:基于IoU指标的k-means聚类实现,优化YOLO锚框

k-means clustering with the Intersection over Union (IoU) metric as described in the YOLO9000 paper

分支1Tags0
文件最后提交记录最后更新时间
8 年前
8 年前
8 年前
8 年前
8 年前
8 年前

kmeans 锚框

这个仓库实现了一个基于交并比(IoU)度量的 K 均值聚类算法,如 YOLO9000 论文 [1] 中描述的那样。

测试

根据论文,在 PASCAL VOC 2007 数据集上,我们应该在使用5个聚类时得到61.0的平均 IoU,在使用9个聚类时得到67.2的平均 IoU:

表格

首先,我尝试了标准的 K 均值聚类:

K 均值,k=5

K 均值,k=9

图表显示,算法收敛到低于预期的值。为了解决这个问题,我修改了 K 均值算法,使其不在达到收敛时结束。当值开始下降时,算法会用不同的初始均值重新开始。通过大约50次迭代,可以达到约60的平均 IoU。

然而,这似乎还不够好,因为现在算法需要运行很长时间才能找到正确的值。于是,我尝试了不同的初始化方法和 K 均值聚类的变体。最终,通过简单地使用中位数来计算新质心,获得了最好的结果。

K 中值,k=5

K 中值,k=9

在 PASCAL VOC 2007 数据集上的最终结果是:对于 k=5 约为60.15,对于 k=9 约为67.13。如果你多次运行算法,平均 IoU 可能更高。例如,我有时得到了 k=5 的60.5。结果始终依赖于初始化阶段选择的起始点。

使用方法

要自己尝试结果,请在此处下载注释:http://host.robots.ox.ac.uk/pascal/VOC/voc2007/。然后在 test/test_voc2007.py 中更改常量 ANNOTATIONS_PATH,最后执行:

python3 -m unittest discover -s tests/

参考文献

[1] J. Redmon 和 A. Farhadi,“YOLO9000:更好,更快,更强”,2017年IEEE计算机视觉与模式识别会议(CVPR),2017年7月。

项目介绍

采用与YOLO9000论文中所描述的交集并集(IoU)指标相结合的k均值聚类算法【此简介由AI生成】

定制我的领域