Skip to content
SeongwonpPublic

About

AIDA: AI-driven platform for detecting bounding box label errors and prioritizing re-inspection in autonomous driving datasets.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

ย 

History

444 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

AIDA โ€” AI Data Assurance

AIDA โ€” ๊ฐ์ฒดํƒ์ง€ ๋ผ๋ฒจ ์˜ค๋ฅ˜ ์ง„๋‹จ (์—ฐ๊ตฌ ํ”„๋กœํ† ํƒ€์ž…)

CI

์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ฒ˜์Œ์ด๋ผ๋ฉด docs/README.md๋ถ€ํ„ฐ ์ฝ์„ ๊ฒƒ. ํ”„๋กœ์ ํŠธ ๋ฐฐ๊ฒฝ, ํ•ต์‹ฌ ๊ธฐ์ˆ  ์›๋ฆฌ(ํŠนํ—ˆ ์—ฐ๊ณ„), ์•„ํ‚คํ…์ฒ˜, ์‹คํ—˜ ์„ค๊ณ„, ์˜์‚ฌ๊ฒฐ์ • ์ด์œ ๊ฐ€ ์ „๋ถ€ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ๋‹ค. ๊ฐœ๋ฐœ ์ด๋ ฅ์€ CHANGELOG.md, ์ƒˆ ์„ธ์…˜์—์„œ ์ด์–ด๋ฐ›์„ ๋•Œ๋Š” docs/09-getting-started.md ์ฐธ๊ณ .

ํ˜„์žฌ ์ž‘์—… ์ˆœ์„œ์™€ ์™„๋ฃŒ ์กฐ๊ฑด์€ 25๋ฒˆ ๊ณ ๋„ํ™” ๊ณ„ํš, ๋ฐ์Šคํฌํƒ‘ ์ธ์ˆ˜์ธ๊ณ„๋Š” CLAUDE.md, ์„ฑ๋Šฅ ์ˆ˜์น˜์˜ ์กฐ๊ฑด๊ณผ ํ•œ๊ณ„๋Š” ํ˜„์žฌ ๊ทผ๊ฑฐํ‘œ๋ฅผ ๋”ฐ๋ฅธ๋‹ค.

์ด๊ฒŒ ๋ญ”๊ฐ€

AIDA (AI Data Assurance) โ€” ๊ฐ์ฒดํƒ์ง€ AI ํ•™์Šต๋ฐ์ดํ„ฐ์˜ ๋ฐ”์šด๋”ฉ๋ฐ•์Šค ๋ผ๋ฒจ ์˜ค๋ฅ˜๋ฅผ ์ง„๋‹จํ•˜๊ณ  ์žฌ๊ฒ€์ˆ˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ œ๊ณตํ•˜๋Š” ์—ฐ๊ตฌ ํ”„๋กœํ† ํƒ€์ž…. ํ’ˆ์งˆ ์ธ์ฆ์ด๋‚˜ ์‹ค์ œ ๊ณ ๊ฐ์˜ ๊ฒ€์ˆ˜ ํšจ์œจ ๊ฐœ์„ ์€ ์•„์ง ๊ฒ€์ฆํ•˜์ง€ ์•Š์•˜๋‹ค.

๊ฐ์ฒดํƒ์ง€ ๋ชจ๋ธ์€ ์‚ฌ๋žŒ์ด ๊ทธ๋ฆฐ ๋ฐ”์šด๋”ฉ๋ฐ•์Šค ๋ผ๋ฒจ์„ ์ •๋‹ต์œผ๋กœ ํ•™์Šตํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋ผ๋ฒจ์— ๊ฐ€๋กœ/์„ธ๋กœ ํฌ๊ธฐ๋‚˜ ํšŒ์ „๊ฐ ์˜ค๋ฅ˜๊ฐ€ ์„ž์—ฌ ์žˆ์œผ๋ฉด ๋ชจ๋ธ ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋ธ ์„ฑ๋Šฅ๋งŒ์œผ๋กœ ๋ชจ๋ธ ๋ฌธ์ œ์™€ ๋ผ๋ฒจ ์˜ค๋ฅ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค. AIDA๋Š” ๊ตญ๋ฐฉ๊ณผํ•™์—ฐ๊ตฌ์†Œ ํŠนํ—ˆ(ใ€Œ๊ฐ€์ƒ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜์˜ ํ•™์Šต ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ์žฅ์น˜ ๋ฐ ๋ฐฉ๋ฒ•ใ€, ๋“ฑ๋ก๋ฒˆํ˜ธ 10-2664201)์˜ ์—ญ์ง„๋‹จ ์›๋ฆฌ๋ฅผ ์ถœ๋ฐœ์ ์œผ๋กœ ์‚ผ์€ ์—ฐ๊ตฌ ํ”„๋กœํ† ํƒ€์ž…์ด๋‹ค. ํŠนํ—ˆ์˜ ๊ฐ€์ƒ ์ด๋ฏธ์ง€ ์ƒ์„ฑ์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜๊ณ , ์‹ค์‚ฌ ๊ณต๊ฐœ ๋ฐ์ดํ„ฐ์— ์˜ค๋ฅ˜๋ฅผ ์ฃผ์ž…ํ•ด ๋ณ€ํ˜•์„ ํ‰๊ฐ€ํ–ˆ๋‹ค โ€” ํŠนํ—ˆ ๋ฐฉ๋ฒ• ์ž์ฒด๋ฅผ ๊ฒ€์ฆํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

์‚ฐ์ถœ๋ฌผ์€ ๋‘ ์ธต์ด๋‹ค.

  • ๋ฐ์ดํ„ฐ์…‹ ๋‹จ์œ„ ์ง„๋‹จ โ€” ๊ธฐ์ค€ ๋ชจ๋ธ("์ž")์˜ ์˜ˆ์ธก๊ณผ ๋ผ๋ฒจ์„ ๋ฐ•์Šค ๋‹จ์œ„๋กœ ๋Œ€์กฐํ•ด ์–ด๋–ค ์œ ํ˜•์˜ ๋ผ๋ฒจ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„ํ†ต์ ์œผ๋กœ ๋งŽ์€์ง€ ํŒ์ •ํ•œ๋‹ค. ์ฒ˜์Œ ๊ตฌ์ƒํ•œ "์„ฑ๋Šฅ ์ €ํ•˜ ํŒจํ„ด(์ •๋ฐ€๋„ยท์žฌํ˜„์œจ) ๋Œ€์กฐ"๋Š” ํŒ๋ณ„๋ ฅ์ด ๋ถ€์กฑํ•ด ์ด ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒด๋๋‹ค. ์ฃผ์ž… ์˜ค๋ฅ˜ 27๊ฐœ ์กฐ๊ฑด์—์„œ ์œ ํ˜• ํŒ๋ณ„ 25/27(92.6%) โ€” ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์˜ค๋ฅ˜๋ฅผ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ์€ ๋‹จ์ผ ์‹œ๋“œ ๊ฐ’์ด๊ณ , ํŒ๋ณ„ ๋ฌธํ„ฑ๋„ ๊ฐ™์€ ์กฐ๊ฑด์—์„œ ์ •ํ–ˆ๋‹ค.
  • ๋ฐ•์Šค ๋‹จ์œ„ ์žฌ๊ฒ€์ˆ˜ ๋ชฉ๋ก โ€” ๊ธฐ์ค€ ๋ชจ๋ธ์˜ ์˜ˆ์ธก๊ณผ ๊ณ ๊ฐ ๋ผ๋ฒจ์„ 1:1๋กœ ๋Œ€์กฐํ•ด "๋ช‡ ๋ฒˆ ์ด๋ฏธ์ง€์˜ ๋ช‡ ๋ฒˆ ๋ฐ•์Šค๋ฅผ ์™œ ๋‹ค์‹œ ๋ด์•ผ ํ•˜๋Š”์ง€"๊นŒ์ง€ ๋‚ด๋ ค๊ฐ„๋‹ค. ์ด์ชฝ์ด ์‹ค์ œ๋กœ ๊ฒ€์ˆ˜์ž๊ฐ€ ์“ฐ๋Š” ์‚ฐ์ถœ๋ฌผ์ด๋‹ค. KITTI Car ๊ธฐ์ค€ ์ƒ์œ„ 10% ์ •๋ฐ€๋„ 99.7%.

์ž์„ธํ•œ ์›๋ฆฌ๋Š” docs/01-technology.md, ๊ฐœ์„  ์ด๋ ฅ๊ณผ ์‹ค์ธก ๊ทผ๊ฑฐ๋Š” docs/21-next-plan.md.

ํŒ์ • ํ™”๋ฉด

ํ‰๊ฐ€ ๋ฌถ์Œ์˜ ํ›„๋ณด๋ฅผ ๋ฐฉ๋ฒ•ยท์ ์ˆ˜ยท์›๋ž˜ ์ˆœ์œ„๋ฅผ ๊ฐ€๋ฆฐ ์ฑ„ ํ•œ ๊ฑด์”ฉ ํŒ์ •ํ•˜๋Š” ํ™”๋ฉด์ด๋‹ค(?evaluate=<๋ฐ์ดํ„ฐ์…‹>:<๋ฌถ์Œ>).

ํŠœํ† ๋ฆฌ์–ผ 1๋‹จ๊ณ„ โ€” ์ƒ์ž ์ƒ‰์ด ๋œปํ•˜๋Š” ๊ฒƒ ํŠœํ† ๋ฆฌ์–ผ 3๋‹จ๊ณ„ โ€” ๋ˆ„๋ฝ ๊ฐ์ฒด ๋ฒˆํ˜ธ

  • ํŠœํ† ๋ฆฌ์–ผ 1๋‹จ๊ณ„ โ€” ์ฒ˜์Œ ์—ด๋ฉด ์ƒ์ž ์ƒ‰(๋นจ๊ฐ• ์‹ค์„  = ํŒ์ •ํ•  ๋ผ๋ฒจ, ์ฃผํ™ฉ ์ ์„  = ๋ผ๋ฒจ์ด ๋น ์กŒ๋‹ค๊ณ  ์ง€๋ชฉ๋œ ์ž๋ฆฌ, ํŒŒ๋ž‘ = ๋‹ค๋ฅธ ๋ผ๋ฒจ)์„ ๋จผ์ € ๋ณด์—ฌ ์ค€๋‹ค.
  • ํŠœํ† ๋ฆฌ์–ผ 3๋‹จ๊ณ„ โ€” ๋ˆ„๋ฝ์„ ์˜ค๋ฅ˜๋กœ ๊ณ ๋ฅด๋ฉด ๊ฐ™์€ ์‹ค์ œ ๊ฐ์ฒด๋ผ๋ฆฌ ๊ฐ™์€ ๋ฒˆํ˜ธ(M1, M2โ€ฆ)๋ฅผ ๋ถ™์—ฌ ํ•œ ๊ฐ์ฒด๋ฅผ ๋‘ ๋ฒˆ ์„ธ์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.

๊ธฐ์กด ๋ผ๋ฒจ์„ ํŒ์ •ํ•˜๋Š” ํ™”๋ฉด โ€” ํ•ฉ์„ฑ ๋ฐ๋ชจ ์ด๋ฏธ์ง€

๋ˆ„๋ฝ ํ›„๋ณด๋ฅผ ํŒ์ •ํ•˜๋Š” ํ™”๋ฉด โ€” ํ•ฉ์„ฑ ๋ฐ๋ชจ ์ด๋ฏธ์ง€

  • ํŒ์ • ํ™”๋ฉด โ€” ์งˆ๋ฌธ ํ•˜๋‚˜(๊ธฐ์กด ๋ผ๋ฒจ: "์ด ๋ผ๋ฒจ์€ ์ˆ˜์ •์ด ํ•„์š”ํ•œ๊ฐ€?", ๋ˆ„๋ฝ: "์ด ๊ฐ์ฒด์˜ ๋ผ๋ฒจ์ด ๋ˆ„๋ฝ๋๋Š”๊ฐ€?"), ํŒ์ • ๋ฒ„ํŠผ ์…‹ โ€” ์˜ค๋ฅ˜ ์žˆ์Œ(1)ยท์˜ค๋ฅ˜ ์—†์Œ(2)ยทํŒ๋‹จ ๋ณด๋ฅ˜(3), ๋ˆ„๋ฝ์ด๋ฉด ๊ฐ์ฒด ๋ฒˆํ˜ธ, ์ง„ํ–‰๋ฅ ๊ณผ ์ €์žฅ ์ƒํƒœ๋ฅผ ํ•œ ํ™”๋ฉด์— ๋‘”๋‹ค. ์ €์žฅ๋˜๋ฉด ๋‹ค์Œ ๋ฏธํŒ์ • ํ›„๋ณด๋กœ ๋„˜์–ด๊ฐ€๊ณ , ๊ทธ๋ฆผ์„ ๋ˆ„๋ฅด๋ฉด(๋˜๋Š” Enter) ์›๋ณธ ์ „์ฒด๋ฅผ ๊ฐ™์€ ๋ฐ•์Šค์™€ ํ•จ๊ป˜ ํฌ๊ฒŒ ๋ณธ๋‹ค.

์œ„ ์‚ฌ์ง„์€ ๋ชจ๋‘ ํ•ฉ์„ฑ ๋ฐ๋ชจ ์ด๋ฏธ์ง€๋‹ค(๋„๋กœ์™€ ์ฐจ๋ฅผ ์ฝ”๋“œ๋กœ ๊ทธ๋ฆฐ ๊ทธ๋ฆผ, demo_001.png ๋“ฑ). ์‹ค์ œ ๋ฐ์ดํ„ฐ์…‹ ์ด๋ฏธ์ง€๋Š” ์‹ฃ์ง€ ์•Š๋Š”๋‹ค โ€” nuImages๋Š” ๋น„์ƒ์—… ์กฐ๊ฑด(CC BY-NC-SA)์ด๋ผ ์žฌ๋ฐฐํฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ง€๊ธˆ ์–ด๋””๊นŒ์ง€ ์™”๋‚˜

"๋ฐ๋ชจ"๋ผ๊ณ  ํ•˜๊ธฐ์—” ์‹ค์ธก ๊ทผ๊ฑฐ์™€ ๋™์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์Œ“์˜€๊ณ , "์ œํ’ˆ"์ด๋ผ๊ณ  ํ•˜๊ธฐ์—” ์šด์˜์— ํ•„์š”ํ•œ ๊ฒƒ์ด ํ†ต์งธ๋กœ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ๋˜๋Š” ๊ฒƒ๊ณผ ์•ˆ ๋˜๋Š” ๊ฒƒ์„ ์ ์–ด๋‘”๋‹ค.

๋˜๋Š” ๊ฒƒ

  • ์˜ค๋ฅ˜ ์กฐ๊ฑด 27์ข…์„ ์‹ค์ œ๋กœ ํ•™์Šตยทํ‰๊ฐ€ํ•ด ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์Ÿ€๋‹ค. ์‹œ๋“œ 7๊ฐœ๊นŒ์ง€ ๋Š˜๋ ค ์˜ค์ฐจ๋ง‰๋Œ€๋ฅผ ๋ถ™์˜€๊ณ , ๊ฒฐ๋ก ์ด ๋’ค์ง‘ํžŒ ๊ฒƒ์€ ์›๋ฌธ์„ ๋‚จ๊ธฐ๊ณ  ์ •์ •ํ–ˆ๋‹ค.
  • ์—…๋กœ๋“œ โ†’ ์ง„๋‹จ โ†’ ์žฌ๊ฒ€์ˆ˜ ๋ชฉ๋ก์ด ๋๊นŒ์ง€ ๋ˆ๋‹ค. ๋ชฉ๋ก์—์„œ ๋ฌธ์ œ ๋ฐ•์Šค๋ฅผ ์ด๋ฏธ์ง€ ์œ„์— ๋ณด๊ณ , ์˜ค๋ฅ˜/์•„๋‹˜์„ ํŒ์ •ํ•˜๋ฉด ๊ทธ ๋ฐ์ดํ„ฐ์…‹์˜ ์‹ค์ œ ์ •๋ฐ€๋„๊ฐ€ ๋‚˜์˜ค๋ฉฐ, CSV๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์–ด๋А ๊ธฐ์ค€ ๋ชจ๋ธ๋กœ ์Ÿ€๋Š”์ง€ ์ˆจ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ๋ฐ์ดํ„ฐ์˜ ํด๋ž˜์Šค๋ฅผ ์ฝ์–ด ๋งž๋Š” ๋ชจ๋ธ์„ ์ถ”์ฒœํ•˜๊ณ , ๋ชจ๋ฅด๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ ํ•˜๊ณ , ๊ทธ ๋ชจ๋ธ์ด ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ๋ณด๊ณ  ์žˆ๋Š”์ง€(๋ผ๋ฒจ ์ค‘ ๋ช‡ %๋ฅผ ์งš์—ˆ๋Š”์ง€)๊นŒ์ง€ ๋ณด์—ฌ์ค€๋‹ค.
  • ๋ฐฑ์—”๋“œยทํ”„๋ก ํŠธ ์ˆœ์ˆ˜ ๋กœ์งยทGPU ์—†๋Š” ์‹คํ—˜ ๋กœ์ง ๊ฒ€์‚ฌ์™€ ํƒ€์ž…์ฒดํฌยท๋ฆฐํŠธยท๋นŒ๋“œ๋ฅผ CI์— ๊ตฌ์„ฑํ–ˆ๋‹ค. ์‹ค์ œ ์ถ”๋ก ๊ณผ ํ™”๋ฉด ๋น„๋™๊ธฐ ๋™์ž‘์„ ํฌํ•จํ•œ ๊ฒ€์‚ฌ ๊ฒฝ๊ณ„๋Š” testing-boundary๋ฅผ ์ฐธ๊ณ ํ•œ๋‹ค.
  • ๊ฒ€์ˆ˜๋ฅผ ํ‚ค๋ณด๋“œ๋กœ ํ•œ๋‹ค. j/k๋กœ ์ด๋™, f ์˜ค๋ฅ˜, d ์•„๋‹˜. ํŒ์ •ํ•˜๋ฉด ๋‹ค์Œ ์ค„๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ์ง€๋‚œ ์ง„๋‹จ์€ ์ƒˆ๋กœ๊ณ ์นจ ๋’ค์—๋„ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ๋‹ค.

์•ˆ ๋˜๋Š” ๊ฒƒ

  • ์ฒซ ์˜ˆ๋น„ ๋น„๊ต์—์„œ ์ œํ’ˆ ์ˆœ์„œ๊ฐ€ ๋‹จ์ˆœํ•œ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๋‚˜๋นด๋‹ค. ํ•ต์‹ฌ ์งˆ๋ฌธ์€ "๊ฐ™์€ ๊ฒ€์ˆ˜๋Ÿ‰์—์„œ ๋‹จ์ˆœ IoU ๋ถˆ์ผ์น˜ ์ˆœ์„œ๋ณด๋‹ค ์‹ค์ œ ์˜ค๋ฅ˜๋ฅผ ๋” ์ฐพ๋Š”๊ฐ€"๋‹ค. KITTI Car 300์žฅ์„ ํŒ์ •์ž 1์ธ์ด ๊ฐ€๋ฆผ ํŒ์ •ํ•œ ํƒ์ƒ‰ ๋น„๊ต(prelim1)์—์„œ, ๊ธฐ์กด ๋ผ๋ฒจ ํ›„๋ณด ์ƒ์œ„ 90๊ฑด ์ค‘ ํŒ์ •์ž๊ฐ€ ์˜ค๋ฅ˜๋กœ ๋ณธ ๋ผ๋ฒจ์ด AIDA ์ œํ’ˆ ์ˆœ์„œ 4๊ฑด, ๋‹จ์ˆœ IoU ์ˆœ์„œ 14๊ฑด์ด์—ˆ๋‹ค (๊ฒฐ๊ณผ). ๊ทธ๋ž˜์„œ ํ›„๋ณด ์ˆœ์œ„๋ฅผ ๋ฒ„์ „์œผ๋กœ ๋‚˜๋ˆด๊ณ  (ADR), ์ƒˆ ์ˆœ์„œ(v2)๋Š” ์•„์ง ํ‰๊ฐ€ํ•˜์ง€ ์•Š์•˜๋‹ค. ํ›„๋ณด ์ƒ์„ฑ๊ณผ ๋ˆ„๋ฝ ํƒ์ง€์˜ ๊ฐ€์น˜๋„ ์•„์ง ์žฌ์ง€ ์•Š์•˜๋‹ค. ์œ„ ์ •๋ฐ€๋„ ์ˆ˜์น˜๋Š” ์ฃผ์ž… ์˜ค๋ฅ˜ ๊ธฐ์ค€์ด๋ผ ์ด ์งˆ๋ฌธ์˜ ๋‹ต์ด ์•„๋‹ˆ๋‹ค.
  • ์ธ์ฆ๋„ ์‚ฌ์šฉ์ž ๊ฐœ๋…๋„ ์—†๋‹ค. ๊ฒ€์ˆ˜ ํŒ์ •์€ ๋ฐ์ดํ„ฐ์…‹ ๋‹จ์œ„๋กœ ์„œ๋ฒ„์— ๋‚จ์ง€๋งŒ, ๋ˆ„๊ฐ€ ๋งค๊ฒผ๋Š”์ง€๋Š” ๊ธฐ๋กํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฐฐํฌ๊ฐ€ ๋ฐ˜์ชฝ์ด๋‹ค. Dockerfile์ด ์žˆ๊ณ  ํ”„๋ก ํŠธ๋ฅผ ๋นŒ๋“œํ•ด ๋ฐฑ์—”๋“œ๊ฐ€ ๊ฐ™์ด ์„œ๋น™ํ•˜์ง€๋งŒ, ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” ์ƒˆ ์ง„๋‹จ์„ ๋ชป ๋Œ๋ฆฐ๋‹ค โ€” ์ถ”๋ก ์ด GPU์™€ ultralyticsยทtorch๋ฅผ ์“ฐ๋Š” ์„œ๋ธŒํ”„๋กœ์„ธ์Šค๋ผ ์ด๋ฏธ์ง€์— ์•ˆ ๋„ฃ์—ˆ๋‹ค. ์—ฐ๊ตฌ ๊ฒฐ๊ณผ ํ™”๋ฉด๊ณผ ์ง€๋‚œ ์ง„๋‹จ ์—ด์–ด๋ณด๊ธฐ๋Š” ๋œ๋‹ค.
  • DB๊ฐ€ ์—†๋‹ค. ๊ฒฐ๊ณผ๋Š” ํŒŒ์ผ๋กœ ์Œ“์ธ๋‹ค.
  • ๋™์‹œ ์‚ฌ์šฉ์ด ์•ˆ ๋œ๋‹ค. ์ง„๋‹จ์ด ๊ฐ™์€ ๊ธฐ๊ณ„์—์„œ ์„œ๋ธŒํ”„๋กœ์„ธ์Šค๋กœ GPU๋ฅผ ์“ด๋‹ค.
  • ์‹ค์ œ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ๋กœ ์“ฐ์ธ ์ ์ด ์—†๋‹ค. ์‹ค์ธก์€ ์ „๋ถ€ KITTI์™€ COCO์˜ ์ฐจ๋Ÿ‰ ์ค‘์‹ฌ์ด๊ณ , ๊ทธ๋งˆ์ €๋„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉด ์ง„๋‹จ ํ’ˆ์งˆ์ด ํฌ๊ฒŒ ๋–จ์–ด์ง€๋Š” ๊ฒƒ์„ ์ด๋ฏธ ์Ÿ€๋‹ค(docs/21 AI).

๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค. ๊ธฐ์ค€ ๋ชจ๋ธ์ด ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ์— ๋งž์ง€ ์•Š์œผ๋ฉด ์ƒ์œ„ 10% ์ •๋ฐ€๋„๊ฐ€ COCO ํ‰๊ฐ€์—์„œ ์ž๊ธฐ ๋„๋ฉ”์ธ ๋ชจ๋ธ 82.4% ๋Œ€๋น„ KITTI ๋ชจ๋ธ 26.0%๋กœ ๋–จ์–ด์กŒ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ง€๊ธˆ ๋‹ต์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์€ ๋ฌธ์ œ๋‹ค.

๋‹ค๋งŒ ํ”ผํ•ด๋ฅผ ์ค„์ด๋Š” ๋ฒ•์€ ํ•˜๋‚˜ ์ฐพ์•˜๋‹ค(docs/21 AN). ์ž๊ฐ€ ์–ด๊ธ‹๋‚˜๋ฉด ์ •๋ฐ€๋„๊ฐ€ ๋–จ์–ด์ง€๊ธฐ๋งŒ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์žฌ๊ฒ€์ˆ˜ ๋ชฉ๋ก์˜ ์ˆœ์„œ๊ฐ€ ๋’ค์ง‘ํžŒ๋‹ค โ€” ๋งจ ์œ„๊ฐ€ ์•„๋ž˜๋ณด๋‹ค ๋‚˜๋นด๋‹ค. ๊ณ„ํ†ต์ ์ด๋ผ๊ณ  ํŒ์ •ํ•œ ์˜ค๋ฅ˜ ์œ ํ˜•์„ ๋จผ์ € ๋ณด์—ฌ์ฃผ๊ฒŒ ๊ณ ์น˜๋‹ˆ ์ƒ์œ„ 5๊ฑด์˜ ์ •๋ฐ€๋„๊ฐ€ ํ‰๊ท  +0.41(์‹œ๋“œ 3๊ฐœ, +0.385~+0.422) ์˜ฌ๋ž๋‹ค(๋งž๋Š” ์ž +0.06). ๋‹จ, ์ด๊ฒƒ์€ ์ฃผ์ž… ์˜ค๋ฅ˜์—์„œ์˜ ๊ด€์ฐฐ์ด๋‹ค. ์ฃผ์ž… ์กฐ๊ฑด์—์„œ๋Š” ์ฃผ์ž…ํ•œ ์œ ํ˜•์ด ๊ณง ๊ณ„ํ†ต ์œ ํ˜•์ด๋ผ ์ด๋“์ด ๊ตฌ์กฐ์ƒ ๋”ฐ๋ผ์˜จ๋‹ค. ๋งž๋Š” ์ž๋ฅผ ์“ด ์ž์—ฐ ์˜ค๋ฅ˜ ๋น„๊ต(prelim1)์—์„œ๋Š” ๊ฐ™์€ ์ •๋ ฌ(v1)์ด ๋‹จ์ˆœ IoU ์ˆœ์„œ๋ณด๋‹ค ๋‚˜๋นด๊ณ , ์–ด๊ธ‹๋‚œ ์ž์—์„œ ์ž์—ฐ ์˜ค๋ฅ˜๋กœ ํ™•์ธํ•œ ์ ์€ ์—†๋‹ค.

์‹œ์Šคํ…œ ๊ตฌ์„ฑ

aida-project/
โ”œโ”€โ”€ experiment/   KITTI ๋‹ค์šด๋กœ๋“œ โ†’ ์ „์ฒ˜๋ฆฌ โ†’ ์˜ค๋ฅ˜ ๋ผ๋ฒจ ์ƒ์„ฑ โ†’ YOLOv8n ํ•™์Šตยทํ‰๊ฐ€
โ”œโ”€โ”€ backend/      FastAPI โ€” ์‹คํ—˜ ๊ฒฐ๊ณผ(CSV)๋ฅผ ์ฝ์–ด ํ’ˆ์งˆ ์ ์ˆ˜ยท์ง„๋‹จ API ์ œ๊ณต
โ”œโ”€โ”€ frontend/     React + TypeScript (Vite) โ€” ๋Œ€์‹œ๋ณด๋“œ UI
โ”œโ”€โ”€ docs/         ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ (๊ธฐ์ˆ  ์›๋ฆฌยท์•„ํ‚คํ…์ฒ˜ยท์‹คํ—˜ ์„ค๊ณ„ยทAPI ๋ ˆํผ๋Ÿฐ์Šค ๋“ฑ)
โ””โ”€โ”€ CHANGELOG.md  ๊ฐœ๋ฐœ ๋ณ€๊ฒฝ ์ด๋ ฅ

์ „์ฒด ๋ฐ์ดํ„ฐ ํ๋ฆ„

experiment/๊ฐ€ ๋งŒ๋“ค์–ด๋‚ธ ์‹คํ—˜ ๊ฒฐ๊ณผ(metrics.csv)๋ฅผ backend/๊ฐ€ ๊ทธ๋Œ€๋กœ ์ฝ์–ด API๋กœ ์ œ๊ณตํ•˜๊ณ , frontend/๊ฐ€ ์ด๋ฅผ ์‹œ๊ฐํ™”ํ•œ๋‹ค. ์ด ์‹คํ—˜ ๊ฒฐ๊ณผ ์กฐํšŒ ํ๋ฆ„ ์™ธ์—, ์—…๋กœ๋“œ ์ง„๋‹จ์€ ๋ฐฑ์—”๋“œ๊ฐ€ ์ถ”๋ก  ์„œ๋ธŒํ”„๋กœ์„ธ์Šค๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ฒฐ๊ณผ JSON์„ ์ฝ๋Š”๋‹ค. ๊ฒ€์ˆ˜ ํŒ์ •๋„ ๋ณ„๋„๋กœ ์ €์žฅํ•œ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ ์‹คํ—˜ ๊ฒฐ๊ณผ ์กฐํšŒ ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

flowchart LR
    subgraph EXP["experiment/"]
        direction TB
        KITTI["KITTI ์›๋ณธ<br/>(์ด๋ฏธ์ง€ + ๋ผ๋ฒจ)"] --> PRE["์ „์ฒ˜๋ฆฌ<br/>data_loader.py"]
        PRE --> INJ["์˜ค๋ฅ˜ ๋ผ๋ฒจ ์ƒ์„ฑ (27๊ฐœ ์กฐ๊ฑด)<br/>error_injector.py"]
        INJ --> TRAIN["YOLOv8n ํŒŒ์ธํŠœ๋‹ ยท ํ‰๊ฐ€<br/>train.py / evaluate.py"]
    end
    TRAIN --> CSV[("backend/app/data/<br/>metrics.csv")]

    subgraph BE["backend/ (FastAPI)"]
        API["report.py<br/>GET /api/summary<br/>GET /api/conditions<br/>GET /api/diagnose"]
    end
    CSV --> API

    subgraph FE["frontend/ (React)"]
        UI["QualityScoreCard<br/>PerformanceChart<br/>ErrorReportTable"]
    end
    API -->|axios| UI
Loading

API ์š”์ฒญ ํ๋ฆ„

sequenceDiagram
    participant U as ์‚ฌ์šฉ์ž
    participant FE as Frontend (React)
    participant BE as Backend (FastAPI)
    participant CSV as metrics.csv

    U->>FE: ๋Œ€์‹œ๋ณด๋“œ ์ ‘์†
    FE->>BE: GET /api/summary
    FE->>BE: GET /api/conditions
    FE->>BE: GET /api/diagnose
    BE->>CSV: pandas.read_csv()
    CSV-->>BE: ์กฐ๊ฑด๋ณ„ mAP / Precision / Recall
    BE-->>FE: JSON (ํ’ˆ์งˆ ์ ์ˆ˜ ยท ์กฐ๊ฑด๋ณ„ ์ง€ํ‘œ ยท ์ง„๋‹จ ๋ฆฌํฌํŠธ)
    FE-->>U: ํ’ˆ์งˆ ์ ์ˆ˜ ์นด๋“œ ยท ์„ฑ๋Šฅ ์ €ํ•˜ ๊ทธ๋ž˜ํ”„ ยท ์žฌ๊ฒ€์ˆ˜ ์šฐ์„ ์ˆœ์œ„ ํ‘œ
Loading

์˜ค๋ฅ˜ ์กฐ๊ฑด ๋งคํŠธ๋ฆญ์Šค (27๊ฐœ)

error_injector.py๊ฐ€ ์ฐธ๊ฐ’(GT) ๋ฐ”์šด๋”ฉ๋ฐ•์Šค์— ์•„๋ž˜ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฐ๊ฐ ์ ์šฉํ•ด ์กฐ๊ฑด๋ณ„ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ธฐํ•˜ ์˜ค๋ฅ˜๋Š” ๋ผ๋ฒจ์˜ 30%์—๋งŒ ์ฃผ์ž…ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์›๋ณธ์„ ์œ ์ง€ํ•œ๋‹ค(config.ERROR_RATIO). ์ž์„ธํ•œ ๋ฐฐ๊ฒฝ์€ docs/03-experiment-design.md.

์œ ํ˜• ๊ฐ•๋„ ๊ฐœ์ˆ˜
๊ฐ€๋กœ ๊ธธ์ด (width) ยฑ15%, ยฑ30% 4
์„ธ๋กœ ๊ธธ์ด (height) ยฑ15%, ยฑ30% 4
ํšŒ์ „๊ฐ (rotation) ยฑ7.5ยฐ, ยฑ15ยฐ 4
์Šค์ผ€์ผ (scale) ยฑ15%, ยฑ30% 4
์ค‘์‹ฌ์  ์ด๋™ (translation_x/y) ยฑ15% 4
๋ผ๋ฒจ ๋ˆ„๋ฝ (missing) 10/20/30% 3
๋ผ๋ฒจ ์ค‘๋ณต (duplicate) 10/20/30% 3
๊ธฐ์ค€์„  (clean) โ€” 1

์—ฌ๊ธฐ์— ํ˜ผํ•ฉ ์˜ค๋ฅ˜ 7๊ฐœ(MIXED_CONDITIONS)์™€, ๋‹ค์ค‘ ํด๋ž˜์Šค์—์„œ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ํด๋ž˜์Šค ์˜ค๊ธฐ์ž…(class_swap, 10/20/30%) 3๊ฐœ๊ฐ€ ๋” ์žˆ๋‹ค. ํด๋ž˜์Šค ์˜ค๊ธฐ์ž…์€ ์‹ค์ธก ์ €ํ•˜ 31.2%๋กœ ์ „ ์œ ํ˜• ์ค‘ ๊ฐ€์žฅ ํŒŒ๊ดด์ ์ด๋‹ค.

์‹คํ–‰ ์ˆœ์„œ๋Š” ์‹œ๊ฐ„ ๋ฆฌ์Šคํฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํ•ต์‹ฌ ์กฐ๊ฑด์„ ๋จผ์ € ๋Œ๋ฆฐ๋‹ค. ์žฅ์‹œ๊ฐ„ ์‹คํ–‰์ด ์ค‘๊ฐ„์— ๋Š๊ฒจ๋„ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ --breadth-first(์œ ํ˜•๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๋จผ์ €)์™€ --skip-done(์ด์–ด์„œ ๋Œ๋ฆฌ๊ธฐ)์„ ์ œ๊ณตํ•œ๋‹ค.

ํด๋ž˜์Šค ๊ตฌ์„ฑ

๊ธฐ๋ณธ์€ KITTI Car ๋‹จ์ผ ํด๋ž˜์Šค๋‹ค. AIDA_CLASSES๋กœ ๋‹ค์ค‘ ํด๋ž˜์Šค (์˜ˆ: Car,Van,Pedestrian,Cyclist)๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋ผ๋ฒจยท๊ฐ€์ค‘์น˜ยท์ง€ํ‘œ ๊ฒฝ๋กœ๊ฐ€ ์ „๋ถ€ ๋ถ„๋ฆฌ๋˜์–ด ๊ธฐ์กด ๊ฒฐ๊ณผ๋ฅผ ๋ฎ์ง€ ์•Š๋Š”๋‹ค.

์œ ํ˜• ์‹ ๋ขฐ๋„ ์ƒ์ˆ˜๋Š” ๋„๋ฉ”์ธ์„ ํƒ„๋‹ค. ๋‹ค์ค‘ ํด๋ž˜์Šค๋กœ ๊ฒ€์ฆํ•ด๋ณด๋‹ˆ "๊ทธ ์œ ํ˜•์ด ์—†์„ ๋•Œ"์˜ ์‹ ๋ขฐ๋„๊ฐ€ ํฌ๊ฒŒ ํ”๋“ค๋ ธ๋‹ค(๋ˆ„๋ฝ 88% โ†’ 22%). ๊ทธ๋ž˜์„œ ๋„๋ฉ”์ธ๋ณ„๋กœ ๋‹ค์‹œ ์žฌ์„œ ํ”„๋กœํŒŒ์ผ๋กœ ๊ฐˆ์•„๋ผ์šธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด๋’€๋‹ค(--write-profile / AIDA_RELIABILITY_PROFILE). ๊ทผ๊ฑฐ๋Š” docs/21์˜ LยทS ์ ˆ.

๊ธฐ์ค€ ๋ชจ๋ธ("์ž")์ด ์ง„๋‹จ ํ’ˆ์งˆ์„ ์ •ํ•œ๋‹ค

์ง„๋‹จ์€ ๊ธฐ์ค€ ๋ชจ๋ธ์˜ ์˜ˆ์ธก์„ ์ž๋กœ ์‚ผ์•„ ๋ผ๋ฒจ์„ ์žฐ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ ์ž๊ฐ€ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ์™€ ๋งž๋Š”์ง€๊ฐ€ ์ „๋ถ€๋‹ค. ์‹ค์ธก์œผ๋กœ๋Š” ์ž์˜ ํ•™์Šต๋Ÿ‰๋„(400 vs 800์žฅ) ํด๋ž˜์Šค ํญ๋„(1 vs 4) ๊ทธ ์ž์ฒด๋กœ๋Š” ์ง„๋‹จ ํ’ˆ์งˆ์„ ์ •ํ•˜์ง€ ์•Š์•˜๋‹ค.

์กฐ๊ฑด 29๊ฐœ ยท ํ•™์Šต ์‹œ๋“œ 7๊ฐœ๋กœ ์žฐ ์ƒ์œ„ 10% ์ •๋ฐ€๋„ (docs/21 AG):

์ž ์ƒ์œ„ 10% ํ‘œ์ค€ํŽธ์ฐจ
์ž๊ธฐ ๋„๋ฉ”์ธ (4ํด๋ž˜์Šค, 400์žฅ) 94.0% ยฑ2.20
๋จผ ์ด๋™ (Car 1ํด๋ž˜์Šค) 65.8% ยฑ2.59
์•ฝํ•œ ์ด๋™ (4ํด๋ž˜์Šค, 400์žฅ) 64.6% ยฑ5.45
๋„“์€ ์ž (4ํด๋ž˜์Šค, 800์žฅ) 61.3% ยฑ3.27

์‹œ๋“œ 7๊ฐœ ๋ชจ๋‘์—์„œ ์ž๊ธฐ ๋„๋ฉ”์ธ ์ž๊ฐ€ ์ตœ๊ณ ์˜€๋‹ค(์ž๊ธฐ ๋„๋ฉ”์ธ ์ตœ์ € 91.2 ๋Œ€ ๋‹ค๋ฅธ ์ž ์ตœ๊ณ  70.6). ์ด ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ๋‹จ๋‹จํ•œ ๊ฒฐ๊ณผ๋‹ค. (์œ„ ํ‘œ๋Š” ๊ณผ๊ฑฐ ์ •๋ ฌ ์ˆœ์„œ ๊ธฐ์ค€์ด๋‹ค. ์ง€๊ธˆ์˜ ์ˆœ์„œ์—์„œ๋Š” ๋„“์€ ์ž๋„ ์ž๊ธฐ ๋„๋ฉ”์ธ ์ž์— ๊ฝค ๊ฐ€๊นŒ์›Œ์ง„๋‹ค โ€” ๋…ผ๋ฌธ ์ดˆ์•ˆ ํ‘œ 6.)

๊ฐ™์€ ๊ฒ€์ˆ˜๋Ÿ‰์—์„œ ๋‹จ์ˆœํ•œ ๊ธฐ์ค€์„ (๋ฌด์ž‘์œ„, 1โˆ’IoU, cleanlab ObjectLab)๊ณผ๋„ ๊ฒฌ์คฌ๋‹ค. KITTI ์•ˆ์˜ ์ž๋“ค๊ณผ COCO ์ž๊ธฐ ์ž์—์„œ๋Š” AIDA ์ˆœ์„œ๊ฐ€ ๋ชจ๋“  ์‹œ๋“œ์—์„œ ์•ž์„ฐ์ง€๋งŒ, KITTI ์ž๋กœ COCO๋ฅผ ์ง„๋‹จํ•  ๋•Œ๋Š” ObjectLab๊ณผ ๊ตฌ๋ณ„๋˜์ง€ ์•Š์•˜๋‹ค. ์ •๋‹ต์ด ์šฐ๋ฆฌ๊ฐ€ ์ฃผ์ž…ํ•œ ์˜ค๋ฅ˜๋ฟ์ด๋ผ ์ด๊ฒƒ์€ ์ฃผ์ž… ๋ฒค์น˜๋งˆํฌ์—์„œ์˜ ๋น„๊ต๋‹ค โ€” ๊ทผ๊ฑฐํ‘œ 5-1. ์•ˆ์ •์„ฑ์„ ์ •ํ•˜๋Š” ๊ฒƒ๋„ ํด๋ž˜์Šค ํญ์ด ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ์™€์˜ ๊ถํ•ฉ์ด๋‹ค โ€” ๊ฐ™์€ 4ํด๋ž˜์Šค๋ผ๋ฆฌ๋„ ยฑ2.20๊ณผ ยฑ5.45๋กœ 2.5๋ฐฐ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค.

์ง„์งœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์…‹์—์„œ๋Š” ํ›จ์”ฌ ์‹ฌํ•˜๋‹ค. COCO๋กœ ๋งŒ๋“  ๊ฐ™์€ ์กฐ๊ฑด์„ COCO ์ž์™€ KITTI ์ž๋กœ ๊ฐ๊ฐ ์ง„๋‹จํ•˜๋ฉด 82.4% vs **26.0%**๋‹ค(docs/21 AI). 26.0%๋Š” ์žฌ๊ฒ€์ˆ˜ ๋ชฉ๋ก์œผ๋กœ ์“ธ ์ˆ˜ ์—†๋Š” ์ˆ˜์ค€์ด๋‹ค. ์œ ํ˜•๋ณ„๋กœ๋Š” ๋ผ๋ฒจ ๋ˆ„๋ฝ๋งŒ ํ™•์‹คํžˆ ์‚ด์•„๋‚จ๊ณ  (94.9% โ†’ 76.7%), ์ค‘๋ณต์€ ์ ˆ๋ฐ˜์ด ๊นŽ์ด๋ฉฐ, ๊ธฐํ•˜ ์˜ค๋ฅ˜๋Š” ์ „๋ฉธํ•œ๋‹ค(7490% โ†’ 729%).

๊ทธ๋ž˜์„œ ์ œํ’ˆ์€ ์–ด๋А ์ž๋กœ ์Ÿ€๋Š”์ง€ ๊ฒฐ๊ณผ์— ๋‚จ๊ธฐ๊ณ , ์—…๋กœ๋“œ๋œ ๋ผ๋ฒจ์˜ ํด๋ž˜์Šค๋ฅผ ์ฝ์–ด ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฎ๋Š” ์ž ์ค‘ ๊ฐ€์žฅ ์ข์€ ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ์ž๊ฐ€ ๋ชจ๋ฅด๋Š” ํด๋ž˜์Šค๊ฐ€ ์žˆ์œผ๋ฉด ๊ฒฝ๊ณ ํ•œ๋‹ค โ€” ๊ทธ ๋ผ๋ฒจ์€ ์˜คํƒ์œผ๋กœ๋„ ์•ˆ ๋‚˜์˜ค๊ณ  ์•„์˜ˆ ๊ฒ€์‚ฌ๋˜์ง€ ์•Š์•„์„œ, ํ™”๋ฉด์— ํ”์ ์ด ์—†์œผ๋ฉด "๋ฌธ์ œ ์—†์Œ"๊ณผ ๊ตฌ๋ณ„๋˜์ง€ ์•Š๋Š”๋‹ค.

์‹คํ—˜ ์‚ฐ์ถœ๋ฌผ ์ €์žฅ ์œ„์น˜

์กฐ๊ฑด ํด๋”ยท์›๋ณธ ๋ฐ์ดํ„ฐ๋Š” D:\AIDA-data\experiment์— ๋‘๊ณ  experiment/ ์•„๋ž˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ •์…˜์œผ๋กœ ์—ฐ๊ฒฐ๋ผ ์žˆ๋‹ค(Windows). ๊ฒฝ๋กœ๋Š” ๊ทธ๋Œ€๋กœ ๋™์ž‘ํ•˜๋ฏ€๋กœ ์ฝ”๋“œ์—์„œ ์‹ ๊ฒฝ ์“ธ ๊ฒƒ์€ ์—†๋‹ค. ์ƒˆ๋กœ ์˜ฎ๊ธธ ๋•Œ๋Š” move_to_drive.py๋ฅผ ์“ด๋‹ค โ€” robocopy๋Š” ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€ ์‹ค์ œ ํŒŒ์ผ๋กœ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ์šฉ๋Ÿ‰์ด ๋ช‡ ๋ฐฐ๋กœ ๋ถ€ํ‘ผ๋‹ค.

๊ธฐ์ˆ  ์Šคํƒ

๊ณ„์ธต ๊ธฐ์ˆ 
์‹คํ—˜ ํŒŒ์ดํ”„๋ผ์ธ Python 3.14, Ultralytics YOLOv8n, PyTorch(CUDA/MPS/CPU ์ž๋™ ๊ฐ์ง€), OpenCV, NumPy, Pandas
๋ฐฑ์—”๋“œ FastAPI, Pandas, python-dotenv
ํ”„๋ก ํŠธ์—”๋“œ React + TypeScript (Vite), recharts, axios
๋ฐ์ดํ„ฐ KITTI Object Detection 2D (๊ธฐ๋ณธ Car ๋‹จ์ผ, AIDA_CLASSES๋กœ ๋‹ค์ค‘ ํด๋ž˜์Šค)
ํ™˜๊ฒฝ ๊ด€๋ฆฌ venv + requirements.txt, .env/.env.example (์„œ๋ธŒํ”„๋กœ์ ํŠธ๋ณ„)

์‹คํ–‰ ๋ฐฉ๋ฒ•

1. ๋ฐฑ์—”๋“œ

cd backend
cp .env.example .env        # ์ตœ์ดˆ 1ํšŒ๋งŒ (์ด๋ฏธ ์žˆ์œผ๋ฉด ์Šคํ‚ต)
source venv/bin/activate    # ์ด๋ฏธ venv ์ƒ์„ฑยท์„ค์น˜๋˜์–ด ์žˆ์Œ
uvicorn app.main:app --reload --port 8000

http://localhost:8000/docs ์—์„œ API ํ™•์ธ ๊ฐ€๋Šฅ.

2. ํ”„๋ก ํŠธ์—”๋“œ (์ƒˆ ํ„ฐ๋ฏธ๋„)

cd frontend
cp .env.example .env        # ์ตœ์ดˆ 1ํšŒ๋งŒ (์ด๋ฏธ ์žˆ์œผ๋ฉด ์Šคํ‚ต)
npm run dev

http://localhost:5173 ์—์„œ ๋Œ€์‹œ๋ณด๋“œ ํ™•์ธ.

3. ์‹คํ—˜ ํŒŒ์ดํ”„๋ผ์ธ (์„ ํƒ, ์ƒˆ ํ„ฐ๋ฏธ๋„)

cd experiment
cp .env.example .env         # ์ตœ์ดˆ 1ํšŒ๋งŒ
source venv/bin/activate     # ์ด๋ฏธ venv ์ƒ์„ฑยท์„ค์น˜๋˜์–ด ์žˆ์Œ
python run_all.py --priority all   # 27๊ฐœ ์กฐ๊ฑด ์ „๋ถ€ (์กฐ๊ฑด๋‹น ์•ฝ 7๋ถ„)

์™„๋ฃŒ๋˜๋ฉด backend/app/data/metrics.csv๊ฐ€ ์‹ค์ œ ๊ฒฐ๊ณผ๋กœ ์ž๋™ ๊ฐฑ์‹ ๋œ๋‹ค(์ˆ˜๋™ ๊ต์ฒด ๋ถˆํ•„์š”). ๊ฐœ๋ณ„ ๋‹จ๊ณ„๋งŒ ์‹คํ–‰ํ•˜๋ ค๋ฉด download_kitti.py โ†’ data_loader.py โ†’ error_injector.py โ†’ train.py โ†’ evaluate.py ์ˆœ์„œ๋กœ ๊ฐ๊ฐ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

์žฅ์‹œ๊ฐ„ ์‹คํ–‰์ด ๋Š๊ฒผ๋‹ค๋ฉด ๊ฐ™์€ ๋ช…๋ น์— --skip-done์„ ๋ถ™์—ฌ ์ด์–ด์„œ ๋Œ๋ฆฐ๋‹ค. ์œ ํ˜•๋ณ„ ๋น„๊ต๊ฐ€ ๋ชฉ์ ์ด๋ฉด --breadth-first๋กœ ์œ ํ˜•๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๋จผ์ € ๋๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

4. ์ง„๋‹จ ํ’ˆ์งˆ ์ธก์ • (์„ ํƒ)

cd experiment && source venv/bin/activate

python evaluate_box_accuracy.py --limit 80                # ๋ฐ•์Šค ๋‹จ์œ„ ์ •๋ฐ€๋„ยท์žฌํ˜„์œจ
python evaluate_box_accuracy.py --limit 80 --reuse-cache  # ์‹ฌ๊ฐ๋„ ๊ณต์‹๋งŒ ๋ฐ”๊ฟจ์„ ๋•Œ (20๋ถ„ โ†’ 2์ดˆ)
python evaluate_label_diagnosis.py --limit 80             # ๋ฐ์ดํ„ฐ์…‹ ๋‹จ์œ„ ์œ ํ˜• ํŒ๋ณ„ ์ •ํ™•๋„
python cleanup_runs.py                                    # ์•ˆ ์“ฐ๋Š” ํ•™์Šต ์‚ฐ์ถœ๋ฌผ ํ™•์ธ (--delete๋กœ ์‚ญ์ œ)

๋ช…๋ น์–ด ์ „์ฒด ๋ชฉ๋ก์€ docs/09-getting-started.md.

์‹คํ—˜ ์Šคํฌ๋ฆฝํŠธ

experiment/ ์•„๋ž˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋งŽ๋‹ค. ์–ธ์ œ ์“ฐ๋Š”์ง€๋กœ ๋ฌถ์—ˆ๋‹ค. ๊ฐ ํŒŒ์ผ ์ฒซ๋จธ๋ฆฌ docstring์— ์™œ ๋งŒ๋“ค์—ˆ๋Š”์ง€์™€ ๊ทผ๊ฑฐ ๋ฌธ์„œ ์ ˆ์ด ์ ํ˜€ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ค€๋น„

์Šคํฌ๋ฆฝํŠธ ํ•˜๋Š” ์ผ
download_kitti.py KITTI ๋ผ๋ฒจ ์ „์ฒด + ํ•„์š”ํ•œ ์ด๋ฏธ์ง€๋งŒ Range ์š”์ฒญ์œผ๋กœ. --select nested๋Š” ๊ทœ๋ชจ ๋น„๊ต์šฉ ์ˆœ์—ด์„ ๋‚จ๊ธด๋‹ค
download_coco.py COCO val2017์—์„œ ์ž๋™์ฐจ ํ”„๋ ˆ์ž„๋งŒ. ์ง„์งœ ๋„๋ฉ”์ธ ์ด๋™ ์‹คํ—˜์šฉ(docs/21 AI)
prepare_coco.py COCO๋ฅผ KITTI์™€ ๊ฐ™์€ ํ˜•์‹ยท๋ถ„ํ• ๋กœ ๋ณ€ํ™˜
data_loader.py ์›๋ณธ โ†’ YOLO ํ˜•์‹ ํ•™์Šต/ํ‰๊ฐ€์…‹
error_injector.py ์กฐ๊ฑด๋ณ„ ์˜ค๋ฅ˜ ๋ผ๋ฒจ ์ƒ์„ฑ
build_clean_subset.py ์ •์ œ ์กฐ๊ฑด๊ณผ ๊ฐ™์€ ํ”„๋ ˆ์ž„์— ๊นจ๋—ํ•œ ๋ผ๋ฒจ์„ ๋ถ™์ธ ๋Œ€์กฐ๊ตฐ

ํ•™์Šตยทํ‰๊ฐ€

์Šคํฌ๋ฆฝํŠธ ํ•˜๋Š” ์ผ
train.py / evaluate.py ์กฐ๊ฑด ํ•˜๋‚˜ ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„ ๋ฌถ์Œ
run_all.py ์กฐ๊ฑด ์ „์ฒด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ
run_multi_seed.py ๊ฐ™์€ ์กฐ๊ฑด์„ ์‹œ๋“œ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ โ€” ์˜ค์ฐจ๋ง‰๋Œ€์˜ ๊ทผ๊ฑฐ
refine_ruler.py ์ž๊ธฐ ์ •์ œ์šฉ ๋ถ€๋ถ„์ง‘ํ•ฉ ์ƒ์„ฑ(docs/21 WยทXยทAJยทAK)

์ง„๋‹จ ํ’ˆ์งˆ ์ธก์ •

์Šคํฌ๋ฆฝํŠธ ํ•˜๋Š” ์ผ
diagnose_labels.py ๋ฐ•์Šค ๋‹จ์œ„ ์ง„๋‹จ. ์ œํ’ˆ์ด ๋ถ€๋ฅด๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ
evaluate_box_accuracy.py ์ฃผ์ž…ํ•œ ์˜ค๋ฅ˜๋ฅผ ์–ผ๋งˆ๋‚˜ ์งš์–ด๋‚ด๋Š”์ง€ ์ฑ„์ 
compare_rulers_seeded.py ์ž๋ฅผ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ์ง„๋‹จ. --seeds๋กœ ์‹œ๋“œ ์‚ฐํฌ๊นŒ์ง€
bench_rulers_on_coco.py ์ž๋“ค์„ ๊ฐ™์€ ํ‰๊ฐ€์…‹์œผ๋กœ ์žฌ๊ธฐ โ€” ๊ฐ์ž ๊ฒ€์ฆ์…‹ ์ ์ˆ˜๋Š” ๋น„๊ต ๋ถˆ๊ฐ€
analyze_ruler_spread.py ์ž๋ณ„ยท์œ ํ˜•๋ณ„ ์‚ฐํฌ
pairwise_rulers.py ๋ชจ๋“  ์Œ์˜ ๊ฐ„๊ฒฉ์„ ฯƒ๋กœ ํ™˜์‚ฐ
recompute_without.py ์ €์žฅ๋œ ์กฐ๊ฑด๋ณ„ ์ ์ˆ˜์—์„œ ์กฐ๊ฑด๊ตฐ์„ ๋นผ๊ณ  ์žฌ์ง‘๊ณ„ (GPU ๋ถˆํ•„์š”)
compare_refine_scale.py ์ž๊ธฐ ์ •์ œ ์†์ต์„ ๊ทœ๋ชจ๋ณ„๋กœ ๋ถ„ํ•ด
compare_keep_ratio.py ์ž๊ธฐ ์ •์ œ๋ฅผ ์ •์ œ ์•ˆ ํ•˜๊ธฐ์™€ ์ง์ ‘ ๊ฒฌ์ค€๋‹ค(docs/21 AT)
check_confidence_margin.py / check_prediction_drift.py ์ž์˜ ์•ˆ์ •์„ฑ์ด ์–ด๋””์„œ ์˜ค๋Š”์ง€(docs/21 AH)

์ ๊ฒ€ยท์ •๋ฆฌ

์Šคํฌ๋ฆฝํŠธ ํ•˜๋Š” ์ผ
check_consistency.py ์กฐ์šฉํžˆ ํ‹€๋ฆฌ๋Š” ๊ฒƒ๋“ค์„ ์žก๋Š”๋‹ค. ๋ผ๋ฒจ ์—†๋Š” ์ด๋ฏธ์ง€, ๊นจ์ง„ ๋งํฌ, ๊ฒน์น˜๋Š” ์‚ฐ์ถœ๋ฌผ ๊ฒฝ๋กœ
cleanup_runs.py ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ•™์Šต ์‚ฐ์ถœ๋ฌผ ์ •๋ฆฌ
move_to_drive.py ๋งํฌ๋ฅผ ๋ณด์กดํ•˜๋ฉฐ ๋‹ค๋ฅธ ๋“œ๋ผ์ด๋ธŒ๋กœ ์ด๋™ (robocopy๋Š” ๋งํฌ๋ฅผ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ๋งŒ๋“ ๋‹ค)
relink_duplicates.py ๋ณต์‚ฌ๋ณธ์ด ๋œ ํŒŒ์ผ์„ ๋‚ด์šฉ ๋Œ€์กฐ ํ›„ ๋งํฌ๋กœ ํ™˜์›
build_docs_toc.py docs/21์˜ ๋ชฉ์ฐจ ์ƒ์„ฑ. ์ •์ •๋œ ์ ˆ์„ ํ‘œ์‹œํ•œ๋‹ค

ํ…Œ์ŠคํŠธ

# ๋ฐฑ์—”๋“œ (API ์—”๋“œํฌ์ธํŠธ, ์ง„๋‹จ ๋กœ์ง โ€” ๊ณ ์ •๋œ ํ…Œ์ŠคํŠธ์šฉ CSV๋กœ ๊ฒฐ์ •๋ก ์  ๊ฒ€์ฆ)
cd backend && source venv/bin/activate && python -m pytest tests/ -v

# ์‹คํ—˜ ํŒŒ์ดํ”„๋ผ์ธ (์˜ค๋ฅ˜ ๋ผ๋ฒจ ๋ณ€ํ˜• ๋กœ์ง โ€” GPU/ํ•™์Šต ๋ถˆํ•„์š”, ์ˆœ์ˆ˜ ํ•จ์ˆ˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ)
cd experiment && source venv/bin/activate && python -m pytest tests/ -v

ํ™˜๊ฒฝ๋ณ€์ˆ˜

๋ชจ๋“  ์„ค์ •๊ฐ’(ํฌํŠธ, CORS origin, API base URL, ์‹คํ—˜ ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐยท์‹œ๋“œยท๋‹ค์šด๋กœ๋“œ URL ๋“ฑ)์€ ์ฝ”๋“œ์— ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ณ  .env ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ฐ ์„œ๋ธŒํ”„๋กœ์ ํŠธ์— .env.example์ด ์žˆ์œผ๋‹ˆ ์ตœ์ดˆ 1ํšŒ .env๋กœ ๋ณต์‚ฌํ•ด์„œ ์“ฐ๋ฉด ๋œ๋‹ค. .env๋Š” .gitignore์— ํฌํ•จ๋˜์–ด ์ปค๋ฐ‹๋˜์ง€ ์•Š๋Š”๋‹ค.

backend/.env

๋ณ€์ˆ˜ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
HOST 0.0.0.0 uvicorn ๋ฐ”์ธ๋”ฉ ํ˜ธ์ŠคํŠธ
PORT 8000 uvicorn ํฌํŠธ
CORS_ORIGINS http://localhost:5173 ์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„๋œ ํ—ˆ์šฉ origin ๋ชฉ๋ก
METRICS_CSV_PATH app/data/metrics.csv ์‹คํ—˜ ๊ฒฐ๊ณผ CSV ๊ฒฝ๋กœ (์„ ํƒ, ๋ณดํ†ต ๊ทธ๋Œ€๋กœ ๋‘ )

frontend/.env

๋ณ€์ˆ˜ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
VITE_API_BASE_URL http://localhost:8000 ๋ฐฑ์—”๋“œ API base URL

experiment/.env

๋ณ€์ˆ˜ ๊ธฐ๋ณธ๊ฐ’ ์„ค๋ช…
AIDA_SEED 42 ๋ถ„ํ• ยท์˜ค๋ฅ˜ ์ฃผ์ž…์— ์“ฐ์ด๋Š” ๊ณ ์ • ์‹œ๋“œ
AIDA_TARGET_CLASS Car ์ถ”์ถœ ๋Œ€์ƒ KITTI ํด๋ž˜์Šค
AIDA_DATASET kitti ๋ฐ์ดํ„ฐ์…‹. coco๋กœ ๋‘๋ฉด ์กฐ๊ฑดยท๋ผ๋ฒจยท์ง€ํ‘œ ๊ฒฝ๋กœ๊ฐ€ ์ „๋ถ€ ๊ฐˆ๋ฆฐ๋‹ค (์ง„์งœ ๋„๋ฉ”์ธ ์ด๋™ ์‹คํ—˜์šฉ, docs/21 AI)
AIDA_TRAIN_SEED AIDA_SEED ํ•™์Šต ์‹œ๋“œ. ์ž๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค์–ด ์‚ฐํฌ๋ฅผ ์žด ๋•Œ ์“ด๋‹ค โ€” ์˜ค๋ฅ˜ ์‹œ๋“œ๋ฅผ ๋ฐ”๊ฟ”๋„ clean ์กฐ๊ฑด์€ ์•ˆ ๋ณ€ํ•˜๋ฏ€๋กœ ๊ฐ™์€ ์ž๊ฐ€ ๋‚˜์˜จ๋‹ค
AIDA_VAL_HOLDOUT 0 1์ด๋ฉด ํ‰๊ฐ€์…‹์„ ํ”„๋ ˆ์ž„ ๋ชฉ๋ก ๋์—์„œ ๊ฐ€์ ธ์™€ AIDA_N_TRAIN๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณ ์ •ํ•œ๋‹ค. ๊ทœ๋ชจ๋ฅผ ๋ฐ”๊ฟ”๊ฐ€๋ฉฐ ๋น„๊ตํ•  ๋•Œ ์ผ ๋‹ค
AIDA_N_TRAIN / AIDA_N_VAL 400 / 120 ํ•™์Šต/ํ‰๊ฐ€์…‹ ์ด๋ฏธ์ง€ ์ˆ˜ (์Šค๋ชจํฌ ํ…Œ์ŠคํŠธ ์‹œ 16/8 ๋“ฑ์œผ๋กœ ์ถ•์†Œ)
AIDA_ERROR_RATIO 0.3 ๋ผ๋ฒจ ์ค‘ ์˜ค๋ฅ˜๋ฅผ ์ฃผ์ž…ํ•  ๋น„์œจ
AIDA_EPOCHS 50 YOLOv8n ํ•™์Šต ์—ํญ ์ˆ˜
AIDA_BATCH_SIZE 16 ๋ฐฐ์น˜ ํฌ๊ธฐ
AIDA_IMG_SIZE 640 ์ž…๋ ฅ ์ด๋ฏธ์ง€ ํฌ๊ธฐ
AIDA_DEVICE auto ํ•™์Šต ๋””๋ฐ”์ด์Šค. auto๋Š” cuda > mps > cpu ์ˆœ ์ž๋™ ๊ฐ์ง€(M1 MacยทCUDA ๋ฐ์Šคํฌํƒ‘ ์–ด๋””์„œ๋“  ๋™์ผ ์„ค์ •์œผ๋กœ ๋™์ž‘), ํŠน์ • ๋””๋ฐ”์ด์Šค ๊ฐ•์ œ ์‹œ cuda/mps/cpu ์ค‘ ํ•˜๋‚˜๋กœ ๋ช…์‹œ
AIDA_KITTI_LABEL_URL / AIDA_KITTI_IMAGE_URL KITTI S3 URL ์›๋ณธ ๋‹ค์šด๋กœ๋“œ ๊ฒฝ๋กœ

์‹ค์ œ ์‹คํ—˜ ๊ฒฐ๊ณผ ๋ฐ˜์˜ํ•˜๊ธฐ

์ง€๊ธˆ์€ backend/app/data/metrics.csv๊ฐ€ ๋ชฉ์—…(mock) ๋ฐ์ดํ„ฐ๋‹ค. experiment/ ํŒŒ์ดํ”„๋ผ์ธ(์œ„ "์‹คํ–‰ ๋ฐฉ๋ฒ•" 3๋ฒˆ)์ด ๋๋‚˜๋ฉด ๊ฐ™์€ ์ปฌ๋Ÿผ ๊ตฌ์กฐ (condition,type,magnitude,map50,map50_95,precision,recall)๋กœ ์ด ํŒŒ์ผ์ด ์ž๋™ ๊ฐฑ์‹ ๋˜์–ด ๋Œ€์‹œ๋ณด๋“œ์— ์‹ค์ œ ๊ฒฐ๊ณผ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋ฐ˜์˜๋œ๋‹ค. ์ฝ”๋“œ ์ˆ˜์ • ๋ถˆํ•„์š”.

API ์—”๋“œํฌ์ธํŠธ

์—ฐ๊ตฌ ๊ฒฐ๊ณผ โ€” KITTI 412์žฅ์— ์˜ค๋ฅ˜๋ฅผ ์ฃผ์ž…ํ•ด ์žฐ ๊ธฐ์ค€ ์‹คํ—˜. ์–ด๋А ๋ฐ์ดํ„ฐ์…‹์„ ์˜ฌ๋ฆฌ๋“  ๊ฐ™์€ ๊ฐ’์ด๋‹ค.

๋ฉ”์„œ๋“œ ๊ฒฝ๋กœ ์„ค๋ช…
GET /api/health ์„œ๋ฒ„ ์ƒํƒœ ํ™•์ธ
GET /api/summary ๊ธฐ์ค€ ์‹คํ—˜ ์š”์•ฝ (ํ’ˆ์งˆ ์ ์ˆ˜, ์ด ์ด๋ฏธ์ง€/๊ฐ์ฒด ์ˆ˜)
GET /api/conditions ์กฐ๊ฑด๋ณ„ ์„ฑ๋Šฅ ์ง€ํ‘œ (mAP, Precision, Recall)
GET /api/conditions/aggregated ์‹œ๋“œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋ฌถ์€ ํ‰๊ท ๊ณผ ์˜ค์ฐจ๋ง‰๋Œ€
GET /api/obb/conditions ํšŒ์ „ ๋ฐ•์Šค(OBB)๋กœ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋‹ค์‹œ ์žฐ ๊ฒƒ
GET /api/diagnose ์˜ค๋ฅ˜ ์œ ํ˜•๋ณ„ ์ง„๋‹จ ๋ฆฌํฌํŠธ
GET /api/roi-estimate ์žฌ๊ฒ€์ˆ˜ ๋น„์šฉ ๋Œ€๋น„ ํšŒ์ˆ˜ ์ถ”์ •

๋‚ด ๋ฐ์ดํ„ฐ์…‹ ์ง„๋‹จ โ€” ์˜ฌ๋ฆฐ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์‹ค์ œ๋กœ ์ถ”๋ก ์„ ๋Œ๋ฆฐ๋‹ค.

๋ฉ”์„œ๋“œ ๊ฒฝ๋กœ ์„ค๋ช…
POST /api/datasets/upload zip ์—…๋กœ๋“œ. ํด๋”์งธ ์••์ถ•ํ•œ ๊ฒƒ์€ ํ•œ ๊ฒน ๋ฒ—๊ฒจ ์ฝ๋Š”๋‹ค
GET /api/datasets/reliability-profiles ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€ ๋ชจ๋ธ ๋ชฉ๋ก
POST /api/datasets/{id}/diagnose ๋ฐ์ดํ„ฐ์…‹ ๋‹จ์œ„ โ€” ์–ด๋–ค ์˜ค๋ฅ˜ ์œ ํ˜•๊ณผ ๋‹ฎ์•˜๋‚˜
POST /api/datasets/{id}/diagnose-labels ๋ฐ•์Šค ๋‹จ์œ„ โ€” ์žฌ๊ฒ€์ˆ˜ ๋ชฉ๋ก์„ ๋งŒ๋“ ๋‹ค
GET /api/datasets/{id}/label-diagnosis ๋งŒ๋“ค์–ด ๋‘” ์žฌ๊ฒ€์ˆ˜ ๋ชฉ๋ก (์ถ”๋ก  ์•ˆ ํ•จ)
GET /api/datasets/{id}/images/{name} ๋ฌธ์ œ ๋ฐ•์Šค๋ฅผ ๊ทธ๋ฆฌ๋ ค๊ณ  ์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ค€๋‹ค
GET /api/datasets/{id}/report ๋‚ด๋ ค๋ฐ›๋Š” HTML ๋ฆฌํฌํŠธ
GET /api/datasets/history ์ง€๋‚œ ์ง„๋‹จ ๋ชฉ๋ก โ€” ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ๊ฒŒ
DELETE /api/datasets/{id} ์˜ฌ๋ฆฐ ์ด๋ฏธ์ง€์™€ ์ง„๋‹จ ๊ฒฐ๊ณผ๋ฅผ ์ง€์šด๋‹ค

/{dataset_id}/... ๋Š” ์ „๋ถ€ ๋‘ ์กฐ๊ฐ์ด๋ผ ํ•œ ์กฐ๊ฐ์งœ๋ฆฌ /historyยท/uploadยท /reliability-profiles์™€๋Š” ์„œ๋กœ ๊ฐ€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ๋‹ค๋งŒ ํ•œ ์กฐ๊ฐ์งœ๋ฆฌ /{dataset_id} ๋ฅผ ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด ๊ทธ๋•Œ๋Š” ์„ ์–ธ ์ˆœ์„œ๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

ํ‰๊ฐ€์šฉ ๊ฐ€๋ฆผ ํŒ์ • โ€” ์ œํ’ˆ ํŒ์ •๊ณผ ํŒŒ์ผยทAPI๊ฐ€ ๋”ฐ๋กœ๋‹ค (์„ค๊ณ„).

๋ฉ”์„œ๋“œ ๊ฒฝ๋กœ ์„ค๋ช…
POST /api/datasets/{id}/evaluations ํ›„๋ณด ๋ชฉ๋ก์„ ์–ผ๋ฆฐ๋‹ค. judge_budget์„ ์ฃผ๋ฉด ๋‘ ๋ฐฉ๋ฒ• ์ƒ์œ„ N๊ฑด์˜ ํ•ฉ์ง‘ํ•ฉ๋งŒ ํŒ์ •
GET /api/datasets/{id}/evaluations/{eid}/queue ์ˆœ์œ„ยท์ ์ˆ˜ยท์ถ”์ฒœ ์ถœ์ฒ˜๋ฅผ ๋บ€ ํŒ์ • ๋ชฉ๋ก (๊ณ ์ • ์”จ์•—์œผ๋กœ ์„ž์Œ)
PUT /api/datasets/{id}/evaluations/{eid}/adjudications ํŒ์ • ์ €์žฅ
POST /api/datasets/{id}/evaluations/{eid}/activity ์ž‘์—… ์‹œ๊ฐ„ ๊ธฐ๋ก
GET /api/datasets/{id}/evaluations/{eid}/export ์ง‘๊ณ„์šฉ ๋‚ด๋ณด๋‚ด๊ธฐ (methods, scope)

์ž์„ธํ•œ ์‘๋‹ต ์Šคํ‚ค๋งˆ๋Š” docs/04-api-reference.md.

ํŒ€

์ด๋ฆ„ ์—ญํ•  ์†Œ์†
๋ฐ•์„ฑ์› ๋Œ€ํ‘œ / ๊ธฐ์ˆ ๊ฐœ๋ฐœ (๋ฐฑ์—”๋“œยท์ธํ”„๋ผ) ์ˆ˜์›๋Œ€ํ•™๊ต ์ •๋ณด๋ณดํ˜ธํ•™๊ณผ
๊น€ํ•ด์—ฐ ๊ธฐ์ˆ ๊ฐœ๋ฐœ (AI/๊ฐ์ฒดํƒ์ง€) ์˜๋‚จ๋Œ€ํ•™๊ต ์ „์ž๊ณตํ•™๊ณผ
์„œ์ •ํ˜ธ ํ”Œ๋žซํผ๊ฐœ๋ฐœ ๋Œ€๊ตฌ๊ฐ€ํ†จ๋ฆญ๋Œ€ํ•™๊ต ๋ฐ˜๋„์ฒด์ „์ž๊ณตํ•™๊ณผ
์ •๊ฒฝ์ค€ ํ”Œ๋žซํผ๊ฐœ๋ฐœ (ํ”„๋ก ํŠธ์—”๋“œ) ๊ณ ๋ ค๋Œ€ํ•™๊ต ๊ธฐ๊ณ„๊ณตํ•™๋ถ€

About

AIDA: AI-driven platform for detecting bounding box label errors and prioritizing re-inspection in autonomous driving datasets.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages