class CocoDatasetMakerTests(unittest.TestCase): def setUp(self): self.tmp_path = 'tmp' self.output_path = '' self.dataset_name = 'test_coco_dataset' self.images_folder_name = 'train_images' self.annotations_folder_name = 'train_labels' self.classes_names_filename = 'classes.names' self.dataset_path = os.path.join(self.output_path, self.dataset_name) self.images_path = os.path.join(self.dataset_name, self.images_folder_name) self.annotations_path = os.path.join(self.dataset_name, self.annotations_folder_name) self.classes_names_path = os.path.join(self.dataset_path, self.classes_names_filename) # get test data self.labelbox_json_path = 'test_files/test_dataset.json' self.labelbox_interface = LabelBoxInterface() self.test_lablebox_data = self.labelbox_interface.get_data( self.labelbox_json_path) # init class writer self.datasetmaker = CocoDatasetWriter() self.datasetmaker.make_dataset(self.test_lablebox_data, '', self.dataset_name) def test_tmp_exist(self): self.assertEqual(os.path.exists(self.tmp_path), True) def test_create_dataset_folder(self): self.assertEqual(os.path.exists(self.dataset_path), True) def test_create_images_folder(self): self.assertEqual(os.path.exists(self.images_path), True) def test_create_annotations_folder(self): self.assertEqual(os.path.exists(self.annotations_path), True) def test_create_classes_names_file(self): self.assertEqual(os.path.exists(self.classes_names_path), True) def test_any_image_in_images_folder_in_dataset(self): self.assertEqual(len(load_images(self.images_path)) == 0, False) def test_txt_file_to_image(self): images = load_images_names(self.images_path) folder_txts = load_text_paths(self.annotations_path) folder_txts.sort() txts_form_images_names = [] for image in images: label_txt_filename = image + '.txt' label_txt_filepath = os.path.join(self.annotations_path, label_txt_filename) txts_form_images_names.append(label_txt_filepath) txts_form_images_names.sort() self.assertEqual(txts_form_images_names == folder_txts, True) def tearDown(self): remove_folder(self.dataset_name) clean_tmp(self.tmp_path)
class CocoDatasetReaderTests(unittest.TestCase): def setUp(self): self.dataset_name = 'Coco_dataset_reader_test' self.labelbox_json_path = 'test_files/test_dataset.json' self.labelbox_interface = LabelBoxInterface() self.test_lablebox_data = self.labelbox_interface.get_data( self.labelbox_json_path) self.datasetmaker = CocoDatasetWriter() self.datasetmaker.make_dataset(self.test_lablebox_data, '', self.dataset_name) def test_changing_folder_names_to_find(self): images_folder_name = 'test_changing_folder_names_to_find' annotations_folder_name = 'test_changing_folder_names_to_find' coco_reader = CocoDatasetReader() coco_reader.change_folder_to_find_names( images_folder_name=images_folder_name, annotations_folder_name=annotations_folder_name) self.assertEqual(coco_reader.images_folder_name, images_folder_name) self.assertEqual(coco_reader.annotations_folder_name, annotations_folder_name) def test_FoldersNamesError_raise(self): dataset_path = 'test_files' coco_reader = CocoDatasetReader() self.assertRaises(FoldersNamesError, coco_reader.get_data, dataset_path) def test_text_paths_loading(self): coco_reader = CocoDatasetReader() coco_reader._test_structure_exist(self.dataset_name) texts = load_text_paths(coco_reader.annotations_folder_path) self.assertEqual(len(texts) > 0, True) def test_extract_data_from_image_folder(self): test_data = {} coco_reader = CocoDatasetReader() coco_reader._test_structure_exist(self.dataset_name) test_data = coco_reader._extract_data_from_image_folder(test_data) self.assertEqual(isinstance(test_data['images'], list), True) self.assertEqual(len(test_data['images']) > 0, True) def test_get_img_name_and_img_path_from_text_filename(self): coco_reader = CocoDatasetReader() labels_folder_path = os.path.join(self.dataset_name, 'train_labels') images_folder_path = os.path.join(self.dataset_name, 'train_images') text_path = load_text_paths(labels_folder_path)[0] coco_reader._save_to_instance_folder_paths(self.dataset_name) image_filepath, image_filename = coco_reader._get_img_name_and_img_path_from_text_filename( text_path) self.assertEqual(image_filepath in load_images(images_folder_path), True) def test_read_text(self): coco_reader = CocoDatasetReader() labels_folder_path = os.path.join(self.dataset_name, 'train_labels') images_folder_path = os.path.join(self.dataset_name, 'train_images') text_path = load_text_paths(labels_folder_path)[0] coco_reader._save_to_instance_folder_paths(self.dataset_name) data_in_output_format, _ = coco_reader._read_text( text_path, ["test", "test"]) self.assertEqual(len(data_in_output_format['boxes']) > 0, True) self.assertEqual(len(data_in_output_format['labels']) > 0, True) self.assertEqual(len(data_in_output_format['boxes']), len(data_in_output_format['labels'])) def test_if_output_data_have_objects(self): coco_reader = CocoDatasetReader() data_in_output_format = coco_reader.get_data(self.dataset_name) self.assertEqual(len(data_in_output_format['objects']) > 0, True) def test_if_output_data_have_images(self): coco_reader = CocoDatasetReader() data_in_output_format = coco_reader.get_data(self.dataset_name) self.assertEqual( len(data_in_output_format['dataset_classes']) > 0, True) def tearDown(self): remove_folder(self.dataset_name)