Как рассчитать IOU для средней точности

Я делаю fast rcnn и оцениваю модель fast_Rcnn. Мне нужны mAP, A,P, но я был озадачен, как рассчитать IOU для одного изображения, которое имеет несколько pred bbox, несколько блоков goundtruth и несколько меток?

например

у нас есть только 3 этикетки, 0: фон, 1: автомобиль, 2: самолет


goundtruth bbox 1: автомобиль,

goundtruth bbox 2: самолет,

goundtruth bbox 3: автомобиль,


Пред. окно 1- Основное поле 1: Iou 75

Пред. окно 1 - Основание-истина. Окно 2: 30

Пред. окно 1 - Правдивое поле 3: 0


Пред. коробка 2 - Основа правды: 1: 50

Пред. коробка 2 - Основа правды: 2: 50

Пред. коробка 2 - правда, коробка 3: 0


pred box 3 - Groundtruth Box 1: я 0

pred box 3 - Groundtruth Box 2: я 0

Пред. коробка 3 - правда, коробка 3: 100


pred box 4 - Groundtruth Box 1: iou 0

pred box 4 - Groundtruth Box 2: я 0

pred box 4 - Groundtruth Box 3: 0


В этом примере, как рассчитать точность отзыва и среднюю точность?

def get_iou(self, pred_bbox , gt_bboxes):
    ious=[]
    for gt_bbox in gt_bboxes:
        p_x1, p_y1, p_x2, p_y2 = pred_bbox
        g_x1, g_y1, g_x2, g_y2 = gt_bbox

        xx1 = np.maximum(p_x1, g_x1)
        yy1 = np.maximum(p_y1, g_y1)
        xx2 = np.minimum(p_x2, g_x2)
        yy2 = np.minimum(p_y2, g_y2)

        w = np.maximum(0, xx2 - xx1 + 1)
        h = np.maximum(0, yy2 - yy1 + 1)
        overlap_area = w*h
        pred_area=(p_x2-p_x1+1)*(p_y2-p_y1+1)
        gt_area=(g_x2-g_x1+1)*(g_y2-g_y1+1)

        iou=overlap_area/float(pred_area + gt_area - overlap_area)
        ious.append(iou)
    return np.max(ious)

0 ответов

Другие вопросы по тегам