Exemple #1
0
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"))
Exemple #2
0
    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)
Exemple #3
0
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'))
Exemple #4
0
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"))
Exemple #5
0
    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)
Exemple #6
0
 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)