# AGU - projekt Projekt bazowy: https://github.com/tensorflow/magenta/tree/master/magenta/models/onsets_frames_transcription ## Wymagania - docker - LUB skonfigurowane środowisko magenta - https://github.com/tensorflow/magenta ## Uruchomienie w dockerze Aby wykorzystać obraz dockera najpierw trzeba go zbudować. Najłatwiej to zrobić z wykorzystaniem dołączonego Makefile: ``` $ make image # wywołuje docker build . --tag transcription:latest ``` W ten sposób zostanie zbudowany obraz `transcription:latest`. Teraz możemy go wykorzystać: ``` $ docker run -v "$(pwd):/root/experiment" -p 6006:6006 -it transcription:latest ``` W ten sposób powinniśmy znaleźć się wewnątrz kontenera z skonfigurowanym środowiskiem i pobranym checkpointem. Katalog w którym się znajdujemy powinien być zamontowany w obrazie jako `~/experiment`. ## Dataset Pliki midi zaczerpnięte z http://www.piano-midi.de/midi_files.htm stworzone przez Bernda Kruegera, udostępniane na licencji CC BY-SA 3.0. Do przygotowania datasetu z załączonych plików `midi` należy skorzystać ze skryptu `prepare_dataset`. Pomoc i opis argumentów można uzyskać z pomocą argumentu `-h`. Przykładowe wywołanie: ``` python prepare_dataset.py -n 5 ``` Wygeneruje dataset z pierwszych 5 plików midi w folderze `./dataset/midi`. Następnie należy przygotować dataset do działania z siecią: ``` python /opt/conda/envs/magenta/lib/python3.7/site-packages/magenta/models/onsets_frames_transcription/onsets_frames_transcription_create_tfrecords.py --csv="./dataset/manifest.csv" --output_directory="./dataset/processed" --wav_dir="./dataset/wav" --midi_dir="./dataset/midi" --expected_splits="test" ``` Niestety, w tej wersji jest błąd przez co alias `onsets_frames_transcription_create_tfrecords` nie działa i trzeba się ratować pełną ścieżką. Konwersję i testy możemy przeprowadzić komendą: ``` onsets_frames_transcription_infer --model_dir="${MODEL_DIR}" --output_dir="./eval/" --examples_path=./dataset/processed/test.tfrecord* --hparams="use_cudnn=false" --preprocess_examples=True ``` Parametr `--hparams="use_cudnn=false"` można pominąć jeżeli dysponujemy GPU z CUDA.