전체 | 서비스 시나리오 정의 및 구체화 |
---|---|
구상모 | oemer custom, Web Back-end(사용자 인증) |
권규보 | Model pipeline, Model training, convert to XML |
배서현 | dataset research, Web Front-end |
오한별 | model pre-processing, model post-processing |
이영진 | Web Back-end(DB, server) |
# clone repo
git clone https://github.com/boostcampaitech4lv23cv1/level3_productserving-level3-cv-02.git
# install requirements
pip install -r requirements.txt
# install to convert mp3 package
cd MusicXML2Audio/
sh install_packages.sh
# Run
cd ../app/
python main.py
https://tuggeluk.github.io/deepscores/
# Example code
.
|-- deepscores_test.json
|-- deepscores_train.json
|-- images
| |-- image1.png
| |-- image2.png
| `-- ...
|-- instance
| |-- image1.png
| |-- image2.png
| `-- ...
|-- segmentation
| |-- image1.png
| |-- image2.png
| `-- ...
|-- deepscores_test.json
`-- deepscores_train.json
https://github.com/WongKinYiu/yolov7
dataset을 그대로 학습시킬 경우 불필요한 정보가 많아 전처리 과정이 필요했습니다.
악상기호와 음표만 남기기 위해 오선지의 위치 정보만 저장한 후 삭제합니다. 이후 악보를 이진화하여 필요한 정보만 추출한 후 학습시킵니다.
model의 prediction을 기반으로 연주할 때 필요한 정보를 계산합니다.
- conversion from yolo: 정규화된 bbox 좌표를 일반 악보 좌표로 변환합니다.
- merge bbox: 한 음표나 기호를 여러번 예측했다면 하나로 합칩니다.
- noise removal: 예측 결과의 noise를 제거합니다.
- beat detection: 음표의 박자 정보를 계산합니다.
- measure calculation: 음표가 몇번째 마디에 속해있는지 계산합니다.
- pitch detection: 계이름을 반환합니다.
- SFN(Sharp Flat Natural) detection: 조표를 적용합니다.
post processing 결과를 MusicXML 형식으로 변환합니다.
app/
.
|-- constant.py
|-- db
| |-- __init__.py
| |-- connection.py
| |-- core
| | |-- __init__.py
| | |-- config.py
| | |-- db_login.py
| | `-- key.json
| |-- crud
| | |-- __init__.py
| | |-- image_bundle.py
| | |-- sound.py
| | `-- users.py
| |-- models
| | |-- __init__.py
| | |-- image.py
| | |-- image_bundle.py
| | |-- sound.py
| | `-- users.py
| |-- routes
| | |-- __init__.py
| | |-- image_bundle.py
| | |-- sound.py
| | `-- users.py
| |-- schemas
| | |-- __init__.py
| | |-- image.py
| | |-- image_bundle.py
| | |-- sound.py
| | `-- users.py
| |-- service
| | |-- __init__.py
| | |-- image_bundle.py
| | |-- sound.py
| | `-- users.py
| `-- session.py
|-- main.py
|-- output
|-- poetry.lock
|-- pyproject.toml
|-- secret.py
|-- service.py
|-- static
| |-- css
| | |-- css files
| `-- ******.css
| |-- fonts
| `-- font files
| `-- js
| | |-- js files
| `-- ******.js
|-- templates
| |-- html files
| `-- ******.html
`-- utils.py
MusicXML2Audio/
.
|-- constant.py
|-- converter
| |-- MXL2midi.py
| |-- midi2wav.py
| `-- wav2sound.py
|-- data
|-- install_packages.sh
|-- main.py
`-- midi2audio.py
- DeepScores -- A Dataset for Segmentation, Detection and Classification of Tiny Objects https://arxiv.org/pdf/1804.00525.pdf
- Understanding Optical Music Recognition https://arxiv.org/abs/1908.03608
- https://github.com/yvan674/obb_anns
- https://github.com/BreezeWhite/oemer/tree/main/oemer
- https://github.com/FluidSynth/fluidsynth
- https://github.com/bzamecnik/midi2audio