darknet icon indicating copy to clipboard operation
darknet copied to clipboard

modify the function init_centroids:

Open DanLiu0623 opened this issue 7 years ago • 2 comments

use plus =1, the error occurs: centroids.append(boxes[centroid_index]) TypeError: only integer scalar arrays can be converted to a scalar index

DanLiu0623 avatar Dec 05 '17 01:12 DanLiu0623

请问,是不是修改了anchor boxes个数,运行k_means_yolo.py ,然后看loss最低的,就是最合适的anchor boxes个数以及anchor boxes 大小?是这样分析的吗?

返回值loss是所有box距离所属的最近的centroid的距离的和

def do_kmeans(n_anchors, boxes, centroids): loss = 0 groups = [] new_centroids = [] for i in range(n_anchors): groups.append([]) new_centroids.append(Box(0, 0, 0, 0))

for box in boxes:
    min_distance = 1
    group_index = 0
    for centroid_index, centroid in enumerate(centroids):
        distance = (1 - box_iou(box, centroid))
        if distance < min_distance:
            min_distance = distance
            group_index = centroid_index
    groups[group_index].append(box)
    loss += min_distance
    new_centroids[group_index].w += box.w
    new_centroids[group_index].h += box.h

for i in range(n_anchors):
    new_centroids[i].w /= len(groups[i])
    new_centroids[i].h /= len(groups[i])

return new_centroids, groups, loss

AhaEdgar avatar Jan 19 '18 14:01 AhaEdgar

use plus =1, the error occurs: centroids.append(boxes[centroid_index]) TypeError: only integer scalar arrays can be converted to a scalar index

just modify centroids.append(boxes[centroid_index]) to centroids.append(boxes[int(centroid_index)])

ujsyehao avatar May 20 '19 10:05 ujsyehao