1. k-means 聚类代码
我使用的代码是:https://github.com/lars76/kmeans-anchor-boxes
其他的k-means 代码(没用过)是:
- https://github.com/qqwweee/keras-yolo3/blob/master/kmeans.py
- https://github.com/AlexeyAB/darknet/blob/master/scripts/gen_anchors.py
输入是存放 xml标签文件的文件夹:
只需要更改 example.py 中的一行代码:
ANNOTATIONS_PATH = "xmlLabel/train" # 更改自己的路径(存放训练标签 xml 的文件路径)
- 运行
example.py
计算当前数据集的需要设置的 anchor 的大小(相对于416输入而言)
在我的数据集上的输出结果如下:
rows = 8607 # 我的 label 目标的数量
[[0.01416016 0.015625 ] # 每一个 anchor的宽/图像的宽 ,高/高
[0.00830078 0.00927734]
[0.06542969 0.06982422]
[0.03417969 0.03662109]
[0.01123047 0.01220703]
[0.02685547 0.02832031]
[0.01757812 0.01953125]
[0.04443359 0.04833984]
[0.02148438 0.0234375 ]]
Accuracy: 83.41%
Boxes:
[ 5.890625 3.453125 27.21875 14.21875 4.671875 11.171875 7.3125 18.484375 8.9375 ]- # 每个 anchor 的宽
[ 6.5 3.859375 29.046875 15.234375 5.078125 11.78125 8.125 20.109375 9.75 ] # # 每个 anchor 的高
Ratios:
[0.89, 0.9, 0.91, 0.92, 0.92, 0.92, 0.93, 0.94, 0.95] # 每个 anchor 的 宽/高
- 对输入anchor 进行排序后的结果是(取整数是为了好看):
[3, 4, 5, 7, 8, 11, 14, 18, 27]
[3, 5, 6, 8, 9, 11, 15, 20, 29]
anchor_416 = 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 11, 11, 14, 15, 18, 20, 27, 29
anchor_416_2 = 6, 7, 9, 10, 11, 13, 14, 16, 17, 19, 22, 23, 28, 30, 36,