cwLeeDev's picture
Add AIFlow Math Ink 0.6 intermediate research snapshot
2948983 verified
|
Raw
History Blame
2.8 kB
metadata
language:
  - ko
  - en
library_name: scikit-learn
license: other
tags:
  - handwriting
  - mathematical-expression-recognition
  - online-handwriting
  - segmentation
  - research

AIFlow Math Ink 0.6 โ€” Intermediate Research Snapshot

์ด ์ €์žฅ์†Œ๋Š” AIFlow Math Ink 0.6์˜ ์ค‘๊ฐ„ R-track ์—ฐ๊ตฌ ์Šค๋ƒ…์ƒท์ด๋‹ค. ์ „์ฒด LaTeX OCR ๋˜๋Š” ์ƒ์šฉ ODA ๋ชจ๋ธ์ด ์•„๋‹ˆ๋ฉฐ, ์ˆ˜์‹ stroke grouping๊ณผ ํ–‰๋™ ๋ฌธ๋งฅ ์‹คํ—˜์˜ ์žฌํ˜„ ์ž๋ฃŒ๋ฅผ ๋ณด์กดํ•œ๋‹ค.

์ด๋ฒˆ ์Šค๋ƒ…์ƒท์˜ ๊ฒฐ๋ก 

  • protected multi-stroke family selector ๊ธฐ์ค€ CROHME official test exact partition: 60.04%
  • boundary behavior guard ์ ์šฉ exact partition: 60.25%
  • pair-F1: 91.07% โ†’ 91.26%
  • overmerge formula rate: 21.72% โ†’ 20.49%
  • validation์—์„œ ๊ณ ์ •ํ•œ boundary ์„ค์ •: probability threshold 0.5, logit penalty weight 6.0
  • ์ „์ฒด ๋กœ์ปฌ Python ํšŒ๊ท€: 271 passed

Boundary head๋Š” grouping ์ „์— ๋‹คํš ํ›„๋ณด๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ์ •๋‹ต ๊ธฐํ˜ธ ๊ฒฝ๊ณ„๋ฅผ ์นจ๋ฒ”ํ•˜๋Š”์ง€ ์˜ˆ์ธกํ•œ๋‹ค. ๊ทœ์น™ํ˜• component competition๊ณผ ์ด๋ฏธ grouping๋œ partition ์ดํ›„์˜ local-baseline relation guard๋Š” ์ฑ„ํƒ๋˜์ง€ ์•Š์•˜๋‹ค.

๋””๋ ‰ํ„ฐ๋ฆฌ

  • artifacts/: scikit-learn boundary ์—ฐ๊ตฌ head
  • reports/: validation/test ์ง€ํ‘œ์™€ ์‹คํŒจ ๊ฐ์‚ฌ
  • scripts/: ํ•™์Šตยทsweepยท๊ฐ์‚ฌ entry point
  • src/: ์ด๋ฒˆ ์‹คํ—˜์— ์ง์ ‘ ๊ด€๋ จ๋œ selector/๊ด€๊ณ„ ์ฝ”๋“œ snapshot

์‚ฌ์šฉ ์ œํ•œ

์ด ์Šค๋ƒ…์ƒท์€ ์—ฐ๊ตฌ ์ „์šฉ์ด๋‹ค.

  • boundary_behavior_guard.joblib์€ CROHME ์ •๋‹ต grouping์œผ๋กœ ํ•™์Šต๋œ R-track ์‚ฐ์ถœ๋ฌผ์ด๋‹ค.
  • ์ƒ์šฉ ์ œํ’ˆ, ๋ฐฐํฌ checkpoint, teacher ๋˜๋Š” distillation ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • CROHME/HWRT ์›๋ณธ ๋ฐ์ดํ„ฐ, ํ•„๊ธฐ ํ‘œ๋ณธ, OCR cache๋Š” ์ด ์ €์žฅ์†Œ์— ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ƒ์šฉ ์ „ํ™˜์€ ๋™์ผ boundary target์„ ์ƒ์šฉ ํ—ˆ์šฉ P-track ์—ฐ์†์‹ ๋ฐ์ดํ„ฐ๋กœ ๋‹ค์‹œ ํ•™์Šตํ•ด์•ผ ํ•œ๋‹ค.
  • ๊ฐœ๋ณ„ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์…‹์˜ ์› ๋ผ์ด์„ ์Šค์™€ ์‚ฌ์šฉ ์กฐ๊ฑด์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ„๋„๋กœ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.

๋ณด์•ˆ ์ฃผ์˜

joblib/pickle ๊ณ„์—ด ํŒŒ์ผ์€ ์ž„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์ €์žฅ์†Œ์™€ ํŒŒ์ผ checksum์„ ์‹ ๋ขฐํ•˜๋Š” ํ™˜๊ฒฝ์—์„œ๋งŒ ๋กœ๋“œํ•œ๋‹ค.

import joblib

payload = joblib.load("artifacts/boundary_behavior_guard.joblib")
print(payload["schema"])
print(payload["feature_names"])
print(payload["threshold"], payload["weight"])

์žฌํ˜„ ๊ฒฝ๊ณ„

ํฌํ•จ๋œ script๋Š” ์ „์ฒด AIFlow ํ”„๋กœ์ ํŠธ์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ„๋„๋กœ ํ™•๋ณดํ•œ ๋ฐ์ดํ„ฐ์…‹์ด ์žˆ์–ด์•ผ ์™„์ „ ์‹คํ–‰๋œ๋‹ค. ๊ณต์‹ test๋Š” validation ์„ ํƒ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์ง€๋งŒ, ๋ฐ˜๋ณต ์—ฐ๊ตฌ ๊ณผ์ •์—์„œ test ์‹คํŒจ๋ฅผ ๊ด€์ฐฐํ–ˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์— ๊ธฐ๋ก๋œ ๊ฒฐ๊ณผ๋Š” ๋…๋ฆฝ ์ œํ’ˆ ์ธ์ฆ ์ˆ˜์น˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

์ž์„ธํ•œ ์„ค๊ณ„ยท์‹คํŒจ ๋ถ„์„ยทํ›„์† P-track ๊ณ„ํš์€ reports/RESEARCH_REPORT.md๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.