์ ์น์ค | ๊น์ฃผํฌ | ์ ํ์ | ์ด์ฐํ | ์ดํด์ฑ |
---|---|---|---|---|
- ๐ฅMember
- ๐ Project Summary
- ๐จโ๐ฉโ๐งโ๐งTeam Roles
- ๐๏ธProcedures
- ๐ฟFeatures
- ๐Result
- ๐จโ๐ปConclusion
- ๐ปRequirements
- ๐๏ธFolder Structure
์ฐ๋ ๊ธฐ ์ด๋ฏธ์ง์์ Semantic Segmentation์ ํ์ฉํ์ฌ 10์ข ๋ฅ ํด๋์ค์ ์ฐ๋ ๊ธฐ๋ก ์ถ์ธกํ ์ ์๋ค. ์นด๋ฉ๋ผ๋ฅผ ์ด์ฉํ ๋ถ๋ฆฌ์๊ฑฐ ํ๋ณ์ ํตํด ์ฌ๋ฐ๋ฅด๊ฒ ๋ถ๋ฆฌ์๊ฑฐ๊ฐ ๋์ด ์๋์ง ์ ์ ์๋ค.
Semantic Segmentation Task ๋ํ๋ฅผ ์งํํ๋ฉด์ EDA, Modeling, Ensemble ๋ฑ ๋ค์ํ ํ ์คํฌ๋ฅผ ๊ฒฝํํด๋ณผ ์ ์๊ณ ์ด๋ฅผ ์ํํ๋ฉด์ Semantic Segmentation์ ๋ํ ์ดํด๋๋ฅผ ๋์ผ ์ ์๋ค. ๊ธฐ๋ ํจ๊ณผ๋ก๋ ์ฐ๋ ๊ธฐ์ฅ์ ์ค์น๋์ด ์ ํํ ๋ถ๋ฆฌ์๊ฑฐ๋ฅผ ๋๊ฑฐ๋, ์ด๋ฆฐ์์ด๋ค์ ๋ถ๋ฆฌ์๊ฑฐ ๊ต์ก ๋ฑ์ ํ์ฉ
์๋ฒ: V100 GPU
๋ผ์ด๋ธ๋ฌ๋ฆฌ: MMSegmentation, Segmentation Models Pytorch(SMP)
๊ฐ๋ฐ ๋ฐ ํ์ ํด: Git, Slack, Zoom, Visual Studio Code
- ๋ฐ์ดํฐ์ ํต๊ณ
- ์ ์ฒด ์ด๋ฏธ์ง ๊ฐ์ : 3272์ฅ
- 11 class : Background ,General trash, Paper, Paper pack, Metal, Glass, Plastic, Styrofoam, Plastic bag, Battery, Clothing
- ์ด๋ฏธ์ง ํฌ๊ธฐ : (512, 512)
- ๋ฐ์ดํฐ์ ํํ : COCO Dataset
- images :
- id : ํ์ผ ์์์ image ๊ณ ์ id, ex) 1
- height : 512
- width : 512
- filename : ex) batch01_vt/002.jpg
- ์ด์ฐํ: SMP์์ ๋ชจ๋ธ ์คํ ์งํ, ๋ค์ํ augmentation ๊ธฐ๋ฒ ํ์ฉ
- ์ ์น์ค: MMsegmentation segformer ํ์ต, inference file ๊ตฌํ, ensemble file ๊ตฌํ
- ๊น์ฃผํฌ: Wandb Setting, Fiftyone, transfer dataset for MMSeg, Albumentation ์ถ๊ฐ, UperNet Swin_Large/Tiny ๋ชจ๋ธ ํ์ต
- ์ดํด์ฑ: SMP์์ ๋ชจ๋ธ ์คํ ์งํ, Swin-L encoder ์ถ๊ฐ, AMP(Mixed-Precision) ์ถ๊ฐ, UNet ResNet101 / PAN Swin_Large ๋ชจ๋ธ ํ์ต
- ์ ํ์: EDA, Wandb Setting, SMP์์ ๋ชจ๋ธ ์คํ ์งํ, DiceFocalLoss, CDB Loss ๊ตฌํ ๋ฐ ํ์ต
[2022.12.19 ~ 2022.12.23]
- Baseline ์ฝ๋ setting
- ๊ณตํต
- Fiftyone ์๊ฐํ
- mmseg
- MMsegmentation install ๋ฐ ํ๊ฒฝ ์ค์
- inference file ๊ตฌํ
- Baseline Code
- SMP ํ๊ฒฝ ์ค์
- inference file ๊ตฌํ
- ๊ฐ์ ๋ชจ๋ธ ์ ์
- ์ฃผํฌ: MMSeg, UperNet Swin_Large/Tiny
- ์น์ค: MMSeg, Segformer B5
- ํด์ฑ: SMP, UNet ResNet101 / PAN Swin_Large
- ์ฐํ: SMP, PAN Swin_Large
- ํ์: SMP, PAN Swin_Large
[2022.12.24 ~ 2022.12.27]
- Augmentation ์คํ
- ๊ฐ์ ์ ์ ํ ๋ชจ๋ธ๋ค์ ์ ์ ํ์ฌ ๊ฐ ๋ชจ๋ธ์ ๋ง๋ Augmentation ์คํ ์งํ
[2022.12.28 ~ 2023.01.01]
- Refresh Day
[2023.01.02 ~ 2023.01.04]
- Augmentation์ ํ ๋๋ก ์ ์ ํ ๋ชจ๋ธ ํ์ต
- Model ensemble file ๊ตฌํ
[2023.01.05]
- ๋ชจ๋ธ ensemble ๋ฐ ๋ํ ๋ง๋ฌด๋ฆฌ
- Git merge ๋ฐ Readme ์์ฑ
- Wrap-Up Report ์์ฑ
feat/fiftyone: FiftyOne์ ํตํ ๋ฐ์ดํฐ์๊ฐํ
feat/upernet: UperNet Swin ๋ชจ๋ธ ์คํ
feat/segformer: Segformer ์คํ ๋ฐ ensemble ํ์ผ ์์ฑ
feat/inferencer: MMsegmentation inference ํ์ผ ์์ฑ
feat-losses: Custom Criterion ์ถ๊ฐ
feat-baseline_setting: baseline update
feat-SMP: Baseline Code์ SMP ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ธ ์ถ๊ฐ
feat/SMP-AMP: SMP Code์ AMP(Mixed-Precision) ์ถ๊ฐ
feat/SMP-swin: SMP Code์ Swin ๋ชจ๋ธ ์ถ๊ฐ
- Class ๋น Annotation ๋ถํฌ
- ์ด๋ฏธ์ง ๋น Annotation ์
- ํ๋์ ์ด๋ฏธ์ง๊ฐ ๊ฐ์ง๋ class ์ ๋ถํฌ
- Annotation์ ํฌ๊ธฐ ๋ถํฌ
- Class๋ณ Annotation์ ํฌ๊ธฐ ๋ถํฌ
์ฌ์ฉํ ๋ชจ๋ธ
SMP : Swin-L + PAN + ImageNet(pretrained)
MSeg : Upernet Swin-L(Pretrained)Metric : MIoU
SMP MMSeg Loss Cross Entropty Cross Entropy Optimizer AdamW SGD Schedulers CosineAnneling IterBased
Base: UperNet Swin_Tiny
Iteration: 160000
Augmentation MIoU Base 0.5837 +RandMosaic 0.5908 +CutOut 0.5953 +Rotate 0.5952 +GaussNoise 0.5912 +Mblur 0.6138 Result
Model: UperNet Swin_Large Iteration: 160000 MIoU: 0.6961
Base: Segformer_B0
Iteration: 120000
Augmentation MIoU Base 0.5837 +Optical distortion 0.5958 +Mosaic 0.5967 +Blur 0.6033 +Flip 0.6058 Result
Model: Segformer B5 Iteration: 160000 MIoU: 0.6526
Base: PAN Swin Large
Augmentation MIoU Base 0.6798 +Flip +RandomSizedCrop 0.6754 +MaskDropOut 0.6980 +RandomBrightness Contrast 0.6697 +GaussNoise 0.5912 +Mblur 0.6138
๋ชจ๋ธ ๋ณ mIoU๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ์ฌ ํฝ์ ๋ณ Hard voting์ ํตํ ์์๋ธ
Model1 Model2 Model3 Ensemble 0.7234 0.7143 0.6961 0.7342 Model1 : (SMP) PAN Swin Large 1
Model2 : (SMP) PAN Swin Large 2
Model3 : (MMSeg) UperNet Swin Large
์ง๊ธ๊น์ง ํ์ตํ ๋ชจ๋ธ์ ์ต์ข ์์๋ธํด์ ์ ์ถ
MIoU 0.7264
- baseline model setting์ด ๋งค์ฐ ๋นจ๋๊ณ ์ด๋ฅผ ํตํด ๋น ๋ฅธ ์คํ ์์์ด ๊ฐ๋ฅํ๋ค
- augmentation์ ์ํด Albumentation์๋ง ๊ตญํ๋ ๊ฒ์ด ์๋, ๋ค๋ฅธ library๋ฅผ ํ์ํ๊ณ ๊ณต๋ถํด๋ณด๋ ์๊ฐ์ ๊ฐ์ก๋ค
- SMP์ MMSegmentation ๋ library๋ฅผ ์ด์ฉํด ๋ค์ํ ์คํ์ ํ ์ ์์๋ค.
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๋ฅผ ํด๋ณด์ง ๋ชปํ๋ค.
- DenseCRF, TTA, model soup๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ์ ๋์์ด ๋ ๋งํ ๊ธฐ๋ฒ๋ค์ ์๋ํด ๋ณด์์ผ๋ ํฐ ํจ๊ณผ๋ฅผ ์ป์ง ๋ชปํ์๋ค.
- Optuna ๋ฑ์ library๋ฅผ ์ฌ์ฉํ Hyperparameter tuning์ ์๋ํด๋ณด์ง ๋ชปํ๋ค.
- Copy-Paste augmentation์ ์ ์ฉํ์ง ๋ชปํ๋ค.
- Semantic Segmentation์ ๋ํ ์ด๋ก ๋ฐ ๋ชจ๋ธ ํ์ต
- ๋ค์ํ Loss Function, Optimizer, Scheduler์ ๋ํ ์ดํด ๋ฐ ์คํ
MMSeg
conda install pytorch=1.7.1 cudatoolkit=11.0 torchvision -c pytorch
pip install openmim
mim install mmseg
SMP
pip install -r requirements.txt
pip install segmentation-models-pytorch
To use fiftyone
pip install fiftyone
mkdir fiftyone
chmod ... fiftyone
export FIFTYONE_DATABASE_DIR fiftyone
โโโ code (SMP)
โ โโโ ๐models
โ โ โโโ ๐build.py
โ โ โโโ ๐swin.py
โ โโโ ๐submission
โ โโโ ๐SMP_dataset.py
โ โโโ ๐SMP_train.py
โ โโโ ๐SMP_inference.py
โ โโโ ๐custom_scheduler.py
โ โโโ ๐losses.py
โ โโโ ...
โ
โโโ mmsegmentation
โโโ ๐segformer_trash
โโโ ๐upernet_swin_trash
โโโ ...