Как правильно вычислить матрицу путаницы для обнаружения объектов? ⇐ Python

Программы на Python
Anonymous
Как правильно вычислить матрицу путаницы для обнаружения объектов?

Сообщение Anonymous »

Я пытаюсь вычислить матрицу путаницы для моей модели обнаружения объектов. Однако, похоже, я натыкаюсь на некоторые подводные камни. Мой текущий подход заключается в сравнении каждой предсказанной коробки с каждой основной коробкой истины. Если у них IoU > некоторого порога, я вставляю прогнозы в матрицу путаницы. После вставки я удаляю элемент из списка прогнозов и перехожу к следующему элементу.
Поскольку я также хочу, чтобы неправильно классифицированные предложения были вставлены в матрицу путаницы, я обрабатываю элементы при IoU ниже порога как смешение с фоном. Моя текущая реализация выглядит так:

Код: Выделить всё

def insert_into_conf_m(true_labels, predicted_labels, true_boxes, predicted_boxes):
matched_gts = []
for i in range(len(true_labels)):
j = 0
while len(predicted_labels) != 0:
if j >= len(predicted_boxes):
break
if bb_intersection_over_union(true_boxes[i], predicted_boxes[j]) >= 0.7:
conf_m[true_labels[i]][predicted_labels[j]] += 1
del predicted_boxes[j]
del predicted_labels[j]
else:
j += 1
matched_gts.append(true_labels[i])
if len(predicted_labels) == 0:
break
# if there are ground-truth boxes that are not matched by any proposal
# they are treated as if the model classified them as background
if len(true_labels) > len(matched_gts):
true_labels = [i for i in true_labels if not i in matched_gts or matched_gts.remove(i)]
for i in range(len(true_labels)):
conf_m[true_labels[i]][0] += 1

# all detections that have no IoU with any groundtruth box are treated
# as if the groundtruth label for this region was Background (0)
if len(predicted_labels) != 0:
for j in range(len(predicted_labels)):
conf_m[0][predicted_labels[j]] += 1
Матрица, нормализованная по строкам, выглядит следующим образом:

Код: Выделить всё

[0.0, 0.36, 0.34, 0.30]
[0.0, 0.29, 0.30, 0.41]
[0.0, 0.20, 0.47, 0.33]
[0.0, 0.23, 0.19, 0.58]
Есть ли лучший способ создать матрицу путаницы для системы обнаружения объектов? Или какой-либо другой более подходящий показатель?

Подробнее здесь: https://stackoverflow.com/questions/461 ... -detection

Вернуться в «Python»