コード例 #1
0
ファイル: algorithm.py プロジェクト: hajicj/ommr4all-server
    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))
コード例 #2
0
 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()
コード例 #3
0
ファイル: algorithm.py プロジェクト: hajicj/ommr4all-server
 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()))
コード例 #4
0
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)