예제 #1
0
    def _init_files_and_annotations(self, *args, **kwargs):
        """Create files and annotations."""
        if self.subset == "train":
            subset = "train_validation"
        elif self.subset == "validation" or self.subset == "test":
            subset = "test"

        os.makedirs(lmenv.TMP_DIR, exist_ok=True)
        files_path = join(lmenv.TMP_DIR,
                          subset + "_pascal20072012_files.pickle")
        annos_path = join(lmenv.TMP_DIR,
                          subset + "_pascal20072012_annos.pickle")

        if (not (isfile(files_path) and isfile(annos_path))):
            if subset == "train_validation":
                pascalvoc_2007 = Pascalvoc2007(subset=subset, *args, **kwargs)
                pascalvoc_2012 = Pascalvoc2012(subset=subset, *args, **kwargs)
                self.files = pascalvoc_2007.files + pascalvoc_2012.files
                self.annotations = pascalvoc_2007.annotations + pascalvoc_2012.annotations
            elif subset == "test":
                pascalvoc_2007 = Pascalvoc2007(subset=subset, *args, **kwargs)
                self.files = pascalvoc_2007.files
                self.annotations = pascalvoc_2007.annotations

            with open(files_path, "wb") as fp:
                pickle.dump(self.files, fp)
            with open(annos_path, "wb") as fp:
                pickle.dump(self.annotations, fp)
            print("done saved pickle")
        else:
            print("loading from pickle file: {}".format(files_path))
            with open(files_path, "rb") as fp:
                self.files = pickle.load(fp)
            with open(annos_path, "rb") as fp:
                self.annotations = pickle.load(fp)
예제 #2
0
    def _init_files_and_annotations(self, *args, **kwargs):
        """Create files and annotations."""
        if self.subset == "train":
            subset = "train_validation"
        elif self.subset == "validation" or self.subset == "test":
            subset = "test"

        if subset == "train_validation":
            pascalvoc_2007 = Pascalvoc2007(subset=subset,
                                           skip_difficult=self.skip_difficult,
                                           *args,
                                           **kwargs)
            pascalvoc_2012 = Pascalvoc2012(subset=subset,
                                           skip_difficult=self.skip_difficult,
                                           *args,
                                           **kwargs)
            self.files = pascalvoc_2007.files + pascalvoc_2012.files
            self.annotations = pascalvoc_2007.annotations + pascalvoc_2012.annotations
        elif subset == "test":
            pascalvoc_2007 = Pascalvoc2007(subset=subset,
                                           skip_difficult=self.skip_difficult,
                                           *args,
                                           **kwargs)
            self.files = pascalvoc_2007.files
            self.annotations = pascalvoc_2007.annotations
예제 #3
0
def test_pascalvoc_2012():
    batch_size = 3
    image_size = [256, 512]
    dataset = Pascalvoc2012(batch_size=batch_size,
                            pre_processor=ResizeWithGtBoxes(image_size))
    num_max_boxes = 39
    dataset = DatasetIterator(dataset)

    assert dataset.num_max_boxes == num_max_boxes
    assert Pascalvoc2012.count_max_boxes() == num_max_boxes
    assert dataset.num_per_epoch == 5717

    val_dataset = Pascalvoc2012(subset="validation",
                                batch_size=batch_size,
                                pre_processor=ResizeWithGtBoxes(image_size))
    val_dataset = DatasetIterator(val_dataset)
    assert val_dataset.num_per_epoch == 5823

    for _ in range(STEP_SIZE):
        images, labels = dataset.feed()
        # _show_images_with_boxes(images, labels)
        assert isinstance(images, np.ndarray)
        assert images.shape[0] == batch_size
        assert images.shape[1] == image_size[0]
        assert images.shape[2] == image_size[1]
        assert images.shape[3] == 3

        assert isinstance(labels, np.ndarray)
        assert labels.shape[0] == batch_size
        assert labels.shape[1] == num_max_boxes
        assert labels.shape[2] == 5

    for _ in range(STEP_SIZE):
        images, labels = val_dataset.feed()
        # _show_images_with_boxes(images, labels)
        assert isinstance(images, np.ndarray)
        assert images.shape[0] == batch_size
        assert images.shape[1] == image_size[0]
        assert images.shape[2] == image_size[1]
        assert images.shape[3] == 3

        assert isinstance(labels, np.ndarray)
        assert labels.shape[0] == batch_size
        assert labels.shape[1] == num_max_boxes
        assert labels.shape[2] == 5