Skip to content

boostcampaitech2/semantic-segmentation-level2-cv-09

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

์žฌํ™œ์šฉ ํ’ˆ๋ชฉ ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•œ Sementic Segmentation in Bostcamp

๐Ÿ’ป ํ•˜๋‚˜๋‘˜์…‹Net()

๐Ÿ˜Ž Members


๊ณต์€์ฐฌ ๊ณฝ๋ฏผ๊ตฌ ๊น€์ค€์„ญ ๊น€์ง„์šฉ ์‹ฌ์šฉ์ฒ  ์˜ค์žฌ์„ ์ตœํ˜„์ง„
image image image image image image image
Notion TIL Git Blog Notion TIL Devlog

๐Ÿ”Ž Competition Overview


image

์ž˜ ๋ถ„๋ฆฌ ๋ฐฐ์ถœ ๋œ ์“ฐ๋ ˆ๊ธฐ๋Š” ์ž์›์œผ๋กœ์„œ ๊ฐ€์น˜๋ฅผ ์ธ์ •๋ฐ›์•„ ์žฌํ™œ์šฉ๋˜์ง€๋งŒ, ์ž˜๋ชป ๋ถ„๋ฆฌ๋ฐฐ์ถœ ๋˜๋ฉด ๊ทธ๋Œ€๋กœ ํ๊ธฐ๋ฌผ๋กœ ๋ถ„๋ฅ˜๋˜์–ด ๋งค๋ฆฝ ๋˜๋Š” ์†Œ๊ฐ๋˜๊ธฐ ๋ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์‚ฌ์ง„์—์„œ ์“ฐ๋ ˆ๊ธฐ๋ฅผ Segmentationํ•˜๋Š” ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ํ•ด๊ฒฝ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ๋Š” ๋ฐฐ๊ฒฝ, ์ผ๋ฐ˜ ์“ฐ๋ ˆ๊ธฐ, ํ”Œ๋ผ์Šคํ‹ฑ, ์ข…์ด, ์œ ๋ฆฌ ๋“ฑ 11์ข…๋ฅ˜์˜ ์“ฐ๋ ˆ๊ธฐ๊ฐ€ ์ฐํžŒ ์‚ฌ์ง„ ๋ฐ์ดํ„ฐ์…‹์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
์—ฌ๋Ÿฌ๋ถ„์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ์˜ ๋ชจ๋ธ์€ ์“ฐ๋ ˆ๊ธฐ์žฅ์— ์„ค์น˜๋˜์–ด ์ •ํ™•ํ•œ ๋ถ„๋ฆฌ์ˆ˜๊ฑฐ๋ฅผ ๋•๊ฑฐ๋‚˜, ์–ด๋ฆฐ์•„์ด๋“ค์˜ ๋ถ„๋ฆฌ์ˆ˜๊ฑฐ ๊ต์œก ๋“ฑ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๐ŸŽ‰ ์ˆ˜ํ–‰๊ฒฐ๊ณผ best score?

โœจ ๋ฆฌ๋”๋ณด๋“œ(๋Œ€ํšŒ ์ง„ํ–‰): 11์œ„ mIoU : 0.757

๐ŸŽŠ ๋ฆฌ๋”๋ณด๋“œ(์ตœ์ข…): 14์œ„ mIoU : 0.706



๐ŸŽฎ Requirements

  • Linux version 4.4.0-59-generic
  • Python >= 3.8.5
  • PyTorch >= 1.7.1
  • conda >= 4.9.2
  • tensorboard >= 2.4.1

โŒจ Hardware

  • CPU: Intel(R) Xeon(R) Gold 5220 CPU @ 2.20GHz
  • GPU: Tesla V100-SXM2-32GB

๐Ÿ” Reference

๐Ÿ“ ์—ญํ• 

ํŒ€๊ตฌ์„ฑ ์—ญํ• 
๊ณต์€์ฐฌ_T2009 Custom loss, Optimizer ์ ์šฉ
๊ณฝ๋ฏผ๊ตฌ_T2255 Optimizer, Loss, Scheduler Test ์ง„ํ–‰
๊น€์ค€์„ญ_T2056 Segmentation Multi-label Stratified K-fold ๊ตฌ์„ฑ
๊น€์ง„์šฉ_T2063 Copy paste ๋ฐ์ดํ„ฐ ์…‹ ์ œ์ž‘
์‹ฌ์šฉ์ฒ _T2122 Model ํƒ์ƒ‰, Resize ๋ฐ weighted loss ์‹คํšจ์„ฑ ๊ฒ€์ฆ
์˜ค์žฌ์„_T2133 Stratified K-fold ๋ฐ์ดํ„ฐ์…‹ ์ฝ”๋“œ ํ‹€ ์ž‘์„ฑ
์ตœํ˜„์ง„_T2234 Baseline Code ์ž‘์„ฑ, Pseudo Labeling, Oversampling

๐Ÿ”จ ์ˆ˜ํ–‰ ๊ณผ์ •


๐Ÿ”‘ Validation Dataset ๊ตฌ์„ฑ

  • Segmentation task์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ reasonableํ•˜๊ฒŒ train/val dataset์„ ๋‚˜๋ˆ„๊ธฐ ์œ„ํ•จ
  • ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ ์ด๋ฏธ์ง€๋งˆ๋‹ค 3๊ฐ€์ง€ label์„ ์ •์˜ ํ›„ Multi-label Stratified K-Fold๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ”
 ์ˆ˜๊ฐ€ ์ ์€ Class๋ฅผ ์ตœ๋Œ€ํ•œ ํฌํ•จํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ์ง€๋งˆ๋‹ค ๊ฐ€์žฅ ์ ์€ ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ด๋ฏธ์ง€์˜ ํด๋ž˜์Šค๋กœ ์ •์˜
 ์ด๋ฏธ์ง€๋‹น Class์˜ ์ˆ˜
 ์ด๋ฏธ์ง€๋‹น Annotation์˜ ์ˆ˜

image



๐Ÿ”‘ Oversampling

image

image



๐Ÿ”‘ Pseudo Labeling

  • ๊ฐ€์žฅ ์„ฑ๋Šฅ์ด ์ข‹์€ ๋ชจ๋ธ์˜ inference ๊ฒฐ๊ณผ๋กœ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์žฌํ•™์Šต
  • Segmentation task ํŠน์„ฑ์œผ๋กœ ์ ์ˆ˜ ํฌ๊ฒŒ ํ–ฅ์ƒ(0.727 -> 0.75)


๐Ÿ”‘ DenseCRF

  • Dense CRF ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ด boundary ์ข€ ๋” ๋šœ๋ ทํ•˜๊ฒŒ ๋ฐ˜์˜, ๋‹จ์ผ ๊ฐ์ฒด์—์„œ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๊ธฐ๋Œ€ image


๐Ÿ“‚ Archive contents

baseline/
โ”œโ”€โ”€ train.py # main
โ”œโ”€โ”€ trainer.py
โ”œโ”€โ”€ dataset.py
โ”œโ”€โ”€ test.py
โ”œโ”€โ”€ utils.py
โ””โ”€โ”€ models/ # train model package
โ””โ”€โ”€ loss/ # loss metric package
โ””โ”€โ”€ scheduler/ # scheduler package
โ””โ”€โ”€ model
  โ””โ”€โ”€ exp1/ # model file will save here
util/
โ”œโ”€โ”€ oversampling.py
โ””โ”€โ”€ pseudo_labeling.py
copy_paste/
โ”œโ”€ check_copy_paste.ipynb
โ”œโ”€ copy_paste.py
โ”œโ”€ mask_convert_json.py
โ”œโ”€ get_coco_mask.py
โ”œโ”€ README.md
โ””โ”€ requirements.txt

๐Ÿ’ŽCopy Paste


Augmentation Method:

  1. Random Horizontal Flip
  2. Large Scale Jittering
  3. Copy-Paste
  4. Large patch to Small patch
  5. Small patch to Large patch
  6. Random Flip

Copy_paste Quick Start

1. ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์— ๋“ค์–ด๊ฐ€ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

./aug.sh

2. ๋ช…๋ น์–ด๋ฅผ ๋”ฐ๋กœ ์ž…๋ ฅํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

1. ๋ชจ๋“ˆ ์„ค์น˜ํ•˜๊ธฐ

pip install -r requirements.txt

2. ์›๋ณธ ์ด๋ฏธ์ง€์™€ json ํŒŒ์ผ์„ ํ†ตํ•ด segmentation mask ์ƒ์„ฑ

python get_coco_mask.py  
--input_dir ../../input/data/ 
--split train_all

3. ์›๋ณธ ์ด๋ฏธ์ง€, ์›๋ณธ mask, ๋žœ๋ค ์ด๋ฏธ์ง€, ๋žœ๋ค mask๋กœ๋ถ€ํ„ฐ copy_paste

python copy_paste.py --input_dir ../../input/data/ --output_dir ../../input/data/ 
--patch ["Paper pack", "Battery", "Plastic", 'Clothing',"Glass" ]
--remove_patch ["Paper", "Plastic bag"]
--json_path train.json
--lsj True
--lsj_max 2
--lsj_min 0.2
--aug_num 1500
--extract_patch True

image


4. mask๋กœ๋ถ€ํ„ฐ jsonํŒŒ์ผ๋กœ ๋ณ€ํ™˜

python mask_coco_mask.py
--main_json train.json
--mode add

5. ๊ฒฐ๊ณผ

image

๐Ÿ›’ Train Test Quickstart

python train.py \
--model UPlusPlus_Efficient_b5 \
--epochs 200 \
--loss FocalLoss \
--val_json kfold_0_val.json \
--train_json kfold_0_train.json \
--train_augmentation CustomTrainAugmentation \
--batch_size 5
python test.py python test.py --model_dir model/exp --model_name epoch10.pth --augmentation TestAugmentation
  • reference here exmple/

About

semantic-segmentation-level2-cv-09 created by GitHub Classroom

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published