예제 #1
0
    def test_find_rois_from_gt_boxes(self):
        gt_object = {"class": "person", "bbox": np.array([0, 0, 10, 10])}
        result = roi_tools.find_foreground_rois_from_ground_truth_boxes(
            [gt_object], (30, 20))

        assert 32 == len(result)
        np.testing.assert_equal(np.array([0, 1, 9, 10]),
                                result['01910']['bbox'])
        assert roi_tools.calculate_iou(gt_object["bbox"],
                                       result['01910']['bbox']) > 0.7

        expected_class = np.zeros(21)
        expected_class[1] = 1
        for roi in result.values():
            np.testing.assert_equal(expected_class, roi["class"])
            assert roi_tools.calculate_iou(gt_object["bbox"],
                                           roi['bbox']) > 0.7
예제 #2
0
def print_iou_info(image, gt_bboxes):
    rois_fore, rois_back = roi_tools.find_rois_complete(
        image, gt_bboxes, 4, 1000)

    count_background = 0
    count_foreground = 0

    for gt_bbox in gt_bboxes:
        for roi in rois_fore:
            iou = roi_tools.calculate_iou(gt_bbox["bbox"], roi)
            if iou >= 0.5:
                print(iou)
                count_foreground = count_foreground + 1
            else:
                count_background = count_background + 1

    print("Foreground rois: " + str(count_foreground))
    print("Background rois: " + str(count_background))
예제 #3
0
def show_image_with_highest_iou_roi(image, gt_bboxes):
    rois = roi_tools.find_rois_selective_search(image)

    bboxes_to_display = []
    for gt_bbox in gt_bboxes:
        bboxes_to_display.append(gt_bbox)

        max_iou = 0
        max_roi = None

        for roi in rois:
            iou = roi_tools.calculate_iou(gt_bbox, roi)
            if iou > max_iou:
                max_iou = iou
                max_roi = roi

        print("Max IoU: " + str(max_iou))
        bboxes_to_display.append(max_roi)

    print(bboxes_to_display)
    image_tools.show_image_with_bboxes(resized_image_in_pixels,
                                       bboxes_to_display)
예제 #4
0
 def test_calculate_iou_0_percent_horizontally(self):
     bbox_1 = np.array([0, 0, 10, 10])
     bbox_2 = np.array([10, 0, 10, 10])
     iou = roi_tools.calculate_iou(bbox_1, bbox_2)
     assert float("{0:.2f}".format(iou)) == 0.0
예제 #5
0
 def test_calculate_iou_25_percent(self):
     bbox_1 = np.array([0, 0, 10, 10])
     bbox_2 = np.array([0, 5, 10, 10])
     iou = roi_tools.calculate_iou(bbox_1, bbox_2)
     assert float("{0:.2f}".format(iou)) == 0.33