def create_new_model(cls, book: DatabaseBook, id: Optional[str] = None) -> Model: import datetime id = id if id else str(uuid.uuid4()) time = datetime.datetime.now() models = ModelsId.from_external(book.book, cls.type()) return Model(MetaId(models, time.strftime("%Y-%m-%dT%H:%M:%S")), ModelMeta(id, time, style=book.get_meta().notationStyle))
def op_to_task_runner(operation: str, book: DatabaseBook, body: dict) -> TaskRunner: from omr.steps.algorithmtypes import AlgorithmTypes for at in AlgorithmTypes: if at.value == operation: from restapi.operationworker.taskrunners.taskrunnerprediction import TaskRunnerPrediction, AlgorithmPredictorParams, Settings r = AlgorithmRequest.from_dict(body) meta = book.get_meta() meta.algorithmPredictorParams[at] = r.params return TaskRunnerPrediction(at, PageSelection.from_params(r.selection, book), Settings(meta.algorithm_predictor_params(at), store_to_pcgts=r.store_to_pcgts) ) # check if operation is linked to a task if operation == 'train_symbols': from restapi.operationworker.taskrunners.taskrunnersymboldetectiontrainer import TaskRunnerSymbolDetectionTrainer, TaskTrainerParams return TaskRunnerSymbolDetectionTrainer(book, TaskTrainerParams.from_dict(body.get('trainParams', {}))) elif operation == 'train_staff_line_detector': from restapi.operationworker.taskrunners.taskrunnertrainer import TaskRunnerTrainer, TaskTrainerParams return TaskRunnerTrainer(book, TaskTrainerParams.from_dict(body.get('trainParams', {})), AlgorithmTypes.STAFF_LINES_PC) elif operation == 'train_character_recognition': from restapi.operationworker.taskrunners.taskrunnertrainer import TaskRunnerTrainer, TaskTrainerParams return TaskRunnerTrainer(book, TaskTrainerParams.from_dict(body.get('trainParams', {})), AlgorithmTypes.OCR_CALAMARI) else: raise NotImplementedError()
def default_model_for_book(cls, book: DatabaseBook) -> Model: models = ModelsId.from_internal(book.get_meta().notationStyle, cls.type()) return Model(MetaId(models, cls.model_dir()))
if __name__ == '__main__': import matplotlib.pyplot as plt from PIL import Image # page = Book('demo').page('page00000001') book = DatabaseBook('test') page = book.pages()[0] # page = book.page('Graduel_de_leglise_de_Nevers_032_rot') # zacken in linie # page = book.page('Graduel_de_leglise_de_Nevers_531') # page = book.page('Graduel_de_leglise_de_Nevers_030') # page = book.page('Graduel_de_leglise_de_Nevers_520') # page = book.page('Graduel_de_leglise_de_Nevers_513') pages = [page] settings = AlgorithmPredictorSettings( Meta.best_model_for_book(book), book.get_meta().algorithm_predictor_params( BasicStaffLinePredictor.meta().type()), #["/home/wick/Documents/Projects/ommr4all-deploy/modules/ommr4all-server/internal_storage/default_models/french14/pc_staff_lines/model"], #["/home/wick/Documents/Projects/ommr4all-deploy/modules/ommr4all-server/models_out/all/line_detection_4/best"], # ["/home/wick/Documents/Projects/ommr4all-deploy/modules/ommr4all-server/storage/Graduel/pc_staff_lines/model"], # ["/home/wick/Downloads/line_detection_0/best"], ) detector = BasicStaffLinePredictor(settings) for prediction in detector.predict(pages): canvas = PcGtsCanvas(prediction.line.operation.page, PageScaleReference.NORMALIZED) def scale(p): return prediction.line.operation.page.page_to_image_scale( p, ref=PageScaleReference.NORMALIZED) f, ax = plt.subplots(1, 3)