Esempio n. 1
0
    def testWriteLumiImagesCsv(self):
        # Test get lumi csv dataframe
        # Set inputs to write_lumi_images_csv
        bb_labels = add_basename_gather_df(self.bb_ann_filenames,
                                           self.input_image_format)
        output_dir = tempfile.mkdtemp()
        output_ann_path = os.path.join(output_dir, "test_train.csv")

        write_lumi_images_csv(
            self.images,
            output_dir,
            self.input_image_format,
            self.output_image_format,
            bb_labels,
            output_ann_path,
        )

        images = natsort.natsorted(
            glob.glob(os.path.join(output_dir,
                                   "*" + self.output_image_format)))

        # Assert lumi_df is as expected and the images are written in the
        # expected output_dir
        assert len(images) == len(self.images)
        lumi_df = pd.read_csv(output_ann_path)
        assert len(lumi_df) == self.num_bboxes * self.num_images
        assert list(lumi_df.columns.values) == LUMI_CSV_COLUMNS
Esempio n. 2
0
    def testGetLumiCsvDf(self):
        # Test get lumi csv dataframe
        # Set inputs to get_lumi_csv_df
        df = add_basename_gather_df(self.bb_ann_filenames,
                                    self.input_image_format)
        images = [image.replace(os.sep, "_") for image in self.images]

        lumi_df = get_lumi_csv_df(df, images, self.input_image_format)

        # Assert lumi_df is as expected
        assert len(lumi_df) == self.num_bboxes * self.num_images
        assert list(lumi_df.columns.values) == LUMI_CSV_COLUMNS
Esempio n. 3
0
    def testAddBasenameGatherDfTxt(self):
        # Test combine list of annotation txt files & add base_path col
        # Set inputs to add_basename_gather_df
        df = add_basename_gather_df(self.bb_ann_filenames,
                                    self.input_image_format)

        # Assert base_path column exists and is as expected
        for index, row in df.iterrows():
            assert row["base_path"] == (
                os.path.dirname(row["image_id"]).replace(os.sep, "_") + "_" +
                os.path.basename(row["image_id"]).replace(
                    self.input_image_format, ""))
Esempio n. 4
0
    def testGetImagePathsPerClass(self):
        # Test get unique image paths per class
        # Set inputs to get_image_paths_per_class
        bb_ann_filenames = self.get_ann_filenames(
            self.num_images,
            [
                [0] * self.num_bboxes,
                [1] * self.num_bboxes,
                self.labels,
                self.labels,
                [0] * self.num_bboxes,
            ],
        )
        df = add_basename_gather_df(bb_ann_filenames, self.input_image_format)

        image_ids_per_class = get_image_paths_per_class(df)

        # Assert image_ids_per_class are as expected
        expected_key_values_length = {0: 4, 1: 3, 2: 2}
        for key, value in expected_key_values_length.items():
            assert value == len(image_ids_per_class[key])
Esempio n. 5
0
    def testFilterDenseAnnotation(self):
        # Test filtered unique image paths per class test
        # after suppressing the dense annotation of a class
        # Set inputs to filter_dense_annotation
        bb_ann_filenames = self.get_ann_filenames(
            self.num_images,
            [
                [0] * self.num_bboxes,
                [1] * self.num_bboxes,
                self.labels,
                self.labels,
                [0] * self.num_bboxes,
            ],
        )

        filtered_image_ids_per_class = filter_dense_annotation(
            get_image_paths_per_class(
                add_basename_gather_df(bb_ann_filenames,
                                       self.input_image_format)))

        # Assert filtered_image_ids_per_class are as expected
        expected_key_values_length = {1: 3, 2: 2}
        for key, value in expected_key_values_length.items():
            assert value == len(filtered_image_ids_per_class[key])