의료분야에서 Segmentation task는 진단 및 치료 계획을 개발하는 데 필수적이다. Bone Segmentation은 뼈의 형태나 위치가 변형되거나 부러지거나 골절 등이 있을 경우, 문제를 정확하게 파악하여 적절한 치료를 시행할 수 있다. 또한 수술 계획을 세우거나 의료 장비에 필요한 정보를 제공하고 교육 목적으로도 사용될 수 있다. 이번 프로젝트를 통해 뼈를 정확하게 Segmentation하는 모델을 개발함으로써 의료 분야에 다양한 목적으로 도움이 되고자 했다.
이름 | github | 맡은 역할 |
---|---|---|
김보경 | github | Baseline code 리팩토링, smp Model 구현 및 실험, Loss weight 실험, Optuna 구현, inference ensemble 구현 |
김정주 | github | Augmentation 실험, Model 설계/성능 측정, Loss 설계/실험, Visualization 구축 |
양재민 | github | Augmentation 실험, smp Model 구현 및 실험 Scratch Model 구현, inference ensemble 구현 |
임준표 | github | Augmentation 실험, Model 구현 및 실험, inference augmentation, 학습 속도 가속화 |
정남교 | github | kfold 구현, Optuna 구현, ensemble 구현, smp Model 구현 및 실험, augmentation 실험 |
- 이미지 크기 : (2048, 2048)
- 29 classes : 손가락 / 손등 / 팔로 구성
- finger-1, finger-2, finger-3, finger-4, finger-5,finger-6, finger-7, finger-8, finger-9, finger-10,finger-11, finger-12, finger-13, finger-14, finger-15,finger-16, finger-17, finger-18, finger-19, Trapezium,Trapezoid, Capitate, Hamate, Scaphoid, Lunate,Triquetrum, Pisiform, Radius, Ulna
input/
|-- code
| |-- adamp.py
| |-- alarm.py
| |-- app.py
| |-- app_utils.py
| |-- data_eda.ipynb
| |-- dataset.py
| |-- ensemble.py
| |-- inference.py
| |-- inference_kfold.py
| |-- loss.py
| |-- model.py
| |-- requirements.txt
| |-- train.py
| |-- train_optuna.py
| `-- wbf_ensemble.py
`-- data
|-- test
| |-- DCM
| | |-- ID040
| | | |-- image1.png
| | | `-- image2.png
| | |-- ID041
...
| | |-- ID550
`-- train
|-- DCM
| |-- ID001
| | |-- image1.png
| | `-- image2.png
| |-- ID002
...
| `-- ID548
`-- outputs_json
|-- ID001
| |-- image1.json
| `-- image2.json
|-- ID002
...
`-- ID548
- Baseline model Test
- Augmentation Test
- Loss Test
- Ensemble Test
실험 관련 세부사항은 랩업리포트 참고.
최종 제출 모델
Model | Dice Score |
---|---|
FCN_ResNet101 | 0.9605 |
HRNetV2_W48 | 0.9707 |
DeepLabPlus_HRNet | 0.9699 |
MANet | 0.9510 |
Ensemble | 0.9721 |
Public : 0.9721 -> Private : 0.9728
Install Requirements
pip install -r requirement.txt
train
python train.py --seed {seed} --epochs {epochs} --batch_size {batch_size} --wandb {1:save, 0:not save}} --lr {learning rate} --val_every {random int} --saved_dir {save directory} --model {model name} --loss {BCE rate, Dice rate, IoU rate}
inference
python inference.py/inference_kfold.py --saved_dir {save directory} --model {model name}