๋ผ๋ ์ฐ๋ฆฌ ๋ชธ์ ๊ตฌ์กฐ์ ๊ธฐ๋ฅ์ ์ค์ํ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์, ์ ํํ ๋ผ ๋ถํ ์ ์๋ฃ ์ง๋จ ๋ฐ ์น๋ฃ ๊ณํ์ ๊ฐ๋ฐํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
Bone Segmentation์ ์ธ๊ณต์ง๋ฅ ๋ถ์ผ์์ ์ค์ํ ์์ฉ ๋ถ์ผ ์ค ํ๋๋ก, ํนํ, ๋ฅ๋ฌ๋ ๊ธฐ์ ์ ์ด์ฉํ ๋ผ Segmentation์ ๋ง์ ์ฐ๊ตฌ๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์์ผ๋ฉฐ, ๋ค์ํ ๋ชฉ์ ์ผ๋ก ๋์์ ์ค ์ ์์ต๋๋ค.
-
์ง๋ณ ์ง๋จ์ ๋ชฉ์ ์ผ๋ก ๋ผ์ ํํ๋ ์์น๊ฐ ๋ณํ๋๊ฑฐ๋ ๋ถ๋ฌ์ง๊ฑฐ๋ ๊ณจ์ ๋ฑ์ด ์์ ๊ฒฝ์ฐ, ๊ทธ ๋ถ์์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์ ํํ๊ฒ ํ์ ํ์ฌ ์ ์ ํ ์น๋ฃ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
-
์์ ๊ณํ์ ์ธ์ฐ๋๋ฐ ๋์์ด ๋ฉ๋๋ค. ์์ฌ๋ค์ ๋ผ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ์ฌ ์ด๋ค ์ข ๋ฅ์ ์์ ์ด ํ์ํ์ง, ์ด๋ค ์ข ๋ฅ์ ์ฌ๋ฃ๊ฐ ์ฌ์ฉ๋ ์ ์๋์ง ๋ฑ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
-
์๋ฃ์ฅ๋น ์ ์์ ํ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ธ๊ณต ๊ด์ ์ด๋ ์น์ ์ํ๋ํธ๋ฅผ ์ ์ํ ๋ ๋ผ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ์ฌ ์ ์ ํ ํฌ๊ธฐ์ ๋ชจ์์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
-
์๋ฃ ๊ต์ก์์๋ ํ์ฉ๋ ์ ์์ต๋๋ค. ์์ฌ๋ค์ ๋ณํ ๋ฐ ๋ถ์์ ๋ํ ์ดํด๋ฅผ ๋์ด๊ณ ์์ ๊ณํ์ ๊ฐ๋ฐํ๋ ๋ฐ ํ์ํ ๊ธฐ์ ์ ์ฐ์ตํ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ ์ํด ๋ง๋ค์ด์ง ์ฐ์ํ ์ฑ๋ฅ์ ๋ชจ๋ธ์ ์ง๋ณ ์ง๋จ, ์์ ๊ณํ, ์๋ฃ ์ฅ๋น ์ ์, ์๋ฃ ๊ต์ก ๋ฑ์ ์ฌ์ฉ๋ ์ ์์ ๊ฒ์ผ๋ก ๊ธฐ๋๋ฉ๋๋ค. ๐
ํ๋ก์ ํธ ์ ์ฒด ์ผ์
- 2024.11.11 (์) 10:00 ~ 2024.11.28 (๋ชฉ) 19:00
ํ๋ก์ ํธ ์ธ๋ถ ์ผ์
- Language : Python
- Environment
- CPU : Intel(R) Xeon(R) Gold 5120
- GPU : Tesla V100-SXM2 32GB ร 1
- Framework : PyTorch
- Collaborative Tool : Git, Wandb, Notion๐ฆdata
โโ๐test
โ โโ๐DCM
โ โโ๐ID040
โ โ ๐image1661319116107.png
โ โ ๐image1661319145363.png
โ โโ๐ID041
โ ๐image1661319356239.png
โ ๐image1661319390106.png
โ
โโ๐train
โ โโ๐DCM
โ โ โโ๐ID001
โ โ โ ๐image1661130828152_R.png
โ โ โ ๐image1661130891365_L.png
โ โ โโ๐ID002
โ โ ๐image1661144206667.png
โ โ ๐image1661144246917.png
โ โ
โ โโ๐outputs_json
โ โโ๐ID001
โ โ ๐image1661130828152_R.json
โ โ ๐image1661130891365_L.json
โ โโ๐ID002
๐image1661144206667.json
๐image1661144246917.json
- ํ์ต์ ์ฌ์ฉํ ์ด๋ฏธ์ง๋ 800๊ฐ, ์ถ๋ก ์ ์ฌ์ฉํ ์ด๋ฏธ์ง๋ 288๊ฐ๋ก ๊ฐ๊ฐ data/train/, data/test ์๋์ ์ ์ฅ๋์ด ์์ต๋๋ค.
- ์ ๊ณต๋๋ ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ ์๊ฐ๋ฝ, ์๋ฑ, ํ ๋ถ์์ 29๊ฐ ์ข ๋ฅ์ ๋ผ๊ฐ ์ฐํ 2048 x 2048 ํฌ๊ธฐ์ ์ฌ์ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
- json ํ์ผ์ ๊ฐ ํ์ต ์ด๋ฏธ์ง์ ๋ผ ์ข ๋ฅ๋ฅผ ๊ตฌ๋ถํ annotation file์ ๋๋ค.
๐ฆlevel2-cv-semanticsegmentation-cv-03-lv3
โฃ ๐.github
โ โ ๐ISSUE_TEMPLATE
โ โ ๐bug_report_template.yaml
โ โ ๐documentation_issue_template.yaml
โ โ ๐enhancement_request_template.yaml
โ โ ๐feature_request_template.yaml
โ โ ๐.keep
โ โ ๐pull_request_templat.md
โฃ ๐EDA
โ โ ๐EDA.ipynb
โฃ ๐baseline
โ โ ๐config
โ โ ๐base_config.yaml
โ โ ๐setting.txt
โ โ ๐utils
โ โ ๐ensemble_input
โ โ ๐9542.csv
โ โ ๐9680.csv
โ โ ๐wandb
โ โ ๐wandb.ipynb
โ โ ๐classwise_ensemble.py
โ โ ๐crop_to_2048.ipynb
โ โ ๐early_stop.py
โ โ ๐hard_ensemble.py
โ โ ๐visualize_test.ipynb
โ โ ๐visualize_train.ipynb
โ โ ๐wandb.py
โ โ ๐dataset.py
โ โ ๐inference.py
โ โ ๐loss.py
โ โ ๐model.py
โ โ ๐model_tk.py
โ โ ๐model_ui.py
โ โ ๐scheduler.py
โ โ ๐train.py
โฃ ๐baseline_monai/cv-03
โ โ ๐configs
โ โ ๐base_train.yaml
โ โ ๐loss
โ โ ๐base_loss.py
โ โ ๐loss_selector.py
โ โ ๐models
โ โ ๐base_model.py
โ โ ๐model_selector.py
โ โ ๐monai_unet.py
โ โ ๐monai_unetplusplus.py
โ โ ๐scheduler
โ โ ๐scheduler_selector.py
โ โ ๐utils
โ โ ๐wandb.py
โ โ ๐dataset.py
โ โ ๐inference.py
โ โ ๐train.py
โ โ ๐trainer.py
โฃ ๐.gitignore
โฃ ๐Capitate_crop.ipynb
โฃ ๐README.md
โฃ ๐SAM_sample.ipynb
- argparse๋ฅผ ํตํด ์ค์ ๊ฐ์ ๋ฐ์ ๋ชจ๋ธ ํ์ต์ ์ํํ๋ ์คํฌ๋ฆฝํธ
- ๋ชจ๋ธ์ ์ ์ํ ํ์ผ
- Model_Selector ํด๋์ค๋ก UNet++, DeepLabV3 ๋ฑ์ ๋ชจ๋ธ ์ ํ ๊ฐ๋ฅ
- ํ์ต๋ ๋ชจ๋ธ์ ๋ถ๋ฌ์ ์์ธก๊ฐ์ ๋ฐํํ๋ ์คํฌ๋ฆฝํธ
- ํ์ต ๋ฐ ์ถ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ํด๋์ค๋ฅผ ์ ์ํ ํ์ผ
- ํ์ต ์์ ์ฌ์ฉํ๋ ๋ค์ํ loss๋ฅผ ์ ์ํ๊ณ ์ ํํ๋ ์คํฌ๋ฆฝํธ
- ํ์ต ์์ ์ฌ์ฉํ๋ ๋ค์ํ scheduler๋ฅผ ์ ์ํ๊ณ ์ ํํ๋ ์คํฌ๋ฆฝํธ
- opencv-python-headless==4.10.0.84
- pandas==2.2.3
- scikit-learn==1.5.2
- albumentations==1.4.18
- matplotlib==3.9.2
- os
- random
- datetime
- cv2
- numpy
- tqdm
- omegaconf
- argparse
- torch
- wandb
pip install -r requirements.txt
python train.py --config base_config.yaml
python inference.py --config base_config.yaml
ํด๋ฆญํด์ ํผ์น๊ธฐ/์ ๊ธฐ
-
Data root:- ์ค๋ช : ํ์ต ์ด๋ฏธ์ง, annotation ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ค์ ํฉ๋๋ค.
- ์์: image_root:
/data/ephemeral/home/level2-cv-semanticsegmentation-cv-03-lv3/data/train/DCMlabel_root:/data/ephemeral/home/level2-cv-semanticsegmentation-cv-03-lv3/data/train/outputs_json
-
Hyperparameter:- ์ค๋ช : ํ์ต ์ ์ฌ์ฉ๋๋ ํ์ดํผ ํ๋ผ๋ฏธํฐ(๋ฐฐ์น ์ฌ์ด์ฆ, ํ์ต๋ฅ , random seed)๋ฅผ ์ค์ ํฉ๋๋ค.
- ์์: train_batch_size: 4 val_batch_size: 2 learning_rate: 1e-4 random_seed: 42
-
Train:- ์ค๋ช : ํ์ต ์ ์ฌ์ฉํ๋ ๋ชจ๋ธ, epoch, validation ์ฃผ๊ธฐ, ์์ค ํจ์, ์ค์ผ์ค๋ฌ, ์ด๋ฏธ์ง ์ฌ์ด์ฆ, accumulation step, patience๋ฅผ ์ค์ ํฉ๋๋ค.
- ์์: model: 'unetplusplus' num_epoch: 60 val_every: 5 loss: 'diceiou_loss' scheduler: 'CosineAnnealingWarmRestarts' image_size: 1024 accumulation_steps: 4 patience: 3
-
Test:- ์ค๋ช : ์ถ๋ก ์ด๋ฏธ์ง๊ฐ ์ ์ฅ๋ ๋๋ ํ ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ค์ ํฉ๋๋ค.
- ์์: test_image_root: "/data/ephemeral/home/level2-cv-semanticsegmentation-cv-03-lv3/data/test/DCM"
-
Save directory:- ์ค๋ช : ํ์ต๋ ๋ชจ๋ธ, ์ถ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๊ฒฝ๋ก์ ํ์ผ ์ด๋ฆ์ ์ค์ ํฉ๋๋ค.
- ์์: save_dir: "checkpoints" save_file_name: "unet++_diceiou_best_model.pt" csv_file_name: "output_unet++_diceiou.csv"
-
Project name:- ์ค๋ช : ์คํ ์ฃผ์ ์ ์ค๋ช ์ ๊ธฐ์ ํฉ๋๋ค.
- ์์: project_name: '์คํ ์ฃผ์ ' detail: '์ธ๋ถ ๋ด์ฉ'
