/OpticalMusicRecognition

Computer vision solution for optical music recognition problem

Primary LanguageJupyter Notebook

OpticalMusicRecognition

Keras/Tensorflow implementation of a Recurrent Convolutional Neural Network (CRNN) to address the optical music recognition (OMR) problem, trained on PrIMuS dataset.

Table of Contents

About OMR

The Optical Music Recognition (OMR) is an application of recognition techniques to musical scores, to encode the musical symbols into a digital format. Basically, an image containing a score is fed into a deep neural network, which produces as output the sequence of symbols (notes, clefs ...) contained within the input image. The OMR problem although it has some similarities with the better known OCR (Optical Character Recognition) hides additional difficulties, since context information determines the meaning associated with each symbol. Context dependence means that even if two symbols are represented through the same glyph, their semantics may not be the same, e.g. a note depends on its position in the staff, so recognition technique must take this aspect into account. Note that the goal is limited to recognizing the sequence of symbols in the musical score, not locating those symbols within the image

Repository Structure

  • data/: Containes the dataset and processed data to use in the training process.
  • models/: Stores model configurations, trained models, checkpoints and other model related data.
  • docs/, Contains a document describing the steps and the results achieved.
  • omr_crnn.ipynb: Jupyter notebook for data analysis, model building, training and evaluation, contains all the code developed for this project.