์ ๋ค์ด | ๋ฐ์ ์ฌ | ๊น๊ท๋ฏผ | ์ด์ตํฌ | ์๊ฒฝ๊ตญ |
---|---|---|---|---|
์ ๋ค์ด
Data Annotation โข Git management โข Data Annotation Output Training โข Experiments combination ๋ฐ์ ์ฌ
Data Annotation โข Git management โข Polygon Processing โข Data Annotation Output Training โข Data Annotation Visualization ๊น๊ท๋ฏผ
Data Annotation โข WandB Interlocking โข Sweep โข Data Storage โข Polygon Processing โข Data Annotation Output Training โข Extra Data Convert Format์ด์ตํฌ
Data Annotation โข Big Data Training โข Shell Script Download โข Convert MLT โข Data Augmentation with BBox์๊ฒฝ๊ตญ
Data Annotation โข Git Slack Notification โข Data Sorting Language โข Early Stopping โข Resume Training โข Data AugmentationF1-Score
DetEval
1) ๋ชจ๋ ์ ๋ต/์์ธก๋ฐ์ค๋ค์ ๋ํด์ Area Recall, Area Precision์ ๋ฏธ๋ฆฌ ๊ณ์ฐํด๋
๋๋ค.
2) ๋ชจ๋ ์ ๋ต ๋ฐ์ค์ ์์ธก ๋ฐ์ค๋ฅผ ์ํํ๋ฉด์, ๋งค์นญ์ด ๋์๋์ง ํ๋จํ์ฌ ๋ฐ์ค ๋ ๋ฒจ๋ก ์ ๋ต ์ฌ๋ถ๋ฅผ ์ธก์ ํฉ๋๋ค.
๋ฐ์ค๋ค์ด ๋งค์นญ์ด ๋๋ ์กฐ๊ฑด
๋งค์นญ์ด ๋์๋๊ฐ ๋ํ ์กฐ๊ฑด(3๊ฐ์ง)
one-to-one match: ์ ๋ต ๋ฐ์ค 1๊ฐ์ ์์ธก ๋ฐ์ค 1๊ฐ๊ฐ ๋งค์นญ && ๊ธฐ๋ณธ์กฐ๊ฑด ์ฑ๋ฆฝ
one-to-many match: ์ ๋ต ๋ฐ์ค 1๊ฐ์ ์์ธก ๋ฐ์ค ์ฌ๋ฌ๊ฐ๊ฐ ๋งค์นญ๋๋ ๊ฒฝ์ฐ
many-to-one match: ์ ๋ต ๋ฐ์ค ์ฌ๋ฌ๊ฐ์ ์์ธก๋ฐ์ค 1๊ฐ๊ฐ ๋งค์นญ๋๋ ๊ฒฝ์ฐ
one-to-many match ๊ฒฝ์ฐ์ ํํด์, ๋ฐ์ค recall / precision ์ 0.8 ๋ก penalty๊ฐ ์ ์ฉ๋ฉ๋๋ค.
G1๊ณผ P1์ one-to-one match๊ฐ ์ฑ๋ฆฝ๋์๊ณ , Area Recall, Area Precision ๋ชจ๋ 0.99๋ก threshold ์ด์์ด๋ฏ๋ก, ์ ๋ต์ผ๋ก ์ฑ ์
G2, G3์ P2๋ many-to-one match๊ฐ ์ฑ๋ฆฝ๋์๊ณ , Area Recall 0.9(0.81+0.99)/2, Area Precision0.91(0.41+0.5) ๋ก threshold ์ด์์ผ๋ก ์ ๋ต์ผ๋ก ์ฑ ์
G4์ P3, P4๋ one-to-many match๊ฐ ์ฑ๋ฆฝ๋์๊ณ , Area Recall 0.88(0.46+0.42), Area Precision 0.96(1.0+0.92)/2 ๋ก threshold ์ด์์ผ๋ก ์ ๋ต์ผ๋ก ์ฑ ์
Recall, Precision, H-mean(F1 score)์ ๊ตฌํด๋ณด๋ฉด
Recall = ( 1(G1) + 1(G2) + 1(G3) + 0.8(G4) ) / 4(len(gt)) = 0.95,
Precision = ( 1(P1) + 1(P2) + 0.8(P3) + 0.8(P4) ) / 4(len(prediction)) = 0.9,
H-mean = 2 0.95 0.9 / (0.95 + 0.9) = 0.92
ํด๋น ์ด๋ฏธ์ง์ ๋ํด์ ์ต์ข ์ ์ผ๋ก 0.92์ ์ ๋ถ์ฌ
3) ๋ชจ๋ ์ด๋ฏธ์ง์ ๋ํ์ฌ Recall, Precision์ ๊ตฌํ ์ดํ, ์ต์ข
F1-Score์ ๋ชจ๋ ์ด๋ฏธ์ง ๋ ๋ฒจ์์ ์ธก์ ๊ฐ์ ํ๊ท ์ผ๋ก ์ธก์ ๋ฉ๋๋ค.
ํ ์คํธ ์ ๋ชจ๋ ์ด๋ฏธ์ง๋ค์ ๋ํด์ Recall, Precision๋ก ์ ์๋ฅผ ๊ตฌํ๊ณ ํ๊ท ๋ด์ด ์ต์ข ์ ์๋ฅผ ๊ตฌํ๊ฒ ๋ฉ๋๋ค.
์) image1, image2 ๋๊ฐ์ ํ ์คํธ ์ด๋ฏธ์ง๊ฐ ์กด์ฌํ๊ณ , ๊ณ์ฐ์ ํธ์์ฑ์ ์ํด์ image1์ ์์ ์์์ ๋์ผ, image2๋ ์ ๋ต/์์ธก๋ฐ์ค๊ฐ 1๊ฐ์ด๊ณ ๋ง์๋ค๊ณ ๊ฐ์ ํ๊ณ ๊ณ์ฐํด๋ณด๋ฉด
Final Recall = 1 + 1 + 1 + 0.8 + 1 / 5 = 0.96
Final Precision = 1 + 1 + 0.8 + 0.8 + 1 / 5 = 0.92
Final F1 = 2 0.96 0.92 / (0.96 + 0.92) = 0.94
(๋ถ๋ชจ๊ฐ 5์ธ ์ด์ : image1์์ ์ ๋ต/์์ธก๋ฐ์ค 4๊ฐ, image2์์ ์ ๋ต/์์ธก๋ฐ์ค๊ฐ 1๊ฐ์ด๋ฏ๋ก)
ํด๋น ํ ์คํธ ์ ์์ ์ต์ข ์ ์๋ 0.94 ์ ์ด ๋๊ฒ ์ต๋๋ค.
.
|-- OCR_EDA.ipynb
|-- config.py
|-- convert_mlt.py
|-- dataset.py
|-- detect.py
|-- deteval.py
|-- east_dataset.py
|-- examples
| |-- README.md
| |-- EDA
| | |-- annotation_visualization.py
| | `-- readme.md
| |-- data
| | |-- 04170019_Annotation_Review.csv
| | |-- readme.md
| | |-- revise_annotation.ipynb
| | `-- revised_train.json
| |-- polygon
| | |-- README.md
| | |-- anti_empty.json
| | `-- dataset.py
| |-- textinthewild
| | |-- README.md
| | `-- titw2ufo.ipynb
| `-- wandb_train
| |-- README.md
| |-- config.py
| `-- wandb_train.py
|-- inference.py
|-- loss.py
|-- mk_ICDAR
| |-- convert_mlt_mixpass17.py
| |-- convert_mlt_mixpass19.py
| |-- download17.sh
| |-- download19.sh
| |-- readme.md
| |-- urls17.txt
| `-- urls19.txt
|-- model.py
|-- readme.md
|-- requirements.txt
`-- train.py