Оценка модели семантической сегментации по mAP

Могу ли я спросить, есть ли способ расчета средней средней точности для модели сегментации семантики без использования граничных блоков? Я должен предсказать 3 класса в качестве вывода, и фон является одним из классов.

1 ответ

Я нашел этот великолепный блог с примером оценки моделей сегментации изображений и зависит от него. Я написал этот код для расчета AP

def np_map(y_true, y_pred, num_classes=3):
    # Compute the confusion matrix to get the number of true positives,
    # false positives, and false negatives
    # Convert predictions and target from categorical to integer format
    target = np.argmax(y_true, axis=-1).ravel()
    predicted = np.argmax(y_pred, axis=-1).ravel()

    # Trick from torchnet for bincounting 2 arrays together
    # https://github.com/pytorch/tnt/blob/master/torchnet/meter/confusionmeter.py
    x = predicted + num_classes * target
    bincount_2d = np.bincount(x.astype(np.int32), minlength=num_classes ** 2)
    assert bincount_2d.size == num_classes ** 2
    conf = bincount_2d.reshape((num_classes, num_classes))

    # Compute the IoU and mean IoU from the confusion matrix
    true_positive = np.diag(conf)
    false_positive = np.sum(conf, 0) - true_positive
    false_negative = np.sum(conf, 1) - true_positive

    # Just in case we get a division by 0, ignore/hide the error and set the value to 0
    with np.errstate(divide='ignore', invalid='ignore'):
        map = 1/num_classes*np.sum(true_positive / (true_positive + false_positive + false_negative))

    return np.mean(map).astype(np.float32)
Другие вопросы по тегам