Music Demixing Challenge - Starter Kit
This repository is the Music Demixing Challenge Submission template and Starter kit!
Clone the repository to compete now!
This repository contains:
- Documentation on how to submit your models to the leaderboard
- The procedure for best practices and information on how we evaluate your agent, etc.
- Starter code for you to get started!
Table of Contents
- Competition Procedure
- How to access and use dataset
- How to start participating
- How do I specify my software runtime / dependencies?
- What should my code structure be like ?
- How to make submission
- Other concepts
- Important links
Competition Procedure
The Music Demixing (MDX) Challenge is an opportunity for researchers and machine learning enthusiasts to test their skills by creating a system able to perform audio source separation.
In this challenge, you will train your models locally and then upload them to AIcrowd (via git) to be evaluated.
The following is a high level description of how this process works
- Sign up to join the competition on the AIcrowd website.
- Clone this repo and start developing your solution.
- Train your models for audio seperation and write prediction code in
test.py
. - Submit your trained models to AIcrowd Gitlab for evaluation (full instructions below). The automated evaluation setup will evaluate the submissions against the test dataset to compute and report the metrics on the leaderboard of the competition.
How to access and use the dataset
You are allowed to train your system either exclusively on the training part of MUSDB18-HQ dataset or you can use your choice of data. According to the dataset used, you will be eligible for different leaderboards.
In case you are using external dataset, please mention it in your aicrowd.json
.
{
[...],
"external_dataset_used": true
}
The MUSDB18 dataset contains 150
songs (100
songs in train
and 50
songs in test
) together with their seperations in the following manner:
|
βββ train
β βββ A Classic Education - NightOwl
β β βββ bass.wav
β β βββ drums.wav
β β βββ mixture.wav
β β βββ other.wav
β β βββ vocals.wav
β βββ ANiMAL - Clinic A
β βββ bass.wav
β βββ drums.wav
β βββ mixture.wav
β βββ other.wav
β βββ vocals.wav
[...]
Here the mixture.wav
file is the original music on which you need to do audio source seperation.
While bass.wav
, drums.wav
, other.wav
and vocals.wav
contain files for your training purposes.
Please note again: To be eligible for Leaderboard A, you are only allowed to train on the songs in train
.
How to start participating
Setup
- Add your SSH key to AIcrowd GitLab
You can add your SSH Keys to your GitLab account by going to your profile settings here. If you do not have SSH Keys, you will first need to generate one.
-
Clone the repository
git clone [email protected]:AIcrowd/music-demixing-challenge-starter-kit.git
-
Install competition specific dependencies!
cd music-demixing-challenge-starter-kit pip3 install -r requirements.txt
-
Try out random prediction codebase present in
test.py
.
How do I specify my software runtime / dependencies ?
We accept submissions with custom runtime, so you don't need to worry about which libraries or framework to pick from.
The configuration files typically include requirements.txt
(pypi packages), environment.yml
(conda environment), apt.txt
(apt packages) or even your own Dockerfile
.
You can check detailed information about the same in the
What should my code structure be like ?
Please follow the example structure as it is in the starter kit for the code structure. The different files and directories have following meaning:
.
βββ aicrowd.json # Submission meta information - like your username
βββ apt.txt # Packages to be installed inside docker image
βββ data # Your local dataset copy - you don't need to upload it (read DATASET.md)
βββ requirements.txt # Python packages to be installed
βββ test.py # IMPORTANT: Your testing/prediction code, must be derived from MusicDemixingPredictor (example in test.py)
βββ utility # The utility scripts to provide smoother experience to you.
βββ docker_build.sh
βββ docker_run.sh
βββ environ.sh
βββ verify_or_download_data.sh
Finally, you must specify an AIcrowd submission JSON in aicrowd.json
to be scored!
The aicrowd.json
of each submission should contain the following content:
{
"challenge_id": "evaluations-api-music-demixing",
"authors": ["your-aicrowd-username"],
"description": "(optional) description about your awesome agent",
"external_dataset_used": false
}
This JSON is used to map your submission to the challenge - so please remember to use the correct challenge_id
as specified above.
How to make submission
Best of Luck
Other Concepts
Time constraints
You need to make sure that your model can do audio seperation for each song within 4 minutes, otherwise the submission will be marked as failed.
Local Run
Contributing
- Add your implemntation as
test_<approach-name>.py
- Test it out using
python test_<approach-name>.py
- Add any documentation for your approach at top of your file.
- Import it in
predict.py
- Create merge request!
π π π
Contributors
π
Important links