Symbolic Melody Identification
This repository is an unofficial PyTorch implementation of the paper:A Convolutional Approach to Melody Line Identification in Symbolic Scores.
Its official version can be found here, which is written in Theano and Lasagne.
This repo is trained and evaluated on POP909 Dataset (in 4/4 time signature), to serve as a baseline of MIDI-BERT.
Note that some modifications have been made to improve the performance (different from the paper):
- Adagrad -> Adam
- Sigmoid -> ReLU
- mean square error -> binary cross entropy
- Add dropout layers
- I didn't add regularization for the loss function, since the L2 regularization is already included in most optimizers and can be controlled with the weight_decay parameter, as being pointed out here.
Evaluation
python3 predict.py --ckpt=result/$name/CNN-melody-identification.pth
The result (result.txt
) will be saved, you may analyze its accuracy, precision, recall, f1-score later.
I've already provided the checkpoint at result/1118/CNN-melody-identification.pth
and its result at result/1118/result.txt
.
Plot the predicted pianoroll from test set 343.mid
python3 pianoroll.py --ckpt=result/$name/CNN-melody-identification.pth
Train
python3 main.py --name=$name