Esempio n. 1
0
    def _save_image_gts_results(self, dataset, results, mAPs, out_dir=None):
        mmcv.mkdir_or_exist(out_dir)

        for mAP_info in mAPs:
            index, mAP = mAP_info
            data_info = dataset.prepare_train_img(index)

            # calc save file path
            filename = data_info['filename']
            if data_info['img_prefix'] is not None:
                filename = osp.join(data_info['img_prefix'], filename)
            else:
                filename = data_info['filename']
            fname, name = osp.splitext(osp.basename(filename))
            save_filename = fname + '_' + str(round(mAP, 3)) + name
            out_file = osp.join(out_dir, save_filename)
            imshow_gt_det_bboxes(data_info['img'],
                                 data_info,
                                 results[index],
                                 dataset.CLASSES,
                                 gt_bbox_color=dataset.PALETTE,
                                 gt_text_color=(200, 200, 200),
                                 gt_mask_color=dataset.PALETTE,
                                 det_bbox_color=dataset.PALETTE,
                                 det_text_color=(200, 200, 200),
                                 det_mask_color=dataset.PALETTE,
                                 show=self.show,
                                 score_thr=self.score_thr,
                                 wait_time=self.wait_time,
                                 out_file=out_file)
Esempio n. 2
0
def test_imshow_gt_det_bboxes():
    tmp_filename = osp.join(tempfile.gettempdir(), 'det_bboxes_image',
                            'image.jpg')
    image = np.ones((10, 10, 3), np.uint8)
    bbox = np.array([[2, 1, 3, 3], [3, 4, 6, 6]])
    label = np.array([0, 1])
    annotation = dict(gt_bboxes=bbox, gt_labels=label)
    det_result = np.array([[2, 1, 3, 3, 0], [3, 4, 6, 6, 1]])
    result = [det_result]
    out_image = vis.imshow_gt_det_bboxes(image,
                                         annotation,
                                         result,
                                         out_file=tmp_filename,
                                         show=False)
    assert osp.isfile(tmp_filename)
    assert image.shape == out_image.shape
    assert not np.allclose(image, out_image)
    os.remove(tmp_filename)

    # test grayscale images
    image = np.ones((10, 10), np.uint8)
    bbox = np.array([[2, 1, 3, 3], [3, 4, 6, 6]])
    label = np.array([0, 1])
    annotation = dict(gt_bboxes=bbox, gt_labels=label)
    det_result = np.array([[2, 1, 3, 3, 0], [3, 4, 6, 6, 1]])
    result = [det_result]
    vis.imshow_gt_det_bboxes(image,
                             annotation,
                             result,
                             out_file=tmp_filename,
                             show=False)
    assert osp.isfile(tmp_filename)
    os.remove(tmp_filename)

    # test numpy mask
    gt_mask = np.ones((2, 10, 10))
    annotation['gt_masks'] = gt_mask
    vis.imshow_gt_det_bboxes(image,
                             annotation,
                             result,
                             out_file=tmp_filename,
                             show=False)
    assert osp.isfile(tmp_filename)
    os.remove(tmp_filename)

    # test tensor mask
    gt_mask = torch.ones((2, 10, 10))
    annotation['gt_masks'] = gt_mask
    vis.imshow_gt_det_bboxes(image,
                             annotation,
                             result,
                             out_file=tmp_filename,
                             show=False)
    assert osp.isfile(tmp_filename)
    os.remove(tmp_filename)

    # test unsupported type
    annotation['gt_masks'] = []
    with pytest.raises(TypeError):
        vis.imshow_gt_det_bboxes(image, annotation, result, show=False)
Esempio n. 3
0
    def _save_image_gts_results(self,
                                dataset,
                                results,
                                performances,
                                out_dir=None):
        """Display or save image with groung truths and predictions from a
        model.

        Args:
            dataset (Dataset): A PyTorch dataset.
            results (list): Object detection or panoptic segmentation
                results from test results pkl file.
            performances (dict): A dict contains samples's indices
                in dataset and model's performance on them.
            out_dir (str, optional): The filename to write the image.
                Defaults: None.
        """
        mmcv.mkdir_or_exist(out_dir)

        for performance_info in performances:
            index, performance = performance_info
            data_info = dataset.prepare_train_img(index)

            # calc save file path
            filename = data_info['filename']
            if data_info['img_prefix'] is not None:
                filename = osp.join(data_info['img_prefix'], filename)
            else:
                filename = data_info['filename']
            fname, name = osp.splitext(osp.basename(filename))
            save_filename = fname + '_' + str(round(performance, 3)) + name
            out_file = osp.join(out_dir, save_filename)
            imshow_gt_det_bboxes(data_info['img'],
                                 data_info,
                                 results[index],
                                 dataset.CLASSES,
                                 gt_bbox_color=dataset.PALETTE,
                                 gt_text_color=(200, 200, 200),
                                 gt_mask_color=dataset.PALETTE,
                                 det_bbox_color=dataset.PALETTE,
                                 det_text_color=(200, 200, 200),
                                 det_mask_color=dataset.PALETTE,
                                 show=self.show,
                                 score_thr=self.score_thr,
                                 wait_time=self.wait_time,
                                 out_file=out_file,
                                 overlay_gt_pred=self.overlay_gt_pred)