Skip to content
Atica edited this page Jun 18, 2021 · 35 revisions

๐ŸŒ„P stage 4-OCR ํ•œ์‚ฌ๋ž‘ ๊ฐœ๋ฐœํšŒ Wiki



์ด Wiki๋Š” P stage 4-OCR ์ˆ˜์‹์ธ์‹๊ธฐ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ์„œ์ˆ ํ•˜๋Š” ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

[2021-06-18 Fri] Wiki ๋‚ด์šฉ ๊ฐฑ์‹ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

[2021-06-17 Thur] Wiki ๋‚ด์šฉ ๊ฐฑ์‹ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

[2021-05-27 Thur] Wiki ํŽ˜์ด์ง€ ๊ฐœ์„คํ–ˆ์Šต๋‹ˆ๋‹ค.


Table of Contents


Github Link

p4-ocr-hansarang


ํŒ€์› ์†Œ๊ฐœ


ํŒ€ ํ™œ๋™

Git์„ ํ™œ์šฉํ•œ ํ˜‘์—…

ํŒ€์› ๋Œ€๋ถ€๋ถ„ ํ˜‘์—…์˜ ๊ฒฝํ—˜์ด ์ „๋ฌดํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— Pull Request ํ˜น์€ Merge์— ๋Œ€ํ•ด ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์žˆ์–ด ํ˜‘์—…์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜์–ด ํ˜‘์—… ๋„๊ตฌ๋กœ ๋„๋ฆฌ ์•Œ๋ ค์ง„ Github์˜ ๊ธฐ๋Šฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ํ˜‘์—…์„ ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Git ์ž‘์„ฑ ๊ทœ์น™์„ ์ •ํ•˜๊ณ  ์ด์— ๋”ฐ๋ฅด๋ฉฐ ํšจ์œจ์ ์œผ๋กœ Git์„ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • discussion

discussion ํƒญ์—๋Š” ๊ฐ ํŒ€์›์ด ํ•™์Šต์„ ํ•˜๋ฉด์„œ ์„œ๋กœ ๊ณต์œ ํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ํŒ๋‹จ๋˜๋Š” ์ •๋ณด, ์ฝ”๋“œ ๋“ฑ์„ ์ž‘์„ฑํ•˜์—ฌ ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.

"


  • issue

issue ํƒญ์€ ๊ฐ ํŒ€์›์ด ํ•™์Šต์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ์ ์„ ์ž‘์„ฑํ•˜์—ฌ ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.


๋…ผ๋ฌธ ์กฐ์‚ฌ ๋ฐ ์ •๋ฆฌ

text detection ๋ฐ text recognition์— ๊ด€ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹์„ ์–ป๊ธฐ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋…ผ๋ฌธ์„ ์ฝ๊ณ  ์„œ๋กœ ๋ฆฌ๋ทฐํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐํ•œ ๋…ผ๋ฌธ์˜ ์š”์•ฝ๋ณธ ๋ฆฌ์ŠคํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.


Data EDA

โ€ป EDA file์€ ์—ฌ๊ธฐ์—์„œ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

EDA ๊ฐœ์š”

์‚ฌ์ „์— ์ฃผ์–ด์ง„ ์ด 10๋งŒ์žฅ(์ถœ๋ ฅ๋ฌผ 5๋งŒ์žฅ, ์†๊ธ€์”จ 5๋งŒ์žฅ)์˜ ํ•™์Šต ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ค ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ๋Š”์ง€ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ธ๋ถ€์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ˆ˜์‹ sequence ๊ธธ์ด์˜ ๋ถ„ํฌ
  • Aspect Ratio์˜ ๋ถ„ํฌ
  • ์ˆ˜์‹ ์ด๋ฏธ์ง€์˜ ๋„ˆ๋น„ ๋ฐ ๋†’์ด ๊ฐ„ ๊ด€๊ณ„
  • ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ƒ์œ„ 20๊ฐœ์˜ token ๋ถ„ํฌ
  • level๋ณ„ ๋ถ„์„ ๊ฒฐ๊ณผ
  • ์ˆ˜์‹ sequence ๊ธธ์ด์˜ ๋ถ„ํฌ

    ์ˆ˜์‹์˜ ground truth sequence ๊ธธ์ด์˜ ๋ถ„ํฌ๋ฅผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•œ ๊ฒฐ๊ณผ ํ‰๊ท ์ ์œผ๋กœ 10 ~ 20 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ€์ง์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • Aspect Ratio์˜ ๋ถ„ํฌ

    ์ˆ˜์‹์ด๋ฏธ์ง€์˜ ๋†’์ด ๋Œ€๋น„ ๋„ˆ๋น„์˜ ๋น„์œจ ๋ถ„ํฌ๋ฅผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•œ ๊ฒฐ๊ณผ ํ‰๊ท ์ ์œผ๋กœ 4.3 ์ž„์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด, ํ‰๊ท ์ ์œผ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ๋„ˆ๋น„ ๊ธธ์ด๊ฐ€ ๋†’์ด ๊ธธ์ด๋ณด๋‹ค ์•ฝ 4๋ฐฐ ๋” ๊ธธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ˆ˜์‹์ด๋ฏธ์ง€์˜ ๋„ˆ๋น„ ๋ฐ ๋†’์ด ๊ฐ„ ๊ด€๊ณ„

    ์ˆ˜์‹์ด๋ฏธ์ง€์˜ ๋„ˆ๋น„ ๋ฐ ๋†’์ด์˜ ๊ด€๊ณ„๋ฅผ seaborn์˜ jointplot๋กœ ์‹œ๊ฐํ™”ํ•œ ๊ฒฐ๊ณผ ๋Œ€์ฒด์ ์œผ๋กœ ์ด๋ฏธ์ง€๋Š” ๋„ˆ๋น„์˜ ๊ธธ์ด๊ฐ€ ๋†’์ด๋ณด๋‹ค ๋” ๊ธด ํ˜•ํƒœ๋ฅผ ๋„๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ƒ์œ„ 20๊ฐœ์˜ token ๋ถ„ํฌ

    ์ˆ˜์‹์˜ ground truth์„ ๊ตฌ์„ฑํ•˜๋Š” ์ „์ฒด token ์ค‘ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋†’์€ ์ƒ์œ„ 20๊ฐœ์˜ token์˜ ๋ถ„ํฌ๋ฅผ ๋ง‰๋Œ€๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถ„์„๊ฒฐ๊ณผ ์ค‘๊ด„ํ˜ธ ๊ธฐํ˜ธ๊ฐ€ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜์—ˆ์œผ๋ฉฐ ์ˆ˜ํ•™์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐํ˜ธ(ex. 'x', 'y')๋„ ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ถ„์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ธฐํ˜ธ(\frac)์ด ์ƒ์œ„ 20๊ฐœ ์•ˆ์— ์กด์žฌํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„ ๋ถ„์ˆ˜๋ฅผ ์ธ์‹ํ•˜๋Š” ๊ฒƒ์ด ์ˆ˜์‹ ์ธ์‹์˜ ์ •ํ™•๋„๋ฅผ ๋†’์ผ ์ค‘์š”ํ•œ token์ž„์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • level๋ณ„ ๋ถ„์„ ๊ฒฐ๊ณผ

    train dataset์˜ "level.txt"๋Š” ์ˆ˜์‹์˜ ๋‚œ์ด๋„ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๋Š” ํŒŒ์ผ๋กœ์„œ ๊ฐ ์นผ๋Ÿผ์€ (๊ฒฝ๋กœ,๋‚œ์ด๋„)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ 1 - ์ดˆ๋“ฑ, 2 - ์ค‘๋“ฑ, 3 - ๊ณ ๋“ฑ, 4 - ๋Œ€ํ•™, 5 - ๋Œ€ํ•™ ์ด์ƒ ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. level ๋ณ„๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” token์˜ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋‹ค๋ฅผ ๊ฒƒ์ด๊ณ , ์ด์— ๋”ฐ๋ผ sequence์˜ ๊ธธ์ด, aspect ratio ๋“ฑ์˜ ๋ถ„ํฌ๋„ ๋‹ค๋ฅผ ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ•˜์—ฌ level ๋ณ„ EDA๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

    • level 1

    • level 2

    • level 3

    • level 4

    • level 5

๋ฐœ๊ฒฌํ•œ ๋ฌธ์ œ

EDA ์ˆ˜ํ–‰ ๊ณผ์ •์—์„œ ํ•™์Šต์— ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ์ค„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ๋ฌธ์ œ์ ์„ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์ผ๋ถ€ token์˜ data ๋ถ€์กฑ

์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด train data์— ๋“ฑ์žฅํ•˜๋Š” token๋“ค ์ค‘ ๋นˆ๋„์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ 50๊ฐœ๋ฅผ ๋ฝ‘์•„ ๊ทธ๋ž˜ํ”„๋กœ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด 10ํšŒ ๋ฏธ๋งŒ์œผ๋กœ ๋“ฑ์žฅํ•œ token๋“ค์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ data๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ดํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ถ€์กฑํ•œ token๋“ค์„ ํฌํ•จํ•˜๋Š” ์ˆ˜์‹์„ trainํŒŒ์ผ์— 50๊ฐœ ์ •๋„์˜ data๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์„ธ๋กœ๋กœ ๋œ ์ˆ˜์‹์ด๋ฏธ์ง€

์ผ๋ถ€ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ์„ธ๋กœํ˜•ํƒœ์˜ ์ˆ˜์‹ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  ์‹ค์ œ ํ•™์Šตํ•  ๋•Œ ์„ธ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ž˜ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์™€ ๊ด€๋ จํ•˜์—ฌ aspect ratio์„ ์žฌํ™•์ธํ•ด๋ณด๋‹ˆ aspect ratio๊ฐ€ ์ตœ์†Ÿ๊ฐ’์ธ ์ด๋ฏธ์ง€์ธ ๊ฒฝ์šฐ ์œ„์™€ ๊ฐ™์ด ์„ธ๋กœ๋กœ ์„ธ์›Œ์ง„ ์ด๋ฏธ์ง€์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ˆ˜์‹ ์ด์™ธ์— ๋ฐœ๊ฒฌ๋˜๋Š” ์š”์†Œ

์ผ๋ถ€ ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ๋ฐฐ๊ฒฝ์— ์„ ์ด ๊ทธ์–ด์ ธ ์žˆ๊ฑฐ๋‚˜ ํ˜•๊ด‘ํŽœ ํ‘œ์‹œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ํŠน์ • ์œ„์น˜์— ์›ํ˜• ํ‘œ์‹œ๋ฅผ ํ•˜๋Š” ๋“ฑ ํ•™์Šต๊ณผ์ •์—์„œ ๋…ธ์ด์ฆˆ(noise)๋กœ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์š”์†Œ๋“ค์„ ๋ฐœ๊ฒฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ƒ‰์น  ํ˜•๊ด‘ํŽœ

EDA ๊ฒฐ๋ก 

EDA๋ฅผ ํ†ตํ•ด ์–ป์€ ๊ฒฐ๋ก ์„ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • data์˜ ์ˆ˜๊ฐ€ ์ ์€ token์— ๋Œ€ํ•ด ์™ธ๋ถ€ data๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผ ํ•จ
  • ์„ธ๋กœ๋กœ ๋œ ์ด๋ฏธ์ง€๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ์•ˆํ•ด์•ผ ํ•จ
  • ์ด๋ฏธ์ง€์˜ ๋…ธ์ด์ฆˆ(noise)๋ฅผ ์ตœ๋Œ€ํ•œ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ์•ˆํ•ด์•ผ ํ•จ

Data Augmentation

Resize

EDA๋ฅผ ํ†ตํ•ด Aspect Ratio๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ 4.0์— ๊ฐ€๊น๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์—ฌ ๊ธฐ์กด input ์ด๋ฏธ์ง€์˜ ์‚ฌ์ด์ฆˆ 128 X 128์—์„œ 100 X 400์œผ๋กœ ์ด๋ฏธ์ง€ ํฌ๊ธฐ๋ฅผ ์žฌ์„ค์ •(Resize)ํ•˜์—ฌ dataset์„ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Rotate

EDA์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ์„ธ๋กœ๋กœ ๋œ ์ด๋ฏธ์ง€์˜ ์ธ์‹๋ฅ ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฏธ์ง€๋ฅผ 90๋„ ๋ฐ˜์‹œ๊ณ„(ํ˜น์€ ์‹œ๊ณ„) ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ €ํฌ๋Š” opencv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” rotation ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์„ธ๋กœ๋กœ ๊ธด ์ด๋ฏธ์ง€๋ฅผ 50% ํ™•๋ฅ ๋กœ ์‹œ๊ณ„๋ฐฉํ–ฅ ํšŒ์ „, 50% ํ™•๋ฅ ๋กœ ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๋„๋ก dataset์„ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

rotation๋ฅผ ์ ์šฉํ•˜๋Š” ์ฝ”๋“œ์˜ ์˜ˆ์‹œ๋Š” [discussion-rotate ์—ฐ์‚ฐ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ]๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

binarization

์ด์ง„ํ™”(binarization)์€ ์ด๋ฏธ์ง€์˜ ๋ชจ๋“  ํ”ฝ์…€์„ ์˜ค๋กœ์ง€ ํ‘๊ณผ ๋ฐฑ์œผ๋กœ๋งŒ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด์ง„ํ™”๋ฅผ ํ•  ๋•Œ๋Š” gray scale์„ ์ ์šฉํ•œ ๋’ค ์ด์ง„ํ™”๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด์ง„ํ™”๋ฅผ ์ ์šฉํ•  ๊ฒฝ์šฐ ์ด๋ฏธ์ง€์—์„œ ์ˆ˜์‹ token์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋…ธ์ด์ฆˆ(noise)๋ฅผ ์ค„์—ฌ ํ•™์Šต์˜ ํšจ๊ณผ๋ฅผ ๋” ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ง„ํ™”๋ฅผ ์ ์šฉํ•˜๋Š” ์ฝ”๋“œ์˜ ์˜ˆ์‹œ๋Š” [discussion-์ด์ง„ํ™” ๋ฐ ๊ฐ€๋กœ ์„ธ๋กœ ์„  ์ œ๊ฑฐ ๋ฐฉ๋ฒ•]๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Normalization

๋”ฅ๋Ÿฌ๋‹ ํ•™์Šต ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” Overfitting ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ์ด๋ฏธ์ง€์˜ ๊ฐ ํ”ฝ์…€ ๊ฐ’์„ 0~1 ์‚ฌ์ด์˜ ๊ฐ’์œผ๋กœ ์ •๊ทœํ™”(normalization)์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.


Model

SATRN

SATRN์€ self-attention mechanism์„ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€ ์ƒ์˜ ํ…์ŠคํŠธ์— ์žˆ๋Š” ๊ธ€์ž์˜ two dimensional spatial dependency๋ฅผ ํŒŒ์•…ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ž„์˜์ ์œผ๋กœ ๋ฐฐ์น˜๋œ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์กด ๋ชจ๋ธ๋ณด๋‹ค ์ž˜ ์ธ์‹ํ•˜๊ณ  irregular text ๋ฒค์น˜๋งˆํฌ์—์„œ ๊ธฐ์กด์˜ STR ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค ๋ณด๋‹ค ํ‰๊ท ์ ์œผ๋กœ 5.7pp๋งŒํผ ์•ž์„ ๋‹ค๊ณ  ์•Œ๋ ค์ ธ์žˆ์Šต๋‹ˆ๋‹ค.

satrn_overview ๊ทธ๋ฆผ 1. SATRN ๊ตฌ์กฐ ๊ฐœ์š”

์ €ํฌ๋Š” ์ˆ˜์‹ ์ด๋ฏธ์ง€์—์„œ ์ž„์˜๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ๋Š” ํ…์ŠคํŠธ๊ฐ€ ํ•™์Šต์—์„œ ํฐ ๋น„์ค‘์„ ์ฐจ์ง€ํ•  ๊ฒƒ์ด๋ผ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ SATRN์„ ๊ธฐ๋ณธ model๋กœ ์ •ํ•˜๋ฉด์„œ ๊ตฌ์กฐ ๋ณ€๊ฒฝ, optimizer ๋ณ€๊ฒฝ ๋“ฑ ์—ฌ๋Ÿฌ ์กฐ๊ฑด๋“ค์„ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ตฌ์กฐ ๋ณ€๊ฒฝ

    • locality-aware feedforward layer

      ๊ธฐ์กด baseline์— ๊ตฌํ˜„๋œ Fully-connected feed forward๋ฅผ ๋…ผ๋ฌธ์—์„œ ์ œ์‹œํ•œ Convolution feed forward๋กœ ๊ต์ฒดํ•˜๊ณ  ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

    • Adaptive 2D positional Encoding(A2DPE)

      ๊ธฐ์กด baseline์—์„œ ๊ตฌํ˜„๋œ ์ผ๋ฐ˜์ ์ธ 2D positional encoding์„ ๋…ผ๋ฌธ์—์„œ ์ œ์‹œํ•œ ํ•™์Šต๊ฐ€๋Šฅํ•œ A2DPE์œผ๋กœ ๊ต์ฒดํ•˜๊ณ  ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

      ์•„๋ž˜๋Š” A2DPE๋ฅผ ์ •์˜ํ•œ ์ˆ˜์‹์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

    • Backbone

      Encoder์˜ backbone์„ ๋‹ค์–‘ํ•œ CNN model์„ ์ ์šฉํ•˜์—ฌ ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•œ backbone model์€ ์•„๋ž˜์˜ ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Mini SATRN

    ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด SATRN ์˜ size๋ฅผ ์ค„์ธ ๋’ค ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Layer Parameter ์ˆ˜์ •

    • Decoder Layer ์ˆ˜ ์ฆ๊ฐ€

      Mini SATRN ์‹คํ—˜ํ™˜๊ฒฝ์—์„œ Decoder Layer์˜ ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋จ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

    • Active Function ๊ต์ฒด

      Encoder์˜ backbone์ด ShallowCNN์ธ ์‹คํ—˜ํ™˜๊ฒฝ์—์„œ activation function์„ ReLU๋Œ€์‹  mish๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ—˜์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • **Optimizer **

    SATRN model์— ์ ์šฉํ•œ optimizer์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • Adam
    • Adadelta
    • AdamW
    • AdamP
    • MADGRAD
    • NAdam

๊ธฐํƒ€ ์‹œ๋„

  • Beam search

Beam search๋Š” Greedy search๊ณผ ํ•จ๊ป˜ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํœด๋ฆฌ์Šคํ‹ฑ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ step์—์„œ ํƒ์ƒ‰์˜ ์˜์—ญ์„ K๊ฐœ์˜ ๊ฐ€์žฅ ๊ฐ€๋Šฅ๋„๊ฐ€ ๋†’์€ ํ† ํฐ๋“ค๋กœ ์œ ์ง€ํ•˜๋ฉฐ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. Beam search๋Š” Beam ๊ฐœ์ˆ˜(K) ๋งŒํผ ์ถœ๋ ฅ๊ฐ’์„ ๋„์ถœํ•˜์—ฌ ๋‹ค์–‘์„ฑ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํ‹€๋ฆฐ ๋‹ต์„ ๋‚ด๋†“๋”๋ผ๋„ ๋‹ค๋ฅธ sequence๋ณด๋‹ค ๋” ์•Œ๋งž๋Š” ๋‹ต์„ ๋„์ถœํ–ˆ์„๊ฑฐ๋ผ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๊ณ  ์ด ๊ณผ์ •์„ ํ†ตํ•ด ์ตœ์ ์˜ ๋‹ต์— ๊ฐ€๊นŒ์›Œ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ K๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•˜๋Š” hyper-parameter์ž…๋‹ˆ๋‹ค. K๋ฅผ ํฌ๊ฒŒํ•  ์ˆ˜๋ก ๋„“์€ ์˜์—ญ์„ ํƒ์ƒ‰ํ•ด ๋ณด๋‹ค ์ข‹์€ target sequence๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ๋งŒํผ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•˜๊ฒŒ ์กฐ์ ˆํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ 5 ๋˜๋Š” 10์œผ๋กœ ์„ค์ •ํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €ํฌ๋Š” ์ˆ˜์‹ ์ธ์‹๊ธฐ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•œ Beam search ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด token์„ ๋ฝ‘์„ ๋•Œ argmax๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ step๋งˆ๋‹ค beam size K ๋งŒํผ token์„ ๋ฝ‘์•„ ์ตœ๋Œ€ํ•œ ์ ํ•ฉํ•œ sequence๋ฅผ ์„ ํƒํ•˜๋ ค ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Ensemble

๋‹ค์–‘ํ•œ augmentation์„ ์ ์šฉํ•œ model๋“ค์„ ํ•œ๋ฒˆ์— loadํ•˜์—ฌ soft voting ๋ฐฉ์‹์œผ๋กœ ensembleํ•˜๋ ค ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ baseline์—๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” torch.nograd๋กœ memory ๋ฅผ ์ ˆ์•ฝํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Language Model

Misspelling Correction with Pre-trained Contextual Language Model ์—์„œ ์ œ์•ˆํ•œ ์•„์ด๋””์–ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ BERT๋ฅผ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด์„œ ํ•™์Šต์„ ์ง„ํ–‰ํ•ด๋ณด๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Robust Scanner

Robust Scanner๋Š” RobustScanner: Dynamically Enhancing Positional Clues for Robust Text Recognition์—์„œ ์ œ์•ˆํ•œ ๋ชจ๋ธ๋กœ, ๊ธฐ์กด attention ๊ธฐ๋ฐ˜ text recognition model์ด ์ž„์˜๋กœ ๋ฐฐ์น˜๋œ text ๋ฅผ ์ž˜ ์ธ์‹ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ํ•œ๊ณ„์ ์„ ๋ณด์™„ํ•œ๋‹ค๋Š” ์ ์—์„œ ์˜์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.


Demo

๊ฐ„๋‹จํ•œ demo๋ฅผ ๊ฐœ๋ฐœํ•จ์œผ๋กœ์จ ์ €ํฌ์˜ ์ˆ˜์‹์ธ์‹๊ธฐ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹ค์ œ ์„œ๋น„์Šค๋กœ ๊ตฌํ˜„๋  ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ€์ง์„ ๋ณด์ด๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์€ steamlit ์˜คํ”ˆ ์†Œ์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ demo ์‚ฌ์ดํŠธ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œ ํ•˜๊ฑฐ๋‚˜ ๋งˆ์šฐ์Šค๋กœ ์ˆ˜์‹์„ ์จ์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์‚ฌ์ง„์€ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋‚˜์˜ค๋Š” ์ฒซ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ํ•˜๋‚˜์˜ ์ˆ˜์‹ ์ด๋ฏธ์ง€๋ฅผ ์—…๋กœ๋“œํ•œ ๋’ค ๋„์ถœ๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํšŒ๊ณ 

ํŒ€ ์ˆœ์œ„ - 12ํŒ€ ์ค‘ 5๋“ฑ

LB Score

  • score : 0.5751
  • sentence accuracy : 0.5448
  • wer : 0.1528
Clone this wiki locally