def create_emnist_lines_support_files() -> None: """Create EMNIST Lines test images.""" shutil.rmtree(SUPPORT_DIRNAME, ignore_errors=True) SUPPORT_DIRNAME.mkdir() # TODO: maybe have to add args to dataset. dataset = EmnistLinesDataset( init_token="<sos>", pad_token="_", eos_token="<eos>", transform=[{"type": "ToTensor", "args": {}}], target_transform=[ { "type": "AddTokens", "args": {"init_token": "<sos>", "pad_token": "_", "eos_token": "<eos>"}, } ], ) # nosec: S106 dataset.load_or_generate_data() for index in [5, 7, 9]: image, target = dataset[index] if len(image.shape) == 3: image = image.squeeze(0) print(image.sum(), image.dtype) label = "".join(dataset.mapper(label) for label in target[1:]).strip( dataset.mapper.pad_token ) print(label) image = image.numpy() util.write_image(image, str(SUPPORT_DIRNAME / f"{label}.png"))
def test_evaluate(self): predictor = LinePredictor(EmnistLinesDataset) dataset = EmnistLinesDataset() dataset.load_or_generate_data() t = time() metric = predictor.evaluate(dataset) time_taken = time() - t print(f'acc: {metric}, time_taken: {time_taken}') self.assertGreater(metric, 0.6) self.assertLess(time_taken, 60)
def create_emnist_lines_support_files(): shutil.rmtree(SUPPORT_DIRNAME, ignore_errors=True) SUPPORT_DIRNAME.mkdir() dataset = EmnistLinesDataset() dataset.load_or_generate_data() for ind in [0, 1, 3]: image = dataset.x_test[ind] print(image.sum(), image.dtype) label = ''.join(dataset.mapping[label] for label in np.argmax( dataset.y_test[ind], axis=-1).flatten()).strip(' _') print(label) util.write_image(image, str(SUPPORT_DIRNAME / f'{label}.png'))
def create_emnist_lines_support_files(): shutil.rmtree(SUPPORT_DIRNAME, ignore_errors=True) SUPPORT_DIRNAME.mkdir() dataset = EmnistLinesDataset() dataset.load_or_generate_data() for ind in [0, 1, 3]: image = dataset.x_test[ind] print(image.sum(), image.dtype) label = "".join(dataset.mapping[label] for label in np.argmax( dataset.y_test[ind], axis=-1).flatten()).strip(" _") print(label) util.write_image(image, str(SUPPORT_DIRNAME / f"{label}.png")) # Hide lines below until Lab 8 # Inverted version image = -(image - 255) util.write_image(image, str(SUPPORT_DIRNAME / f"{label}_i.png"))
def test_evaluate(self): # predictor = LinePredictor(IamLinesDataset) # dataset = IamLinesDataset() #instantiates the line predictor predictor = LinePredictor(EmnistLinesDataset) #load dataset dataset = EmnistLinesDataset() dataset.load_or_generate_data() t = time() #evaluate on the dataset metric = predictor.evaluate(dataset) time_taken = time() - t print(f'acc: {metric}, time_taken: {time_taken}') #threshold values for expected performance self.assertGreater(metric, 0.8) self.assertLess(time_taken, 60)
def test_evaluate_accuracy(self, set_leaderboard_value=None): predictor = LinePredictor() dataset = EmnistLinesDataset() dataset.load_or_generate_data() metric = predictor.evaluate(dataset) set_leaderboard_value(metric)