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 create_emnist_support_files():
    shutil.rmtree(SUPPORT_DIRNAME, ignore_errors=True)
    SUPPORT_DIRNAME.mkdir()

    dataset = EmnistDataset()
    dataset.load_or_generate_data()

    for ind in [5, 7, 9]:
        image = dataset.x_test[ind]
        label = dataset.mapping[np.argmax(dataset.y_test[ind])]
        print(ind, label)
        util.write_image(image, str(SUPPORT_DIRNAME / f'{label}.png'))
def create_iam_lines_support_files():
    shutil.rmtree(SUPPORT_DIRNAME, ignore_errors=True)
    SUPPORT_DIRNAME.mkdir()

    dataset = IamLinesDataset()
    dataset.load_or_generate_data()

    for ind in [0, 1, 3]:
        image = dataset.x_test[ind]
        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"))
Exemple #5
0
def create_emnist_support_files() -> None:
    """Create support images for test of CharacterPredictor class."""
    shutil.rmtree(SUPPORT_DIRNAME, ignore_errors=True)
    SUPPORT_DIRNAME.mkdir()

    dataset = EmnistDataset(train=False)
    dataset.load_or_generate_data()

    for index in [5, 7, 9]:
        image, label = dataset[index]
        if len(image.shape) == 3:
            image = image.squeeze(0)
        image = image.numpy()
        label = dataset.mapper(int(label))
        print(index, label)
        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 _crop_paragraph_image(filename: str, line_regions: Dict,
                          crop_dims: Tuple[int,
                                           int], final_dims: Tuple) -> None:
    image = util.read_image(filename, grayscale=True)

    min_y1 = min(region["y1"] for region in line_regions) - PARAGRAPH_BUFFER
    max_y2 = max(region["y2"] for region in line_regions) + PARAGRAPH_BUFFER
    height = max_y2 - min_y1
    crop_height = crop_dims[0]
    buffer = (crop_height - height) // 2

    # Generate image crop.
    image_crop = 255 * np.ones(crop_dims, dtype=np.uint8)
    try:
        image_crop[buffer:buffer + height] = image[min_y1:max_y2]
    except Exception as e:  # pylint: disable=broad-except
        logger.error(f"Rescued {filename}: {e}")
        return

    # Generate ground truth.
    gt_image = np.zeros_like(image_crop, dtype=np.uint8)
    for index, region in enumerate(line_regions):
        gt_image[(region["y1"] - min_y1 + buffer):(region["y2"] - min_y1 +
                                                   buffer),
                 region["x1"]:region["x2"], ] = (index % 2 + 1)

    # Generate image for debugging.
    import matplotlib.pyplot as plt

    cmap = plt.get_cmap("Set1")
    image_crop_for_debug = np.dstack([image_crop, image_crop, image_crop])
    for index, region in enumerate(line_regions):
        color = [255 * _ for _ in cmap(index)[:-1]]
        cv2.rectangle(
            image_crop_for_debug,
            (region["x1"], region["y1"] - min_y1 + buffer),
            (region["x2"], region["y2"] - min_y1 + buffer),
            color,
            3,
        )
    image_crop_for_debug = cv2.resize(image_crop_for_debug,
                                      final_dims,
                                      interpolation=cv2.INTER_AREA)
    util.write_image(image_crop_for_debug,
                     DEBUG_CROPS_DIRNAME / f"{filename.stem}.jpg")

    image_crop = cv2.resize(image_crop,
                            final_dims,
                            interpolation=cv2.INTER_AREA)
    util.write_image(image_crop, CROPS_DIRNAME / f"{filename.stem}.jpg")

    gt_image = cv2.resize(gt_image,
                          final_dims,
                          interpolation=cv2.INTER_NEAREST)
    util.write_image(gt_image, GT_DIRNAME / f"{filename.stem}.png")
Exemple #8
0
def _crop_paragraph_image(filename, line_regions, crop_dims, final_dims):  # pylint: disable=too-many-locals
    image = util.read_image(filename, grayscale=True)

    min_y1 = min(r["y1"] for r in line_regions) - PARAGRAPH_BUFFER
    max_y2 = max(r["y2"] for r in line_regions) + PARAGRAPH_BUFFER
    height = max_y2 - min_y1
    crop_height = crop_dims[0]
    buffer = (crop_height - height) // 2

    # Generate image crop
    image_crop = 255 * np.ones(crop_dims, dtype=np.uint8)
    try:
        image_crop[buffer:buffer + height] = image[min_y1:max_y2]
    except Exception as e:  # pylint: disable=broad-except
        print(f"Rescued {filename}: {e}")
        return

    # Generate ground truth
    gt_image = np.zeros_like(image_crop, dtype=np.uint8)
    for ind, region in enumerate(line_regions):
        gt_image[(region["y1"] - min_y1 + buffer):(region["y2"] - min_y1 +
                                                   buffer),
                 region["x1"]:region["x2"]] = (ind % 2 + 1)

    # Generate image for debugging
    import matplotlib.pyplot as plt  # pylint: disable=import-outside-toplevel

    cmap = plt.get_cmap("Set1")
    image_crop_for_debug = np.dstack([image_crop, image_crop, image_crop])
    for ind, region in enumerate(line_regions):
        color = [255 * _ for _ in cmap(ind)[:-1]]
        cv2.rectangle(
            image_crop_for_debug,
            (region["x1"], region["y1"] - min_y1 + buffer),
            (region["x2"], region["y2"] - min_y1 + buffer),
            color,
            3,
        )
    image_crop_for_debug = cv2.resize(image_crop_for_debug,
                                      final_dims,
                                      interpolation=cv2.INTER_AREA)
    util.write_image(image_crop_for_debug,
                     DEBUG_CROPS_DIRNAME / f"{filename.stem}.jpg")

    image_crop = cv2.resize(
        image_crop, final_dims,
        interpolation=cv2.INTER_AREA)  # Quality interpolation for input
    util.write_image(image_crop, CROPS_DIRNAME / f"{filename.stem}.jpg")

    gt_image = cv2.resize(
        gt_image, final_dims,
        interpolation=cv2.INTER_NEAREST)  # No interpolation for labels
    util.write_image(gt_image, GT_DIRNAME / f"{filename.stem}.png")
def _crop_paragraph_image(filename, line_regions, crop_dims, final_dims):
    image = util.read_image(filename, grayscale=True)

    min_y1 = min(r['y1'] for r in line_regions) - PARAGRAPH_BUFFER
    max_y2 = max(r['y2'] for r in line_regions) + PARAGRAPH_BUFFER
    height = max_y2 - min_y1
    crop_height = crop_dims[0]
    buffer = (crop_height - height) // 2

    # Generate image crop
    image_crop = 255 * np.ones(crop_dims, dtype=np.uint8)
    try:
        image_crop[buffer:buffer + height] = image[min_y1:max_y2]
    except Exception as e:
        print(f'Rescued {filename}: {e}')
        return

    # Generate ground truth
    gt_image = np.zeros_like(image_crop, dtype=np.uint8)
    for ind, region in enumerate(line_regions):
        gt_image[
            (region['y1'] - min_y1 + buffer):(region['y2'] - min_y1 + buffer),
            region['x1']:region['x2']
        ] = ind % 2 + 1

    # Generate image for debugging
    import matplotlib.pyplot as plt
    cmap = plt.get_cmap('Set1')
    image_crop_for_debug = np.dstack([image_crop, image_crop, image_crop])
    for ind, region in enumerate(line_regions):
        color = [255 * _ for _ in cmap(ind)[:-1]]
        cv2.rectangle(
            image_crop_for_debug,
            (region['x1'], region['y1'] - min_y1 + buffer),
            (region['x2'], region['y2'] - min_y1 + buffer),
            color,
            3
        )
    image_crop_for_debug = cv2.resize(image_crop_for_debug, final_dims, interpolation=cv2.INTER_AREA)
    util.write_image(image_crop_for_debug, DEBUG_CROPS_DIRNAME / f'{filename.stem}.jpg')

    image_crop = cv2.resize(image_crop, final_dims, interpolation=cv2.INTER_AREA)  # Quality interpolation for input
    util.write_image(image_crop, CROPS_DIRNAME / f'{filename.stem}.jpg')

    gt_image = cv2.resize(gt_image, final_dims, interpolation=cv2.INTER_NEAREST)  # No interpolation for labels
    util.write_image(gt_image, GT_DIRNAME / f'{filename.stem}.png')