From 5ba252eb4ab59225e63e7947bcd02b565148e83d Mon Sep 17 00:00:00 2001 From: Yoann Schneider <yschneider@teklia.com> Date: Tue, 8 Nov 2022 22:59:00 +0100 Subject: [PATCH] remove obsolete code --- .pre-commit-config.yaml | 3 - .../extract_from_arkindex.py | 113 -- .../extraction_utils/arkindex_utils.py | 67 -- .../extraction_utils/utils.py | 49 - .../generic_dataset_formatter.py | 89 -- .../dataset_formatters/simara_formatter.py | 104 -- Datasets/dataset_formatters/utils_dataset.py | 7 - OCR/document_OCR/dan/main_dan.py | 207 ---- OCR/document_OCR/dan/trainer_dan.py | 165 --- OCR/line_OCR/ctc/main_line_ctc.py | 173 --- OCR/line_OCR/ctc/main_syn_line.py | 148 --- OCR/line_OCR/ctc/models_line_ctc.py | 19 - OCR/line_OCR/ctc/trainer_line_ctc.py | 96 -- OCR/ocr_dataset_manager.py | 1036 ----------------- OCR/ocr_manager.py | 67 -- README.md | 4 +- basic/generic_dataset_manager.py | 390 ------- basic/generic_training_manager.py | 706 ----------- basic/metric_manager.py | 538 --------- basic/scheduler.py | 51 - basic/transforms.py | 438 ------- basic/utils.py | 179 --- prediction-requirements.txt | 12 +- requirements.txt | 85 +- setup.py | 12 +- visual.png | Bin 134135 -> 0 bytes visual_slanted_lines.png | Bin 213318 -> 0 bytes 27 files changed, 23 insertions(+), 4735 deletions(-) delete mode 100644 Datasets/dataset_formatters/extract_from_arkindex.py delete mode 100644 Datasets/dataset_formatters/extraction_utils/arkindex_utils.py delete mode 100644 Datasets/dataset_formatters/extraction_utils/utils.py delete mode 100644 Datasets/dataset_formatters/generic_dataset_formatter.py delete mode 100644 Datasets/dataset_formatters/simara_formatter.py delete mode 100644 Datasets/dataset_formatters/utils_dataset.py delete mode 100644 OCR/document_OCR/dan/main_dan.py delete mode 100644 OCR/document_OCR/dan/trainer_dan.py delete mode 100644 OCR/line_OCR/ctc/main_line_ctc.py delete mode 100644 OCR/line_OCR/ctc/main_syn_line.py delete mode 100644 OCR/line_OCR/ctc/models_line_ctc.py delete mode 100644 OCR/line_OCR/ctc/trainer_line_ctc.py delete mode 100644 OCR/ocr_dataset_manager.py delete mode 100644 OCR/ocr_manager.py delete mode 100644 basic/generic_dataset_manager.py delete mode 100644 basic/generic_training_manager.py delete mode 100644 basic/metric_manager.py delete mode 100644 basic/scheduler.py delete mode 100644 basic/transforms.py delete mode 100644 basic/utils.py delete mode 100644 visual.png delete mode 100644 visual_slanted_lines.png diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 09a6111c..3703391f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,3 @@ -# Only run on our the DAN python module -files: '^dan' - repos: - repo: https://github.com/PyCQA/isort rev: 5.10.1 diff --git a/Datasets/dataset_formatters/extract_from_arkindex.py b/Datasets/dataset_formatters/extract_from_arkindex.py deleted file mode 100644 index 4bad3639..00000000 --- a/Datasets/dataset_formatters/extract_from_arkindex.py +++ /dev/null @@ -1,113 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -# Example of minimal usage: -# python extract_from_arkindex.py -# --corpus "AN-Simara annotations E (2022-06-20)" -# --parents-types folder -# --parents-names FRAN_IR_032031_4538.pdf -# --output-dir ../ - -""" - The extraction module - ====================== -""" - -import logging -import os - -import cv2 -import imageio.v2 as iio -from arkindex import ArkindexClient, options_from_env -from tqdm import tqdm - -from extraction_utils import arkindex_utils as ark -from extraction_utils import utils - -logging.basicConfig( - level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s" -) - - -IMAGES_DIR = "./images/" # Path to the images directory. -LABELS_DIR = "./labels/" # Path to the labels directory. - -# Layout string to token -SEM_MATCHING_TOKENS_STR = { - "INTITULE": "ⓘ", - "DATE": "â““", - "COTE_SERIE": "â“¢", - "ANALYSE_COMPL.": "â“’", - "PRECISIONS_SUR_COTE": "â“Ÿ", - "COTE_ARTICLE": "â“" -} - -# Layout begin-token to end-token -SEM_MATCHING_TOKENS = { - "ⓘ": "â’¾", - "â““": "â’¹", - "â“¢": "Ⓢ", - "â“’": "â’¸", - "â“Ÿ": "â“…", - "â“": "â’¶" -} - - -if __name__ == '__main__': - args = utils.get_cli_args() - - # Get and initialize the parameters. - os.makedirs(IMAGES_DIR, exist_ok=True) - os.makedirs(LABELS_DIR, exist_ok=True) - - # Login to arkindex. - client = ArkindexClient(**options_from_env()) - - corpus = ark.retrieve_corpus(client, args.corpus) - subsets = ark.retrieve_subsets( - client, corpus, args.parents_types, args.parents_names - ) - - # Iterate over the subsets to find the page images and labels. - for subset in subsets: - - os.makedirs(os.path.join(args.output_dir, IMAGES_DIR, subset["name"]), exist_ok=True) - os.makedirs(os.path.join(args.output_dir, LABELS_DIR, subset["name"]), exist_ok=True) - - for page in tqdm( - client.paginate( - "ListElementChildren", id=subset["id"], type="page", recursive=True - ), - desc="Set " + subset["name"], - ): - - image = iio.imread(page["zone"]["url"]) - cv2.imwrite( - os.path.join(args.output_dir, IMAGES_DIR, subset['name'], f"{page['id']}.jpg"), - cv2.cvtColor(image, cv2.COLOR_BGR2RGB), - ) - - tr = client.request('ListTranscriptions', id=page['id'], worker_version=None)['results'] - tr = [one for one in tr if one['worker_version_id'] is None] - assert len(tr) == 1, page['id'] - - for one_tr in tr: - ent = client.request('ListTranscriptionEntities', id=one_tr['id'])['results'] - ent = [one for one in ent if one['worker_version_id'] is None] - if len(ent) == 0: - continue - else: - text = one_tr['text'] - - new_text = text - count = 0 - for e in ent: - start_token = SEM_MATCHING_TOKENS_STR[e['entity']['metas']['subtype']] - end_token = SEM_MATCHING_TOKENS[start_token] - new_text = new_text[:count+e['offset']] + start_token + new_text[count+e['offset']:] - count += 1 - new_text = new_text[:count+e['offset']+e['length']] + end_token + new_text[count+e['offset']+e['length']:] - count += 1 - - with open(os.path.join(args.output_dir, LABELS_DIR, subset['name'], f"{page['id']}.txt"), 'w') as f: - f.write(new_text) diff --git a/Datasets/dataset_formatters/extraction_utils/arkindex_utils.py b/Datasets/dataset_formatters/extraction_utils/arkindex_utils.py deleted file mode 100644 index 5216a7e0..00000000 --- a/Datasets/dataset_formatters/extraction_utils/arkindex_utils.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" - The arkindex_utils module - ====================== -""" - -import errno -import logging -import sys - -from apistar.exceptions import ErrorResponse - - -def retrieve_corpus(client, corpus_name: str) -> str: - """ - Retrieve the corpus id from the corpus name. - :param client: The arkindex client. - :param corpus_name: The name of the corpus to retrieve. - :return target_corpus: The id of the retrieved corpus. - """ - for corpus in client.request("ListCorpus"): - if corpus["name"] == corpus_name: - target_corpus = corpus["id"] - try: - logging.info(f"Corpus id retrieved: {target_corpus}") - except NameError: - logging.error(f"Corpus {corpus_name} not found") - sys.exit(errno.EINVAL) - - return target_corpus - - -def retrieve_subsets( - client, corpus: str, parents_types: list, parents_names: list -) -> list: - """ - Retrieve the requested subsets. - :param client: The arkindex client. - :param corpus: The id of the retrieved corpus. - :param parents_types: The types of parents of the elements to retrieve. - :param parents_names: The names of parents of the elements to retrieve. - :return subsets: The retrieved subsets. - """ - subsets = [] - for parent_type in parents_types: - try: - subsets.extend( - client.request("ListElements", corpus=corpus, type=parent_type)[ - "results" - ] - ) - except ErrorResponse as e: - logging.error(f"{e.content}: {parent_type}") - sys.exit(errno.EINVAL) - # Retrieve subsets with name in parents-names. If no parents-names given, keep all subsets. - if parents_names is not None: - logging.info(f"Retrieving {parents_names} subset(s)") - subsets = [subset for subset in subsets if subset["name"] in parents_names] - else: - logging.info("Retrieving all subsets") - - if len(subsets) == 0: - logging.info("No subset found") - - return subsets diff --git a/Datasets/dataset_formatters/extraction_utils/utils.py b/Datasets/dataset_formatters/extraction_utils/utils.py deleted file mode 100644 index fad5cdec..00000000 --- a/Datasets/dataset_formatters/extraction_utils/utils.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" - The utils module - ====================== -""" - -import argparse - -def get_cli_args(): - """ - Get the command-line arguments. - :return: The command-line arguments. - """ - parser = argparse.ArgumentParser( - description="Arkindex DAN Training Label Generation" - ) - - # Required arguments. - parser.add_argument( - "--corpus", - type=str, - help="Name of the corpus from which the data will be retrieved.", - required=True, - ) - parser.add_argument( - "--parents-types", - nargs="+", - type=str, - help="Type of parents of the elements.", - required=True, - ) - parser.add_argument( - "--output-dir", - type=str, - help="Path to the output directory.", - required=True, - ) - - # Optional arguments. - parser.add_argument( - "--parents-names", - nargs="+", - type=str, - help="Names of parents of the elements.", - default=None, - ) - return parser.parse_args() diff --git a/Datasets/dataset_formatters/generic_dataset_formatter.py b/Datasets/dataset_formatters/generic_dataset_formatter.py deleted file mode 100644 index ae55af02..00000000 --- a/Datasets/dataset_formatters/generic_dataset_formatter.py +++ /dev/null @@ -1,89 +0,0 @@ -import os -import shutil -import tarfile -import pickle -import re -from PIL import Image -import numpy as np - - -class DatasetFormatter: - """ - Global pipeline/functions for dataset formatting - """ - - def __init__(self, dataset_name, level, extra_name="", set_names=["train", "valid", "test"]): - self.dataset_name = dataset_name - self.level = level - self.set_names = set_names - self.target_fold_path = os.path.join( - "Datasets", "formatted", "{}_{}{}".format(dataset_name, level, extra_name)) - self.map_datasets_files = dict() - self.extract_with_dirname = False - - def format(self): - self.init_format() - self.map_datasets_files[self.dataset_name][self.level]["format_function"]() - self.end_format() - - def init_format(self): - """ - Load and extracts needed files - """ - os.makedirs(self.target_fold_path, exist_ok=True) - - for set_name in self.set_names: - os.makedirs(os.path.join(self.target_fold_path, set_name), exist_ok=True) - - -class OCRDatasetFormatter(DatasetFormatter): - """ - Specific pipeline/functions for OCR/HTR dataset formatting - """ - - def __init__(self, source_dataset, level, extra_name="", set_names=["train", "valid", "test"]): - super(OCRDatasetFormatter, self).__init__(source_dataset, level, extra_name, set_names) - self.charset = set() - self.gt = dict() - for set_name in set_names: - self.gt[set_name] = dict() - - def format_text_label(self, label): - """ - Remove extra space or line break characters - """ - temp = re.sub("(\n)+", '\n', label) - return re.sub("( )+", ' ', temp).strip(" \n") - - def load_resize_save(self, source_path, target_path): - """ - Load image, apply resolution modification and save it - """ - shutil.copyfile(source_path, target_path) - - def resize(self, img, source_dpi, target_dpi): - """ - Apply resolution modification to image - """ - if source_dpi == target_dpi: - return img - if isinstance(img, np.ndarray): - h, w = img.shape[:2] - img = Image.fromarray(img) - else: - w, h = img.size - ratio = target_dpi / source_dpi - img = img.resize((int(w*ratio), int(h*ratio)), Image.BILINEAR) - return np.array(img) - - def end_format(self): - """ - Save label and charset files - """ - with open(os.path.join(self.target_fold_path, "labels.pkl"), "wb") as f: - pickle.dump({ - "ground_truth": self.gt, - "charset": sorted(list(self.charset)), - }, f) - with open(os.path.join(self.target_fold_path, "charset.pkl"), "wb") as f: - pickle.dump(sorted(list(self.charset)), f) diff --git a/Datasets/dataset_formatters/simara_formatter.py b/Datasets/dataset_formatters/simara_formatter.py deleted file mode 100644 index c60eb30f..00000000 --- a/Datasets/dataset_formatters/simara_formatter.py +++ /dev/null @@ -1,104 +0,0 @@ -from Datasets.dataset_formatters.generic_dataset_formatter import OCRDatasetFormatter -import os -import numpy as np -from Datasets.dataset_formatters.utils_dataset import natural_sort -from PIL import Image -import xml.etree.ElementTree as ET -import re -from tqdm import tqdm - -# Layout string to token -SEM_MATCHING_TOKENS_STR = { - "INTITULE": "ⓘ", - "DATE": "â““", - "COTE_SERIE": "â“¢", - "ANALYSE_COMPL": "â“’", - "PRECISIONS_SUR_COTE": "â“Ÿ", - "COTE_ARTICLE": "â“" -} - -# Layout begin-token to end-token -SEM_MATCHING_TOKENS = { - "ⓘ": "â’¾", - "â““": "â’¹", - "â“¢": "Ⓢ", - "â“’": "â’¸", - "â“Ÿ": "â“…", - "â“": "â’¶" -} - -class SimaraDatasetFormatter(OCRDatasetFormatter): - def __init__(self, level, set_names=["train", "valid", "test"], dpi=150, sem_token=True): - super(SimaraDatasetFormatter, self).__init__("simara", level, "_sem" if sem_token else "", set_names) - - self.dpi = dpi - self.sem_token = sem_token - self.map_datasets_files.update({ - "simara": { - # (1,050 for train, 100 for validation and 100 for test) - "page": { - "format_function": self.format_simara_page, - }, - } - }) - self.matching_tokens_str = SEM_MATCHING_TOKENS_STR - self.matching_tokens = SEM_MATCHING_TOKENS - - def preformat_simara_page(self): - """ - Extract all information from dataset and correct some annotations - """ - dataset = { - "train": list(), - "valid": list(), - "test": list() - } - img_folder_path = os.path.join("Datasets", "raw", "simara", "images") - labels_folder_path = os.path.join("Datasets", "raw", "simara", "labels") - sem_labels_folder_path = os.path.join("Datasets", "raw", "simara", "labels_sem") - train_files = [ - os.path.join(labels_folder_path, 'train', name) - for name in os.listdir(os.path.join(sem_labels_folder_path, 'train'))] - valid_files = [ - os.path.join(labels_folder_path, 'valid', name) - for name in os.listdir(os.path.join(sem_labels_folder_path, 'valid'))] - test_files = [ - os.path.join(labels_folder_path, 'test', name) - for name in os.listdir(os.path.join(sem_labels_folder_path, 'test'))] - for set_name, files in zip(self.set_names, [train_files, valid_files, test_files]): - for i, label_file in enumerate(tqdm(files, desc='Pre-formatting '+set_name)): - with open(label_file, 'r') as f: - text = f.read() - with open(label_file.replace('labels', 'labels_sem'), 'r') as f: - sem_text = f.read() - dataset[set_name].append({ - "img_path": os.path.join( - img_folder_path, set_name, label_file.split('/')[-1].replace('txt', 'jpg')), - "label": text, - "sem_label": sem_text, - }) - print(dataset['test'], len(dataset['test'])) - return dataset - - def format_simara_page(self): - """ - Format simara page dataset - """ - dataset = self.preformat_simara_page() - for set_name in self.set_names: - fold = os.path.join(self.target_fold_path, set_name) - for sample in tqdm(dataset[set_name], desc='Formatting '+set_name): - new_name = sample['img_path'].split('/')[-1] - new_img_path = os.path.join(fold, new_name) - self.load_resize_save(sample["img_path"], new_img_path)#, 300, self.dpi) - page = { - "text": sample["label"] if not self.sem_token else sample["sem_label"], - } - self.charset = self.charset.union(set(page["text"])) - self.gt[set_name][new_name] = page - - -if __name__ == "__main__": - - SimaraDatasetFormatter("page", sem_token=True).format() - #SimaraDatasetFormatter("page", sem_token=False).format() diff --git a/Datasets/dataset_formatters/utils_dataset.py b/Datasets/dataset_formatters/utils_dataset.py deleted file mode 100644 index 962274da..00000000 --- a/Datasets/dataset_formatters/utils_dataset.py +++ /dev/null @@ -1,7 +0,0 @@ -import re - - -def natural_sort(l): - convert = lambda text: int(text) if text.isdigit() else text.lower() - alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key)] - return sorted(l, key=alphanum_key) \ No newline at end of file diff --git a/OCR/document_OCR/dan/main_dan.py b/OCR/document_OCR/dan/main_dan.py deleted file mode 100644 index 2a15f0aa..00000000 --- a/OCR/document_OCR/dan/main_dan.py +++ /dev/null @@ -1,207 +0,0 @@ -import os -import sys -DOSSIER_COURRANT = os.path.dirname(os.path.abspath(__file__)) -DOSSIER_PARENT = os.path.dirname(DOSSIER_COURRANT) -sys.path.append(os.path.dirname(DOSSIER_PARENT)) -sys.path.append(os.path.dirname(os.path.dirname(DOSSIER_PARENT))) -sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(DOSSIER_PARENT)))) -from torch.optim import Adam -from basic.transforms import aug_config -from OCR.ocr_dataset_manager import OCRDataset, OCRDatasetManager -from OCR.document_OCR.dan.trainer_dan import Manager -from dan.decoder import GlobalHTADecoder -from dan.models import FCN_Encoder -from basic.scheduler import exponential_dropout_scheduler, linear_scheduler -import torch -import numpy as np -import random -import torch.multiprocessing as mp - - -def train_and_test(rank, params): - torch.manual_seed(0) - torch.cuda.manual_seed(0) - np.random.seed(0) - random.seed(0) - torch.backends.cudnn.benchmark = False - torch.backends.cudnn.deterministic = True - - params["training_params"]["ddp_rank"] = rank - model = Manager(params) - model.load_model() - - model.train() - - # load weights giving best CER on valid set - model.params["training_params"]["load_epoch"] = "best" - model.load_model() - - metrics = ["cer", "wer", "time", "map_cer", "loer"] - for dataset_name in params["dataset_params"]["datasets"].keys(): - for set_name in ["test", "valid", "train"]: - model.predict("{}-{}".format(dataset_name, set_name), [(dataset_name, set_name), ], metrics, output=True) - - -if __name__ == "__main__": - - dataset_name = "simara" # ["RIMES", "READ_2016"] - dataset_level = "page" # ["page", "double_page"] - dataset_variant = "_sem" - - # max number of lines for synthetic documents - max_nb_lines = { - "RIMES": 40, - "READ_2016": 30, - } - - params = { - "dataset_params": { - "dataset_manager": OCRDatasetManager, - "dataset_class": OCRDataset, - "datasets": { - dataset_name: "../../../Datasets/formatted/{}_{}{}".format(dataset_name, dataset_level, dataset_variant), - }, - "train": { - "name": "{}-train".format(dataset_name), - "datasets": [(dataset_name, "train"), ], - }, - "valid": { - "{}-valid".format(dataset_name): [(dataset_name, "valid"), ], - }, - "config": { - "load_in_memory": True, # Load all images in CPU memory - "worker_per_gpu": 4, # Num of parallel processes per gpu for data loading - "width_divisor": 8, # Image width will be divided by 8 - "height_divisor": 32, # Image height will be divided by 32 - "padding_value": 0, # Image padding value - "padding_token": None, # Label padding value - "charset_mode": "seq2seq", # add end-of-transcription ans start-of-transcription tokens to charset - "constraints": ["add_eot", "add_sot"], # add end-of-transcription ans start-of-transcription tokens in labels - "normalize": True, # Normalize with mean and variance of training dataset - "preprocessings": [ - { - "type": "to_RGB", - # if grayscaled image, produce RGB one (3 channels with same value) otherwise do nothing - }, - ], - "augmentation": aug_config(0.9, 0.1), - "synthetic_data": None, - #"synthetic_data": { - # "init_proba": 0.9, # begin proba to generate synthetic document - # "end_proba": 0.2, # end proba to generate synthetic document - # "num_steps_proba": 200000, # linearly decrease the percent of synthetic document from 90% to 20% through 200000 samples - # "proba_scheduler_function": linear_scheduler, # decrease proba rate linearly - # "start_scheduler_at_max_line": True, # start decreasing proba only after curriculum reach max number of lines - # "dataset_level": dataset_level, - # "curriculum": True, # use curriculum learning (slowly increase number of lines per synthetic samples) - # "crop_curriculum": True, # during curriculum learning, crop images under the last text line - # "curr_start": 0, # start curriculum at iteration - # "curr_step": 10000, # interval to increase the number of lines for curriculum learning - # "min_nb_lines": 1, # initial number of lines for curriculum learning - # "max_nb_lines": max_nb_lines[dataset_name], # maximum number of lines for curriculum learning - # "padding_value": 255, - # # config for synthetic line generation - # "config": { - # "background_color_default": (255, 255, 255), - # "background_color_eps": 15, - # "text_color_default": (0, 0, 0), - # "text_color_eps": 15, - # "font_size_min": 35, - # "font_size_max": 45, - # "color_mode": "RGB", - # "padding_left_ratio_min": 0.00, - # "padding_left_ratio_max": 0.05, - # "padding_right_ratio_min": 0.02, - # "padding_right_ratio_max": 0.2, - # "padding_top_ratio_min": 0.02, - # "padding_top_ratio_max": 0.1, - # "padding_bottom_ratio_min": 0.02, - # "padding_bottom_ratio_max": 0.1, - # }, - #} - } - }, - - "model_params": { - "models": { - "encoder": FCN_Encoder, - "decoder": GlobalHTADecoder, - }, - #"transfer_learning": None, - "transfer_learning": { - # model_name: [state_dict_name, checkpoint_path, learnable, strict] - "encoder": ["encoder", "dan_rimes_page.pt", True, True], - "decoder": ["decoder", "dan_rimes_page.pt", True, False], - }, - "transfered_charset": True, # Transfer learning of the decision layer based on charset of the line HTR model - "additional_tokens": 1, # for decision layer = [<eot>, ], only for transfered charset - - "input_channels": 3, # number of channels of input image - "dropout": 0.5, # dropout rate for encoder - "enc_dim": 256, # dimension of extracted features - "nb_layers": 5, # encoder - "h_max": 500, # maximum height for encoder output (for 2D positional embedding) - "w_max": 1000, # maximum width for encoder output (for 2D positional embedding) - "l_max": 15000, # max predicted sequence (for 1D positional embedding) - "dec_num_layers": 8, # number of transformer decoder layers - "dec_num_heads": 4, # number of heads in transformer decoder layers - "dec_res_dropout": 0.1, # dropout in transformer decoder layers - "dec_pred_dropout": 0.1, # dropout rate before decision layer - "dec_att_dropout": 0.1, # dropout rate in multi head attention - "dec_dim_feedforward": 256, # number of dimension for feedforward layer in transformer decoder layers - "use_2d_pe": True, # use 2D positional embedding - "use_1d_pe": True, # use 1D positional embedding - "use_lstm": False, - "attention_win": 100, # length of attention window - # Curriculum dropout - "dropout_scheduler": { - "function": exponential_dropout_scheduler, - "T": 5e4, - } - - }, - - "training_params": { - "output_folder": "dan_simara_page", # folder name for checkpoint and results - "max_nb_epochs": 50000, # maximum number of epochs before to stop - "max_training_time": 3600 * 24 * 1.9, # maximum time before to stop (in seconds) - "load_epoch": "last", # ["best", "last"]: last to continue training, best to evaluate - "interval_save_weights": None, # None: keep best and last only - "batch_size": 2, # mini-batch size for training - "valid_batch_size": 4, # mini-batch size for valdiation - "use_ddp": False, # Use DistributedDataParallel - "ddp_port": "20027", - "use_amp": True, # Enable automatic mix-precision - "nb_gpu": torch.cuda.device_count(), - "optimizers": { - "all": { - "class": Adam, - "args": { - "lr": 0.0001, - "amsgrad": False, - } - }, - }, - "lr_schedulers": None, # Learning rate schedulers - "eval_on_valid": True, # Whether to eval and logs metrics on validation set during training or not - "eval_on_valid_interval": 5, # Interval (in epochs) to evaluate during training - "focus_metric": "cer", # Metrics to focus on to determine best epoch - "expected_metric_value": "low", # ["high", "low"] What is best for the focus metric value - "set_name_focus_metric": "{}-valid".format(dataset_name), # Which dataset to focus on to select best weights - "train_metrics": ["loss_ce", "cer", "wer", "syn_max_lines"], # Metrics name for training - "eval_metrics": ["cer", "wer", "map_cer"], # Metrics name for evaluation on validation set during training - "force_cpu": False, # True for debug purposes - "max_char_prediction": 1000, # max number of token prediction - # Keep teacher forcing rate to 20% during whole training - "teacher_forcing_scheduler": { - "min_error_rate": 0.2, - "max_error_rate": 0.2, - "total_num_steps": 5e4 - }, - }, - } - - if params["training_params"]["use_ddp"] and not params["training_params"]["force_cpu"]: - mp.spawn(train_and_test, args=(params,), nprocs=params["training_params"]["nb_gpu"]) - else: - train_and_test(0, params) diff --git a/OCR/document_OCR/dan/trainer_dan.py b/OCR/document_OCR/dan/trainer_dan.py deleted file mode 100644 index d8fd8432..00000000 --- a/OCR/document_OCR/dan/trainer_dan.py +++ /dev/null @@ -1,165 +0,0 @@ -from OCR.ocr_manager import OCRManager -from torch.nn import CrossEntropyLoss -import torch -from dan.ocr_utils import LM_ind_to_str -import numpy as np -from torch.cuda.amp import autocast -import time - - -class Manager(OCRManager): - - def __init__(self, params): - super(Manager, self).__init__(params) - - def load_save_info(self, info_dict): - if "curriculum_config" in info_dict.keys(): - if self.dataset.train_dataset is not None: - self.dataset.train_dataset.curriculum_config = info_dict["curriculum_config"] - - def add_save_info(self, info_dict): - info_dict["curriculum_config"] = self.dataset.train_dataset.curriculum_config - return info_dict - - def get_init_hidden(self, batch_size): - num_layers = 1 - hidden_size = self.params["model_params"]["enc_dim"] - return torch.zeros(num_layers, batch_size, hidden_size), torch.zeros(num_layers, batch_size, hidden_size) - - def apply_teacher_forcing(self, y, y_len, error_rate): - y_error = y.clone() - for b in range(len(y_len)): - for i in range(1, y_len[b]): - if np.random.rand() < error_rate and y[b][i] != self.dataset.tokens["pad"]: - y_error[b][i] = np.random.randint(0, len(self.dataset.charset)+2) - return y_error, y_len - - def train_batch(self, batch_data, metric_names): - loss_func = CrossEntropyLoss(ignore_index=self.dataset.tokens["pad"]) - - sum_loss = 0 - x = batch_data["imgs"].to(self.device) - y = batch_data["labels"].to(self.device) - reduced_size = [s[:2] for s in batch_data["imgs_reduced_shape"]] - y_len = batch_data["labels_len"] - - # add errors in teacher forcing - if "teacher_forcing_error_rate" in self.params["training_params"] and self.params["training_params"]["teacher_forcing_error_rate"] is not None: - error_rate = self.params["training_params"]["teacher_forcing_error_rate"] - simulated_y_pred, y_len = self.apply_teacher_forcing(y, y_len, error_rate) - elif "teacher_forcing_scheduler" in self.params["training_params"]: - error_rate = self.params["training_params"]["teacher_forcing_scheduler"]["min_error_rate"] + min(self.latest_step, self.params["training_params"]["teacher_forcing_scheduler"]["total_num_steps"]) * (self.params["training_params"]["teacher_forcing_scheduler"]["max_error_rate"]-self.params["training_params"]["teacher_forcing_scheduler"]["min_error_rate"]) / self.params["training_params"]["teacher_forcing_scheduler"]["total_num_steps"] - simulated_y_pred, y_len = self.apply_teacher_forcing(y, y_len, error_rate) - else: - simulated_y_pred = y - - with autocast(enabled=self.params["training_params"]["use_amp"]): - hidden_predict = None - cache = None - - raw_features = self.models["encoder"](x) - features_size = raw_features.size() - b, c, h, w = features_size - - pos_features = self.models["decoder"].features_updater.get_pos_features(raw_features) - features = torch.flatten(pos_features, start_dim=2, end_dim=3).permute(2, 0, 1) - enhanced_features = pos_features - enhanced_features = torch.flatten(enhanced_features, start_dim=2, end_dim=3).permute(2, 0, 1) - output, pred, hidden_predict, cache, weights = self.models["decoder"](features, enhanced_features, - simulated_y_pred[:, :-1], - reduced_size, - [max(y_len) for _ in range(b)], - features_size, - start=0, - hidden_predict=hidden_predict, - cache=cache, - keep_all_weights=True) - - loss_ce = loss_func(pred, y[:, 1:]) - sum_loss += loss_ce - with autocast(enabled=False): - self.backward_loss(sum_loss) - self.step_optimizers() - self.zero_optimizers() - predicted_tokens = torch.argmax(pred, dim=1).detach().cpu().numpy() - predicted_tokens = [predicted_tokens[i, :y_len[i]] for i in range(b)] - str_x = [LM_ind_to_str(self.dataset.charset, t, oov_symbol="") for t in predicted_tokens] - - values = { - "nb_samples": b, - "str_y": batch_data["raw_labels"], - "str_x": str_x, - "loss": sum_loss.item(), - "loss_ce": loss_ce.item(), - "syn_max_lines": self.dataset.train_dataset.get_syn_max_lines() if self.params["dataset_params"]["config"]["synthetic_data"] else 0, - } - - return values - - def evaluate_batch(self, batch_data, metric_names): - x = batch_data["imgs"].to(self.device) - reduced_size = [s[:2] for s in batch_data["imgs_reduced_shape"]] - - max_chars = self.params["training_params"]["max_char_prediction"] - - start_time = time.time() - with autocast(enabled=self.params["training_params"]["use_amp"]): - b = x.size(0) - reached_end = torch.zeros((b, ), dtype=torch.bool, device=self.device) - prediction_len = torch.zeros((b, ), dtype=torch.int, device=self.device) - predicted_tokens = torch.ones((b, 1), dtype=torch.long, device=self.device) * self.dataset.tokens["start"] - predicted_tokens_len = torch.ones((b, ), dtype=torch.int, device=self.device) - - whole_output = list() - confidence_scores = list() - cache = None - hidden_predict = None - if b > 1: - features_list = list() - for i in range(b): - pos = batch_data["imgs_position"] - features_list.append(self.models["encoder"](x[i:i+1, :, pos[i][0][0]:pos[i][0][1], pos[i][1][0]:pos[i][1][1]])) - max_height = max([f.size(2) for f in features_list]) - max_width = max([f.size(3) for f in features_list]) - features = torch.zeros((b, features_list[0].size(1), max_height, max_width), device=self.device, dtype=features_list[0].dtype) - for i in range(b): - features[i, :, :features_list[i].size(2), :features_list[i].size(3)] = features_list[i] - else: - features = self.models["encoder"](x) - features_size = features.size() - coverage_vector = torch.zeros((features.size(0), 1, features.size(2), features.size(3)), device=self.device) - pos_features = self.models["decoder"].features_updater.get_pos_features(features) - features = torch.flatten(pos_features, start_dim=2, end_dim=3).permute(2, 0, 1) - enhanced_features = pos_features - enhanced_features = torch.flatten(enhanced_features, start_dim=2, end_dim=3).permute(2, 0, 1) - - for i in range(0, max_chars): - output, pred, hidden_predict, cache, weights = self.models["decoder"](features, enhanced_features, predicted_tokens, reduced_size, predicted_tokens_len, features_size, start=0, hidden_predict=hidden_predict, cache=cache, num_pred=1) - whole_output.append(output) - confidence_scores.append(torch.max(torch.softmax(pred[:, :], dim=1), dim=1).values) - coverage_vector = torch.clamp(coverage_vector + weights, 0, 1) - predicted_tokens = torch.cat([predicted_tokens, torch.argmax(pred[:, :, -1], dim=1, keepdim=True)], dim=1) - reached_end = torch.logical_or(reached_end, torch.eq(predicted_tokens[:, -1], self.dataset.tokens["end"])) - predicted_tokens_len += 1 - - prediction_len[reached_end == False] = i + 1 - if torch.all(reached_end): - break - - confidence_scores = torch.cat(confidence_scores, dim=1).cpu().detach().numpy() - predicted_tokens = predicted_tokens[:, 1:] - prediction_len[torch.eq(reached_end, False)] = max_chars - 1 - predicted_tokens = [predicted_tokens[i, :prediction_len[i]] for i in range(b)] - confidence_scores = [confidence_scores[i, :prediction_len[i]].tolist() for i in range(b)] - str_x = [LM_ind_to_str(self.dataset.charset, t, oov_symbol="") for t in predicted_tokens] - - process_time = time.time() - start_time - - values = { - "nb_samples": b, - "str_y": batch_data["raw_labels"], - "str_x": str_x, - "confidence_score": confidence_scores, - "time": process_time, - } - return values diff --git a/OCR/line_OCR/ctc/main_line_ctc.py b/OCR/line_OCR/ctc/main_line_ctc.py deleted file mode 100644 index bb8fa1d6..00000000 --- a/OCR/line_OCR/ctc/main_line_ctc.py +++ /dev/null @@ -1,173 +0,0 @@ - -import os -import sys -from os.path import dirname -DOSSIER_COURRANT = dirname(os.path.abspath(__file__)) -ROOT_FOLDER = dirname(dirname(dirname(DOSSIER_COURRANT))) -sys.path.append(ROOT_FOLDER) -from OCR.line_OCR.ctc.trainer_line_ctc import TrainerLineCTC -from OCR.line_OCR.ctc.models_line_ctc import Decoder -from dan.models import FCN_Encoder -from torch.optim import Adam -from basic.transforms import line_aug_config -from basic.scheduler import exponential_dropout_scheduler, exponential_scheduler -from OCR.ocr_dataset_manager import OCRDataset, OCRDatasetManager -import torch.multiprocessing as mp -import torch -import numpy as np -import random - - -def train_and_test(rank, params): - torch.manual_seed(0) - torch.cuda.manual_seed(0) - np.random.seed(0) - random.seed(0) - torch.backends.cudnn.benchmark = False - torch.backends.cudnn.deterministic = True - - params["training_params"]["ddp_rank"] = rank - model = TrainerLineCTC(params) - model.load_model() - - # Model trains until max_time_training or max_nb_epochs is reached - model.train() - - # load weights giving best CER on valid set - model.params["training_params"]["load_epoch"] = "best" - model.load_model() - - # compute metrics on train, valid and test sets (in eval conditions) - metrics = ["cer", "wer", "time", ] - for dataset_name in params["dataset_params"]["datasets"].keys(): - for set_name in ["test", "valid", "train", ]: - model.predict("{}-{}".format(dataset_name, set_name), [(dataset_name, set_name), ], metrics, output=True) - - -def main(): - dataset_name = "READ_2016" # ["RIMES", "READ_2016"] - dataset_level = "syn_line" - params = { - "dataset_params": { - "dataset_manager": OCRDatasetManager, - "dataset_class": OCRDataset, - "datasets": { - dataset_name: "../../../Datasets/formatted/{}_{}".format(dataset_name, dataset_level), - }, - "train": { - "name": "{}-train".format(dataset_name), - "datasets": [(dataset_name, "train"), ], - }, - "valid": { - "{}-valid".format(dataset_name): [(dataset_name, "valid"), ], - }, - "config": { - "load_in_memory": True, # Load all images in CPU memory - "worker_per_gpu": 8, # Num of parallel processes per gpu for data loading - "width_divisor": 8, # Image width will be divided by 8 - "height_divisor": 32, # Image height will be divided by 32 - "padding_value": 0, # Image padding value - "padding_token": 1000, # Label padding value (None: default value is chosen) - "padding_mode": "br", # Padding at bottom and right - "charset_mode": "CTC", # add blank token - "constraints": ["CTC_line", ], # Padding for CTC requirements if necessary - "normalize": True, # Normalize with mean and variance of training dataset - "padding": { - "min_height": "max", # Pad to reach max height of training samples - "min_width": "max", # Pad to reach max width of training samples - "min_pad": None, - "max_pad": None, - "mode": "br", # Padding at bottom and right - "train_only": False, # Add padding at training time and evaluation time - }, - "preprocessings": [ - { - "type": "to_RGB", - # if grayscale image, produce RGB one (3 channels with same value) otherwise do nothing - }, - ], - # Augmentation techniques to use at training time - "augmentation": line_aug_config(0.9, 0.1), - # - "synthetic_data": { - "mode": "line_hw_to_printed", - "init_proba": 1, - "end_proba": 1, - "num_steps_proba": 1e5, - "proba_scheduler_function": exponential_scheduler, - "config": { - "background_color_default": (255, 255, 255), - "background_color_eps": 15, - "text_color_default": (0, 0, 0), - "text_color_eps": 15, - "font_size_min": 30, - "font_size_max": 50, - "color_mode": "RGB", - "padding_left_ratio_min": 0.02, - "padding_left_ratio_max": 0.1, - "padding_right_ratio_min": 0.02, - "padding_right_ratio_max": 0.1, - "padding_top_ratio_min": 0.02, - "padding_top_ratio_max": 0.2, - "padding_bottom_ratio_min": 0.02, - "padding_bottom_ratio_max": 0.2, - }, - }, - } - }, - - "model_params": { - # Model classes to use for each module - "models": { - "encoder": FCN_Encoder, - "decoder": Decoder, - }, - "transfer_learning": None, - "input_channels": 3, # 1 for grayscale images, 3 for RGB ones (or grayscale as RGB) - "enc_size": 256, - "dropout_scheduler": { - "function": exponential_dropout_scheduler, - "T": 5e4, - }, - "dropout": 0.5, - }, - - "training_params": { - "output_folder": "FCN_read_2016_line_syn", # folder names for logs and weigths - "max_nb_epochs": 10000, # max number of epochs for the training - "max_training_time": 3600 * 24 * 1.9, # max training time limit (in seconds) - "load_epoch": "last", # ["best", "last"], to load weights from best epoch or last trained epoch - "interval_save_weights": None, # None: keep best and last only - "use_ddp": False, # Use DistributedDataParallel - "use_amp": True, # Enable automatic mix-precision - "nb_gpu": torch.cuda.device_count(), - "batch_size": 16, # mini-batch size per GPU - "optimizers": { - "all": { - "class": Adam, - "args": { - "lr": 0.0001, - "amsgrad": False, - } - } - }, - "lr_schedulers": None, # Learning rate schedulers - "eval_on_valid": True, # Whether to eval and logs metrics on validation set during training or not - "eval_on_valid_interval": 2, # Interval (in epochs) to evaluate during training - "focus_metric": "cer", # Metrics to focus on to determine best epoch - "expected_metric_value": "low", # ["high", "low"] What is best for the focus metric value - "set_name_focus_metric": "{}-valid".format(dataset_name), # Which dataset to focus on to select best weights - "train_metrics": ["loss_ctc", "cer", "wer"], # Metrics name for training - "eval_metrics": ["loss_ctc", "cer", "wer"], # Metrics name for evaluation on validation set during training - "force_cpu": False, # True for debug purposes to run on cpu only - }, - } - - if params["training_params"]["use_ddp"] and not params["training_params"]["force_cpu"]: - mp.spawn(train_and_test, args=(params,), nprocs=params["training_params"]["nb_gpu"]) - else: - train_and_test(0, params) - - -if __name__ == "__main__": - main() diff --git a/OCR/line_OCR/ctc/main_syn_line.py b/OCR/line_OCR/ctc/main_syn_line.py deleted file mode 100644 index c16f9de5..00000000 --- a/OCR/line_OCR/ctc/main_syn_line.py +++ /dev/null @@ -1,148 +0,0 @@ - -import os -import sys -from os.path import dirname -DOSSIER_COURRANT = dirname(os.path.abspath(__file__)) -ROOT_FOLDER = dirname(dirname(dirname(DOSSIER_COURRANT))) -sys.path.append(ROOT_FOLDER) -from OCR.line_OCR.ctc.trainer_line_ctc import TrainerLineCTC -from OCR.line_OCR.ctc.models_line_ctc import Decoder -from dan.models import FCN_Encoder -from torch.optim import Adam -from basic.transforms import line_aug_config -from basic.scheduler import exponential_dropout_scheduler, exponential_scheduler -from OCR.ocr_dataset_manager import OCRDataset, OCRDatasetManager -import torch.multiprocessing as mp -import torch -import numpy as np -import random - - -def train_and_test(rank, params): - torch.manual_seed(0) - torch.cuda.manual_seed(0) - np.random.seed(0) - random.seed(0) - torch.backends.cudnn.benchmark = False - torch.backends.cudnn.deterministic = True - - params["training_params"]["ddp_rank"] = rank - model = TrainerLineCTC(params) - - model.generate_syn_line_dataset("READ_2016_syn_line") # ["RIMES_syn_line", "READ_2016_syn_line"] - - -def main(): - dataset_name = "READ_2016" # ["RIMES", "READ_2016"] - dataset_level = "page" - params = { - "dataset_params": { - "dataset_manager": OCRDatasetManager, - "dataset_class": OCRDataset, - "datasets": { - dataset_name: "../../../Datasets/formatted/{}_{}".format(dataset_name, dataset_level), - }, - "train": { - "name": "{}-train".format(dataset_name), - "datasets": [(dataset_name, "train"), ], - }, - "valid": { - "{}-valid".format(dataset_name): [(dataset_name, "valid"), ], - }, - "config": { - "load_in_memory": False, # Load all images in CPU memory - "worker_per_gpu": 4, - "width_divisor": 8, # Image width will be divided by 8 - "height_divisor": 32, # Image height will be divided by 32 - "padding_value": 0, # Image padding value - "padding_token": 1000, # Label padding value (None: default value is chosen) - "padding_mode": "br", # Padding at bottom and right - "charset_mode": "CTC", # add blank token - "constraints": [], # Padding for CTC requirements if necessary - "normalize": True, # Normalize with mean and variance of training dataset - "preprocessings": [], - # Augmentation techniques to use at training time - "augmentation": line_aug_config(0.9, 0.1), - # - "synthetic_data": { - "mode": "line_hw_to_printed", - "init_proba": 1, - "end_proba": 1, - "num_steps_proba": 1e5, - "proba_scheduler_function": exponential_scheduler, - "config": { - "background_color_default": (255, 255, 255), - "background_color_eps": 15, - "text_color_default": (0, 0, 0), - "text_color_eps": 15, - "font_size_min": 30, - "font_size_max": 50, - "color_mode": "RGB", - "padding_left_ratio_min": 0.02, - "padding_left_ratio_max": 0.1, - "padding_right_ratio_min": 0.02, - "padding_right_ratio_max": 0.1, - "padding_top_ratio_min": 0.02, - "padding_top_ratio_max": 0.2, - "padding_bottom_ratio_min": 0.02, - "padding_bottom_ratio_max": 0.2, - }, - }, - } - }, - - "model_params": { - # Model classes to use for each module - "models": { - "encoder": FCN_Encoder, - "decoder": Decoder, - }, - "transfer_learning": None, - "input_channels": 3, # 1 for grayscale images, 3 for RGB ones (or grayscale as RGB) - "enc_size": 256, - "dropout_scheduler": { - "function": exponential_dropout_scheduler, - "T": 5e4, - }, - "dropout": 0.5, - }, - - "training_params": { - "output_folder": "FCN_Encoder_read_syn_line_all_pad_max_cursive", # folder names for logs and weigths - "max_nb_epochs": 10000, # max number of epochs for the training - "max_training_time": 3600 * 24 * 1.9, # max training time limit (in seconds) - "load_epoch": "last", # ["best", "last"], to load weights from best epoch or last trained epoch - "interval_save_weights": None, # None: keep best and last only - "use_ddp": False, # Use DistributedDataParallel - "use_amp": True, # Enable automatic mix-precision - "nb_gpu": torch.cuda.device_count(), - "batch_size": 1, # mini-batch size per GPU - "optimizers": { - "all": { - "class": Adam, - "args": { - "lr": 0.0001, - "amsgrad": False, - } - } - }, - "lr_schedulers": None, - "eval_on_valid": True, # Whether to eval and logs metrics on validation set during training or not - "eval_on_valid_interval": 2, # Interval (in epochs) to evaluate during training - "focus_metric": "cer", # Metrics to focus on to determine best epoch - "expected_metric_value": "low", # ["high", "low"] What is best for the focus metric value - "set_name_focus_metric": "{}-valid".format(dataset_name), - "train_metrics": ["loss_ctc", "cer", "wer"], # Metrics name for training - "eval_metrics": ["loss_ctc", "cer", "wer"], # Metrics name for evaluation on validation set during training - "force_cpu": False, # True for debug purposes to run on cpu only - }, - } - - if params["training_params"]["use_ddp"] and not params["training_params"]["force_cpu"]: - mp.spawn(train_and_test, args=(params,), nprocs=params["training_params"]["nb_gpu"]) - else: - train_and_test(0, params) - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/OCR/line_OCR/ctc/models_line_ctc.py b/OCR/line_OCR/ctc/models_line_ctc.py deleted file mode 100644 index c13c072e..00000000 --- a/OCR/line_OCR/ctc/models_line_ctc.py +++ /dev/null @@ -1,19 +0,0 @@ - -from torch.nn.functional import log_softmax -from torch.nn import AdaptiveMaxPool2d, Conv1d -from torch.nn import Module - - -class Decoder(Module): - def __init__(self, params): - super(Decoder, self).__init__() - - self.vocab_size = params["vocab_size"] - - self.ada_pool = AdaptiveMaxPool2d((1, None)) - self.end_conv = Conv1d(in_channels=params["enc_size"], out_channels=self.vocab_size+1, kernel_size=1) - - def forward(self, x): - x = self.ada_pool(x).squeeze(2) - x = self.end_conv(x) - return log_softmax(x, dim=1) diff --git a/OCR/line_OCR/ctc/trainer_line_ctc.py b/OCR/line_OCR/ctc/trainer_line_ctc.py deleted file mode 100644 index eba12d81..00000000 --- a/OCR/line_OCR/ctc/trainer_line_ctc.py +++ /dev/null @@ -1,96 +0,0 @@ - -from basic.metric_manager import MetricManager -from OCR.ocr_manager import OCRManager -from dan.ocr_utils import LM_ind_to_str -import torch -from torch.cuda.amp import autocast -from torch.nn import CTCLoss -import re -import time - - -class TrainerLineCTC(OCRManager): - - def __init__(self, params): - super(TrainerLineCTC, self).__init__(params) - - def train_batch(self, batch_data, metric_names): - """ - Forward and backward pass for training - """ - x = batch_data["imgs"].to(self.device) - y = batch_data["labels"].to(self.device) - x_reduced_len = [s[1] for s in batch_data["imgs_reduced_shape"]] - y_len = batch_data["labels_len"] - - loss_ctc = CTCLoss(blank=self.dataset.tokens["blank"]) - self.zero_optimizers() - - with autocast(enabled=self.params["training_params"]["use_amp"]): - x = self.models["encoder"](x) - global_pred = self.models["decoder"](x) - - loss = loss_ctc(global_pred.permute(2, 0, 1), y, x_reduced_len, y_len) - - self.backward_loss(loss) - - self.step_optimizers() - pred = torch.argmax(global_pred, dim=1).cpu().numpy() - - values = { - "nb_samples": len(batch_data["raw_labels"]), - "loss_ctc": loss.item(), - "str_x": self.pred_to_str(pred, x_reduced_len), - "str_y": batch_data["raw_labels"] - } - - return values - - def evaluate_batch(self, batch_data, metric_names): - """ - Forward pass only for validation and test - """ - x = batch_data["imgs"].to(self.device) - y = batch_data["labels"].to(self.device) - x_reduced_len = [s[1] for s in batch_data["imgs_reduced_shape"]] - y_len = batch_data["labels_len"] - - loss_ctc = CTCLoss(blank=self.dataset.tokens["blank"]) - - start_time = time.time() - with autocast(enabled=self.params["training_params"]["use_amp"]): - x = self.models["encoder"](x) - global_pred = self.models["decoder"](x) - - loss = loss_ctc(global_pred.permute(2, 0, 1), y, x_reduced_len, y_len) - pred = torch.argmax(global_pred, dim=1).cpu().numpy() - str_x = self.pred_to_str(pred, x_reduced_len) - - process_time =time.time() - start_time - - values = { - "nb_samples": len(batch_data["raw_labels"]), - "loss_ctc": loss.item(), - "str_x": str_x, - "str_y": batch_data["raw_labels"], - "time": process_time - } - return values - - def ctc_remove_successives_identical_ind(self, ind): - res = [] - for i in ind: - if res and res[-1] == i: - continue - res.append(i) - return res - - def pred_to_str(self, pred, pred_len): - """ - convert prediction tokens to string - """ - ind_x = [pred[i][:pred_len[i]] for i in range(pred.shape[0])] - ind_x = [self.ctc_remove_successives_identical_ind(t) for t in ind_x] - str_x = [LM_ind_to_str(self.dataset.charset, t, oov_symbol="") for t in ind_x] - str_x = [re.sub("( )+", ' ', t).strip(" ") for t in str_x] - return str_x diff --git a/OCR/ocr_dataset_manager.py b/OCR/ocr_dataset_manager.py deleted file mode 100644 index ed7c087c..00000000 --- a/OCR/ocr_dataset_manager.py +++ /dev/null @@ -1,1036 +0,0 @@ -# Copyright Université de Rouen Normandie (1), INSA Rouen (2), -# tutelles du laboratoire LITIS (1 et 2) -# contributors : -# - Denis Coquenet -# -# -# This software is a computer program written in Python whose purpose is to -# provide public implementation of deep learning works, in pytorch. -# -# This software is governed by the CeCILL-C license under French law and -# abiding by the rules of distribution of free software. You can use, -# modify and/ or redistribute the software under the terms of the CeCILL-C -# license as circulated by CEA, CNRS and INRIA at the following URL -# "http://www.cecill.info". -# -# As a counterpart to the access to the source code and rights to copy, -# modify and redistribute granted by the license, users are provided only -# with a limited warranty and the software's author, the holder of the -# economic rights, and the successive licensors have only limited -# liability. -# -# In this respect, the user's attention is drawn to the risks associated -# with loading, using, modifying and/or developing or reproducing the -# software by the user in light of its specific status of free software, -# that may mean that it is complicated to manipulate, and that also -# therefore means that it is reserved for developers and experienced -# professionals having in-depth computer knowledge. Users are therefore -# encouraged to load and test the software's suitability as regards their -# requirements in conditions enabling the security of their systems and/or -# data to be ensured and, more generally, to use and operate it in the -# same conditions as regards security. -# -# The fact that you are presently reading this means that you have had -# knowledge of the CeCILL-C license and that you accept its terms. -import numpy.random - -from basic.generic_dataset_manager import DatasetManager, GenericDataset -from basic.utils import pad_images, pad_image_width_right, resize_max, pad_image_width_random, pad_sequences_1D, pad_image_height_random, pad_image_width_left, pad_image -from basic.utils import randint, rand, rand_uniform -from basic.generic_dataset_manager import apply_preprocessing -from Datasets.dataset_formatters.read2016_formatter import SEM_MATCHING_TOKENS as READ_MATCHING_TOKENS -from Datasets.dataset_formatters.rimes_formatter import order_text_regions as order_text_regions_rimes -from Datasets.dataset_formatters.rimes_formatter import SEM_MATCHING_TOKENS as RIMES_MATCHING_TOKENS -from Datasets.dataset_formatters.rimes_formatter import SEM_MATCHING_TOKENS_STR as RIMES_MATCHING_TOKENS_STR -from dan.ocr_utils import LM_str_to_ind -import random -import cv2 -import os -import copy -import pickle -import numpy as np -import torch -import matplotlib -from PIL import Image, ImageDraw, ImageFont -from basic.transforms import RandomRotation, apply_transform, Tightening -from fontTools.ttLib import TTFont -from fontTools.unicode import Unicode - - -class OCRDatasetManager(DatasetManager): - """ - Specific class to handle OCR/HTR tasks - """ - - def __init__(self, params): - super(OCRDatasetManager, self).__init__(params) - - self.charset = params["charset"] if "charset" in params else self.get_merged_charsets() - - if "synthetic_data" in self.params["config"] and self.params["config"]["synthetic_data"] and "config" in self.params["config"]["synthetic_data"]: - self.char_only_set = self.charset.copy() - for token_dict in [RIMES_MATCHING_TOKENS, READ_MATCHING_TOKENS]: - for key in token_dict: - if key in self.char_only_set: - self.char_only_set.remove(key) - if token_dict[key] in self.char_only_set: - self.char_only_set.remove(token_dict[key]) - for token in ["\n", ]: - if token in self.char_only_set: - self.char_only_set.remove(token) - self.params["config"]["synthetic_data"]["config"]["valid_fonts"] = get_valid_fonts(self.char_only_set) - - if "new_tokens" in params: - self.charset = sorted(list(set(self.charset).union(set(params["new_tokens"])))) - - self.tokens = { - "pad": params["config"]["padding_token"], - } - if self.params["config"]["charset_mode"].lower() == "ctc": - self.tokens["blank"] = len(self.charset) - self.tokens["pad"] = self.tokens["pad"] if self.tokens["pad"] else len(self.charset) + 1 - self.params["config"]["padding_token"] = self.tokens["pad"] - elif self.params["config"]["charset_mode"] == "seq2seq": - self.tokens["end"] = len(self.charset) - self.tokens["start"] = len(self.charset) + 1 - self.tokens["pad"] = self.tokens["pad"] if self.tokens["pad"] else len(self.charset) + 2 - self.params["config"]["padding_token"] = self.tokens["pad"] - - def get_merged_charsets(self): - """ - Merge the charset of the different datasets used - """ - datasets = self.params["datasets"] - charset = set() - for key in datasets.keys(): - with open(os.path.join(datasets[key], "labels.pkl"), "rb") as f: - info = pickle.load(f) - charset = charset.union(set(info["charset"])) - if "\n" in charset and "remove_linebreaks" in self.params["config"]["constraints"]: - charset.remove("\n") - if "" in charset: - charset.remove("") - return sorted(list(charset)) - - def apply_specific_treatment_after_dataset_loading(self, dataset): - dataset.charset = self.charset - dataset.tokens = self.tokens - dataset.convert_labels() - if "READ_2016" in dataset.name and "augmentation" in dataset.params["config"] and dataset.params["config"]["augmentation"]: - dataset.params["config"]["augmentation"]["fill_value"] = tuple([int(i) for i in dataset.mean]) - if "padding" in dataset.params["config"] and dataset.params["config"]["padding"]["min_height"] == "max": - dataset.params["config"]["padding"]["min_height"] = max([s["img"].shape[0] for s in self.train_dataset.samples]) - if "padding" in dataset.params["config"] and dataset.params["config"]["padding"]["min_width"] == "max": - dataset.params["config"]["padding"]["min_width"] = max([s["img"].shape[1] for s in self.train_dataset.samples]) - - -class OCRDataset(GenericDataset): - """ - Specific class to handle OCR/HTR datasets - """ - - def __init__(self, params, set_name, custom_name, paths_and_sets): - super(OCRDataset, self).__init__(params, set_name, custom_name, paths_and_sets) - self.charset = None - self.tokens = None - self.reduce_dims_factor = np.array([params["config"]["height_divisor"], params["config"]["width_divisor"], 1]) - self.collate_function = OCRCollateFunction - self.synthetic_id = 0 - - def __getitem__(self, idx): - sample = copy.deepcopy(self.samples[idx]) - - if not self.load_in_memory: - sample["img"] = self.get_sample_img(idx) - sample = apply_preprocessing(sample, self.params["config"]["preprocessings"]) - - if "synthetic_data" in self.params["config"] and self.params["config"]["synthetic_data"] and self.set_name == "train": - sample = self.generate_synthetic_data(sample) - - # Data augmentation - sample["img"], sample["applied_da"] = self.apply_data_augmentation(sample["img"]) - - if "max_size" in self.params["config"] and self.params["config"]["max_size"]: - max_ratio = max(sample["img"].shape[0] / self.params["config"]["max_size"]["max_height"], sample["img"].shape[1] / self.params["config"]["max_size"]["max_width"]) - if max_ratio > 1: - new_h, new_w = int(np.ceil(sample["img"].shape[0] / max_ratio)), int(np.ceil(sample["img"].shape[1] / max_ratio)) - sample["img"] = cv2.resize(sample["img"], (new_w, new_h)) - - # Normalization if requested - if "normalize" in self.params["config"] and self.params["config"]["normalize"]: - sample["img"] = (sample["img"] - self.mean) / self.std - - sample["img_shape"] = sample["img"].shape - sample["img_reduced_shape"] = np.ceil(sample["img_shape"] / self.reduce_dims_factor).astype(int) - - # Padding to handle CTC requirements - if self.set_name == "train": - max_label_len = 0 - height = 1 - ctc_padding = False - if "CTC_line" in self.params["config"]["constraints"]: - max_label_len = sample["label_len"] - ctc_padding = True - if "CTC_va" in self.params["config"]["constraints"]: - max_label_len = max(sample["line_label_len"]) - ctc_padding = True - if "CTC_pg" in self.params["config"]["constraints"]: - max_label_len = sample["label_len"] - height = max(sample["img_reduced_shape"][0], 1) - ctc_padding = True - if ctc_padding and 2 * max_label_len + 1 > sample["img_reduced_shape"][1]*height: - sample["img"] = pad_image_width_right(sample["img"], int(np.ceil((2 * max_label_len + 1) / height) * self.reduce_dims_factor[1]), self.padding_value) - sample["img_shape"] = sample["img"].shape - sample["img_reduced_shape"] = np.ceil(sample["img_shape"] / self.reduce_dims_factor).astype(int) - sample["img_reduced_shape"] = [max(1, t) for t in sample["img_reduced_shape"]] - - sample["img_position"] = [[0, sample["img_shape"][0]], [0, sample["img_shape"][1]]] - # Padding constraints to handle model needs - if "padding" in self.params["config"] and self.params["config"]["padding"]: - if self.set_name == "train" or not self.params["config"]["padding"]["train_only"]: - min_pad = self.params["config"]["padding"]["min_pad"] - max_pad = self.params["config"]["padding"]["max_pad"] - pad_width = randint(min_pad, max_pad) if min_pad is not None and max_pad is not None else None - pad_height = randint(min_pad, max_pad) if min_pad is not None and max_pad is not None else None - - sample["img"], sample["img_position"] = pad_image(sample["img"], padding_value=self.padding_value, - new_width=self.params["config"]["padding"]["min_width"], - new_height=self.params["config"]["padding"]["min_height"], - pad_width=pad_width, - pad_height=pad_height, - padding_mode=self.params["config"]["padding"]["mode"], - return_position=True) - sample["img_reduced_position"] = [np.ceil(p / factor).astype(int) for p, factor in zip(sample["img_position"], self.reduce_dims_factor[:2])] - return sample - - - def get_charset(self): - charset = set() - for i in range(len(self.samples)): - charset = charset.union(set(self.samples[i]["label"])) - return charset - - def convert_labels(self): - """ - Label str to token at character level - """ - for i in range(len(self.samples)): - self.samples[i] = self.convert_sample_labels(self.samples[i]) - - def convert_sample_labels(self, sample): - label = sample["label"] - line_labels = label.split("\n") - if "remove_linebreaks" in self.params["config"]["constraints"]: - full_label = label.replace("\n", " ").replace(" ", " ") - word_labels = full_label.split(" ") - else: - full_label = label - word_labels = label.replace("\n", " ").replace(" ", " ").split(" ") - - sample["label"] = full_label - sample["token_label"] = LM_str_to_ind(self.charset, full_label) - if "add_eot" in self.params["config"]["constraints"]: - sample["token_label"].append(self.tokens["end"]) - sample["label_len"] = len(sample["token_label"]) - if "add_sot" in self.params["config"]["constraints"]: - sample["token_label"].insert(0, self.tokens["start"]) - - sample["line_label"] = line_labels - sample["token_line_label"] = [LM_str_to_ind(self.charset, l) for l in line_labels] - sample["line_label_len"] = [len(l) for l in line_labels] - sample["nb_lines"] = len(line_labels) - - sample["word_label"] = word_labels - sample["token_word_label"] = [LM_str_to_ind(self.charset, l) for l in word_labels] - sample["word_label_len"] = [len(l) for l in word_labels] - sample["nb_words"] = len(word_labels) - return sample - - def generate_synthetic_data(self, sample): - config = self.params["config"]["synthetic_data"] - - if not (config["init_proba"] == config["end_proba"] == 1): - nb_samples = self.training_info["step"] * self.params["batch_size"] - if config["start_scheduler_at_max_line"]: - max_step = config["num_steps_proba"] - current_step = max(0, min(nb_samples-config["curr_step"]*(config["max_nb_lines"]-config["min_nb_lines"]), max_step)) - proba = config["init_proba"] if self.get_syn_max_lines() < config["max_nb_lines"] else \ - config["proba_scheduler_function"](config["init_proba"], config["end_proba"], current_step, max_step) - else: - proba = config["proba_scheduler_function"](config["init_proba"], config["end_proba"], - min(nb_samples, config["num_steps_proba"]), - config["num_steps_proba"]) - if rand() > proba: - return sample - - if "mode" in config and config["mode"] == "line_hw_to_printed": - sample["img"] = self.generate_typed_text_line_image(sample["label"]) - return sample - - return self.generate_synthetic_page_sample() - - def get_syn_max_lines(self): - config = self.params["config"]["synthetic_data"] - if config["curriculum"]: - nb_samples = self.training_info["step"]*self.params["batch_size"] - max_nb_lines = min(config["max_nb_lines"], (nb_samples-config["curr_start"]) // config["curr_step"]+1) - return max(config["min_nb_lines"], max_nb_lines) - return config["max_nb_lines"] - - def generate_synthetic_page_sample(self): - config = self.params["config"]["synthetic_data"] - max_nb_lines_per_page = self.get_syn_max_lines() - crop = config["crop_curriculum"] and max_nb_lines_per_page < config["max_nb_lines"] - sample = { - "name": "synthetic_data_{}".format(self.synthetic_id), - "path": None - } - self.synthetic_id += 1 - nb_pages = 2 if "double" in config["dataset_level"] else 1 - background_sample = copy.deepcopy(self.samples[randint(0, len(self))]) - pages = list() - backgrounds = list() - - h, w, c = background_sample["img"].shape - page_width = w // 2 if nb_pages == 2 else w - for i in range(nb_pages): - nb_lines_per_page = randint(config["min_nb_lines"], max_nb_lines_per_page+1) - background = np.ones((h, page_width, c), dtype=background_sample["img"].dtype) * 255 - if i == 0 and nb_pages == 2: - background[:, -2:, :] = 0 - backgrounds.append(background) - if "READ_2016" in self.params["datasets"].keys(): - side = background_sample["pages_label"][i]["side"] - coords = { - "left": int(0.15 * page_width) if side == "left" else int(0.05 * page_width), - "right": int(0.95 * page_width) if side == "left" else int(0.85 * page_width), - "top": int(0.05 * h), - "bottom": int(0.85 * h), - } - pages.append(self.generate_synthetic_read2016_page(background, coords, side=side, crop=crop, - nb_lines=nb_lines_per_page)) - elif "RIMES" in self.params["datasets"].keys(): - pages.append(self.generate_synthetic_rimes_page(background, nb_lines=nb_lines_per_page, crop=crop)) - else: - raise NotImplementedError - - if nb_pages == 1: - sample["img"] = pages[0][0] - sample["label_raw"] = pages[0][1]["raw"] - sample["label_begin"] = pages[0][1]["begin"] - sample["label_sem"] = pages[0][1]["sem"] - sample["label"] = pages[0][1] - sample["nb_cols"] = pages[0][2] - else: - if pages[0][0].shape[0] != pages[1][0].shape[0]: - max_height = max(pages[0][0].shape[0], pages[1][0].shape[0]) - backgrounds[0] = backgrounds[0][:max_height] - backgrounds[0][:pages[0][0].shape[0]] = pages[0][0] - backgrounds[1] = backgrounds[1][:max_height] - backgrounds[1][:pages[1][0].shape[0]] = pages[1][0] - pages[0][0] = backgrounds[0] - pages[1][0] = backgrounds[1] - sample["label_raw"] = pages[0][1]["raw"] + "\n" + pages[1][1]["raw"] - sample["label_begin"] = pages[0][1]["begin"] + pages[1][1]["begin"] - sample["label_sem"] = pages[0][1]["sem"] + pages[1][1]["sem"] - sample["img"] = np.concatenate([pages[0][0], pages[1][0]], axis=1) - sample["nb_cols"] = pages[0][2] + pages[1][2] - sample["label"] = sample["label_raw"] - if "â“‘" in self.charset: - sample["label"] = sample["label_begin"] - if "â’·" in self.charset: - sample["label"] = sample["label_sem"] - sample["unchanged_label"] = sample["label"] - sample = self.convert_sample_labels(sample) - return sample - - def generate_synthetic_rimes_page(self, background, nb_lines=20, crop=False): - max_nb_lines = self.get_syn_max_lines() - def larger_lines(label): - lines = label.split("\n") - new_lines = list() - while len(lines) > 0: - if len(lines) == 1: - new_lines.append(lines[0]) - del lines[0] - elif len(lines[0]) + len(lines[1]) < max_len: - new_lines.append("{} {}".format(lines[0], lines[1])) - del lines[1] - del lines[0] - else: - new_lines.append(lines[0]) - del lines[0] - return "\n".join(new_lines) - config = self.params["config"]["synthetic_data"] - max_len = 100 - matching_tokens = RIMES_MATCHING_TOKENS - matching_tokens_str = RIMES_MATCHING_TOKENS_STR - h, w, c = background.shape - num_lines = list() - for s in self.samples: - l = sum([len(p["label"].split("\n")) for p in s["paragraphs_label"]]) - num_lines.append(l) - stats = self.stat_sem_rimes() - ordered_modes = ['Corps de texte', 'PS/PJ', 'Ouverture', 'Date, Lieu', 'Coordonnées Expéditeur', 'Coordonnées Destinataire', ] - object_ref = ['Objet', 'Reference'] - random.shuffle(object_ref) - ordered_modes = ordered_modes[:3] + object_ref + ordered_modes[3:] - kept_modes = list() - for mode in ordered_modes: - if rand_uniform(0, 1) < stats[mode]: - kept_modes.append(mode) - - paragraphs = dict() - for mode in kept_modes: - paragraphs[mode] = self.get_paragraph_rimes(mode=mode, mix=True) - # proba to merge multiple body textual contents - if mode == "Corps de texte" and rand_uniform(0, 1) < 0.2: - nb_lines = min(nb_lines+10, max_nb_lines) if max_nb_lines < 30 else nb_lines+10 - concat_line = randint(0, 2) == 0 - if concat_line: - paragraphs[mode]["label"] = larger_lines(paragraphs[mode]["label"]) - while (len(paragraphs[mode]["label"].split("\n")) <= 30): - body2 = self.get_paragraph_rimes(mode=mode, mix=True) - paragraphs[mode]["label"] += "\n" + larger_lines(body2["label"]) if concat_line else body2["label"] - paragraphs[mode]["label"] = "\n".join(paragraphs[mode]["label"].split("\n")[:40]) - # proba to set whole text region to uppercase - if rand_uniform(0, 1) < 0.1 and "Corps de texte" in paragraphs: - paragraphs["Corps de texte"]["label"] = paragraphs["Corps de texte"]["label"].upper().replace("È", "E").replace("Ë", "E").replace("Û", "U").replace("Ù", "U").replace("ÃŽ", "I").replace("Ã", "I").replace("Â", "A").replace("Å’", "OE") - # proba to duplicate a line and place it randomly elsewhere, in a body region - if rand_uniform(0, 1) < 0.1 and "Corps de texte" in paragraphs: - labels = paragraphs["Corps de texte"]["label"].split("\n") - duplicated_label = labels[randint(0, len(labels))] - labels.insert(randint(0, len(labels)), duplicated_label) - paragraphs["Corps de texte"]["label"] = "\n".join(labels) - # proba to merge successive lines to have longer text lines in body - if rand_uniform(0, 1) < 0.1 and "Corps de texte" in paragraphs: - paragraphs["Corps de texte"]["label"] = larger_lines(paragraphs["Corps de texte"]["label"]) - for mode in paragraphs.keys(): - line_labels = paragraphs[mode]["label"].split("\n") - if len(line_labels) == 0: - print("ERROR") - paragraphs[mode]["lines"] = list() - for line_label in line_labels: - if len(line_label) > 100: - for chunk in [line_label[i:i + max_len] for i in range(0, len(line_label), max_len)]: - paragraphs[mode]["lines"].append(chunk) - else: - paragraphs[mode]["lines"].append(line_label) - page_labels = { - "raw": "", - "begin": "", - "sem": "" - } - top_limit = 0 - bottom_limit = h - max_bottom_crop = 0 - min_top_crop = h - has_opening = has_object = has_reference = False - top_opening = top_object = top_reference = 0 - right_opening = right_object = right_reference = 0 - has_reference = False - date_on_top = False - date_alone = False - for mode in kept_modes: - pg = paragraphs[mode] - if len(pg["lines"]) > nb_lines: - pg["lines"] = pg["lines"][:nb_lines] - nb_lines -= len(pg["lines"]) - pg_image = self.generate_typed_text_paragraph_image(pg["lines"], padding_value=255, max_pad_left_ratio=1, same_font_size=True) - # proba to remove some interline spacing - if rand_uniform(0, 1) < 0.1: - pg_image = apply_transform(pg_image, Tightening(color=255, remove_proba=0.75)) - # proba to rotate text region - if rand_uniform(0, 1) < 0.1: - pg_image = apply_transform(pg_image, RandomRotation(degrees=10, expand=True, fill=255)) - pg["added"] = True - if mode == 'Corps de texte': - pg_image = resize_max(pg_image, max_height=int(0.5*h), max_width=w) - img_h, img_w = pg_image.shape[:2] - min_top = int(0.4*h) - max_top = int(0.9*h - img_h) - top = randint(min_top, max_top + 1) - left = randint(0, int(w - img_w) + 1) - bottom_body = top + img_h - top_body = top - bottom_limit = min(top, bottom_limit) - elif mode == "PS/PJ": - pg_image = resize_max(pg_image, max_height=int(0.03*h), max_width=int(0.9*w)) - img_h, img_w = pg_image.shape[:2] - min_top = bottom_body - max_top = int(min(h - img_h, bottom_body + 0.15*h)) - top = randint(min_top, max_top + 1) - left = randint(0, int(w - img_w) + 1) - bottom_limit = min(top, bottom_limit) - elif mode == "Ouverture": - pg_image = resize_max(pg_image, max_height=int(0.03 * h), max_width=int(0.9 * w)) - img_h, img_w = pg_image.shape[:2] - min_top = int(top_body - 0.05 * h) - max_top = top_body - img_h - top = randint(min_top, max_top + 1) - left = randint(0, min(int(0.15*w), int(w - img_w)) + 1) - has_opening = True - top_opening = top - right_opening = left + img_w - bottom_limit = min(top, bottom_limit) - elif mode == "Objet": - pg_image = resize_max(pg_image, max_height=int(0.03 * h), max_width=int(0.9 * w)) - img_h, img_w = pg_image.shape[:2] - max_top = top_reference - img_h if has_reference else top_opening - img_h if has_opening else top_body - img_h - min_top = int(max_top - 0.05 * h) - top = randint(min_top, max_top + 1) - left = randint(0, min(int(0.15*w), int(w - img_w)) + 1) - has_object = True - top_object = top - right_object = left + img_w - bottom_limit = min(top, bottom_limit) - elif mode == "Reference": - pg_image = resize_max(pg_image, max_height=int(0.03 * h), max_width=int(0.9 * w)) - img_h, img_w = pg_image.shape[:2] - max_top = top_object - img_h if has_object else top_opening - img_h if has_opening else top_body - img_h - min_top = int(max_top - 0.05 * h) - top = randint(min_top, max_top + 1) - left = randint(0, min(int(0.15*w), int(w - img_w)) + 1) - has_reference = True - top_reference = top - right_reference = left + img_w - bottom_limit = min(top, bottom_limit) - elif mode == 'Date, Lieu': - pg_image = resize_max(pg_image, max_height=int(0.03 * h), max_width=int(0.45 * w)) - img_h, img_w = pg_image.shape[:2] - if h - max_bottom_crop - 10 > img_h and randint(0, 10) == 0: - top = randint(max_bottom_crop, h) - left = randint(0, w-img_w) - else: - min_top = top_body - img_h - max_top = top_body - img_h - min_left = 0 - # Check if there is anough place to put the date at the right side of opening, reference or object - if object_ref == ['Objet', 'Reference']: - have = [has_opening, has_object, has_reference] - rights = [right_opening, right_object, right_reference] - tops = [top_opening, top_object, top_reference] - else: - have = [has_opening, has_reference, has_object] - rights = [right_opening, right_reference, right_object] - tops = [top_opening, top_reference, top_object] - for right_r, top_r, has_r in zip(rights, tops, have): - if has_r: - if right_r + img_w >= 0.95*w: - max_top = min(top_r - img_h, max_top) - min_left = 0 - else: - min_left = max(min_left, right_r+0.05*w) - min_top = top_r - img_h if min_top == top_body - img_h else min_top - if min_left != 0 and randint(0, 5) == 0: - min_left = 0 - for right_r, top_r, has_r in zip(rights, tops, have): - if has_r: - max_top = min(max_top, top_r-img_h) - - max_left = max(min_left, w - img_w) - - # No placement found at right-side of opening, reference or object - if min_left == 0: - # place on the top - if randint(0, 2) == 0: - min_top = 0 - max_top = int(min(0.05*h, max_top)) - date_on_top = True - # place just before object/reference/opening - else: - min_top = int(max(0, max_top - 0.05*h)) - date_alone = True - max_left = min(max_left, int(0.1*w)) - - min_top = min(min_top, max_top) - top = randint(min_top, max_top + 1) - left = randint(int(min_left), max_left + 1) - if date_on_top: - top_limit = max(top_limit, top + img_h) - else: - bottom_limit = min(top, bottom_limit) - date_right = left + img_w - date_bottom = top + img_h - elif mode == "Coordonnées Expéditeur": - max_height = min(0.25*h, bottom_limit-top_limit) - if max_height <= 0: - pg["added"] = False - print("ko", bottom_limit, top_limit) - break - pg_image = resize_max(pg_image, max_height=int(max_height), max_width=int(0.45 * w)) - img_h, img_w = pg_image.shape[:2] - top = randint(top_limit, bottom_limit-img_h+1) - left = randint(0, int(0.5*w-img_w)+1) - elif mode == "Coordonnées Destinataire": - if h - max_bottom_crop - 10 > 0.2*h and randint(0, 10) == 0: - pg_image = resize_max(pg_image, max_height=int(0.2*h), max_width=int(0.45 * w)) - img_h, img_w = pg_image.shape[:2] - top = randint(max_bottom_crop, h) - left = randint(0, w-img_w) - else: - max_height = min(0.25*h, bottom_limit-top_limit) - if max_height <= 0: - pg["added"] = False - print("ko", bottom_limit, top_limit) - break - pg_image = resize_max(pg_image, max_height=int(max_height), max_width=int(0.45 * w)) - img_h, img_w = pg_image.shape[:2] - if date_alone and w - date_right - img_w > 11: - top = randint(0, date_bottom-img_h+1) - left = randint(max(int(0.5*w), date_right+10), w-img_w) - else: - top = randint(top_limit, bottom_limit-img_h+1) - left = randint(int(0.5*w), int(w - img_w)+1) - - bottom = top+img_h - right = left+img_w - min_top_crop = min(top, min_top_crop) - max_bottom_crop = max(bottom, max_bottom_crop) - try: - background[top:bottom, left:right, ...] = pg_image - except: - pg["added"] = False - nb_lines = 0 - pg["coords"] = { - "top": top, - "bottom": bottom, - "right": right, - "left": left - } - - if nb_lines <= 0: - break - sorted_pg = order_text_regions_rimes(paragraphs.values()) - for pg in sorted_pg: - if "added" in pg.keys() and pg["added"]: - pg_label = "\n".join(pg["lines"]) - mode = pg["type"] - begin_token = matching_tokens_str[mode] - end_token = matching_tokens[begin_token] - page_labels["raw"] += pg_label - page_labels["begin"] += begin_token + pg_label - page_labels["sem"] += begin_token + pg_label + end_token - if crop: - if min_top_crop > max_bottom_crop: - print("KO - min > MAX") - elif min_top_crop > h: - print("KO - min > h") - else: - background = background[min_top_crop:max_bottom_crop] - return [background, page_labels, 1] - - def stat_sem_rimes(self): - try: - return self.rimes_sem_stats - except: - stats = dict() - for sample in self.samples: - for pg in sample["paragraphs_label"]: - mode = pg["type"] - if mode == 'Coordonnées Expéditeur': - if len(pg["label"]) < 50 and "\n" not in pg["label"]: - mode = "Reference" - if mode not in stats.keys(): - stats[mode] = 0 - else: - stats[mode] += 1 - for key in stats: - stats[key] = max(0.10, stats[key]/len(self.samples)) - self.rimes_sem_stats = stats - return stats - - def get_paragraph_rimes(self, mode="Corps de texte", mix=False): - while True: - sample = self.samples[randint(0, len(self))] - random.shuffle(sample["paragraphs_label"]) - for pg in sample["paragraphs_label"]: - pg_mode = pg["type"] - if pg_mode == 'Coordonnées Expéditeur': - if len(pg["label"]) < 50 and "\n" not in pg["label"]: - pg_mode = "Reference" - if mode == pg_mode: - if mode == "Corps de texte" and mix: - return self.get_mix_paragraph_rimes(mode, min(5, len(pg["label"].split("\n")))) - else: - return pg - - def get_mix_paragraph_rimes(self, mode="Corps de texte", num_lines=10): - res = list() - while len(res) != num_lines: - sample = self.samples[randint(0, len(self))] - random.shuffle(sample["paragraphs_label"]) - for pg in sample["paragraphs_label"]: - pg_mode = pg["type"] - if pg_mode == 'Coordonnées Expéditeur': - if len(pg["label"]) < 50 and "\n" not in pg["label"]: - pg_mode = "Reference" - if mode == pg_mode: - lines = pg["label"].split("\n") - res.append(lines[randint(0, len(lines))]) - break - return { - "label": "\n".join(res), - "type": mode, - } - - def generate_synthetic_read2016_page(self, background, coords, side="left", nb_lines=20, crop=False): - config = self.params["config"]["synthetic_data"] - two_column = False - matching_token = READ_MATCHING_TOKENS - page_labels = { - "raw": "", - "begin": "â“Ÿ", - "sem": "â“Ÿ", - } - area_top = coords["top"] - area_left = coords["left"] - area_right = coords["right"] - area_bottom = coords["bottom"] - num_page_text_label = str(randint(0, 1000)) - num_page_img = self.generate_typed_text_line_image(num_page_text_label) - - if side == "left": - background[area_top:area_top+num_page_img.shape[0], area_left:area_left+num_page_img.shape[1]] = num_page_img - else: - background[area_top:area_top + num_page_img.shape[0], area_right-num_page_img.shape[1]:area_right] = num_page_img - for key in ["sem", "begin"]: - page_labels[key] += "â“" - for key in page_labels.keys(): - page_labels[key] += num_page_text_label - page_labels["sem"] += matching_token["â“"] - nb_lines -= 1 - area_top = area_top + num_page_img.shape[0] + randint(1, 20) - ratio_ann = rand_uniform(0.6, 0.7) - while nb_lines > 0: - nb_body_lines = randint(1, nb_lines+1) - max_ann_lines = min(nb_body_lines, nb_lines-nb_body_lines) - body_labels = list() - body_imgs = list() - while nb_body_lines > 0: - current_nb_lines = 1 - label, img = self.get_printed_line_read_2016("body") - - nb_body_lines -= current_nb_lines - body_labels.append(label) - body_imgs.append(img) - nb_ann_lines = randint(0, min(6, max_ann_lines+1)) - ann_labels = list() - ann_imgs = list() - while nb_ann_lines > 0: - current_nb_lines = 1 - label, img = self.get_printed_line_read_2016("annotation") - nb_ann_lines -= current_nb_lines - ann_labels.append(label) - ann_imgs.append(img) - max_width_body = int(np.floor(ratio_ann*(area_right-area_left))) - max_width_ann = area_right-area_left-max_width_body - for img_list, max_width in zip([body_imgs, ann_imgs], [max_width_body, max_width_ann]): - for i in range(len(img_list)): - if img_list[i].shape[1] > max_width: - ratio = max_width/img_list[i].shape[1] - new_h = int(np.floor(ratio*img_list[i].shape[0])) - new_w = int(np.floor(ratio*img_list[i].shape[1])) - img_list[i] = cv2.resize(img_list[i], (new_w, new_h), interpolation=cv2.INTER_LINEAR) - body_top = area_top - body_height = 0 - i_body = 0 - for (label, img) in zip(body_labels, body_imgs): - remaining_height = area_bottom - body_top - if img.shape[0] > remaining_height: - nb_lines = 0 - break - background[body_top:body_top+img.shape[0], area_left+max_width_ann:area_left+max_width_ann+img.shape[1]] = img - body_height += img.shape[0] - body_top += img.shape[0] - nb_lines -= 1 - i_body += 1 - - ann_height = int(np.sum([img.shape[0] for img in ann_imgs])) - ann_top = area_top + randint(0, body_height-ann_height+1) if ann_height < body_height else area_top - largest_ann = max([a.shape[1] for a in ann_imgs]) if len(ann_imgs) > 0 else max_width_ann - pad_ann = randint(0, max_width_ann-largest_ann+1) if max_width_ann > largest_ann else 0 - - ann_label_blocks = [list(), ] - i_ann = 0 - ann_height = 0 - for (label, img) in zip(ann_labels, ann_imgs): - remaining_height = body_top - ann_top - if img.shape[0] > remaining_height: - break - background[ann_top:ann_top+img.shape[0], area_left+pad_ann:area_left+pad_ann+img.shape[1]] = img - ann_height += img.shape[0] - ann_top += img.shape[0] - nb_lines -= 1 - two_column = True - ann_label_blocks[-1].append(ann_labels[i_ann]) - i_ann += 1 - if randint(0, 10) == 0: - ann_label_blocks.append(list()) - ann_top += randint(0, max(15, body_top-ann_top-20)) - - area_top = area_top + max(ann_height, body_height) + randint(25, 100) - - ann_full_labels = { - "raw": "", - "begin": "", - "sem": "", - } - for ann_label_block in ann_label_blocks: - if len(ann_label_block) > 0: - for key in ["sem", "begin"]: - ann_full_labels[key] += "â“" - ann_full_labels["raw"] += "\n" - for key in ann_full_labels.keys(): - ann_full_labels[key] += "\n".join(ann_label_block) - ann_full_labels["sem"] += matching_token["â“"] - - body_full_labels = { - "raw": "", - "begin": "", - "sem": "", - } - if i_body > 0: - for key in ["sem", "begin"]: - body_full_labels[key] += "â“‘" - body_full_labels["raw"] += "\n" - for key in body_full_labels.keys(): - body_full_labels[key] += "\n".join(body_labels[:i_body]) - body_full_labels["sem"] += matching_token["â“‘"] - - section_labels = dict() - for key in ann_full_labels.keys(): - section_labels[key] = ann_full_labels[key] + body_full_labels[key] - for key in section_labels.keys(): - if section_labels[key] != "": - if key in ["sem", "begin"]: - section_labels[key] = "â“¢" + section_labels[key] - if key == "sem": - section_labels[key] = section_labels[key] + matching_token["â“¢"] - for key in page_labels.keys(): - page_labels[key] += section_labels[key] - - if crop: - background = background[:area_top] - - page_labels["sem"] += matching_token["â“Ÿ"] - - for key in page_labels.keys(): - page_labels[key] = page_labels[key].strip() - - return [background, page_labels, 2 if two_column else 1] - - def get_n_consecutive_lines_read_2016(self, n=1, mode="body"): - while True: - sample = self.samples[randint(0, len(self))] - paragraphs = list() - for page in sample["pages_label"]: - paragraphs.extend(page["paragraphs"]) - random.shuffle(paragraphs) - for pg in paragraphs: - if ((mode == "body" and pg["mode"] == "body") or - (mode == "ann" and pg["mode"] == "annotation")) and len(pg["lines"]) >= n: - line_idx = randint(0, len(pg["lines"])-n+1) - lines = pg["lines"][line_idx:line_idx+n] - label = "\n".join([l["text"] for l in lines]) - top = min([l["top"] for l in lines]) - bottom = max([l["bottom"] for l in lines]) - left = min([l["left"] for l in lines]) - right = max([l["right"] for l in lines]) - img = sample["img"][top:bottom, left:right] - return label, img - - def get_printed_line_read_2016(self, mode="body"): - while True: - sample = self.samples[randint(0, len(self))] - for page in sample["pages_label"]: - paragraphs = list() - paragraphs.extend(page["paragraphs"]) - random.shuffle(paragraphs) - for pg in paragraphs: - random.shuffle(pg["lines"]) - for line in pg["lines"]: - if (mode == "body" and len(line["text"]) > 5) or (mode == "annotation" and len(line["text"]) < 15 and not line["text"].isdigit()): - label = line["text"] - img = self.generate_typed_text_line_image(label) - return label, img - - def generate_typed_text_line_image(self, text): - return generate_typed_text_line_image(text, self.params["config"]["synthetic_data"]["config"]) - - def generate_typed_text_paragraph_image(self, texts, padding_value=255, max_pad_left_ratio=0.1, same_font_size=False): - config = self.params["config"]["synthetic_data"]["config"] - if same_font_size: - images = list() - txt_color = config["text_color_default"] - bg_color = config["background_color_default"] - font_size = randint(config["font_size_min"], config["font_size_max"] + 1) - for text in texts: - font_path = config["valid_fonts"][randint(0, len(config["valid_fonts"]))] - fnt = ImageFont.truetype(font_path, font_size) - text_width, text_height = fnt.getsize(text) - padding_top = int(rand_uniform(config["padding_top_ratio_min"], config["padding_top_ratio_max"]) * text_height) - padding_bottom = int(rand_uniform(config["padding_bottom_ratio_min"], config["padding_bottom_ratio_max"]) * text_height) - padding_left = int(rand_uniform(config["padding_left_ratio_min"], config["padding_left_ratio_max"]) * text_width) - padding_right = int(rand_uniform(config["padding_right_ratio_min"], config["padding_right_ratio_max"]) * text_width) - padding = [padding_top, padding_bottom, padding_left, padding_right] - images.append(generate_typed_text_line_image_from_params(text, fnt, bg_color, txt_color, config["color_mode"], padding)) - else: - images = [self.generate_typed_text_line_image(t) for t in texts] - - max_width = max([img.shape[1] for img in images]) - - padded_images = [pad_image_width_random(img, max_width, padding_value=padding_value, max_pad_left_ratio=max_pad_left_ratio) for img in images] - return np.concatenate(padded_images, axis=0) - - - -class OCRCollateFunction: - """ - Merge samples data to mini-batch data for OCR task - """ - - def __init__(self, config): - self.img_padding_value = float(config["padding_value"]) - self.label_padding_value = config["padding_token"] - self.config = config - - def __call__(self, batch_data): - names = [batch_data[i]["name"] for i in range(len(batch_data))] - ids = [batch_data[i]["name"].split("/")[-1].split(".")[0] for i in range(len(batch_data))] - applied_da = [batch_data[i]["applied_da"] for i in range(len(batch_data))] - - labels = [batch_data[i]["token_label"] for i in range(len(batch_data))] - labels = pad_sequences_1D(labels, padding_value=self.label_padding_value) - labels = torch.tensor(labels).long() - reverse_labels = [[batch_data[i]["token_label"][0], ] + batch_data[i]["token_label"][-2:0:-1] + [batch_data[i]["token_label"][-1], ] for i in range(len(batch_data))] - reverse_labels = pad_sequences_1D(reverse_labels, padding_value=self.label_padding_value) - reverse_labels = torch.tensor(reverse_labels).long() - labels_len = [batch_data[i]["label_len"] for i in range(len(batch_data))] - - raw_labels = [batch_data[i]["label"] for i in range(len(batch_data))] - unchanged_labels = [batch_data[i]["unchanged_label"] for i in range(len(batch_data))] - - nb_cols = [batch_data[i]["nb_cols"] for i in range(len(batch_data))] - nb_lines = [batch_data[i]["nb_lines"] for i in range(len(batch_data))] - line_raw = [batch_data[i]["line_label"] for i in range(len(batch_data))] - line_token = [batch_data[i]["token_line_label"] for i in range(len(batch_data))] - pad_line_token = list() - line_len = [batch_data[i]["line_label_len"] for i in range(len(batch_data))] - for i in range(max(nb_lines)): - current_lines = [line_token[j][i] if i < nb_lines[j] else [self.label_padding_value] for j in range(len(batch_data))] - pad_line_token.append(torch.tensor(pad_sequences_1D(current_lines, padding_value=self.label_padding_value)).long()) - for j in range(len(batch_data)): - if i >= nb_lines[j]: - line_len[j].append(0) - line_len = [i for i in zip(*line_len)] - - nb_words = [batch_data[i]["nb_words"] for i in range(len(batch_data))] - word_raw = [batch_data[i]["word_label"] for i in range(len(batch_data))] - word_token = [batch_data[i]["token_word_label"] for i in range(len(batch_data))] - pad_word_token = list() - word_len = [batch_data[i]["word_label_len"] for i in range(len(batch_data))] - for i in range(max(nb_words)): - current_words = [word_token[j][i] if i < nb_words[j] else [self.label_padding_value] for j in range(len(batch_data))] - pad_word_token.append(torch.tensor(pad_sequences_1D(current_words, padding_value=self.label_padding_value)).long()) - for j in range(len(batch_data)): - if i >= nb_words[j]: - word_len[j].append(0) - word_len = [i for i in zip(*word_len)] - - padding_mode = self.config["padding_mode"] if "padding_mode" in self.config else "br" - imgs = [batch_data[i]["img"] for i in range(len(batch_data))] - imgs_shape = [batch_data[i]["img_shape"] for i in range(len(batch_data))] - imgs_reduced_shape = [batch_data[i]["img_reduced_shape"] for i in range(len(batch_data))] - imgs_position = [batch_data[i]["img_position"] for i in range(len(batch_data))] - imgs_reduced_position= [batch_data[i]["img_reduced_position"] for i in range(len(batch_data))] - imgs = pad_images(imgs, padding_value=self.img_padding_value, padding_mode=padding_mode) - imgs = torch.tensor(imgs).float().permute(0, 3, 1, 2) - formatted_batch_data = { - "names": names, - "ids": ids, - "nb_lines": nb_lines, - "nb_cols": nb_cols, - "labels": labels, - "reverse_labels": reverse_labels, - "raw_labels": raw_labels, - "unchanged_labels": unchanged_labels, - "labels_len": labels_len, - "imgs": imgs, - "imgs_shape": imgs_shape, - "imgs_reduced_shape": imgs_reduced_shape, - "imgs_position": imgs_position, - "imgs_reduced_position": imgs_reduced_position, - "line_raw": line_raw, - "line_labels": pad_line_token, - "line_labels_len": line_len, - "nb_words": nb_words, - "word_raw": word_raw, - "word_labels": pad_word_token, - "word_labels_len": word_len, - "applied_da": applied_da - } - - return formatted_batch_data - - -def generate_typed_text_line_image(text, config, bg_color=(255, 255, 255), txt_color=(0, 0, 0)): - if text == "": - text = " " - if "text_color_default" in config: - txt_color = config["text_color_default"] - if "background_color_default" in config: - bg_color = config["background_color_default"] - - font_path = config["valid_fonts"][randint(0, len(config["valid_fonts"]))] - font_size = randint(config["font_size_min"], config["font_size_max"]+1) - fnt = ImageFont.truetype(font_path, font_size) - - text_width, text_height = fnt.getsize(text) - padding_top = int(rand_uniform(config["padding_top_ratio_min"], config["padding_top_ratio_max"])*text_height) - padding_bottom = int(rand_uniform(config["padding_bottom_ratio_min"], config["padding_bottom_ratio_max"])*text_height) - padding_left = int(rand_uniform(config["padding_left_ratio_min"], config["padding_left_ratio_max"])*text_width) - padding_right = int(rand_uniform(config["padding_right_ratio_min"], config["padding_right_ratio_max"])*text_width) - padding = [padding_top, padding_bottom, padding_left, padding_right] - return generate_typed_text_line_image_from_params(text, fnt, bg_color, txt_color, config["color_mode"], padding) - - -def generate_typed_text_line_image_from_params(text, font, bg_color, txt_color, color_mode, padding): - padding_top, padding_bottom, padding_left, padding_right = padding - text_width, text_height = font.getsize(text) - img_height = padding_top + padding_bottom + text_height - img_width = padding_left + padding_right + text_width - img = Image.new(color_mode, (img_width, img_height), color=bg_color) - d = ImageDraw.Draw(img) - d.text((padding_left, padding_bottom), text, font=font, fill=txt_color, spacing=0) - return np.array(img) - - -def get_valid_fonts(alphabet=None): - valid_fonts = list() - for fold_detail in os.walk("../../../Fonts"): - if fold_detail[2]: - for font_name in fold_detail[2]: - if ".ttf" not in font_name: - continue - font_path = os.path.join(fold_detail[0], font_name) - to_add = True - if alphabet is not None: - for char in alphabet: - if not char_in_font(char, font_path): - to_add = False - break - if to_add: - valid_fonts.append(font_path) - else: - valid_fonts.append(font_path) - return valid_fonts - - -def char_in_font(unicode_char, font_path): - with TTFont(font_path) as font: - for cmap in font['cmap'].tables: - if cmap.isUnicode(): - if ord(unicode_char) in cmap.cmap: - return True - return False diff --git a/OCR/ocr_manager.py b/OCR/ocr_manager.py deleted file mode 100644 index e34b36c0..00000000 --- a/OCR/ocr_manager.py +++ /dev/null @@ -1,67 +0,0 @@ -from basic.generic_training_manager import GenericTrainingManager -import os -from PIL import Image -import pickle - - -class OCRManager(GenericTrainingManager): - def __init__(self, params): - super(OCRManager, self).__init__(params) - self.params["model_params"]["vocab_size"] = len(self.dataset.charset) - - def generate_syn_line_dataset(self, name): - """ - Generate synthetic line dataset from currently loaded dataset - """ - dataset_name = list(self.params['dataset_params']["datasets"].keys())[0] - path = os.path.join(os.path.dirname(self.params['dataset_params']["datasets"][dataset_name]), name) - os.makedirs(path, exist_ok=True) - charset = set() - dataset = None - gt = { - "train": dict(), - "valid": dict(), - "test": dict() - } - for set_name in ["train", "valid", "test"]: - set_path = os.path.join(path, set_name) - os.makedirs(set_path, exist_ok=True) - if set_name == "train": - dataset = self.dataset.train_dataset - elif set_name == "valid": - dataset = self.dataset.valid_datasets["{}-valid".format(dataset_name)] - elif set_name == "test": - self.dataset.generate_test_loader("{}-test".format(dataset_name), [(dataset_name, "test"), ]) - dataset = self.dataset.test_datasets["{}-test".format(dataset_name)] - - samples = list() - for sample in dataset.samples: - for line_label in sample["label"].split("\n"): - for chunk in [line_label[i:i+100] for i in range(0, len(line_label), 100)]: - charset = charset.union(set(chunk)) - if len(chunk) > 0: - samples.append({ - "path": sample["path"], - "label": chunk, - "nb_cols": 1, - }) - - for i, sample in enumerate(samples): - ext = sample['path'].split(".")[-1] - img_name = "{}_{}.{}".format(set_name, i, ext) - img_path = os.path.join(set_path, img_name) - - img = dataset.generate_typed_text_line_image(sample["label"]) - Image.fromarray(img).save(img_path) - gt[set_name][img_name] = { - "text": sample["label"], - "nb_cols": sample["nb_cols"] if "nb_cols" in sample else 1 - } - if "line_label" in sample: - gt[set_name][img_name]["lines"] = sample["line_label"] - - with open(os.path.join(path, "labels.pkl"), "wb") as f: - pickle.dump({ - "ground_truth": gt, - "charset": sorted(list(charset)), - }, f) \ No newline at end of file diff --git a/README.md b/README.md index 28d0dc92..9b29f204 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,10 @@ This repository is a public implementation of the paper: "DAN: a Segmentation-free Document Attention Network for Handwritten Document Recognition". - + The model uses a character-level attention to handle slanted lines: - + The paper is available at https://arxiv.org/abs/2203.12273. diff --git a/basic/generic_dataset_manager.py b/basic/generic_dataset_manager.py deleted file mode 100644 index dd272d15..00000000 --- a/basic/generic_dataset_manager.py +++ /dev/null @@ -1,390 +0,0 @@ -import torch -import random -from torch.utils.data import Dataset, DataLoader -from torch.utils.data.distributed import DistributedSampler -from basic.transforms import apply_data_augmentation -from Datasets.dataset_formatters.utils_dataset import natural_sort -import os -import numpy as np -import pickle -from PIL import Image -import cv2 - - -class DatasetManager: - - def __init__(self, params): - self.params = params - self.dataset_class = params["dataset_class"] - self.img_padding_value = params["config"]["padding_value"] - - self.my_collate_function = None - - self.train_dataset = None - self.valid_datasets = dict() - self.test_datasets = dict() - - self.train_loader = None - self.valid_loaders = dict() - self.test_loaders = dict() - - self.train_sampler = None - self.valid_samplers = dict() - self.test_samplers = dict() - - self.generator = torch.Generator() - self.generator.manual_seed(0) - - self.batch_size = { - "train": self.params["batch_size"], - "valid": self.params["valid_batch_size"] if "valid_batch_size" in self.params else self.params["batch_size"], - "test": self.params["test_batch_size"] if "test_batch_size" in self.params else 1, - } - - def apply_specific_treatment_after_dataset_loading(self, dataset): - raise NotImplementedError - - def load_datasets(self): - """ - Load training and validation datasets - """ - self.train_dataset = self.dataset_class(self.params, "train", self.params["train"]["name"], self.get_paths_and_sets(self.params["train"]["datasets"])) - self.params["config"]["mean"], self.params["config"]["std"] = self.train_dataset.compute_std_mean() - - self.my_collate_function = self.train_dataset.collate_function(self.params["config"]) - self.apply_specific_treatment_after_dataset_loading(self.train_dataset) - - for custom_name in self.params["valid"].keys(): - self.valid_datasets[custom_name] = self.dataset_class(self.params, "valid", custom_name, self.get_paths_and_sets(self.params["valid"][custom_name])) - self.apply_specific_treatment_after_dataset_loading(self.valid_datasets[custom_name]) - - def load_ddp_samplers(self): - """ - Load training and validation data samplers - """ - if self.params["use_ddp"]: - self.train_sampler = DistributedSampler(self.train_dataset, num_replicas=self.params["num_gpu"], rank=self.params["ddp_rank"], shuffle=True) - for custom_name in self.valid_datasets.keys(): - self.valid_samplers[custom_name] = DistributedSampler(self.valid_datasets[custom_name], num_replicas=self.params["num_gpu"], rank=self.params["ddp_rank"], shuffle=False) - else: - for custom_name in self.valid_datasets.keys(): - self.valid_samplers[custom_name] = None - - def load_dataloaders(self): - """ - Load training and validation data loaders - """ - self.train_loader = DataLoader(self.train_dataset, - batch_size=self.batch_size["train"], - shuffle=True if self.train_sampler is None else False, - drop_last=False, - batch_sampler=self.train_sampler, - sampler=self.train_sampler, - num_workers=self.params["num_gpu"]*self.params["worker_per_gpu"], - pin_memory=True, - collate_fn=self.my_collate_function, - worker_init_fn=self.seed_worker, - generator=self.generator) - - for key in self.valid_datasets.keys(): - self.valid_loaders[key] = DataLoader(self.valid_datasets[key], - batch_size=self.batch_size["valid"], - sampler=self.valid_samplers[key], - batch_sampler=self.valid_samplers[key], - shuffle=False, - num_workers=self.params["num_gpu"]*self.params["worker_per_gpu"], - pin_memory=True, - drop_last=False, - collate_fn=self.my_collate_function, - worker_init_fn=self.seed_worker, - generator=self.generator) - - @staticmethod - def seed_worker(worker_id): - worker_seed = torch.initial_seed() % 2 ** 32 - np.random.seed(worker_seed) - random.seed(worker_seed) - - def generate_test_loader(self, custom_name, sets_list): - """ - Load test dataset, data sampler and data loader - """ - if custom_name in self.test_loaders.keys(): - return - paths_and_sets = list() - for set_info in sets_list: - paths_and_sets.append({ - "path": self.params["datasets"][set_info[0]], - "set_name": set_info[1] - }) - self.test_datasets[custom_name] = self.dataset_class(self.params, "test", custom_name, paths_and_sets) - self.apply_specific_treatment_after_dataset_loading(self.test_datasets[custom_name]) - if self.params["use_ddp"]: - self.test_samplers[custom_name] = DistributedSampler(self.test_datasets[custom_name], num_replicas=self.params["num_gpu"], rank=self.params["ddp_rank"], shuffle=False) - else: - self.test_samplers[custom_name] = None - self.test_loaders[custom_name] = DataLoader(self.test_datasets[custom_name], - batch_size=self.batch_size["test"], - sampler=self.test_samplers[custom_name], - shuffle=False, - num_workers=self.params["num_gpu"]*self.params["worker_per_gpu"], - pin_memory=True, - drop_last=False, - collate_fn=self.my_collate_function, - worker_init_fn=self.seed_worker, - generator=self.generator) - - def remove_test_dataset(self, custom_name): - del self.test_datasets[custom_name] - del self.test_samplers[custom_name] - del self.test_loaders[custom_name] - - def remove_valid_dataset(self, custom_name): - del self.valid_datasets[custom_name] - del self.valid_samplers[custom_name] - del self.valid_loaders[custom_name] - - def remove_train_dataset(self): - self.train_dataset = None - self.train_sampler = None - self.train_loader = None - - def remove_all_datasets(self): - self.remove_train_dataset() - for name in list(self.valid_datasets.keys()): - self.remove_valid_dataset(name) - for name in list(self.test_datasets.keys()): - self.remove_test_dataset(name) - - def get_paths_and_sets(self, dataset_names_folds): - paths_and_sets = list() - for dataset_name, fold in dataset_names_folds: - path = self.params["datasets"][dataset_name] - paths_and_sets.append({ - "path": path, - "set_name": fold - }) - return paths_and_sets - - -class GenericDataset(Dataset): - """ - Main class to handle dataset loading - """ - - def __init__(self, params, set_name, custom_name, paths_and_sets): - self.params = params - self.name = custom_name - self.set_name = set_name - self.mean = np.array(params["config"]["mean"]) if "mean" in params["config"].keys() else None - self.std = np.array(params["config"]["std"]) if "std" in params["config"].keys() else None - - self.load_in_memory = self.params["config"]["load_in_memory"] if "load_in_memory" in self.params["config"] else True - - self.samples = self.load_samples(paths_and_sets, load_in_memory=self.load_in_memory) - - if self.load_in_memory: - self.apply_preprocessing(params["config"]["preprocessings"]) - - self.padding_value = params["config"]["padding_value"] - if self.padding_value == "mean": - if self.mean is None: - _, _ = self.compute_std_mean() - self.padding_value = self.mean - self.params["config"]["padding_value"] = self.padding_value - - self.curriculum_config = None - self.training_info = None - - def __len__(self): - return len(self.samples) - - @staticmethod - def load_image(path): - with Image.open(path) as pil_img: - img = np.array(pil_img) - ## grayscale images - if len(img.shape) == 2: - img = np.expand_dims(img, axis=2) - return img - - @staticmethod - def load_samples(paths_and_sets, load_in_memory=True): - """ - Load images and labels - """ - samples = list() - for path_and_set in paths_and_sets: - path = path_and_set["path"] - set_name = path_and_set["set_name"] - with open(os.path.join(path, "labels.pkl"), "rb") as f: - info = pickle.load(f) - gt = info["ground_truth"][set_name] - for filename in natural_sort(gt.keys()): - name = os.path.join(os.path.basename(path), set_name, filename) - full_path = os.path.join(path, set_name, filename) - if isinstance(gt[filename], dict) and "text" in gt[filename]: - label = gt[filename]["text"] - else: - label = gt[filename] - samples.append({ - "name": name, - "label": label, - "unchanged_label": label, - "path": full_path, - "nb_cols": 1 if "nb_cols" not in gt[filename] else gt[filename]["nb_cols"] - }) - if load_in_memory: - samples[-1]["img"] = GenericDataset.load_image(full_path) - if type(gt[filename]) is dict: - if "lines" in gt[filename].keys(): - samples[-1]["raw_line_seg_label"] = gt[filename]["lines"] - if "paragraphs" in gt[filename].keys(): - samples[-1]["paragraphs_label"] = gt[filename]["paragraphs"] - if "pages" in gt[filename].keys(): - samples[-1]["pages_label"] = gt[filename]["pages"] - return samples - - def apply_preprocessing(self, preprocessings): - for i in range(len(self.samples)): - self.samples[i] = apply_preprocessing(self.samples[i], preprocessings) - - def compute_std_mean(self): - """ - Compute cumulated variance and mean of whole dataset - """ - if self.mean is not None and self.std is not None: - return self.mean, self.std - if not self.load_in_memory: - sample = self.samples[0].copy() - sample["img"] = self.get_sample_img(0) - img = apply_preprocessing(sample, self.params["config"]["preprocessings"])["img"] - else: - img = self.get_sample_img(0) - _, _, c = img.shape - sum = np.zeros((c,)) - nb_pixels = 0 - - for i in range(len(self.samples)): - if not self.load_in_memory: - sample = self.samples[i].copy() - sample["img"] = self.get_sample_img(i) - img = apply_preprocessing(sample, self.params["config"]["preprocessings"])["img"] - else: - img = self.get_sample_img(i) - sum += np.sum(img, axis=(0, 1)) - nb_pixels += np.prod(img.shape[:2]) - mean = sum / nb_pixels - diff = np.zeros((c,)) - for i in range(len(self.samples)): - if not self.load_in_memory: - sample = self.samples[i].copy() - sample["img"] = self.get_sample_img(i) - img = apply_preprocessing(sample, self.params["config"]["preprocessings"])["img"] - else: - img = self.get_sample_img(i) - diff += [np.sum((img[:, :, k] - mean[k]) ** 2) for k in range(c)] - std = np.sqrt(diff / nb_pixels) - - self.mean = mean - self.std = std - return mean, std - - def apply_data_augmentation(self, img): - """ - Apply data augmentation strategy on the input image - """ - augs = [self.params["config"][key] if key in self.params["config"].keys() else None for key in ["augmentation", "valid_augmentation", "test_augmentation"]] - for aug, set_name in zip(augs, ["train", "valid", "test"]): - if aug and self.set_name == set_name: - return apply_data_augmentation(img, aug) - return img, list() - - def get_sample_img(self, i): - """ - Get image by index - """ - if self.load_in_memory: - return self.samples[i]["img"] - else: - return GenericDataset.load_image(self.samples[i]["path"]) - - def denormalize(self, img): - """ - Get original image, before normalization - """ - return img * self.std + self.mean - - -def apply_preprocessing(sample, preprocessings): - """ - Apply preprocessings on each sample - """ - resize_ratio = [1, 1] - img = sample["img"] - for preprocessing in preprocessings: - - if preprocessing["type"] == "dpi": - ratio = preprocessing["target"] / preprocessing["source"] - temp_img = img - h, w, c = temp_img.shape - temp_img = cv2.resize(temp_img, (int(np.ceil(w * ratio)), int(np.ceil(h * ratio)))) - if len(temp_img.shape) == 2: - temp_img = np.expand_dims(temp_img, axis=2) - img = temp_img - - resize_ratio = [ratio, ratio] - - if preprocessing["type"] == "to_grayscaled": - temp_img = img - h, w, c = temp_img.shape - if c == 3: - img = np.expand_dims( - 0.2125 * temp_img[:, :, 0] + 0.7154 * temp_img[:, :, 1] + 0.0721 * temp_img[:, :, 2], - axis=2).astype(np.uint8) - - if preprocessing["type"] == "to_RGB": - temp_img = img - h, w, c = temp_img.shape - if c == 1: - img = np.concatenate([temp_img, temp_img, temp_img], axis=2) - - if preprocessing["type"] == "resize": - keep_ratio = preprocessing["keep_ratio"] - max_h, max_w = preprocessing["max_height"], preprocessing["max_width"] - temp_img = img - h, w, c = temp_img.shape - - ratio_h = max_h / h if max_h else 1 - ratio_w = max_w / w if max_w else 1 - if keep_ratio: - ratio_h = ratio_w = min(ratio_w, ratio_h) - new_h = min(max_h, int(h * ratio_h)) - new_w = min(max_w, int(w * ratio_w)) - temp_img = cv2.resize(temp_img, (new_w, new_h)) - if len(temp_img.shape) == 2: - temp_img = np.expand_dims(temp_img, axis=2) - - img = temp_img - resize_ratio = [ratio_h, ratio_w] - - if preprocessing["type"] == "fixed_height": - new_h = preprocessing["height"] - temp_img = img - h, w, c = temp_img.shape - ratio = new_h / h - temp_img = cv2.resize(temp_img, (int(w*ratio), new_h)) - if len(temp_img.shape) == 2: - temp_img = np.expand_dims(temp_img, axis=2) - img = temp_img - resize_ratio = [ratio, ratio] - if resize_ratio != [1, 1] and "raw_line_seg_label" in sample: - for li in range(len(sample["raw_line_seg_label"])): - for side, ratio in zip((["bottom", "top"], ["right", "left"]), resize_ratio): - for s in side: - sample["raw_line_seg_label"][li][s] = sample["raw_line_seg_label"][li][s] * ratio - - sample["img"] = img - sample["resize_ratio"] = resize_ratio - return sample - diff --git a/basic/generic_training_manager.py b/basic/generic_training_manager.py deleted file mode 100644 index a8f41b28..00000000 --- a/basic/generic_training_manager.py +++ /dev/null @@ -1,706 +0,0 @@ -import torch -import os -import sys -import copy -import json -import torch.distributed as dist -import torch.multiprocessing as mp -import random -import numpy as np -from torch.utils.tensorboard import SummaryWriter -from torch.nn.init import kaiming_uniform_ -from tqdm import tqdm -from time import time -from torch.nn.parallel import DistributedDataParallel as DDP -from torch.cuda.amp import GradScaler -from basic.metric_manager import MetricManager -from basic.scheduler import DropoutScheduler -from datetime import date - - -class GenericTrainingManager: - - def __init__(self, params): - self.type = None - self.is_master = False - self.params = params - self.dropout_scheduler = None - self.models = {} - self.begin_time = None - self.dataset = None - self.dataset_name = list(self.params["dataset_params"]["datasets"].values())[0] - self.paths = None - self.latest_step = 0 - self.latest_epoch = -1 - self.latest_batch = 0 - self.total_batch = 0 - self.grad_acc_step = 0 - self.latest_train_metrics = dict() - self.latest_valid_metrics = dict() - self.curriculum_info = dict() - self.curriculum_info["latest_valid_metrics"] = dict() - self.phase = None - self.max_mem_usage_by_epoch = list() - self.losses = list() - self.lr_values = list() - - self.scaler = None - - self.optimizers = dict() - self.optimizers_named_params_by_group = dict() - self.lr_schedulers = dict() - self.best = None - self.writer = None - self.metric_manager = dict() - - self.init_hardware_config() - self.init_paths() - self.load_dataset() - self.params["model_params"]["use_amp"] = self.params["training_params"]["use_amp"] - - def init_paths(self): - """ - Create output folders for results and checkpoints - """ - output_path = os.path.join("outputs", self.params["training_params"]["output_folder"]) - os.makedirs(output_path, exist_ok=True) - checkpoints_path = os.path.join(output_path, "checkpoints") - os.makedirs(checkpoints_path, exist_ok=True) - results_path = os.path.join(output_path, "results") - os.makedirs(results_path, exist_ok=True) - - self.paths = { - "results": results_path, - "checkpoints": checkpoints_path, - "output_folder": output_path - } - - def load_dataset(self): - """ - Load datasets, data samplers and data loaders - """ - self.params["dataset_params"]["use_ddp"] = self.params["training_params"]["use_ddp"] - self.params["dataset_params"]["batch_size"] = self.params["training_params"]["batch_size"] - if "valid_batch_size" in self.params["training_params"]: - self.params["dataset_params"]["valid_batch_size"] = self.params["training_params"]["valid_batch_size"] - if "test_batch_size" in self.params["training_params"]: - self.params["dataset_params"]["test_batch_size"] = self.params["training_params"]["test_batch_size"] - self.params["dataset_params"]["num_gpu"] = self.params["training_params"]["nb_gpu"] - self.params["dataset_params"]["worker_per_gpu"] = 4 if "worker_per_gpu" not in self.params["dataset_params"] else self.params["dataset_params"]["worker_per_gpu"] - self.dataset = self.params["dataset_params"]["dataset_manager"](self.params["dataset_params"]) - self.dataset.load_datasets() - self.dataset.load_ddp_samplers() - self.dataset.load_dataloaders() - - def init_hardware_config(self): - # Debug mode - if self.params["training_params"]["force_cpu"]: - self.params["training_params"]["use_ddp"] = False - self.params["training_params"]["use_amp"] = False - # Manage Distributed Data Parallel & GPU usage - self.manual_seed = 1111 if "manual_seed" not in self.params["training_params"].keys() else \ - self.params["training_params"]["manual_seed"] - self.ddp_config = { - "master": self.params["training_params"]["use_ddp"] and self.params["training_params"]["ddp_rank"] == 0, - "address": "localhost" if "ddp_addr" not in self.params["training_params"].keys() else self.params["training_params"]["ddp_addr"], - "port": "11111" if "ddp_port" not in self.params["training_params"].keys() else self.params["training_params"]["ddp_port"], - "backend": "nccl" if "ddp_backend" not in self.params["training_params"].keys() else self.params["training_params"]["ddp_backend"], - "rank": self.params["training_params"]["ddp_rank"], - } - self.is_master = self.ddp_config["master"] or not self.params["training_params"]["use_ddp"] - if self.params["training_params"]["force_cpu"]: - self.device = "cpu" - else: - if self.params["training_params"]["use_ddp"]: - self.device = torch.device(self.ddp_config["rank"]) - self.params["dataset_params"]["ddp_rank"] = self.ddp_config["rank"] - self.launch_ddp() - else: - self.device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") - self.params["model_params"]["device"] = self.device.type - # Print GPU info - # global - if (self.params["training_params"]["use_ddp"] and self.ddp_config["master"]) or not self.params["training_params"]["use_ddp"]: - print("##################") - print("Available GPUS: {}".format(self.params["training_params"]["nb_gpu"])) - for i in range(self.params["training_params"]["nb_gpu"]): - print("Rank {}: {} {}".format(i, torch.cuda.get_device_name(i), torch.cuda.get_device_properties(i))) - print("##################") - # local - print("Local GPU:") - if self.device != "cpu": - print("Rank {}: {} {}".format(self.params["training_params"]["ddp_rank"], torch.cuda.get_device_name(), torch.cuda.get_device_properties(self.device))) - else: - print("WORKING ON CPU !\n") - print("##################") - - def load_model(self, reset_optimizer=False, strict=True): - """ - Load model weights from scratch or from checkpoints - """ - # Instantiate Model - for model_name in self.params["model_params"]["models"].keys(): - self.models[model_name] = self.params["model_params"]["models"][model_name](self.params["model_params"]) - self.models[model_name].to(self.device) # To GPU or CPU - # make the model compatible with Distributed Data Parallel if used - if self.params["training_params"]["use_ddp"]: - self.models[model_name] = DDP(self.models[model_name], [self.ddp_config["rank"]]) - - # Handle curriculum dropout - if "dropout_scheduler" in self.params["model_params"]: - func = self.params["model_params"]["dropout_scheduler"]["function"] - T = self.params["model_params"]["dropout_scheduler"]["T"] - self.dropout_scheduler = DropoutScheduler(self.models, func, T) - - self.scaler = GradScaler(enabled=self.params["training_params"]["use_amp"]) - - # Check if checkpoint exists - checkpoint = self.get_checkpoint() - if checkpoint is not None: - self.load_existing_model(checkpoint, strict=strict) - else: - self.init_new_model() - - self.load_optimizers(checkpoint, reset_optimizer=reset_optimizer) - - if self.is_master: - print("LOADED EPOCH: {}\n".format(self.latest_epoch), flush=True) - - def get_checkpoint(self): - """ - Seek if checkpoint exist, return None otherwise - """ - if self.params["training_params"]["load_epoch"] in ("best", "last"): - for filename in os.listdir(self.paths["checkpoints"]): - if self.params["training_params"]["load_epoch"] in filename: - return torch.load(os.path.join(self.paths["checkpoints"], filename)) - return None - - def load_existing_model(self, checkpoint, strict=True): - """ - Load information and weights from previous training - """ - self.load_save_info(checkpoint) - self.latest_epoch = checkpoint["epoch"] - if "step" in checkpoint: - self.latest_step = checkpoint["step"] - self.best = checkpoint["best"] - if "scaler_state_dict" in checkpoint: - self.scaler.load_state_dict(checkpoint["scaler_state_dict"]) - # Load model weights from past training - for model_name in self.models.keys(): - self.models[model_name].load_state_dict(checkpoint["{}_state_dict".format(model_name)], strict=strict) - - def init_new_model(self): - """ - Initialize model - """ - # Specific weights initialization if exists - for model_name in self.models.keys(): - try: - self.models[model_name].init_weights() - except: - pass - - # Handle transfer learning instructions - if self.params["model_params"]["transfer_learning"]: - # Iterates over models - for model_name in self.params["model_params"]["transfer_learning"].keys(): - state_dict_name, path, learnable, strict = self.params["model_params"]["transfer_learning"][model_name] - # Loading pretrained weights file - checkpoint = torch.load(path) - try: - # Load pretrained weights for model - self.models[model_name].load_state_dict(checkpoint["{}_state_dict".format(state_dict_name)], strict=strict) - print("transfered weights for {}".format(state_dict_name), flush=True) - except RuntimeError as e: - print(e, flush=True) - # if error, try to load each parts of the model (useful if only few layers are different) - for key in checkpoint["{}_state_dict".format(state_dict_name)].keys(): - try: - # for pre-training of decision layer - if "end_conv" in key and "transfered_charset" in self.params["model_params"]: - self.adapt_decision_layer_to_old_charset(model_name, key, checkpoint, state_dict_name) - else: - self.models[model_name].load_state_dict( - {key: checkpoint["{}_state_dict".format(state_dict_name)][key]}, strict=False) - except RuntimeError as e: - ## exception when adding linebreak token from pretraining - print(e, flush=True) - # Set parameters no trainable - if not learnable: - self.set_model_learnable(self.models[model_name], False) - - def adapt_decision_layer_to_old_charset(self, model_name, key, checkpoint, state_dict_name): - """ - Transfer learning of the decision learning in case of close charsets between pre-training and training - """ - pretrained_chars = list() - weights = checkpoint["{}_state_dict".format(state_dict_name)][key] - new_size = list(weights.size()) - new_size[0] = len(self.dataset.charset) + self.params["model_params"]["additional_tokens"] - new_weights = torch.zeros(new_size, device=weights.device, dtype=weights.dtype) - old_charset = checkpoint["charset"] if "charset" in checkpoint else self.params["model_params"]["old_charset"] - if not "bias" in key: - kaiming_uniform_(new_weights, nonlinearity="relu") - for i, c in enumerate(self.dataset.charset): - if c in old_charset: - new_weights[i] = weights[old_charset.index(c)] - pretrained_chars.append(c) - if "transfered_charset_last_is_ctc_blank" in self.params["model_params"] and self.params["model_params"]["transfered_charset_last_is_ctc_blank"]: - new_weights[-1] = weights[-1] - pretrained_chars.append("<blank>") - checkpoint["{}_state_dict".format(state_dict_name)][key] = new_weights - self.models[model_name].load_state_dict({key: checkpoint["{}_state_dict".format(state_dict_name)][key]}, strict=False) - print("Pretrained chars for {} ({}): {}".format(key, len(pretrained_chars), pretrained_chars)) - - def load_optimizers(self, checkpoint, reset_optimizer=False): - """ - Load the optimizer of each model - """ - for model_name in self.models.keys(): - new_params = dict() - if checkpoint and "optimizer_named_params_{}".format(model_name) in checkpoint: - self.optimizers_named_params_by_group[model_name] = checkpoint["optimizer_named_params_{}".format(model_name)] - # for progressively growing models - for name, param in self.models[model_name].named_parameters(): - existing = False - for gr in self.optimizers_named_params_by_group[model_name]: - if name in gr: - gr[name] = param - existing = True - break - if not existing: - new_params.update({name: param}) - else: - self.optimizers_named_params_by_group[model_name] = [dict(), ] - self.optimizers_named_params_by_group[model_name][0].update(self.models[model_name].named_parameters()) - - # Instantiate optimizer - self.reset_optimizer(model_name) - - # Handle learning rate schedulers - if "lr_schedulers" in self.params["training_params"] and self.params["training_params"]["lr_schedulers"]: - key = "all" if "all" in self.params["training_params"]["lr_schedulers"] else model_name - if key in self.params["training_params"]["lr_schedulers"]: - self.lr_schedulers[model_name] = self.params["training_params"]["lr_schedulers"][key]["class"]\ - (self.optimizers[model_name], **self.params["training_params"]["lr_schedulers"][key]["args"]) - - # Load optimizer state from past training - if checkpoint and not reset_optimizer: - self.optimizers[model_name].load_state_dict(checkpoint["optimizer_{}_state_dict".format(model_name)]) - # Load optimizer scheduler config from past training if used - if "lr_schedulers" in self.params["training_params"] and self.params["training_params"]["lr_schedulers"] \ - and "lr_scheduler_{}_state_dict".format(model_name) in checkpoint.keys(): - self.lr_schedulers[model_name].load_state_dict(checkpoint["lr_scheduler_{}_state_dict".format(model_name)]) - - # for progressively growing models, keeping learning rate - if checkpoint and new_params: - self.optimizers_named_params_by_group[model_name].append(new_params) - self.optimizers[model_name].add_param_group({"params": list(new_params.values())}) - - @staticmethod - def set_model_learnable(model, learnable=True): - for p in list(model.parameters()): - p.requires_grad = learnable - - def save_model(self, epoch, name, keep_weights=False): - """ - Save model weights and training info for curriculum learning or learning rate for instance - """ - if not self.is_master: - return - to_del = [] - for filename in os.listdir(self.paths["checkpoints"]): - if name in filename: - to_del.append(os.path.join(self.paths["checkpoints"], filename)) - path = os.path.join(self.paths["checkpoints"], "{}_{}.pt".format(name, epoch)) - content = { - 'optimizers_named_params': self.optimizers_named_params_by_group, - 'epoch': epoch, - 'step': self.latest_step, - "scaler_state_dict": self.scaler.state_dict(), - 'best': self.best, - "charset": self.dataset.charset - } - for model_name in self.optimizers: - content['optimizer_{}_state_dict'.format(model_name)] = self.optimizers[model_name].state_dict() - for model_name in self.lr_schedulers: - content["lr_scheduler_{}_state_dict".format(model_name)] = self.lr_schedulers[model_name].state_dict() - content = self.add_save_info(content) - for model_name in self.models.keys(): - content["{}_state_dict".format(model_name)] = self.models[model_name].state_dict() - torch.save(content, path) - if not keep_weights: - for path_to_del in to_del: - if path_to_del != path: - os.remove(path_to_del) - - def reset_optimizers(self): - """ - Reset learning rate of all optimizers - """ - for model_name in self.models.keys(): - self.reset_optimizer(model_name) - - def reset_optimizer(self, model_name): - """ - Reset optimizer learning rate for given model - """ - params = list(self.optimizers_named_params_by_group[model_name][0].values()) - key = "all" if "all" in self.params["training_params"]["optimizers"] else model_name - self.optimizers[model_name] = self.params["training_params"]["optimizers"][key]["class"](params, **self.params["training_params"]["optimizers"][key]["args"]) - for i in range(1, len(self.optimizers_named_params_by_group[model_name])): - self.optimizers[model_name].add_param_group({"params": list(self.optimizers_named_params_by_group[model_name][i].values())}) - - def save_params(self): - """ - Output text file containing a summary of all hyperparameters chosen for the training - """ - def compute_nb_params(module): - return sum([np.prod(p.size()) for p in list(module.parameters())]) - - def class_to_str_dict(my_dict): - for key in my_dict.keys(): - if callable(my_dict[key]): - my_dict[key] = my_dict[key].__name__ - elif isinstance(my_dict[key], np.ndarray): - my_dict[key] = my_dict[key].tolist() - elif isinstance(my_dict[key], dict): - my_dict[key] = class_to_str_dict(my_dict[key]) - return my_dict - - path = os.path.join(self.paths["results"], "params") - if os.path.isfile(path): - return - params = copy.deepcopy(self.params) - params = class_to_str_dict(params) - params["date"] = date.today().strftime("%d/%m/%Y") - total_params = 0 - for model_name in self.models.keys(): - current_params = compute_nb_params(self.models[model_name]) - params["model_params"]["models"][model_name] = [params["model_params"]["models"][model_name], "{:,}".format(current_params)] - total_params += current_params - params["model_params"]["total_params"] = "{:,}".format(total_params) - - params["hardware"] = dict() - if self.device != "cpu": - for i in range(self.params["training_params"]["nb_gpu"]): - params["hardware"][str(i)] = "{} {}".format(torch.cuda.get_device_name(i), torch.cuda.get_device_properties(i)) - else: - params["hardware"]["0"] = "CPU" - params["software"] = { - "python_version": sys.version, - "pytorch_version": torch.__version__, - "cuda_version": torch.version.cuda, - "cudnn_version": torch.backends.cudnn.version(), - } - with open(path, 'w') as f: - json.dump(params, f, indent=4) - - def backward_loss(self, loss, retain_graph=False): - self.scaler.scale(loss).backward(retain_graph=retain_graph) - - def step_optimizers(self, increment_step=True, names=None): - for model_name in self.optimizers: - if names and model_name not in names: - continue - if "gradient_clipping" in self.params["training_params"] and model_name in self.params["training_params"]["gradient_clipping"]["models"]: - self.scaler.unscale_(self.optimizers[model_name]) - torch.nn.utils.clip_grad_norm_(self.models[model_name].parameters(), self.params["training_params"]["gradient_clipping"]["max"]) - self.scaler.step(self.optimizers[model_name]) - self.scaler.update() - self.latest_step += 1 - - def zero_optimizers(self, set_to_none=True): - for model_name in self.optimizers: - self.zero_optimizer(model_name, set_to_none) - - def zero_optimizer(self, model_name, set_to_none=True): - self.optimizers[model_name].zero_grad(set_to_none=set_to_none) - - def train(self): - """ - Main training loop - """ - # init tensorboard file and output param summary file - if self.is_master: - self.writer = SummaryWriter(self.paths["results"]) - self.save_params() - # init variables - self.begin_time = time() - focus_metric_name = self.params["training_params"]["focus_metric"] - nb_epochs = self.params["training_params"]["max_nb_epochs"] - interval_save_weights = self.params["training_params"]["interval_save_weights"] - metric_names = self.params["training_params"]["train_metrics"] - - display_values = None - # init curriculum learning - if "curriculum_learning" in self.params["training_params"].keys() and self.params["training_params"]["curriculum_learning"]: - self.init_curriculum() - # perform epochs - for num_epoch in range(self.latest_epoch+1, nb_epochs): - self.dataset.train_dataset.training_info = { - "epoch": self.latest_epoch, - "step": self.latest_step - } - self.phase = "train" - # Check maximum training time stop condition - if self.params["training_params"]["max_training_time"] and time() - self.begin_time > self.params["training_params"]["max_training_time"]: - break - # set models trainable - for model_name in self.models.keys(): - self.models[model_name].train() - self.latest_epoch = num_epoch - if self.dataset.train_dataset.curriculum_config: - self.dataset.train_dataset.curriculum_config["epoch"] = self.latest_epoch - # init epoch metrics values - self.metric_manager["train"] = MetricManager(metric_names=metric_names, dataset_name=self.dataset_name) - - with tqdm(total=len(self.dataset.train_loader.dataset)) as pbar: - pbar.set_description("EPOCH {}/{}".format(num_epoch, nb_epochs)) - # iterates over mini-batch data - for ind_batch, batch_data in enumerate(self.dataset.train_loader): - self.latest_batch = ind_batch + 1 - self.total_batch += 1 - # train on batch data and compute metrics - batch_values = self.train_batch(batch_data, metric_names) - batch_metrics = self.metric_manager["train"].compute_metrics(batch_values, metric_names) - batch_metrics["names"] = batch_data["names"] - batch_metrics["ids"] = batch_data["ids"] - # Merge metrics if Distributed Data Parallel is used - if self.params["training_params"]["use_ddp"]: - batch_metrics = self.merge_ddp_metrics(batch_metrics) - # Update learning rate via scheduler if one is used - if self.params["training_params"]["lr_schedulers"]: - for model_name in self.models: - key = "all" if "all" in self.params["training_params"]["lr_schedulers"] else model_name - if model_name in self.lr_schedulers and ind_batch % self.params["training_params"]["lr_schedulers"][key]["step_interval"] == 0: - self.lr_schedulers[model_name].step(len(batch_metrics["names"])) - if "lr" in metric_names: - self.writer.add_scalar("lr_{}".format(model_name), self.lr_schedulers[model_name].lr, self.lr_schedulers[model_name].step_num) - # Update dropout scheduler if used - if self.dropout_scheduler: - self.dropout_scheduler.step(len(batch_metrics["names"])) - self.dropout_scheduler.update_dropout_rate() - - # Add batch metrics values to epoch metrics values - self.metric_manager["train"].update_metrics(batch_metrics) - display_values = self.metric_manager["train"].get_display_values() - pbar.set_postfix(values=str(display_values)) - pbar.update(len(batch_data["names"])) - - # log metrics in tensorboard file - if self.is_master: - for key in display_values.keys(): - self.writer.add_scalar('{}_{}'.format(self.params["dataset_params"]["train"]["name"], key), display_values[key], num_epoch) - self.latest_train_metrics = display_values - - # evaluate and compute metrics for valid sets - if self.params["training_params"]["eval_on_valid"] and num_epoch % self.params["training_params"]["eval_on_valid_interval"] == 0: - for valid_set_name in self.dataset.valid_loaders.keys(): - # evaluate set and compute metrics - eval_values = self.evaluate(valid_set_name) - self.latest_valid_metrics = eval_values - # log valid metrics in tensorboard file - if self.is_master: - for key in eval_values.keys(): - self.writer.add_scalar('{}_{}'.format(valid_set_name, key), eval_values[key], num_epoch) - if valid_set_name == self.params["training_params"]["set_name_focus_metric"] and (self.best is None or \ - (eval_values[focus_metric_name] <= self.best and self.params["training_params"]["expected_metric_value"] == "low") or\ - (eval_values[focus_metric_name] >= self.best and self.params["training_params"]["expected_metric_value"] == "high")): - self.save_model(epoch=num_epoch, name="best") - self.best = eval_values[focus_metric_name] - - # Handle curriculum learning update - if self.dataset.train_dataset.curriculum_config: - self.check_and_update_curriculum() - - if "curriculum_model" in self.params["model_params"] and self.params["model_params"]["curriculum_model"]: - self.update_curriculum_model() - - # save model weights - if self.is_master: - self.save_model(epoch=num_epoch, name="last") - if interval_save_weights and num_epoch % interval_save_weights == 0: - self.save_model(epoch=num_epoch, name="weigths", keep_weights=True) - self.writer.flush() - - def evaluate(self, set_name, **kwargs): - """ - Main loop for validation - """ - self.phase = "eval" - loader = self.dataset.valid_loaders[set_name] - # Set models in eval mode - for model_name in self.models.keys(): - self.models[model_name].eval() - metric_names = self.params["training_params"]["eval_metrics"] - display_values = None - - # initialize epoch metrics - self.metric_manager[set_name] = MetricManager(metric_names, dataset_name=self.dataset_name) - with tqdm(total=len(loader.dataset)) as pbar: - pbar.set_description("Evaluation E{}".format(self.latest_epoch)) - with torch.no_grad(): - # iterate over batch data - for ind_batch, batch_data in enumerate(loader): - self.latest_batch = ind_batch + 1 - # eval batch data and compute metrics - batch_values = self.evaluate_batch(batch_data, metric_names) - batch_metrics = self.metric_manager[set_name].compute_metrics(batch_values, metric_names) - batch_metrics["names"] = batch_data["names"] - batch_metrics["ids"] = batch_data["ids"] - # merge metrics values if Distributed Data Parallel is used - if self.params["training_params"]["use_ddp"]: - batch_metrics = self.merge_ddp_metrics(batch_metrics) - - # add batch metrics to epoch metrics - self.metric_manager[set_name].update_metrics(batch_metrics) - display_values = self.metric_manager[set_name].get_display_values() - - pbar.set_postfix(values=str(display_values)) - pbar.update(len(batch_data["names"])) - if "cer_by_nb_cols" in metric_names: - self.log_cer_by_nb_cols(set_name) - return display_values - - def predict(self, custom_name, sets_list, metric_names, output=False): - """ - Main loop for evaluation - """ - self.phase = "predict" - metric_names = metric_names.copy() - self.dataset.generate_test_loader(custom_name, sets_list) - loader = self.dataset.test_loaders[custom_name] - # Set models in eval mode - for model_name in self.models.keys(): - self.models[model_name].eval() - - # initialize epoch metrics - self.metric_manager[custom_name] = MetricManager(metric_names, self.dataset_name) - - with tqdm(total=len(loader.dataset)) as pbar: - pbar.set_description("Prediction") - with torch.no_grad(): - for ind_batch, batch_data in enumerate(loader): - # iterates over batch data - self.latest_batch = ind_batch + 1 - # eval batch data and compute metrics - batch_values = self.evaluate_batch(batch_data, metric_names) - batch_metrics = self.metric_manager[custom_name].compute_metrics(batch_values, metric_names) - batch_metrics["names"] = batch_data["names"] - batch_metrics["ids"] = batch_data["ids"] - # merge batch metrics if Distributed Data Parallel is used - if self.params["training_params"]["use_ddp"]: - batch_metrics = self.merge_ddp_metrics(batch_metrics) - - # add batch metrics to epoch metrics - self.metric_manager[custom_name].update_metrics(batch_metrics) - display_values = self.metric_manager[custom_name].get_display_values() - - pbar.set_postfix(values=str(display_values)) - pbar.update(len(batch_data["names"])) - - self.dataset.remove_test_dataset(custom_name) - # output metrics values if requested - if output: - if "pred" in metric_names: - self.output_pred(custom_name) - metrics = self.metric_manager[custom_name].get_display_values(output=True) - path = os.path.join(self.paths["results"], "predict_{}_{}.txt".format(custom_name, self.latest_epoch)) - with open(path, "w") as f: - for metric_name in metrics.keys(): - f.write("{}: {}\n".format(metric_name, metrics[metric_name])) - - def output_pred(self, name): - path = os.path.join(self.paths["results"], "pred_{}_{}.txt".format(name, self.latest_epoch)) - pred = "\n".join(self.metric_manager[name].get("pred")) - with open(path, "w") as f: - f.write(pred) - - def launch_ddp(self): - """ - Initialize Distributed Data Parallel system - """ - mp.set_start_method('fork', force=True) - os.environ['MASTER_ADDR'] = self.ddp_config["address"] - os.environ['MASTER_PORT'] = str(self.ddp_config["port"]) - dist.init_process_group(self.ddp_config["backend"], rank=self.ddp_config["rank"], world_size=self.params["training_params"]["nb_gpu"]) - torch.cuda.set_device(self.ddp_config["rank"]) - random.seed(self.manual_seed) - np.random.seed(self.manual_seed) - torch.manual_seed(self.manual_seed) - torch.cuda.manual_seed(self.manual_seed) - - def merge_ddp_metrics(self, metrics): - """ - Merge metrics when Distributed Data Parallel is used - """ - for metric_name in metrics.keys(): - if metric_name in ["edit_words", "nb_words", "edit_chars", "nb_chars", "edit_chars_force_len", - "edit_chars_curr", "nb_chars_curr", "ids"]: - metrics[metric_name] = self.cat_ddp_metric(metrics[metric_name]) - elif metric_name in ["nb_samples", "loss", "loss_ce", "loss_ctc", "loss_ce_end"]: - metrics[metric_name] = self.sum_ddp_metric(metrics[metric_name], average=False) - return metrics - - def sum_ddp_metric(self, metric, average=False): - """ - Sum metrics for Distributed Data Parallel - """ - sum = torch.tensor(metric[0]).to(self.device) - dist.all_reduce(sum, op=dist.ReduceOp.SUM) - if average: - sum.true_divide(dist.get_world_size()) - return [sum.item(), ] - - def cat_ddp_metric(self, metric): - """ - Concatenate metrics for Distributed Data Parallel - """ - tensor = torch.tensor(metric).unsqueeze(0).to(self.device) - res = [torch.zeros(tensor.size()).long().to(self.device) for _ in range(dist.get_world_size())] - dist.all_gather(res, tensor) - return list(torch.cat(res, dim=0).flatten().cpu().numpy()) - - @staticmethod - def cleanup(): - dist.destroy_process_group() - - def train_batch(self, batch_data, metric_names): - raise NotImplementedError - - def evaluate_batch(self, batch_data, metric_names): - raise NotImplementedError - - def init_curriculum(self): - raise NotImplementedError - - def update_curriculum(self): - raise NotImplementedError - - def add_checkpoint_info(self, load_mode="last", **kwargs): - for filename in os.listdir(self.paths["checkpoints"]): - if load_mode in filename: - checkpoint_path = os.path.join(self.paths["checkpoints"], filename) - checkpoint = torch.load(checkpoint_path) - for key in kwargs.keys(): - checkpoint[key] = kwargs[key] - torch.save(checkpoint, checkpoint_path) - return - self.save_model(self.latest_epoch, "last") - - def load_save_info(self, info_dict): - """ - Load curriculum info from saved model info - """ - if "curriculum_config" in info_dict.keys(): - self.dataset.train_dataset.curriculum_config = info_dict["curriculum_config"] - - def add_save_info(self, info_dict): - """ - Add curriculum info to model info to be saved - """ - info_dict["curriculum_config"] = self.dataset.train_dataset.curriculum_config - return info_dict \ No newline at end of file diff --git a/basic/metric_manager.py b/basic/metric_manager.py deleted file mode 100644 index 6c857686..00000000 --- a/basic/metric_manager.py +++ /dev/null @@ -1,538 +0,0 @@ - -from Datasets.dataset_formatters.rimes_formatter import SEM_MATCHING_TOKENS as RIMES_MATCHING_TOKENS -from Datasets.dataset_formatters.read2016_formatter import SEM_MATCHING_TOKENS as READ_MATCHING_TOKENS -from Datasets.dataset_formatters.simara_formatter import SEM_MATCHING_TOKENS as SIMARA_MATCHING_TOKENS -import re -import networkx as nx -import editdistance -import numpy as np -from dan.post_processing import PostProcessingModuleREAD, PostProcessingModuleRIMES, PostProcessingModuleSIMARA - - -class MetricManager: - - def __init__(self, metric_names, dataset_name): - self.dataset_name = dataset_name - if "READ" in dataset_name and "page" in dataset_name: - self.post_processing_module = PostProcessingModuleREAD - self.matching_tokens = READ_MATCHING_TOKENS - self.edit_and_num_edge_nodes = edit_and_num_items_for_ged_from_str_read - elif "RIMES" in dataset_name and "page" in dataset_name: - self.post_processing_module = PostProcessingModuleRIMES - self.matching_tokens = RIMES_MATCHING_TOKENS - self.edit_and_num_edge_nodes = edit_and_num_items_for_ged_from_str_rimes - elif "simara" in dataset_name and "page" in dataset_name: - self.post_processing_module = PostProcessingModuleSIMARA - self.matching_tokens = SIMARA_MATCHING_TOKENS - self.edit_and_num_edge_nodes = edit_and_num_items_for_ged_from_str_simara - else: - self.matching_tokens = dict() - - self.layout_tokens = "".join(list(self.matching_tokens.keys()) + list(self.matching_tokens.values())) - if len(self.layout_tokens) == 0: - self.layout_tokens = None - self.metric_names = metric_names - self.epoch_metrics = None - - self.linked_metrics = { - "cer": ["edit_chars", "nb_chars"], - "wer": ["edit_words", "nb_words"], - "loer": ["edit_graph", "nb_nodes_and_edges", "nb_pp_op_layout", "nb_gt_layout_token"], - "precision": ["precision", "weights"], - "map_cer_per_class": ["map_cer", ], - "layout_precision_per_class_per_threshold": ["map_cer", ], - } - - self.init_metrics() - - def init_metrics(self): - """ - Initialization of the metrics specified in metrics_name - """ - self.epoch_metrics = { - "nb_samples": list(), - "names": list(), - "ids": list(), - } - - for metric_name in self.metric_names: - if metric_name in self.linked_metrics: - for linked_metric_name in self.linked_metrics[metric_name]: - if linked_metric_name not in self.epoch_metrics.keys(): - self.epoch_metrics[linked_metric_name] = list() - else: - self.epoch_metrics[metric_name] = list() - - def update_metrics(self, batch_metrics): - """ - Add batch metrics to the metrics - """ - for key in batch_metrics.keys(): - if key in self.epoch_metrics: - self.epoch_metrics[key] += batch_metrics[key] - - def get_display_values(self, output=False): - """ - format metrics values for shell display purposes - """ - metric_names = self.metric_names.copy() - if output: - metric_names.extend(["nb_samples"]) - display_values = dict() - for metric_name in metric_names: - value = None - if output: - if metric_name in ["nb_samples", "weights"]: - value = np.sum(self.epoch_metrics[metric_name]) - elif metric_name in ["time", ]: - total_time = np.sum(self.epoch_metrics[metric_name]) - sample_time = total_time / np.sum(self.epoch_metrics["nb_samples"]) - display_values["sample_time"] = round(sample_time, 4) - value = total_time - elif metric_name == "loer": - display_values["pper"] = round(np.sum(self.epoch_metrics["nb_pp_op_layout"]) / np.sum(self.epoch_metrics["nb_gt_layout_token"]), 4) - elif metric_name == "map_cer_per_class": - value = compute_global_mAP_per_class(self.epoch_metrics["map_cer"]) - for key in value.keys(): - display_values["map_cer_" + key] = round(value[key], 4) - continue - elif metric_name == "layout_precision_per_class_per_threshold": - value = compute_global_precision_per_class_per_threshold(self.epoch_metrics["map_cer"]) - for key_class in value.keys(): - for threshold in value[key_class].keys(): - display_values["map_cer_{}_{}".format(key_class, threshold)] = round( - value[key_class][threshold], 4) - continue - if metric_name == "cer": - value = np.sum(self.epoch_metrics["edit_chars"]) / np.sum(self.epoch_metrics["nb_chars"]) - if output: - display_values["nb_chars"] = np.sum(self.epoch_metrics["nb_chars"]) - elif metric_name == "wer": - value = np.sum(self.epoch_metrics["edit_words"]) / np.sum(self.epoch_metrics["nb_words"]) - if output: - display_values["nb_words"] = np.sum(self.epoch_metrics["nb_words"]) - elif metric_name in ["loss", "loss_ctc", "loss_ce", "syn_max_lines"]: - value = np.average(self.epoch_metrics[metric_name], weights=np.array(self.epoch_metrics["nb_samples"])) - elif metric_name == "map_cer": - value = compute_global_mAP(self.epoch_metrics[metric_name]) - elif metric_name == "loer": - value = np.sum(self.epoch_metrics["edit_graph"]) / np.sum(self.epoch_metrics["nb_nodes_and_edges"]) - elif value is None: - continue - - display_values[metric_name] = round(value, 4) - return display_values - - def compute_metrics(self, values, metric_names): - metrics = { - "nb_samples": [values["nb_samples"], ], - } - for v in ["weights", "time"]: - if v in values: - metrics[v] = [values[v]] - for metric_name in metric_names: - if metric_name == "cer": - metrics["edit_chars"] = [edit_cer_from_string(u, v, self.layout_tokens) for u, v in zip(values["str_y"], values["str_x"])] - metrics["nb_chars"] = [nb_chars_cer_from_string(gt, self.layout_tokens) for gt in values["str_y"]] - elif metric_name == "wer": - split_gt = [format_string_for_wer(gt, self.layout_tokens) for gt in values["str_y"]] - split_pred = [format_string_for_wer(pred, self.layout_tokens) for pred in values["str_x"]] - metrics["edit_words"] = [edit_wer_from_formatted_split_text(gt, pred) for (gt, pred) in zip(split_gt, split_pred)] - metrics["nb_words"] = [len(gt) for gt in split_gt] - elif metric_name in ["loss_ctc", "loss_ce", "loss", "syn_max_lines", ]: - metrics[metric_name] = [values[metric_name], ] - elif metric_name == "map_cer": - pp_pred = list() - pp_score = list() - for pred, score in zip(values["str_x"], values["confidence_score"]): - pred_score = self.post_processing_module().post_process(pred, score) - pp_pred.append(pred_score[0]) - pp_score.append(pred_score[1]) - metrics[metric_name] = [compute_layout_mAP_per_class(y, x, conf, self.matching_tokens) for x, conf, y in zip(pp_pred, pp_score, values["str_y"])] - elif metric_name == "loer": - pp_pred = list() - metrics["nb_pp_op_layout"] = list() - for pred in values["str_x"]: - pp_module = self.post_processing_module() - pp_pred.append(pp_module.post_process(pred)) - metrics["nb_pp_op_layout"].append(pp_module.num_op) - metrics["nb_gt_layout_token"] = [len(keep_only_tokens(str_x, self.layout_tokens)) for str_x in values["str_x"]] - edit_and_num_items = [self.edit_and_num_edge_nodes(y, x) for x, y in zip(pp_pred, values["str_y"])] - metrics["edit_graph"], metrics["nb_nodes_and_edges"] = [ei[0] for ei in edit_and_num_items], [ei[1] for ei in edit_and_num_items] - return metrics - - def get(self, name): - return self.epoch_metrics[name] - - -def keep_only_tokens(str, tokens): - """ - Remove all but layout tokens from string - """ - return re.sub('([^' + tokens + '])', '', str) - - -def keep_all_but_tokens(str, tokens): - """ - Remove all layout tokens from string - """ - return re.sub('([' + tokens + '])', '', str) - - -def edit_cer_from_string(gt, pred, layout_tokens=None): - """ - Format and compute edit distance between two strings at character level - """ - gt = format_string_for_cer(gt, layout_tokens) - pred = format_string_for_cer(pred, layout_tokens) - return editdistance.eval(gt, pred) - - -def nb_chars_cer_from_string(gt, layout_tokens=None): - """ - Compute length after formatting of ground truth string - """ - return len(format_string_for_cer(gt, layout_tokens)) - - -def edit_wer_from_string(gt, pred, layout_tokens=None): - """ - Format and compute edit distance between two strings at word level - """ - split_gt = format_string_for_wer(gt, layout_tokens) - split_pred = format_string_for_wer(pred, layout_tokens) - return edit_wer_from_formatted_split_text(split_gt, split_pred) - - -def format_string_for_wer(str, layout_tokens): - """ - Format string for WER computation: remove layout tokens, treat punctuation as word, replace line break by space - """ - str = re.sub('([\[\]{}/\\()\"\'&+*=<>?.;:,!\-—_€#%°])', r' \1 ', str) # punctuation processed as word - if layout_tokens is not None: - str = keep_all_but_tokens(str, layout_tokens) # remove layout tokens from metric - str = re.sub('([ \n])+', " ", str).strip() # keep only one space character - return str.split(" ") - - -def format_string_for_cer(str, layout_tokens): - """ - Format string for CER computation: remove layout tokens and extra spaces - """ - if layout_tokens is not None: - str = keep_all_but_tokens(str, layout_tokens) # remove layout tokens from metric - str = re.sub('([\n])+', "\n", str) # remove consecutive line breaks - str = re.sub('([ ])+', " ", str).strip() # remove consecutive spaces - return str - - -def edit_wer_from_formatted_split_text(gt, pred): - """ - Compute edit distance at word level from formatted string as list - """ - return editdistance.eval(gt, pred) - - -def extract_by_tokens(input_str, begin_token, end_token, associated_score=None, order_by_score=False): - """ - Extract list of text regions by begin and end tokens - Order the list by confidence score - """ - if order_by_score: - assert associated_score is not None - res = list() - for match in re.finditer("{}[^{}]*{}".format(begin_token, end_token, end_token), input_str): - begin, end = match.regs[0] - if order_by_score: - res.append({ - "confidence": np.mean([associated_score[begin], associated_score[end-1]]), - "content": input_str[begin+1:end-1] - }) - else: - res.append(input_str[begin+1:end-1]) - if order_by_score: - res = sorted(res, key=lambda x: x["confidence"], reverse=True) - res = [r["content"] for r in res] - return res - - -def compute_layout_precision_per_threshold(gt, pred, score, begin_token, end_token, layout_tokens, return_weight=True): - """ - Compute average precision of a given class for CER threshold from 5% to 50% with a step of 5% - """ - pred_list = extract_by_tokens(pred, begin_token, end_token, associated_score=score, order_by_score=True) - gt_list = extract_by_tokens(gt, begin_token, end_token) - pred_list = [keep_all_but_tokens(p, layout_tokens) for p in pred_list] - gt_list = [keep_all_but_tokens(gt, layout_tokens) for gt in gt_list] - precision_per_threshold = [compute_layout_AP_for_given_threshold(gt_list, pred_list, threshold/100) for threshold in range(5, 51, 5)] - if return_weight: - return precision_per_threshold, len(gt_list) - return precision_per_threshold - - -def compute_layout_AP_for_given_threshold(gt_list, pred_list, threshold): - """ - Compute average precision of a given class for a given CER threshold - """ - remaining_gt_list = gt_list.copy() - num_true = len(gt_list) - correct = np.zeros((len(pred_list)), dtype=np.bool) - for i, pred in enumerate(pred_list): - if len(remaining_gt_list) == 0: - break - cer_with_gt = [edit_cer_from_string(gt, pred)/nb_chars_cer_from_string(gt) for gt in remaining_gt_list] - cer, ind = np.min(cer_with_gt), np.argmin(cer_with_gt) - if cer <= threshold: - correct[i] = True - del remaining_gt_list[ind] - precision = np.cumsum(correct, dtype=np.int) / np.arange(1, len(pred_list)+1) - recall = np.cumsum(correct, dtype=np.int) / num_true - max_precision_from_recall = np.maximum.accumulate(precision[::-1])[::-1] - recall_diff = (recall - np.concatenate([np.array([0, ]), recall[:-1]])) - P = np.sum(recall_diff * max_precision_from_recall) - return P - - -def compute_layout_mAP_per_class(gt, pred, score, tokens): - """ - Compute the mAP_cer for each class for a given sample - """ - layout_tokens = "".join(list(tokens.keys())) - AP_per_class = dict() - for token in tokens.keys(): - if token in gt: - AP_per_class[token] = compute_layout_precision_per_threshold(gt, pred, score, token, tokens[token], layout_tokens=layout_tokens) - return AP_per_class - - -def compute_global_mAP(list_AP_per_class): - """ - Compute the global mAP_cer for several samples - """ - weights_per_doc = list() - mAP_per_doc = list() - for doc_AP_per_class in list_AP_per_class: - APs = np.array([np.mean(doc_AP_per_class[key][0]) for key in doc_AP_per_class.keys()]) - weights = np.array([doc_AP_per_class[key][1] for key in doc_AP_per_class.keys()]) - if np.sum(weights) == 0: - mAP_per_doc.append(0) - else: - mAP_per_doc.append(np.average(APs, weights=weights)) - weights_per_doc.append(np.sum(weights)) - if np.sum(weights_per_doc) == 0: - return 0 - return np.average(mAP_per_doc, weights=weights_per_doc) - - -def compute_global_mAP_per_class(list_AP_per_class): - """ - Compute the mAP_cer per class for several samples - """ - mAP_per_class = dict() - for doc_AP_per_class in list_AP_per_class: - for key in doc_AP_per_class.keys(): - if key not in mAP_per_class: - mAP_per_class[key] = { - "AP": list(), - "weights": list() - } - mAP_per_class[key]["AP"].append(np.mean(doc_AP_per_class[key][0])) - mAP_per_class[key]["weights"].append(doc_AP_per_class[key][1]) - for key in mAP_per_class.keys(): - mAP_per_class[key] = np.average(mAP_per_class[key]["AP"], weights=mAP_per_class[key]["weights"]) - return mAP_per_class - - -def compute_global_precision_per_class_per_threshold(list_AP_per_class): - """ - Compute the mAP_cer per class and per threshold for several samples - """ - mAP_per_class = dict() - for doc_AP_per_class in list_AP_per_class: - for key in doc_AP_per_class.keys(): - if key not in mAP_per_class: - mAP_per_class[key] = dict() - for threshold in range(5, 51, 5): - mAP_per_class[key][threshold] = { - "precision": list(), - "weights": list() - } - for i, threshold in enumerate(range(5, 51, 5)): - mAP_per_class[key][threshold]["precision"].append(np.mean(doc_AP_per_class[key][0][i])) - mAP_per_class[key][threshold]["weights"].append(doc_AP_per_class[key][1]) - for key_class in mAP_per_class.keys(): - for threshold in mAP_per_class[key_class]: - mAP_per_class[key_class][threshold] = np.average(mAP_per_class[key_class][threshold]["precision"], weights=mAP_per_class[key_class][threshold]["weights"]) - return mAP_per_class - - -def str_to_graph_read(str): - """ - Compute graph from string of layout tokens for the READ 2016 dataset at single-page and double-page levels - """ - begin_layout_tokens = "".join(list(READ_MATCHING_TOKENS.keys())) - layout_token_sequence = keep_only_tokens(str, begin_layout_tokens) - g = nx.DiGraph() - g.add_node("D", type="document", level=4, page=0) - num = { - "â“Ÿ": 0, - "â“": 0, - "â“‘": 0, - "â“": 0, - "â“¢": 0 - } - previous_top_level_node = None - previous_middle_level_node = None - previous_low_level_node = None - for ind, c in enumerate(layout_token_sequence): - num[c] += 1 - if c == "â“Ÿ": - node_name = "P_{}".format(num[c]) - g.add_node(node_name, type="page", level=3, page=num["â“Ÿ"]) - g.add_edge("D", node_name) - if previous_top_level_node: - g.add_edge(previous_top_level_node, node_name) - previous_top_level_node = node_name - previous_middle_level_node = None - previous_low_level_node = None - if c in "â“â“¢": - node_name = "{}_{}".format("N" if c == "â“" else "S", num[c]) - g.add_node(node_name, type="number" if c == "â“" else "section", level=2, page=num["â“Ÿ"]) - g.add_edge(previous_top_level_node, node_name) - if previous_middle_level_node: - g.add_edge(previous_middle_level_node, node_name) - previous_middle_level_node = node_name - previous_low_level_node = None - if c in "â“â“‘": - node_name = "{}_{}".format("A" if c == "â“" else "B", num[c]) - g.add_node(node_name, type="annotation" if c == "â“" else "body", level=1, page=num["â“Ÿ"]) - g.add_edge(previous_middle_level_node, node_name) - if previous_low_level_node: - g.add_edge(previous_low_level_node, node_name) - previous_low_level_node = node_name - return g - - -def str_to_graph_rimes(str): - """ - Compute graph from string of layout tokens for the RIMES dataset at page level - """ - begin_layout_tokens = "".join(list(RIMES_MATCHING_TOKENS.keys())) - layout_token_sequence = keep_only_tokens(str, begin_layout_tokens) - g = nx.DiGraph() - g.add_node("D", type="document", level=2, page=0) - token_name_dict = { - "â“‘": "B", - "â“ž": "O", - "â“¡": "R", - "â“¢": "S", - "ⓦ": "W", - "ⓨ": "Y", - "â“Ÿ": "P" - } - num = dict() - previous_node = None - for token in begin_layout_tokens: - num[token] = 0 - for ind, c in enumerate(layout_token_sequence): - num[c] += 1 - node_name = "{}_{}".format(token_name_dict[c], num[c]) - g.add_node(node_name, type=token_name_dict[c], level=1, page=0) - g.add_edge("D", node_name) - if previous_node: - g.add_edge(previous_node, node_name) - previous_node = node_name - return g - - -def str_to_graph_simara(str): - """ - Compute graph from string of layout tokens for the SIMARA dataset at page level - """ - begin_layout_tokens = "".join(list(SIMARA_MATCHING_TOKENS.keys())) - layout_token_sequence = keep_only_tokens(str, begin_layout_tokens) - g = nx.DiGraph() - g.add_node("D", type="document", level=2, page=0) - token_name_dict = { - "ⓘ": "I", - "â““": "D", - "â“¢": "S", - "â“’": "C", - "â“Ÿ": "P", - "â“": "A" - } - num = dict() - previous_node = None - for token in begin_layout_tokens: - num[token] = 0 - for ind, c in enumerate(layout_token_sequence): - num[c] += 1 - node_name = "{}_{}".format(token_name_dict[c], num[c]) - g.add_node(node_name, type=token_name_dict[c], level=1, page=0) - g.add_edge("D", node_name) - if previous_node: - g.add_edge(previous_node, node_name) - previous_node = node_name - return g - - -def graph_edit_distance_by_page_read(g1, g2): - """ - Compute graph edit distance page by page for the READ 2016 dataset - """ - num_pages_g1 = len([n for n in g1.nodes().items() if n[1]["level"] == 3]) - num_pages_g2 = len([n for n in g2.nodes().items() if n[1]["level"] == 3]) - page_graphs_1 = [g1.subgraph([n[0] for n in g1.nodes().items() if n[1]["page"] == num_page]) for num_page in range(1, num_pages_g1+1)] - page_graphs_2 = [g2.subgraph([n[0] for n in g2.nodes().items() if n[1]["page"] == num_page]) for num_page in range(1, num_pages_g2+1)] - edit = 0 - for i in range(max(len(page_graphs_1), len(page_graphs_2))): - page_1 = page_graphs_1[i] if i < len(page_graphs_1) else nx.DiGraph() - page_2 = page_graphs_2[i] if i < len(page_graphs_2) else nx.DiGraph() - edit += graph_edit_distance(page_1, page_2) - return edit - - -def graph_edit_distance(g1, g2): - """ - Compute graph edit distance between two graphs - """ - for v in nx.optimize_graph_edit_distance(g1, g2, - node_ins_cost=lambda node: 1, - node_del_cost=lambda node: 1, - node_subst_cost=lambda node1, node2: 0 if node1["type"] == node2["type"] else 1, - edge_ins_cost=lambda edge: 1, - edge_del_cost=lambda edge: 1, - edge_subst_cost=lambda edge1, edge2: 0 if edge1 == edge2 else 1 - ): - new_edit = v - return new_edit - - -def edit_and_num_items_for_ged_from_str_read(str_gt, str_pred): - """ - Compute graph edit distance and num nodes/edges for normalized graph edit distance - For the READ 2016 dataset - """ - g_gt = str_to_graph_read(str_gt) - g_pred = str_to_graph_read(str_pred) - return graph_edit_distance_by_page_read(g_gt, g_pred), g_gt.number_of_nodes() + g_gt.number_of_edges() - - -def edit_and_num_items_for_ged_from_str_rimes(str_gt, str_pred): - """ - Compute graph edit distance and num nodes/edges for normalized graph edit distance - For the RIMES dataset - """ - g_gt = str_to_graph_rimes(str_gt) - g_pred = str_to_graph_rimes(str_pred) - return graph_edit_distance(g_gt, g_pred), g_gt.number_of_nodes() + g_gt.number_of_edges() - - -def edit_and_num_items_for_ged_from_str_simara(str_gt, str_pred): - """ - Compute graph edit distance and num nodes/edges for normalized graph edit distance - For the SIMARA dataset - """ - g_gt = str_to_graph_simara(str_gt) - g_pred = str_to_graph_simara(str_pred) - return graph_edit_distance(g_gt, g_pred), g_gt.number_of_nodes() + g_gt.number_of_edges() diff --git a/basic/scheduler.py b/basic/scheduler.py deleted file mode 100644 index 6c875c1d..00000000 --- a/basic/scheduler.py +++ /dev/null @@ -1,51 +0,0 @@ - -from torch.nn import Dropout, Dropout2d -import numpy as np - - -class DropoutScheduler: - - def __init__(self, models, function, T=1e5): - """ - T: number of gradient updates to converge - """ - - self.teta_list = list() - self.init_teta_list(models) - self.function = function - self.T = T - self.step_num = 0 - - def step(self): - self.step(1) - - def step(self, num): - self.step_num += num - - def init_teta_list(self, models): - for model_name in models.keys(): - self.init_teta_list_module(models[model_name]) - - def init_teta_list_module(self, module): - for child in module.children(): - if isinstance(child, Dropout) or isinstance(child, Dropout2d): - self.teta_list.append([child, child.p]) - else: - self.init_teta_list_module(child) - - def update_dropout_rate(self): - for (module, p) in self.teta_list: - module.p = self.function(p, self.step_num, self.T) - - -def exponential_dropout_scheduler(dropout_rate, step, max_step): - return dropout_rate * (1 - np.exp(-10 * step / max_step)) - - -def exponential_scheduler(init_value, end_value, step, max_step): - step = min(step, max_step-1) - return init_value - (init_value - end_value) * (1 - np.exp(-10*step/max_step)) - - -def linear_scheduler(init_value, end_value, step, max_step): - return init_value + step * (end_value - init_value) / max_step \ No newline at end of file diff --git a/basic/transforms.py b/basic/transforms.py deleted file mode 100644 index 18c8084d..00000000 --- a/basic/transforms.py +++ /dev/null @@ -1,438 +0,0 @@ - -import numpy as np -from numpy import random -from PIL import Image, ImageOps -from cv2 import erode, dilate, normalize -import cv2 -import math -from basic.utils import randint, rand_uniform, rand -from torchvision.transforms import RandomPerspective, RandomCrop, ColorJitter, GaussianBlur, RandomRotation -from torchvision.transforms.functional import InterpolationMode - -""" -Each transform class defined here takes as input a PIL Image and returns the modified PIL Image -""" - - -class SignFlipping: - """ - Color inversion - """ - - def __init__(self): - pass - - def __call__(self, x): - return ImageOps.invert(x) - - -class DPIAdjusting: - """ - Resolution modification - """ - - def __init__(self, factor, preserve_ratio): - self.factor = factor - - def __call__(self, x): - w, h = x.size - return x.resize((int(np.ceil(w * self.factor)), int(np.ceil(h * self.factor))), Image.BILINEAR) - - -class Dilation: - """ - OCR: stroke width increasing - """ - - def __init__(self, kernel, iterations): - self.kernel = np.ones(kernel, np.uint8) - self.iterations = iterations - - def __call__(self, x): - return Image.fromarray(dilate(np.array(x), self.kernel, iterations=self.iterations)) - - -class Erosion: - """ - OCR: stroke width decreasing - """ - - def __init__(self, kernel, iterations): - self.kernel = np.ones(kernel, np.uint8) - self.iterations = iterations - - def __call__(self, x): - return Image.fromarray(erode(np.array(x), self.kernel, iterations=self.iterations)) - - -class GaussianNoise: - """ - Add Gaussian Noise - """ - - def __init__(self, std): - self.std = std - - def __call__(self, x): - x_np = np.array(x) - mean, std = np.mean(x_np), np.std(x_np) - std = math.copysign(max(abs(std), 0.000001), std) - min_, max_ = np.min(x_np,), np.max(x_np) - normal_noise = np.random.randn(*x_np.shape) - if len(x_np.shape) == 3 and x_np.shape[2] == 3 and np.all(x_np[:, :, 0] == x_np[:, :, 1]) and np.all(x_np[:, :, 0] == x_np[:, :, 2]): - normal_noise[:, :, 1] = normal_noise[:, :, 2] = normal_noise[:, :, 0] - x_np = ((x_np-mean)/std + normal_noise*self.std) * std + mean - x_np = normalize(x_np, x_np, max_, min_, cv2.NORM_MINMAX) - - return Image.fromarray(x_np.astype(np.uint8)) - - -class Sharpen: - """ - Add Gaussian Noise - """ - - def __init__(self, alpha, strength): - self.alpha = alpha - self.strength = strength - - def __call__(self, x): - x_np = np.array(x) - id_matrix = np.array([[0, 0, 0], - [0, 1, 0], - [0, 0, 0]] - ) - effect_matrix = np.array([[1, 1, 1], - [1, -(8+self.strength), 1], - [1, 1, 1]] - ) - kernel = (1 - self.alpha) * id_matrix - self.alpha * effect_matrix - kernel = np.expand_dims(kernel, axis=2) - kernel = np.concatenate([kernel, kernel, kernel], axis=2) - sharpened = cv2.filter2D(x_np, -1, kernel=kernel[:, :, 0]) - return Image.fromarray(sharpened.astype(np.uint8)) - - -class ZoomRatio: - """ - Crop by ratio - Preserve dimensions if keep_dim = True (= zoom) - """ - - def __init__(self, ratio_h, ratio_w, keep_dim=True): - self.ratio_w = ratio_w - self.ratio_h = ratio_h - self.keep_dim = keep_dim - - def __call__(self, x): - w, h = x.size - x = RandomCrop((int(h * self.ratio_h), int(w * self.ratio_w)))(x) - if self.keep_dim: - x = x.resize((w, h), Image.BILINEAR) - return x - - -class ElasticDistortion: - - def __init__(self, kernel_size=(7, 7), sigma=5, alpha=1): - - self.kernel_size = kernel_size - self.sigma = sigma - self.alpha = alpha - - def __call__(self, x): - x_np = np.array(x) - - h, w = x_np.shape[:2] - - dx = np.random.uniform(-1, 1, (h, w)) - dy = np.random.uniform(-1, 1, (h, w)) - - x_gauss = cv2.GaussianBlur(dx, self.kernel_size, self.sigma) - y_gauss = cv2.GaussianBlur(dy, self.kernel_size, self.sigma) - - n = np.sqrt(x_gauss**2 + y_gauss**2) - - nd_x = self.alpha * x_gauss / n - nd_y = self.alpha * y_gauss / n - - ind_y, ind_x = np.indices((h, w), dtype=np.float32) - - map_x = nd_x + ind_x - map_x = map_x.reshape(h, w).astype(np.float32) - map_y = nd_y + ind_y - map_y = map_y.reshape(h, w).astype(np.float32) - - dst = cv2.remap(x_np, map_x, map_y, cv2.INTER_LINEAR) - return Image.fromarray(dst.astype(np.uint8)) - - -class Tightening: - """ - Reduce interline spacing - """ - - def __init__(self, color=255, remove_proba=0.75): - self.color = color - self.remove_proba = remove_proba - - def __call__(self, x): - x_np = np.array(x) - interline_indices = [np.all(line == 255) for line in x_np] - indices_to_removed = np.logical_and(np.random.choice([True, False], size=len(x_np), replace=True, p=[self.remove_proba, 1-self.remove_proba]), interline_indices) - new_x = x_np[np.logical_not(indices_to_removed)] - return Image.fromarray(new_x.astype(np.uint8)) - - -def get_list_augmenters(img, aug_configs, fill_value): - """ - Randomly select a list of data augmentation techniques to used based on aug_configs - """ - augmenters = list() - for aug_config in aug_configs: - if rand() > aug_config["proba"]: - continue - if aug_config["type"] == "dpi": - valid_factor = False - while not valid_factor: - factor = rand_uniform(aug_config["min_factor"], aug_config["max_factor"]) - valid_factor = not (("max_width" in aug_config and factor*img.size[0] > aug_config["max_width"]) or \ - ("max_height" in aug_config and factor * img.size[1] > aug_config["max_height"]) or \ - ("min_width" in aug_config and factor*img.size[0] < aug_config["min_width"]) or \ - ("min_height" in aug_config and factor * img.size[1] < aug_config["min_height"])) - augmenters.append(DPIAdjusting(factor, preserve_ratio=aug_config["preserve_ratio"])) - - elif aug_config["type"] == "zoom_ratio": - ratio_h = rand_uniform(aug_config["min_ratio_h"], aug_config["max_ratio_h"]) - ratio_w = rand_uniform(aug_config["min_ratio_w"], aug_config["max_ratio_w"]) - augmenters.append(ZoomRatio(ratio_h=ratio_h, ratio_w=ratio_w, keep_dim=aug_config["keep_dim"])) - - elif aug_config["type"] == "perspective": - scale = rand_uniform(aug_config["min_factor"], aug_config["max_factor"]) - augmenters.append(RandomPerspective(distortion_scale=scale, p=1, interpolation=InterpolationMode.BILINEAR, fill=fill_value)) - - elif aug_config["type"] == "elastic_distortion": - kernel_size = randint(aug_config["min_kernel_size"], aug_config["max_kernel_size"]) // 2 * 2 + 1 - sigma = rand_uniform(aug_config["min_sigma"], aug_config["max_sigma"]) - alpha= rand_uniform(aug_config["min_alpha"], aug_config["max_alpha"]) - augmenters.append(ElasticDistortion(kernel_size=(kernel_size, kernel_size), sigma=sigma, alpha=alpha)) - - elif aug_config["type"] == "dilation_erosion": - kernel_h = randint(aug_config["min_kernel"], aug_config["max_kernel"] + 1) - kernel_w = randint(aug_config["min_kernel"], aug_config["max_kernel"] + 1) - if randint(0, 2) == 0: - augmenters.append(Erosion((kernel_w, kernel_h), aug_config["iterations"])) - else: - augmenters.append(Dilation((kernel_w, kernel_h), aug_config["iterations"])) - - elif aug_config["type"] == "color_jittering": - augmenters.append(ColorJitter(contrast=aug_config["factor_contrast"], - brightness=aug_config["factor_brightness"], - saturation=aug_config["factor_saturation"], - hue=aug_config["factor_hue"], - )) - - elif aug_config["type"] == "gaussian_blur": - max_kernel_h = min(aug_config["max_kernel"], img.size[1]) - max_kernel_w = min(aug_config["max_kernel"], img.size[0]) - kernel_h = randint(aug_config["min_kernel"], max_kernel_h + 1) // 2 * 2 + 1 - kernel_w = randint(aug_config["min_kernel"], max_kernel_w + 1) // 2 * 2 + 1 - sigma = rand_uniform(aug_config["min_sigma"], aug_config["max_sigma"]) - augmenters.append(GaussianBlur(kernel_size=(kernel_w, kernel_h), sigma=sigma)) - - elif aug_config["type"] == "gaussian_noise": - augmenters.append(GaussianNoise(std=aug_config["std"])) - - elif aug_config["type"] == "sharpen": - alpha = rand_uniform(aug_config["min_alpha"], aug_config["max_alpha"]) - strength = rand_uniform(aug_config["min_strength"], aug_config["max_strength"]) - augmenters.append(Sharpen(alpha=alpha, strength=strength)) - - else: - print("Error - unknown augmentor: {}".format(aug_config["type"])) - exit(-1) - - return augmenters - - -def apply_data_augmentation(img, da_config): - """ - Apply data augmentation strategy on input image - """ - applied_da = list() - if da_config["proba"] != 1 and rand() > da_config["proba"]: - return img, applied_da - - # Convert to PIL Image - img = img[:, :, 0] if img.shape[2] == 1 else img - img = Image.fromarray(img) - - fill_value = da_config["fill_value"] if "fill_value" in da_config else 255 - augmenters = get_list_augmenters(img, da_config["augmentations"], fill_value=fill_value) - if da_config["order"] == "random": - random.shuffle(augmenters) - - for augmenter in augmenters: - img = augmenter(img) - applied_da.append(type(augmenter).__name__) - - # convert to numpy array - img = np.array(img) - img = np.expand_dims(img, axis=2) if len(img.shape) == 2 else img - return img, applied_da - - -def apply_transform(img, transform): - """ - Apply data augmentation technique on input image - """ - img = img[:, :, 0] if img.shape[2] == 1 else img - img = Image.fromarray(img) - img = transform(img) - img = np.array(img) - return np.expand_dims(img, axis=2) if len(img.shape) == 2 else img - - -def line_aug_config(proba_use_da, p): - return { - "order": "random", - "proba": proba_use_da, - "augmentations": [ - { - "type": "dpi", - "proba": p, - "min_factor": 0.5, - "max_factor": 1.5, - "preserve_ratio": True, - }, - { - "type": "perspective", - "proba": p, - "min_factor": 0, - "max_factor": 0.4, - }, - { - "type": "elastic_distortion", - "proba": p, - "min_alpha": 0.5, - "max_alpha": 1, - "min_sigma": 1, - "max_sigma": 10, - "min_kernel_size": 3, - "max_kernel_size": 9, - }, - { - "type": "dilation_erosion", - "proba": p, - "min_kernel": 1, - "max_kernel": 3, - "iterations": 1, - }, - { - "type": "color_jittering", - "proba": p, - "factor_hue": 0.2, - "factor_brightness": 0.4, - "factor_contrast": 0.4, - "factor_saturation": 0.4, - }, - { - "type": "gaussian_blur", - "proba": p, - "min_kernel": 3, - "max_kernel": 5, - "min_sigma": 3, - "max_sigma": 5, - }, - { - "type": "gaussian_noise", - "proba": p, - "std": 0.5, - }, - { - "type": "sharpen", - "proba": p, - "min_alpha": 0, - "max_alpha": 1, - "min_strength": 0, - "max_strength": 1, - }, - { - "type": "zoom_ratio", - "proba": p, - "min_ratio_h": 0.8, - "max_ratio_h": 1, - "min_ratio_w": 0.99, - "max_ratio_w": 1, - "keep_dim": True - }, - ] - } - - -def aug_config(proba_use_da, p): - return { - "order": "random", - "proba": proba_use_da, - "augmentations": [ - { - "type": "dpi", - "proba": p, - "min_factor": 0.75, - "max_factor": 1, - "preserve_ratio": True, - }, - { - "type": "perspective", - "proba": p, - "min_factor": 0, - "max_factor": 0.4, - }, - { - "type": "elastic_distortion", - "proba": p, - "min_alpha": 0.5, - "max_alpha": 1, - "min_sigma": 1, - "max_sigma": 10, - "min_kernel_size": 3, - "max_kernel_size": 9, - }, - { - "type": "dilation_erosion", - "proba": p, - "min_kernel": 1, - "max_kernel": 3, - "iterations": 1, - }, - { - "type": "color_jittering", - "proba": p, - "factor_hue": 0.2, - "factor_brightness": 0.4, - "factor_contrast": 0.4, - "factor_saturation": 0.4, - }, - { - "type": "gaussian_blur", - "proba": p, - "min_kernel": 3, - "max_kernel": 5, - "min_sigma": 3, - "max_sigma": 5, - }, - { - "type": "gaussian_noise", - "proba": p, - "std": 0.5, - }, - { - "type": "sharpen", - "proba": p, - "min_alpha": 0, - "max_alpha": 1, - "min_strength": 0, - "max_strength": 1, - }, - ] - } diff --git a/basic/utils.py b/basic/utils.py deleted file mode 100644 index ac50e57a..00000000 --- a/basic/utils.py +++ /dev/null @@ -1,179 +0,0 @@ - - -import numpy as np -import torch -from torch.distributions.uniform import Uniform -import cv2 - - -def randint(low, high): - """ - call torch.randint to preserve random among dataloader workers - """ - return int(torch.randint(low, high, (1, ))) - - -def rand(): - """ - call torch.rand to preserve random among dataloader workers - """ - return float(torch.rand((1, ))) - - -def rand_uniform(low, high): - """ - call torch uniform to preserve random among dataloader workers - """ - return float(Uniform(low, high).sample()) - - -def pad_sequences_1D(data, padding_value): - """ - Pad data with padding_value to get same length - """ - x_lengths = [len(x) for x in data] - longest_x = max(x_lengths) - padded_data = np.ones((len(data), longest_x)).astype(np.int32) * padding_value - for i, x_len in enumerate(x_lengths): - padded_data[i, :x_len] = data[i][:x_len] - return padded_data - - -def resize_max(img, max_width=None, max_height=None): - if max_width is not None and img.shape[1] > max_width: - ratio = max_width / img.shape[1] - new_h = int(np.floor(ratio * img.shape[0])) - new_w = int(np.floor(ratio * img.shape[1])) - img = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR) - if max_height is not None and img.shape[0] > max_height: - ratio = max_height / img.shape[0] - new_h = int(np.floor(ratio * img.shape[0])) - new_w = int(np.floor(ratio * img.shape[1])) - img = cv2.resize(img, (new_w, new_h), interpolation=cv2.INTER_LINEAR) - return img - - -def pad_images(data, padding_value, padding_mode="br"): - """ - data: list of numpy array - mode: "br"/"tl"/"random" (bottom-right, top-left, random) - """ - x_lengths = [x.shape[0] for x in data] - y_lengths = [x.shape[1] for x in data] - longest_x = max(x_lengths) - longest_y = max(y_lengths) - padded_data = np.ones((len(data), longest_x, longest_y, data[0].shape[2])) * padding_value - for i, xy_len in enumerate(zip(x_lengths, y_lengths)): - x_len, y_len = xy_len - if padding_mode == "br": - padded_data[i, :x_len, :y_len, ...] = data[i] - elif padding_mode == "tl": - padded_data[i, -x_len:, -y_len:, ...] = data[i] - elif padding_mode == "random": - xmax = longest_x - x_len - ymax = longest_y - y_len - xi = randint(0, xmax) if xmax >= 1 else 0 - yi = randint(0, ymax) if ymax >= 1 else 0 - padded_data[i, xi:xi+x_len, yi:yi+y_len, ...] = data[i] - else: - raise NotImplementedError("Undefined padding mode: {}".format(padding_mode)) - return padded_data - - -def pad_image(image, padding_value, new_height=None, new_width=None, pad_width=None, pad_height=None, padding_mode="br", return_position=False): - """ - data: list of numpy array - mode: "br"/"tl"/"random" (bottom-right, top-left, random) - """ - if pad_width is not None and new_width is not None: - raise NotImplementedError("pad_with and new_width are not compatible") - if pad_height is not None and new_height is not None: - raise NotImplementedError("pad_height and new_height are not compatible") - - h, w, c = image.shape - pad_width = pad_width if pad_width is not None else max(0, new_width - w) if new_width is not None else 0 - pad_height = pad_height if pad_height is not None else max(0, new_height - h) if new_height is not None else 0 - - if not (pad_width == 0 and pad_height == 0): - padded_image = np.ones((h+pad_height, w+pad_width, c)) * padding_value - if padding_mode == "br": - hi, wi = 0, 0 - elif padding_mode == "tl": - hi, wi = pad_height, pad_width - elif padding_mode == "random": - hi = randint(0, pad_height) if pad_height >= 1 else 0 - wi = randint(0, pad_width) if pad_width >= 1 else 0 - else: - raise NotImplementedError("Undefined padding mode: {}".format(padding_mode)) - padded_image[hi:hi + h, wi:wi + w, ...] = image - output = padded_image - else: - hi, wi = 0, 0 - output = image - - if return_position: - return output, [[hi, hi+h], [wi, wi+w]] - return output - - -def pad_image_width_right(img, new_width, padding_value): - """ - Pad img to right side with padding value to reach new_width as width - """ - h, w, c = img.shape - pad_width = max((new_width - w), 0) - pad_right = np.ones((h, pad_width, c), dtype=img.dtype) * padding_value - img = np.concatenate([img, pad_right], axis=1) - return img - - -def pad_image_width_left(img, new_width, padding_value): - """ - Pad img to left side with padding value to reach new_width as width - """ - h, w, c = img.shape - pad_width = max((new_width - w), 0) - pad_left = np.ones((h, pad_width, c), dtype=img.dtype) * padding_value - img = np.concatenate([pad_left, img], axis=1) - return img - - -def pad_image_width_random(img, new_width, padding_value, max_pad_left_ratio=1): - """ - Randomly pad img to left and right sides with padding value to reach new_width as width - """ - h, w, c = img.shape - pad_width = max((new_width - w), 0) - max_pad_left = int(max_pad_left_ratio*pad_width) - pad_left = randint(0, min(pad_width, max_pad_left)) if pad_width != 0 and max_pad_left > 0 else 0 - pad_right = pad_width - pad_left - pad_left = np.ones((h, pad_left, c), dtype=img.dtype) * padding_value - pad_right = np.ones((h, pad_right, c), dtype=img.dtype) * padding_value - img = np.concatenate([pad_left, img, pad_right], axis=1) - return img - - -def pad_image_height_random(img, new_height, padding_value, max_pad_top_ratio=1): - """ - Randomly pad img top and bottom sides with padding value to reach new_width as width - """ - h, w, c = img.shape - pad_height = max((new_height - h), 0) - max_pad_top = int(max_pad_top_ratio*pad_height) - pad_top = randint(0, min(pad_height, max_pad_top)) if pad_height != 0 and max_pad_top > 0 else 0 - pad_bottom = pad_height - pad_top - pad_top = np.ones((pad_top, w, c), dtype=img.dtype) * padding_value - pad_bottom = np.ones((pad_bottom, w, c), dtype=img.dtype) * padding_value - img = np.concatenate([pad_top, img, pad_bottom], axis=0) - return img - - -def pad_image_height_bottom(img, new_height, padding_value): - """ - Pad img to bottom side with padding value to reach new_height as height - """ - h, w, c = img.shape - pad_height = max((new_height - h), 0) - pad_bottom = np.ones((pad_height, w, c)) * padding_value - img = np.concatenate([img, pad_bottom], axis=0) - return img diff --git a/prediction-requirements.txt b/prediction-requirements.txt index 1fe32d37..86bfaeb8 100644 --- a/prediction-requirements.txt +++ b/prediction-requirements.txt @@ -1,4 +1,8 @@ -numpy==1.22.3 -opencv-python==4.5.5.64 -PyYAML==6.0 -torch==1.11.0 +arkindex-client==1.0.11 +editdistance==0.6.0 +fontTools==4.29.1 +imageio==2.16.0 +networkx==2.6.3 +tensorboard==0.2.1 +torchvision==0.12.0 +tqdm==4.62.3 diff --git a/requirements.txt b/requirements.txt index 06c48356..1fe32d37 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,81 +1,4 @@ -absl-py==1.0.0 -backports.cached-property==1.0.1 -cachetools==5.0.0 -certifi==2021.10.8 -charset-normalizer==2.0.12 -click==8.0.4 -click-default-group==1.2.2 -cloup==0.7.1 -colorama==0.4.4 -colour==0.1.5 -commonmark==0.9.1 -cycler==0.11.0 -decorator==5.1.1 -EasyProcess==1.1 -editdistance==0.6.0 -entrypoint2==1.0 -fonttools==4.29.1 -glcontext==2.3.4 -google-auth==2.6.0 -google-auth-oauthlib==0.4.6 -grpcio==1.44.0 -idna==3.3 -imageio==2.16.0 -importlib-metadata==4.11.1 -isosurfaces==0.1.0 -joblib==1.1.0 -kiwisolver==1.3.2 -manim==0.15.0 -manimlib==0.2.0 -ManimPango==0.4.0.post2 -mapbox-earcut==0.12.11 -Markdown==3.3.6 -masked-norm==0.0.0 -matplotlib==3.5.1 -moderngl==5.6.4 -moderngl-window==2.4.1 -multipledispatch==0.6.0 -networkx==2.6.3 -numpy==1.22.2 -oauthlib==3.2.0 -opencv-python==4.5.5.62 -packaging==21.3 -Pillow==9.0.1 -pkg_resources==0.0.0 -progressbar==2.5 -protobuf==3.19.4 -pyasn1==0.4.8 -pyasn1-modules==0.2.8 -pycairo==1.20.1 -pydub==0.25.1 -pyglet==1.5.21 -Pygments==2.11.2 -pyparsing==3.0.7 -pyrr==0.10.3 -python-dateutil==2.8.2 -pyunpack==0.2.2 -PyWavelets==1.2.0 -requests==2.27.1 -requests-oauthlib==1.3.1 -rich==11.2.0 -rsa==4.8 -scikit-image==0.19.2 -scikit-learn==1.0.2 -scipy==1.8.0 -screeninfo==0.8 -six==1.16.0 -skia-pathops==0.7.2 -srt==3.5.1 -tensorboard==2.8.0 -tensorboard-data-server==0.6.1 -tensorboard-plugin-wit==1.8.1 -threadpoolctl==3.1.0 -tifffile==2022.2.9 -torch==1.8.1 -torchvision==0.9.1 -tqdm==4.62.3 -typing_extensions==4.1.1 -urllib3==1.26.8 -watchdog==2.1.6 -Werkzeug==2.0.3 -zipp==3.7.0 +numpy==1.22.3 +opencv-python==4.5.5.64 +PyYAML==6.0 +torch==1.11.0 diff --git a/setup.py b/setup.py index bb764858..a0002964 100755 --- a/setup.py +++ b/setup.py @@ -6,8 +6,8 @@ from pathlib import Path from setuptools import find_packages, setup -def parse_requirements(): - path = Path(__file__).parent.resolve() / "prediction-requirements.txt" +def parse_requirements(filename): + path = Path(__file__).parent.resolve() / filename assert path.exists(), f"Missing requirements: {path}" return list(map(str.strip, path.read_text().splitlines())) @@ -21,6 +21,12 @@ setup( author="Teklia", author_email="contact@teklia.com", url="https://gitlab.com/teklia/dan", - install_requires=parse_requirements(), + install_requires=parse_requirements("requirements.txt"), packages=find_packages(), + entry_points={ + "console_scripts": [ + "teklia-dan=dan.cli:main", + ] + }, + extras_require={"predict": parse_requirements("prediction-requirements.txt")}, ) diff --git a/visual.png b/visual.png deleted file mode 100644 index e228e7924cb2760dc61636651b525ef5359408c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134135 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�n~r1G1pafPkYQ)C4Da(XywGWJNM2x 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 a_T^Qa=cNaU{##!p#G$IFr2u+w74|=%6YoF( diff --git a/visual_slanted_lines.png b/visual_slanted_lines.png deleted file mode 100644 index 478af3ac1eb40316bbb1f0e7400f592b0d31ec70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213318 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%0AokjbT0)@mm8(9SVfd5aCWuCzw#6gK%or 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�K3n{wKWD{CkF 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%0Dfr9r<)k8JJc;8Dk_m5>&EaN{oOab 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 -- GitLab