AGU/README.md
2020-05-26 20:48:12 +02:00

48 lines
2.1 KiB
Markdown

# 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.