์ด ํ๋ก์ ํธ๊ฐ ์ฒ์์ด๋ผ๋ฉด
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๋จ๊ณ โ ๋๋ฝ์ ์ค๋ฅ๋ก ๊ณ ๋ฅด๋ฉด ๊ฐ์ ์ค์ ๊ฐ์ฒด๋ผ๋ฆฌ ๊ฐ์ ๋ฒํธ(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
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: ํ์ง ์ ์ ์นด๋ ยท ์ฑ๋ฅ ์ ํ ๊ทธ๋ํ ยท ์ฌ๊ฒ์ ์ฐ์ ์์ ํ
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 (์๋ธํ๋ก์ ํธ๋ณ) |
cd backend
cp .env.example .env # ์ต์ด 1ํ๋ง (์ด๋ฏธ ์์ผ๋ฉด ์คํต)
source venv/bin/activate # ์ด๋ฏธ venv ์์ฑยท์ค์น๋์ด ์์
uvicorn app.main:app --reload --port 8000http://localhost:8000/docs ์์ API ํ์ธ ๊ฐ๋ฅ.
cd frontend
cp .env.example .env # ์ต์ด 1ํ๋ง (์ด๋ฏธ ์์ผ๋ฉด ์คํต)
npm run devhttp://localhost:5173 ์์ ๋์๋ณด๋ ํ์ธ.
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๋ก ์ ํ๋ง๋ค ํ๋์ฉ ๋จผ์ ๋๋ผ ์ ์๋ค.
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)๋ก ์ด ํ์ผ์ด ์๋
๊ฐฑ์ ๋์ด ๋์๋ณด๋์ ์ค์ ๊ฒฐ๊ณผ๊ฐ ๊ทธ๋๋ก ๋ฐ์๋๋ค. ์ฝ๋ ์์ ๋ถํ์.
์ฐ๊ตฌ ๊ฒฐ๊ณผ โ 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/๊ฐ์ฒดํ์ง) | ์๋จ๋ํ๊ต ์ ์๊ณตํ๊ณผ |
| ์์ ํธ | ํ๋ซํผ๊ฐ๋ฐ | ๋๊ตฌ๊ฐํจ๋ฆญ๋ํ๊ต ๋ฐ๋์ฒด์ ์๊ณตํ๊ณผ |
| ์ ๊ฒฝ์ค | ํ๋ซํผ๊ฐ๋ฐ (ํ๋ก ํธ์๋) | ๊ณ ๋ ค๋ํ๊ต ๊ธฐ๊ณ๊ณตํ๋ถ |



