์ฌ์ฉ์๊ฐ ๋ฑ๋กํ ์ผ๊ตด์ ๊ธฐ์ค์ผ๋ก ๊ณต๊ฐ ์น ํ๋ณด์์ ๊ฐ์ ์ฌ๋์ ๊ณจ๋ผ๋ด๊ณ , ํ๋ณด ์์์ ๋ฅํ์ดํฌ ์ํ์ ์์น์ ๊ทผ๊ฑฐ๋ก ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๋ชจ๋ธ๋งยทAPI ํ๋ก์ ํธ๋ค.
ํ์ฌ ๋ฐ๋ก ์คํํ ์ ์๋ ๋ฒ์๋ ArcFace ์ผ๊ตด ๋์ผ์ธ ๋น๊ต, Google Vision ๋๋ ์ฌ์ฉ์๊ฐ ์ ๋ฌํ ํ๋ณด URL์ ์์ ์ฑ ๊ฒ์ฌ, ํ๋ณด ์ด๋ฏธ์ง ArcFace ์ ๋ณ, EfficientNet-B4 ONNX ์ด๋ฏธ์ง ๋ถ์, ์งง์ ์์ 16ํ๋ ์ ๋ถ์ API,
scan_id๋ก ์งํ๋ฅ ์ ์กฐํํ๋ ๋น๋๊ธฐ ์ด๋ฏธ์ง ํ๋ณด API๋ค. Google Vision Web Detection ํธ์ถ์ ๋ฅ์๊ฐ ์๋ฒ Draft PR #55์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ ์ค์ ํค E2E ๊ฒ์ฆ๊ณผ ๊ฒ์ ํ๋ณด ์์์ ์๋ ๋ค์ด๋ก๋๋ ๋จ์ ์๋ค. ํ์ฌ ๋ชจ๋ธ์ ์ด์ยท๋ณธ์ธ์ธ์ฆยท์๋ ์ฐจ๋จ ์ฉ๋๋ก ์น์ธ๋์ง ์์๋ค.
๋ฅ์๊ฐ์ด ์ต์ข ์ ์ผ๋ก ๋ง๋ค๋ ค๋ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ณธ์ธ ์ผ๊ตด 3์ฅ ๋ฑ๋ก
โ
Google Cloud Vision์ผ๋ก ๊ณต๊ฐ ์ด๋ฏธ์งยท๋ฐ๊ฒฌ ํ์ด์ง ํ๋ณด ์์ง
โ
ArcFace: ์ ๋ง ๋ณธ์ธ ์ผ๊ตด๊ณผ ๋น์ทํ ํ๋ณด์ธ์ง ์ ๋ณ
โ
EfficientNet-B4: ํ๋ณด ์์์ด ๋ฅํ์ดํฌ์ธ์ง ๋ถ์
โ
์ผ๊ตด ์ ์ฌ๋ + ๋ฅํ์ดํฌ ์ํ๋ + ๋ฐ๊ฒฌ ์์น๋ฅผ ํ๋ฉด์ ํ์
โ
์ฌ์ฉ์๊ฐ ์ฆ๊ฑฐ๋ฅผ ํ์ธํ๊ณ ์ ๊ณ ยท์ ์ธ ์ฌ๋ถ ๊ฒฐ์
๋ชจ๋ธ์ ์์น๋ ํ๋จ์ ๋๋ ๊ทผ๊ฑฐ๋ค. ์ผ๊ตด ์ ์ฌ๋๋ง์ผ๋ก ๋ฅํ์ดํฌ๋ผ๊ณ ๊ฒฐ๋ก ๋ด๋ฆฌ๊ฑฐ๋, ๋ชจ๋ธ ๊ฒฐ๊ณผ๋ง์ผ๋ก ๊ฒ์๋ฌผ์ ์๋ ์ญ์ ํ์ง ์๋๋ค.
| ์ง๋ฌธ | ๋ต |
|---|---|
| ์ ํ๋? | ์น ๊ฒ์ ๊ฒฐ๊ณผ์๋ ๋ณธ์ธ์ด ์๋ ์ผ๊ตด๊ณผ ์ค์ ยท์กฐ์ ์ฌ๋ถ๋ฅผ ๋ชจ๋ฅด๋ ์ด๋ฏธ์ง๊ฐ ํจ๊ป ์์ด๋ฏ๋ก, ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋๋ก ํผํด ํ๋ณด๋ก ๋ณด์ฌ์ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. |
| ์ด๋ป๊ฒ ํ๋? | Google Cloud Vision์ ๊ณต๊ฐ ํ๋ณด URL๊ณผ ๋ฐ๊ฒฌ ํ์ด์ง๋ฅผ ๋ชจ์ผ๊ณ , ArcFace๊ฐ ๋ฑ๋ก ์ผ๊ตด๊ณผ ๊ฐ์ ์ฌ๋ ํ๋ณด๋ฅผ ์ ๋ณํ ๋ค, EfficientNet-B4 ONNX๊ฐ ์ด๋ฏธ์งยท์์์ ๋ฅํ์ดํฌ ์์ฌ ์์ ์๋ฅผ ๊ณ์ฐํ๋ค. |
| ๋ฌด์์ ํด๊ฒฐํ๋? | ๊ฒ์ยท๋์ผ์ธ ์ ๋ณยท๋ฅํ์ดํฌ ๋ถ์์ scan_id ์์
ํ๋๋ก ์ฐ๊ฒฐํ๊ณ , ํด๋ผ์ด์ธํธ๊ฐ ํ๋ฅ ๋ก ์คํดํ์ง ์๋ ํ๋ฉด์ฉ API ์๋ต์ ๋ง๋ค์๋ค. |
| ์ด๋ป๊ฒ ํ์ฉํ๋? | ๋ฅ์๊ฐ ์๋ฒ๊ฐ ๋ชจ๋ธ API๋ฅผ ๋ด๋ถ ํธ์ถํ๊ณ , ์ฑ์๋ ์ถ์ฒยท์ผ๊ตด ์ผ์น ๋จ๊ณยท๋ฅํ์ดํฌ ์์ฌ ์ ํธยท๊ถ์ฅ ํ๋๋ง ์ ๋ฌํ๋ค. ์ฌ์ฉ์๊ฐ ์๋ฌธ์ ๊ฒํ ํ๊ณ ์ ๊ณ ์๋ฃ๋ฅผ ๋ง๋๋ ๊ทผ๊ฑฐ๋ก ์ด๋ค. |
์์ง ํด๊ฒฐํ์ง ์์ ๋ฒ์๋ ๋ถ๋ช ํ ๊ตฌ๋ถํ๋ค. Google Vision ์ค์ ํค ๊ธฐ๋ฐ E2E์ ๊ฒ์๋ ์์ URL ์๋ ๋ค์ด๋ก๋, ์ค์ ์นยท๋ชจ๋ฐ์ผ ์ธ๋ถ ๋ฐ์ดํฐ์ ์ด์ Gate๋ ๋จ์ ์๋ค. ๋ฐ๋ผ์ ํ์ฌ ์๋ต์ ์๋ ์ฐจ๋จยท์๋ ์ ๊ณ ๋ช ๋ น์ด ์๋๋ค.
| ๊ธฐ๋ฅ | ํ๋ ์ผ | ํ์ฌ ์ํ |
|---|---|---|
| ๊ณต๊ฐ ํ๋ณด ๊ฒ์ | ๊ณต๊ฐ ์น์์ ์ด๋ฏธ์ง URL๊ณผ ๋ฐ๊ฒฌ ํ์ด์ง ์์ง | Google Vision ์ด๋ํฐ๊ฐ ๋ฅ์๊ฐ Draft PR #55์ ์ฐ๊ฒฐ๋จ, ์ค์ ํค Recall@10 ๊ฒ์ฆ ์ (#13) |
| ์ผ๊ตด ํ๋ณด ์ ๋ณ | ๋ฑ๋ก ์ผ๊ตด๊ณผ ํ๋ณด ์ผ๊ตด์ ๋์ผ์ธ ๊ฐ๋ฅ์ฑ ๋น๊ต | ๊ฒ์ ์ด๋ฏธ์ง ๋ค์ด๋ก๋ยทArcFace ๋ฐฐ์น ์ฐ๊ฒฐ ์๋ฃ, ๋ค์ค ์ผ๊ตดยท์์ ํธ๋ ๋ฏธ์ฐ๊ฒฐ (#14) |
| ๋ฅํ์ดํฌ ํ๋ณ | ํ๋ณด ์ผ๊ตด ํ๋ ์์ด ์ค์ ์ธ์ง ์กฐ์์ธ์ง ๋ถ์ | ONNX ์ด๋ฏธ์งยท์์ 16ํ๋ ์ ํ๊ท API ๊ตฌํ, ์ด์ Gate ๋ฏธํต๊ณผ (#25) |
| ๋ฅํ์ดํฌ ๋ชจ๋ธ ๊ณ ๋ํ | ์ค์ ์์ ์ค๊ฒฝ๊ณ ์ ์น ์ดฌ์ ์ดํ ์ฝ์ ๊ฐ์ | JPEG ์กฐ๊ฑด๋ถ ๊ฒฐํฉ Validation ํ๋ณด ์ ํ, ์ธ๋ถ ๊ฒ์ฆ ์ ์ด๋ผ API ๋ฏธ์ ์ฉ; SBIยทHard NegativeยทFTCN ์คํ ์ (#35) |
| ํ๋ฉด์ฉ ์ ๋ขฐ๋ | ์ผ๊ตด ์ ์ฌ๋์ ๋ฅํ์ดํฌ ์ ์๋ฅผ ์ฌ์ฉ์์ฉ ์์น๋ก ๋ณด์ | K-FACE 400๋ช ์ผ๊ตด ๊ฒ์ฆยท๋ฅํ์ดํฌ ๋ณด์ ์คํ ์๋ฃ, ๋ Gate ๋ชจ๋ ๋ฏธํต๊ณผ๋ก ํ๋ฅ ํ์ ๋ณด๋ฅ (#16) |
| ํตํฉ ๋น๋๊ธฐ API | ๊ฒ์ โ ์ผ๊ตด ์ ๋ณ โ ๋ฅํ์ดํฌ ํ๋ณ์ ํ๋์ ์์ ์ผ๋ก ์ฐ๊ฒฐ | ์์ ๋ฑ๋กยทscan_idยท์งํ ์กฐํยท์ด๋ฏธ์ง ํ๋ณด ๊ฒฐ๊ณผ ์๋ฃ, ์์ URLยท์๊ตฌ ํ๋ ๋ฏธ์ฐ๊ฒฐ (#17) |
์ธ๋ถ ์๋ฒ ๋ฐฐํฌ๋ ํ์ฌ ํ์ ๋ฒ์๊ฐ ์๋๋ค. ๋ฐ๋ชจ๋ ๋ก์ปฌ Docker API์ Swagger ํ๋ฉด์ผ๋ก ์คํํ๋ค.
์ด ํ๋ก์ ํธ์๋ ๋ชฉ์ ์ด ๋ค๋ฅธ ๋ ๋ชจ๋ธ์ด ์๋ค.
| ๋ชจ๋ธ | ์ง๋ฌธ | ์ฌ์ฉ ๋ฐฉ๋ฒ |
|---|---|---|
ArcFace buffalo_l |
โ๋ ์ผ๊ตด์ด ๊ฐ์ ์ฌ๋์ธ๊ฐ?โ | ์ผ๊ตด์ 512๊ฐ ์ซ์ ํน์ง์ผ๋ก ๋ฐ๊พธ๊ณ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ฅผ ๊ณ์ฐ |
| EfficientNet-B4 | โ์ด ์ผ๊ตด ํ๋ ์์ด ์ค์ ์ธ๊ฐ, ๋ฅํ์ดํฌ์ธ๊ฐ?โ | Celeb-DF-v2 ์ผ๊ตด ํ๋ ์์ผ๋ก ์ค์ ยท๊ฐ์ง ์ด์ง ๋ถ๋ฅ ํ์ต |
์ผ๊ตด์ ์ฐพ๊ณ ์ ๋ ฌํ๋ ์ ์ฒ๋ฆฌ์๋ InsightFace์ SCRFD ๊ณ์ด ๊ฒ์ถ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค. ArcFace๋ ์ฒ์๋ถํฐ ๋ค์ ํ์ตํ์ง ์์๊ณ , ์ฌ์ ํ์ต ๋ชจ๋ธ์ ๋ฅ์๊ฐ์ ๋ฑ๋ก ๋ฐฉ์ยท๋ฐ์ดํฐ ๋ถ๋ฆฌยทํ์ ๊ธฐ์คยทAPI๋ฅผ ์ค๊ณํด ๊ฒ์ฆํ๋ค. EfficientNet-B4๋ ImageNet ์ฌ์ ํ์ต ๊ฐ์ค์น์์ ์์ํด Celeb-DF-v2๋ก ํ์ตํ๋ค.
์น์ธ๋ฐ์ Celeb-DF-v2์ ์ค์ ์ผ๊ตด ์์ Celeb-real๋ก ๋ฑ๋ก ์ฌ์ง ์์ ํ์ ๊ธฐ์ค์ ๊ฒ์ฆํ๋ค.
- ์ ์ฒด ์์: 590๊ฐ, 59๋ช
- ์ ์ ์ฒ๋ฆฌ: 589๊ฐ, 99.83%
- ์ต์ข ํ๊ฐ ๊ฐ๋ฅ ์ธ๋ฌผ: 56๋ช
- Validation/Test ์ธ๋ฌผ: 17๋ช /39๋ช
- ์ฑํ ์ค์ : ์์๋น 5ํ๋ ์, ๋ฑ๋ก ์์ 3๊ฐ ํ๊ท
- ๋ฐ๋ณต ๊ฒ์ฆ: ํ๋ ์ ์ 3์ข ร ๋ฑ๋ก ์ 3์ข ร seed 5๊ฐ = 45์กฐ๊ฑด
- ๋์ ๊ฒ์ฌ: Validation/Test ์ธ๋ฌผ ๊ต์งํฉ 0๊ฑด, ๋ฑ๋ก/ํ์ธ ์์ ๊ต์งํฉ 0๊ฑด
| Test ์งํ | ๊ฒฐ๊ณผ | ์ฌ์ด ๋ป |
|---|---|---|
| ROC-AUC | 1.000000 | ๊ฐ์ ์ฌ๋๊ณผ ๋ค๋ฅธ ์ฌ๋์ ์ ์ ์์๋ฅผ ์ ๊ตฌ๋ถ |
| EER | 0.000000 | ์ด ๋ฐ์ดํฐ ๋ด๋ถ์์ ๋ ์ค๋ฅ์จ์ด ๋ง๋๋ ์ง์ |
| TAR | 1.000000 | ๊ฐ์ ์ฌ๋์ ํต๊ณผ์ํจ ๋น์จ |
| ๊ด์ธก FAR | 0.001380 | ๋ค๋ฅธ ์ฌ๋์ ๊ฐ์ ์ฌ๋์ผ๋ก ์๋ชป ํต๊ณผ์ํจ ๋น์จ |
์ฐ๊ตฌ ๋ชฉํ FAR์ 0.001, ์ฆ ๋ค๋ฅธ ์ฌ๋ 10,000๋ฒ ๋น๊ต ์ค ์ต๋ 10๋ฒ์ ์คํต๊ณผ์๋ค. ๊ด์ธก๊ฐ์ ์ฝ 13.8๋ฒ ์์ค์ด๋ฏ๋ก Celeb-real ๋ด๋ถ ๊ฒฐ๊ณผ๊ฐ ์ข์๋ ์ด์ ๋ณธ์ธ์ธ์ฆ ๊ธฐ์ค์ ํต๊ณผํ์ง ๋ชปํ๋ค. ์ฐ๊ตฌ ํ์ ๊ธฐ์ค๊ฐ์ 0.2823836207389832์ด๋ฉฐ API ์๋ต์๋ research_only_unapproved๋ก ํ์ํ๋ค.
์ ์ฒด 45์กฐ๊ฑด๊ณผ ์ ๋ขฐ๊ตฌ๊ฐ์ reports/celebdf_baseline_audit/2026-08-06, ์ดฌ์ ์ดํ 6์กฐ๊ฑด ๊ฒฐ๊ณผ๋ reports/celebdf_robustness/2026-08-06์ ์๋ค.
AI-Hub ์น์ธ K-FACE 400๋ช ์์ ์ธ๋ฌผ๋น ์ ํ์ง 15์ฅยท์คํ์ง 15์ฅ, ์ด 12,000์ฅ์ ์ฒ๋ฆฌํ๋ค. ์คํ์ง ๋ฑ๋ก 3์ฅยท5์ฅ์ ๋น๊ตํ๊ณ , 400๋ช ์ validation 200๋ช ๊ณผ test 200๋ช ์ผ๋ก ์์ ํ ๋๋ ๊ธฐ์ค๊ฐ ๋์๋ฅผ ๋ง์๋ค.
| Test ์กฐ๊ฑด | TAR | FAR | ํ์ |
|---|---|---|---|
| 3์ฅ ๋ฑ๋กยท์ ํ์ง ์ง์ | 84.44% | 0.1109% | Gate ๋ฏธํต๊ณผ |
| 3์ฅ ๋ฑ๋กยท์คํ์ง ์ง์ | 92.15% | 0.1090% | Gate ๋ฏธํต๊ณผ |
| 5์ฅ ๋ฑ๋กยท์ ํ์ง ์ง์ | 87.74% | 0.1201% | Gate ๋ฏธํต๊ณผ |
| 5์ฅ ๋ฑ๋กยท์คํ์ง ์ง์ | 95.58% | 0.1132% | Gate ๋ฏธํต๊ณผ |
5์ฅ ๋ฑ๋ก์ 3์ฅ๋ณด๋ค ๋ณธ์ธ ํต๊ณผ์จ์ ๋์์ผ๋ฏ๋ก ์์ฐ์์ ๊ถ์ฅํ๋ค.
๊ทธ๋ฌ๋ ์ฐ๊ตฌ Gate์ธ TAR โฅ 90%, FAR โค 0.1%๋ฅผ ๋ชจ๋ ํ์ง์์ ๋์์
๋ง์กฑํ์ง ๋ชปํ๋ค. K-FACE ๊ธฐ์ค๊ฐ์ API ์ด์๊ฐ์ผ๋ก ๊ต์ฒดํ์ง ์๊ณ
research_only_unapproved๋ฅผ ์ ์งํ๋ค. ์ ์ฒด ํ๋กํ ์ฝยท์ ์ ๋ถํฌยทํ๊ณ๋
reports/kface_v3_400_evaluation/2026-08-15์ ์๋ค.
Mac์์ ๊ธฐ์กด ์คํจ ์ด๋ฏธ์ง๋ง SCRFD ์
๋ ฅ ํฌ๊ธฐ 960 โ 1280์ผ๋ก ๋ค์
์ฒ๋ฆฌํด ๊ฒ์ถ ์ฑ๊ณต๋ฅ ์ ์ ํ์ง 78.87% โ 86.65%, ์คํ์ง
88.45% โ 92.08%๋ก ๋์๋ค. ๋ณต๊ตฌ ์
๋ ฅ์ ๋ชจ๋ ์๋ ํ์ ์ ์์ง ์๊ณ ,
๊ฒ์ถ์ ์ 0.60 ์ด์๊ณผ ์คํ์ง ๋ฑ๋ก ํ๋ ์ 9์ฅ, validation FAR
0.09% ์์ ์ฌ์ ๋ฅผ ์ ์ฉํ๋ค.
| v3.1 Test ์กฐ๊ฑด | TAR | FAR | ์ฐ๊ตฌ Gate |
|---|---|---|---|
| 9์ฅ ๋ฑ๋กยท์ ํ์ง ์ง์ | 91.95% | 0.0828% | ํต๊ณผ |
| 9์ฅ ๋ฑ๋กยท์คํ์ง ์ง์ | 92.91% | 0.0975% | ํต๊ณผ |
์ด๋ subject-disjoint test์์ TAR โฅ 90%, FAR โค 0.1%๋ฅผ ์ฒ์
๋์์ ๋ง์กฑํ ์ฐ๊ตฌ ํ๋ณด๋ค. ์ฌ์ฉ์์๊ฒ ํ์ผ 9์ฅ์ ์๊ตฌํ๊ธฐ๋ณด๋ค ์งง์
์ดฌ์์์ ์ข์ ํ๋ ์ 9์ฅ์ ์๋ ์ ํํ๋ ํ์ UX๊ฐ ํ์ํ๋ค. ์ค์ ์นยทSNS
์ธ๋ถ ๊ฒ์ฆ ์ ์๋ ํ์ฌ API์ ์ต๋ ๋ฑ๋ก ์์ ๊ธฐ์ค๊ฐ์ ๋ฐ๊พธ์ง ์๋๋ค. ์ ์ฒด
์ฌํ ๋ฐฉ๋ฒยท๋น๊ตยทํ๊ณ๋
reports/kface_adaptive_quality_gate/2026-08-16์ ์๋ค.
12,000์ฅ ํ๋ณธ์์ ์ฐพ์ v3.1 ์ค์ ์ K-FACE ์ ยท์คํ์ง 864๋ง ์ฅ ์ ์ฒด์ 5๊ฐ์ ์ธ๋ฌผ ๋ถํ ์ ๋ค์ ์ ์ฉํ๋ค. ๋ฑ๋ก ์๋ฅผ 3์ฅยท5์ฅยท9์ฅ์ผ๋ก ๋๋ฆด์๋ก ๋ณธ์ธ ํต๊ณผ์จ์ ์ข์์ก์ง๋ง ์ ์ฒด ์ ํ์ง ์กฐ๊ฑด์์๋ ์ฐ๊ตฌ Gate๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ค.
| ์ ์ฒด ๋ฐ๋ณต Test | ์ ํ์ง ์ต์ TAR | ์คํ์ง ์ต์ TAR | ์ต์ FAR | ํ์ |
|---|---|---|---|---|
| 3์ฅ ๋ฑ๋ก | 69.65% | 88.88% | 0.1021% | ๋ฏธํต๊ณผ |
| 5์ฅ ๋ฑ๋ก | 76.35% | 93.35% | 0.1073% | ๋ฏธํต๊ณผ |
| 9์ฅ ๋ฑ๋ก | 80.36% | 95.22% | 0.1207% | ๋ฏธํต๊ณผ |
ํ๋ณธ Gate ํต๊ณผ๋ ๋ฐฉํฅ ํ์ ๊ฒฐ๊ณผ์ด๊ณ , ์ ์ฒดยท๋ฐ๋ณต ๊ฒ์ฆ์ ๋ ๋ณด์์ ์ธ ์ด์
ํ๋จ ๊ทผ๊ฑฐ๋ค. 9์ฅ ์ฐ๊ตฌ ํ๋ณด ๊ธฐ์ค๊ฐ 0.3862๋ ํ์ฌ API์ ์ ์ฉํ์ง ์์ผ๋ฉฐ
threshold_status=research_only_unapproved๋ฅผ ์ ์งํ๋ค. ์ ์ฒด ๋ฐฉ๋ฒยท๊ฒฐ๊ณผยทAPI
ํ๋จ์
reports/kface_full_verification/2026-08-17์
์๋ค.
์ ์ฒด 864๋ง ์ฅ ํน์ง๊ฐ์์ ๊ฒ์ถ์ ์, ์ค์ ์ผ๊ตด ํฝ์
ํฌ๊ธฐ์
๋ฐ๊ธฐ๋ฅผ ์กฐํฉํ 11๊ฐ ํ์ง Gate๋ฅผ 5๊ฐ ์ธ๋ฌผ ๋ถํ ๋ก ๋น๊ตํ๋ค. ๊ฐ์ฅ
๊ท ํ์ด ์ข์ ๊ฒ์ถ 0.70 + ์ผ๊ตด 42px + ๋ฐ๊ธฐ 35 ์กฐ๊ฑด์ ์ต์
TAR 94.17%๋ฅผ ๋ฌ์ฑํ์ง๋ง FAR์ด 0.1074%๋ก ๋ชฉํ๋ฅผ ๋์๊ณ ,
์๋ ์ฒ๋ฆฌ coverage๋ ์ต์ 30.62%์ ๊ทธ์ณค๋ค.
๋ฐ๋ผ์ ํ์ง ๊ฑฐ์ ๋ง ๊ฐ์ ํ๋ API ๋ณ๊ฒฝ์ ํ์ง ์๋๋ค. ๋ค์์๋
ํ์ง ๊ฐ์ค ๋ฑ๋กยท๋ค์ค ๋ฑ๋ก ์ค์ฌยท๋ ์๊ฒฉํ validation ์์ ์ฌ์ ๋ฅผ
๋น๊ตํ๋ค. ์ ์ฒด ๊ฒฐ๊ณผ๋
reports/kface_quality_gate_analysis/2026-08-17์
์๋ค.
ํ์ธ ์ฌ์ง์ ์ถ๊ฐ๋ก ๊ฑฐ์ ํ์ง ์๊ณ coverage 100% ์กฐ๊ฑด์์ ๋จ์
ํ๊ท , ํ์ง ๊ฐ์ค ํ๊ท , ๋ฑ๋ก ์ค์ฌ 2๊ฐ๋ฅผ ๋น๊ตํ๋ค. ํ์ง ๊ฐ์ค
ํ๊ท ์ validation FAR 0.09% ๊ธฐ์ค ์ ํ์ง TAR์ 76.35% โ 76.62%๋ก
์ฝ +0.28%p ๋์์ง๋ง ๋ชฉํ ๊ฐ์ ํญ์ ๋ถ์กฑํ๋ค.
validation FAR ์์ ์ฌ์ ๋ฅผ 0.08%๋ก ๋์ด๋ฉด test FAR์ 0.0963%๋ก
๋ชฉํ๋ฅผ ํต๊ณผํ์ง๋ง ์ ํ์ง TAR์ 75.80%์๋ค. ๋ฑ๋ก ์ค์ฌ 2๊ฐ๋
์ ํ์ง TAR์ ์ฝ 72%๋ก ๋ฎ์ถฐ ํ๋ณด์์ ์ ์ธํ๋ค. ๋ฑ๋ก ์ ๋ต๋ง์ผ๋ก๋
์ ํด์๋ ์ ๋ณด ์์ค์ ํด๊ฒฐํ์ง ๋ชปํ์ผ๋ฏ๋ก API๋ ๋ณ๊ฒฝํ์ง ์๋๋ค.
์ ์ฒด ๊ฒฐ๊ณผ๋
reports/kface_enrollment_strategy_benchmark/2026-08-17์
์๋ค.
400๋ช
์ Train 240๋ช
ยทValidation 80๋ช
ยท์ ๊ธด Test 80๋ช
์ผ๋ก ์ธ๋ฌผ ๋จ์
๋ถ๋ฆฌํ๊ณ , ์ ํ์ง ArcFace ํน์ง์ ์คํ์ง ํน์ง์ ๊ฐ๊น๊ฒ ๋ฐ๊พธ๋
512โ128โ512 residual MLP๋ฅผ ํ์ตํ๋ค. Validation์์ ์ ํ๋
๋์กฐ ํ์ต ํ๋ณด๋ฅผ ์ ๊ธด Test์์ ํ ๋ฒ ํ๊ฐํ์ง๋ง ์ ํ์ง TAR์
79.01% โ 78.05%, ์คํ์ง TAR์ 94.61% โ 92.34%๋ก ๋ฎ์์ก๊ณ
์ต์
FAR์ 0.1065% โ 0.1250%๋ก ๋์์ก๋ค.
๋ค๋ฅธ ์ฌ๋ ํ๊ท ์ ์ฌ๋๊ฐ ๊ฐ์ ์ฌ๋๋ณด๋ค ๋ ํฌ๊ฒ ์ฌ๋ผ ์ธ๋ฌผ ๊ตฌ๋ถ๋ ฅ์ด
๋๋น ์ง ๊ฒ์ด ์์ธ์ด๋ค. ์ฌ์ ๊ฐ์ Gate๋ฅผ ํต๊ณผํ์ง ๋ชปํด ONNX๋ฅผ ๋ง๋ค์ง
์์๊ณ API๋ ๋ณ๊ฒฝํ์ง ์์๋ค. ์ ์ฒด ๊ฒฐ๊ณผ๋
reports/kface_lowres_embedding_adapter/2026-08-17์
์๋ค.
์ ์ฒด Celeb-DF-v2๋ฅผ ์ฌ์ฉํ๋ค.
| ๋ฐ์ดํฐ | ์์ ์ |
|---|---|
| Celeb-real | 590 |
| YouTube-real | 300 |
| Celeb-synthesis | 5,639 |
| ์ ์ฒด | 6,529 |
| ์ ์์๊ฐ ๊ณ ์ ํ ๊ณต์ Test | 518 |
ํ๋ ์์ ๋ฝ๊ธฐ ์ ์ ์์์ Train/Validation/Test๋ก ๋๋ด๋ค. ๊ฐ์ ์์ ์ฅ๋ฉด์ด ํ์ต๊ณผ ํ๊ฐ ์์ชฝ์ ์์ด๋ ๊ฒ์ ๋ง๊ธฐ ์ํด์๋ค. ์ ์ฒด ์ ์ฒ๋ฆฌ์์๋ 6,529๊ฐ ์์ ์ค 6,528๊ฐ๋ฅผ ์ฒ๋ฆฌํด ์ผ๊ตด crop 208,893๊ฐ๋ฅผ ๋ง๋ค์๊ณ , 1๊ฐ ์์์ ์ ํจ ์ผ๊ตด ํ๋ ์ ๋ถ์กฑ์ผ๋ก ์ ์ธํ๋ค.
Kaggle 4์ฐจ ์คํ์์ ํ์ตยท๊ณต์ TestยทONNX ๋ณํยทCPU ์ถ๋ก ์ํ์ ๋ชจ๋ ์๋ฃํ๋ค. ์๋ ๊ฐ์ ๊ณต์ ๋น์๋ณ ๊ฒฐ๊ณผ ํ์ผ์์ ํ์ธํ ์ต์ข ์ฐ๊ตฌ ๊ธฐ์ค์ ์ด๋ค.
| ๊ณต์ Test ์งํ | ๊ฒฐ๊ณผ | ํ๋จ |
|---|---|---|
| ์ ํ ํ๋ ์ ์ | 16 | ์์๋ง๋ค ์ต๋ 16๊ฐ ์ผ๊ตด ์ ์ ์ฌ์ฉ |
| ์ ์ ํตํฉ | ํ๊ท | ํ๋ ์๋ณ ์ ์๋ฅผ ํ๊ท ํด ์์ ์ ์ ์์ฑ |
| ํ์ ๊ธฐ์ค๊ฐ | 0.751988 | ์ด ๊ฐ ์ด์์ ๋ฅํ์ดํฌ ํ๋ณด๋ก ํ๋จ |
| Video ROC-AUC | 0.999802 | ์ค์ ์ ๊ฐ์ง์ ์ ๋ฐ์ ์ธ ์์ ๊ตฌ๋ถ์ ๋์ |
| Recall | 1.000000 | ๊ณต์ Test ๋ฅํ์ดํฌ๋ฅผ ๋ชจ๋ ํ์ง |
| FPR | 0.016854 | ์ค์ ์์์ ๊ฐ์ง๋ก ์๋ชป ๊ฒฝ๊ณ ํ ๋น์จ ์ฝ 1.69% |
| ์ผ๊ตด ์ฒ๋ฆฌ coverage | 1.000000 | ๊ณต์ Test ํ๊ฐ ๋์ ์ฒ๋ฆฌ ์๋ฃ |
์ด๊ธฐ ์ฐ๊ตฌ Gate๋ ROC-AUC โฅ 0.90, FPR โค 0.01์ด๋ค. AUC๋ ํต๊ณผํ์ง๋ง FPR์ด ๋ชฉํ 1%๋ณด๋ค ๋์ ์ฆ์ ๊ฒฝ๋ณดยท์๋ ์ฐจ๋จ์ฉ ๋ชจ๋ธ๋ก ์น์ธํ์ง ์๋๋ค. ONNX๋ ์ ์ ์์ฑ๋๊ณ CPU ์ถ๋ก smoke๋ ์ฝ 171ms๋ก ํต๊ณผํ์ง๋ง, ์ด๋ ์ฐ๊ฒฐ ์ํ์ผ ๋ฟ API ์๋ต์๊ฐ SLA๊ฐ ์๋๋ค.
์ดํ ํ๊ฐ์์๋ ํด์๋ 25% ์ถ์์ ํ๋ฆผ์์ FPR์ด ๊ฐ๊ฐ ์ฝ 12.92%, 11.80%๋ก ์ฆ๊ฐํ๊ณ ์ ์กฐ๋์์๋ Recall์ด ์ฝ 78.24%๋ก ๊ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ค์ ์น์์ ์ฌ์์ถยท์ถ์๋ ์์์ ๋ฐ๋ก ์ ์ฉํ๋ฉด ์ ๋๋ค. ์์ธ ์์นยท๋ฌด๊ฒฐ์ฑ hashยท๊ทธ๋ํ๋ ์ต์ข
๊ฒฐ๊ณผ ๋ณด๊ณ ์์ ์๋ค.
์ฌํ ๋ฐฉ๋ฒ์ docs/experiments/deepfake-kaggle.md, ๋ฐ์ดํฐ ๋ถํ ๊ณผ ์ฌ์ ๊ฒ์ฌยทํ์ฌ ๊ฒฐ๊ณผ๋ reports/celebdf_deepfake_baseline/2026-08-07์ ์๋ค.
Xception์ด JPEG q30์์๋ง ๋ณด์ธ ์ฅ์ ์ ์ฌ์ฉํ๊ธฐ ์ํด, ํ์์๋ EfficientNet-B4๋ง ์คํํ๊ณ ๊ฐํ JPEG ์์ถ์์๋ง ๋ ๋ชจ๋ธ ์ ์๋ฅผ ๊ฒฐํฉํ๋ ์ ์ฑ ์ Validation์์ ๋น๊ตํ๋ค. 836๊ฐ ์์ยท66,880๊ฐ ์ง์ง์ ํ๋ ์์ ์ฌ์ฉํ๊ณ ๊ณต์ Test๋ ์ด์ง ์์๋ค.
| JPEG q30 Validation | EfficientNet-B4 ๋จ๋ | ์กฐ๊ฑด๋ถ ๊ฒฐํฉ |
|---|---|---|
| ROC-AUC | 0.999122 | 0.999606 |
| clean ๊ธฐ์ค๊ฐ ๊ณ ์ Recall | 74.31% | 78.85% |
| p95 ์ถ๋ก ์๊ฐ | 41.30ms | 92.24ms |
EfficientNet-B4 25%ยทXception 75% logit ๊ฒฐํฉ ํ๋ณด๊ฐ ์ ํ๋์ง๋ง, ๊ฐ์ ๋์ด ์๊ณ ์ฒ๋ฆฌ์๊ฐ์ด ์ฝ 2.23๋ฐฐ๋ก ๋์๋ค. ์ค์ ์น JPEG ํ์ง Gate์ ์ธ๋ถ ์์ ๊ฒ์ฆ์ด ์์ผ๋ฏ๋ก ํ์ฌ ONNX API๋ EfficientNet-B4 ๋จ๋ ์ ์ ์งํ๋ค. ์์ธํ ์ ํ ๊ท์นยท์์นยท๊ฐ์ธ์ ๋ณด ๊ฒ์ฌ๋ ์กฐ๊ฑด๋ถ ๊ฒฐํฉ ๊ฒฐ๊ณผ ๋ณด๊ณ ์์ ์๋ค.
Kaggle GPU์์ Validation 836๊ฐ์ ๊ณต์ Test 518๊ฐ ์์์ clean 16ํ๋ ์ ํ๊ท ์ ์๋ฅผ ๋ค์ ๊ณ์ฐํ๊ณ Temperature, Platt, Isotonic ๋ณด์ ์ ๋น๊ตํ๋ค. ๋ฐฉ๋ฒ ์ ํ์๋ Validation๋ง ์ฌ์ฉํ์ผ๋ฉฐ ๊ณต์ Test๋ก ๋ณด์ ๊ฐ์ ๊ณ ๋ฅธ ๊ฒฝ์ฐ๋ 0๊ฑด์ด๋ค.
| ๊ณต์ Test ์งํ | ๋ณด์ ์ | ๋ณด์ ํ | ํ๋จ |
|---|---|---|---|
| ECE | 0.029784 | 0.003861 | 0.05 ์ดํ ํต๊ณผ |
| Brier Score | 0.013203 | 0.003861 | ๊ฐ์ |
| ์ค์ ์์ FPR | 0.016854 | ํ์ ๊ธฐ์ค ๋์ผ | 0.01 ์ดํ Gate ์คํจ |
Isotonic ๋ณด์ ์ ์ซ์ ์ ํฉ์ฑ์ ์ข์์ก์ง๋ง ์ค์ ์์ 178๊ฐ ์ค 3๊ฐ๋ฅผ ๊ฐ์ง๋ก ์๋ชป ๊ฒฝ๊ณ ํ๋ค. ๋ฐ๋ผ์ API๋ calibration_status=research_only_unapproved, calibrated_probability=null์ ๋ฐํํ๋ฉฐ ํ๋ฉด์์ 84% ํ๋ฅ ์ฒ๋ผ ํ์ํ์ง ์๋๋ค. ์์ธ ๊ฒฐ๊ณผ์ reliability diagram์ reports/deepfake_score_calibration/2026-08-08์ ์๋ค.
ํ์ฌ HTTP API๋ ์ผ๊ตด ๋์ผ์ธ ํ๋ณด ์ ๋ณ, Google Visionยท์ฌ์ฉ์ ํ๋ณด URL ์ ๊ทํ, ๋จ์ผ ์ผ๊ตด ๋ฅํ์ดํฌ ONNX ๋ถ์, ์งง์ ์์ 16ํ๋ ์ ํ๊ท ๋ถ์, ํ๋ณด ์ด๋ฏธ์ง โ ArcFace โ ONNX ๋น๋๊ธฐ ๊ฒฝ๋ก, scan_id ๊ธฐ๋ฐ ์งํ ์กฐํ๋ฅผ ์ ๊ณตํ๋ค. Google Vision ํธ์ถ ์์ฒด๋ ๋ฅ์๊ฐ ์๋ฒ๊ฐ ๋ด๋นํ๋ฉฐ, ๊ฒ์ ํ๋ณด ์์ URL์ ์ง์ ๋ถ์ํ๋ ๋น๋๊ธฐ ๊ฒฝ๋ก๋ ์์ง ๊ตฌํ ์ ์ด๋ค.
git clone https://github.com/Chunbae-A/face-image.git
cd face-image
cp .env.example .envInsightFace ์ ๊ณต ๊ฐ์ค์น์ ๋น์์
์ฐ๊ตฌ ์กฐ๊ฑด์ ์ง์ ํ์ธํ ๊ฒฝ์ฐ์๋ง .env์์ ๋ค์ ๊ฐ์ ๋ณ๊ฒฝํ๋ค.
FACEGUARD_ACCEPT_NONCOMMERCIAL_MODEL_LICENSE=true
๋ฅํ์ดํฌ API๊น์ง ์ฌ์ฉํ๋ ค๋ฉด ๊ถํ์ด ์๋ ํ์์ด ๋น๊ณต๊ฐ ๋ชจ๋ธ ZIP์ efficientnet_b4.onnx๋ฅผ .models/deepfake/efficientnet_b4.onnx์ ๋๋ค. GitHub์๋ ๋ชจ๋ธ์ ์ฌ๋ฆฌ์ง ์์ผ๋ฉฐ, ์คํ ์ SHA-256 c32a8532...a6f1 ์ ์ฒด ๊ฐ์ด ์๋ ๊ฒ์ฆ๋๋ค. ๋ชจ๋ธ์ด ์๋๋ผ๋ ์ผ๊ตด ๋น๊ตยท๊ฒ์ API๋ ์คํ๋์ง๋ง ๋ฅํ์ดํฌ ๋ถ์์ MODEL_UNAVAILABLE์ ๋ฐํํ๋ค.
์ ์ ๋ณด์ ์คํ์ ๋ง์น ๋ค์๋ ๋น์๋ณ deepfake_video_calibration.json๋ ๊ฐ์ ๋๋ ํฐ๋ฆฌ์ ๋๋ค. ํ์ผ์ด ์๊ฑฐ๋ ์ฐ๊ตฌ Gate๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ฉด API์ calibrated_probability๋ ์๋์ผ๋ก null์ด ๋๋ค.
์๋ฒ๋ฅผ ์คํํ๋ค.
docker compose up --build --detach
curl http://127.0.0.1:8000/health๋ธ๋ผ์ฐ์ ์์ http://127.0.0.1:8000/docs๋ฅผ ์ด๊ณ POST /v1/faceguard/verify, POST /v1/deepfake/analyze ๋๋ POST /v1/deepfake/analyze-video๋ฅผ ์ํํ๋ค.
reference_images: ๋ณธ์ธ ๋ฑ๋ก ์ผ๊ตด 1~5์ฅ, 3์ฅ ๊ถ์ฅquery_image: ํ์ธํ ํ๋ณด ์ผ๊ตด 1์ฅ- ์ง์ ํ์: JPEG, PNG, WEBP
์์ ๋ถ์์ MP4ยทMOV, ์ต๋ 50MBยท120์ด๋ฅผ ์ง์ํ๋ค. ์์ ์ ์ฒด์์ ์ต๋ 16๊ฐ ๋ํ ํ๋ ์์ ๋ฝ๊ณ ํ๋ ์๋ณ ์ผ๊ตด ์ ์์ ํ๊ท ๊ณผ ๋๋ต์ ์ธ ์์ฌ ์๊ฐ ๊ตฌ๊ฐ์ ๋ฐํํ๋ค. ๋ฑ๋ก ์ฌ์ง์ ํจ๊ป ๋ณด๋ด๋ฉด ์ฌ๋ฌ ์ผ๊ตด ์ค ๋ฑ๋ก ์ผ๊ตด๊ณผ ๊ฐ์ฅ ๋น์ทํ ์ผ๊ตด์ ์ฐ์ ๋ถ์ํ๋ค. ์๋ณธ ์์๊ณผ ์ผ๊ตด crop์ ์๊ตฌ ์ ์ฅํ์ง ์๋๋ค.
์๋ต์ ํต์ฌ๊ฐ์ ๋ค์๊ณผ ๊ฐ๋ค.
| ํ๋ | ์๋ฏธ |
|---|---|
is_same_person |
์ฐ๊ตฌ ๊ธฐ์ค๊ฐ์ ๋์๋์ง ์ฌ๋ถ |
similarity |
๋ ์ผ๊ตด์ ์ฝ์ฌ์ธ ์ ์ฌ๋ |
raw_score |
๋ชจ๋ธ์ด ์ง์ ๋ธ ์์ ์. ํ๋ฅ ์ด๋ ํผ์ผํธ๊ฐ ์๋ |
calibrated_probability |
๋ณด์ ๊ณผ Gate๋ฅผ ๋ชจ๋ ํต๊ณผํ ๋๋ง ์ ๊ณตํ๋ ํ๋ฅ , ๊ทธ ์ธ null |
calibration_status |
not_available, research_only_unapproved, validated ๋ฑ ๋ณด์ ์ํ |
risk_level |
์์ ๋ณด์ ํ์ผ์ด ์์ ๋ low, review, high ์ค ๊ฒํ ๊ตฌ๊ฐ |
threshold |
ํ์ฌ ์ฐ๊ตฌ ํ์ ๊ธฐ์ค๊ฐ |
reference_quality, query_quality |
์ผ๊ตด ํฌ๊ธฐยท์ ๋ช ๋ยท๋ฐ๊ธฐ ๋ฑ ์ ๋ ฅ ํ์ง |
processing_ms |
์๋ฒ ๋ด๋ถ ์ฒ๋ฆฌ์๊ฐ |
is_same_person=true๋ โ๊ฐ์ ์ฌ๋ ํ๋ณดโ๋ผ๋ ๋ป์ด์ง ๋ฅํ์ดํฌ๋ผ๋ ๋ป์ด ์๋๋ค. ์์ธํ ์คํ๊ณผ ์ค๋ฅ ์ฝ๋๋ API ๋น ๋ฅธ ์คํ๊ณผ API ์ด์ ๊ฐ์ด๋์ ์๋ค.
๊ณต๊ฐ ํ๋ณด ๊ฒฝ๋ก๋ ๊ฐ์ Swagger ํ๋ฉด์ POST /v1/search/candidates์์ ์ํํ๋ค.
privacy_strict ๋ชจ๋์์ Google Vision ๋๋ ์ฌ์ฉ์๊ฐ ๋ฏธ๋ฆฌ ์์งํ ๊ณต๊ฐ URL์ ๋ฃ๋๋ค. ๋ชจ๋ธ API๋ ๋ก์ปฌยท๋ด๋ถ๋ง ์ฃผ์๋ฅผ ์ฐจ๋จํ๊ณ ์ถ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๊ฑฐํ ๋ค ์ค๋ณต์ ํฉ์น๋ค. ์ธํฐ๋ท ํ๋ณด ๋ฐ๊ฒฌ์ ๋ฅ์๊ฐ ์๋ฒ์ Google Vision ์ด๋ํฐ๊ฐ ๋ด๋นํ๊ณ , ์ด ์ ์ฅ์์ ๋ชจ๋ธ API๋ ์ ๋ฌ๋ฐ์ ํ๋ณด๋ฅผ ArcFace์ ONNX๋ก ๋ถ์ํ๋ค.
๊ธด ๊ฒ์ ์์ ๋์ ํ๋ฉด์ด ๋ฉ์ถ์ง ์๊ฒ ํ๋ ค๋ฉด ๋ค์ API๋ฅผ ์์๋๋ก ์ฌ์ฉํ๋ค.
POST /v1/faceguard/enrollments: ๋ณธ์ธ ์ฌ์ง 3์ฅ์ ์์ ๋ฑ๋กํ๊ณenrollment_id๋ฅผ ๋ฐ๋๋ค.POST /v1/exposure-scans: Google Vision ๋๋ ์ฌ์ฉ์๊ฐ ์์งํ ๊ณต๊ฐ ํ๋ณด URL๋ก ์์ ์ ๋ง๋ค๊ณ ์ฆ์scan_id๋ฅผ ๋ฐ๋๋ค.GET /v1/exposure-scans/{scan_id}:searching โ identity_filtering โ deepfake_analyzing โ completed์งํ ๋จ๊ณ์ ๊ฐ์๋ฅผ ํ์ธํ๋ค.GET /v1/exposure-scans/{scan_id}/client-candidates: ๋ฅ์๊ฐ ํ๋ฉด์ฉ ํ๋ณด์ ๊ฒํ ํ๋๊ฐ์ ํ์ธํ๋ค.GET /v1/exposure-scans/{scan_id}/candidates: ๋ชจ๋ธ ๊ฐ๋ฐ์๊ฐ ํ๋ณด๋ณ ์์ธ ํ์ ๊ทผ๊ฑฐ๋ฅผ ํ์ธํ๋ค.
๋ฑ๋ก ์์ฒญ์์ ์๋ณธ ์ฌ์ง์ ์ฒ๋ฆฌํ ๋ค์๋ ํ๋งํ ์๋ฒ ๋ฉ๊ณผ ํ์ง ์ ๋ณด๋ง ๊ธฐ๋ณธ 30๋ถ ๋์ ๋ฉ๋ชจ๋ฆฌ์ ๋จ๋๋ค. ์ค์บ ๊ฒฐ๊ณผ๋ ๊ธฐ๋ณธ 60๋ถ ๋์ ๋จ์ผ๋ฉฐ ์๋ฒ๋ฅผ ์ฌ์์ํ๋ฉด ๋ชจ๋ ์ฌ๋ผ์ง๋ค. ์ฌ์๋ ์ ์ค๋ณต ์์
์ ๋ง์ผ๋ ค๋ฉด Idempotency-Key ํค๋๋ฅผ ๊ฐ๊ฒ ๋ณด๋ธ๋ค. ์ด๋ณด์์ฉ Swagger ์คํ ์์์ JSON ์์๋ ๋น๋๊ธฐ ๋
ธ์ถ ์ค์บ ์๋ด์ ์๋ค. ํ๋ก ํธยท๋ฐฑ์๋ ์ฐ๊ฒฐ ๊ณ์ฝ์ ํด๋ผ์ด์ธํธ์ฉ ๊ณต๊ฐ ๋
ธ์ถ ๋ชจ๋ํฐ๋ง API์ ์ ๋ฆฌํ๋ค.
ํ์ฌ ์์ ํ๊ฒ ์์ฐํ ์ ์๋ ๋ฐ๋ชจ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋์๋ฐ์ ์ฌ๋์ ๋ฑ๋ก ์ฌ์ง 3์ฅ์ ๋ฃ๋๋ค.
- ๊ฐ์ ์ฌ๋์ ๋ค๋ฅธ ์ฌ์ง์ ๋ฃ์ด ์ ์ฌ๋์ ํ์ง ์์น๋ฅผ ํ์ธํ๋ค.
- ๋ค๋ฅธ ์ฌ๋์ ์ฌ์ง์ ๋ฃ์ด ๋ถ์ผ์น ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ค.
- Celeb-DF ์ ์ฒด ๋ฅํ์ดํฌ ์คํ ๊ฒฐ๊ณผ์์ AUC์ FPR์ ํจ๊ป ๋ณด์ฌ์ค๋ค.
- โAUC๋ ๋์ง๋ง FPR Gate๋ฅผ ํต๊ณผํ์ง ๋ชปํด ์ด์ ์น์ธํ์ง ์์๋คโ๊ณ ์ค๋ช ํ๋ค.
๊ฒ์ โ ์ผ๊ตด ์ ๋ณ โ ๋จ์ผ ์ด๋ฏธ์ง ๋ฅํ์ดํฌ ํ๋ณ์ scan_id๋ฅผ ์ฌ์ฉํด ๋น๋๊ธฐ๋ก ์์ฐํ ์ ์๊ณ , ์งง์ ์์ 16ํ๋ ์ ๋ถ์์ ๋ณ๋ API๋ก ์์ฐํ ์ ์๋ค. ๋ค๋ง deepfake_score, video_score, raw_score๋ ํ๋ฅ ์ด๋ ํ์ ์ ๋ขฐ๋๊ฐ ์๋๋ค. ํ๋ฉด์ calibrated_probability๊ฐ null์ด๋ฉด ํผ์ผํธ๋ฅผ ์จ๊ธฐ๊ณ ์์ ์ยท๊ฒํ ํ์๋ก ํ์ํด์ผ ํ๋ค. ๊ฒ์ ํ๋ณด ์์์ ์๋์ผ๋ก ๋ด๋ ค๋ฐ๋ ๋ถ๋ถ๊ณผ ํ๋ก์ธ์ค ์ฌ์์์๋ ๋ณต๊ตฌ๋๋ ์๊ตฌ ํ๋ Issue #17์ ๋จ์ ๋ฒ์๋ค. ํ๋ฉด ํ๋ฆ๊ณผ ์ค๋ฅ ์ฒ๋ฆฌ๋ ๋ฐ๋ชจ ํ์ดํ๋ผ์ธ์ ์๋ค.
| ๊ฒฝ๋ก | ๋ด์ฉ |
|---|---|
faceguard_api |
FastAPI ๊ธฐ๋ฐ ์ผ๊ตด ๋์ผ์ธ ๋น๊ต API |
notebooks |
ColabยทKaggle ์ฌํ ๋ ธํธ๋ถ |
scripts |
๋ฐ์ดํฐ ์ ๊ฒยท์ ์ฒ๋ฆฌยทํ์ตยทํ๊ฐ ๋๊ตฌ |
configs/faceguard |
๋ถํ ยทํ๊ฐ ํ๋กํ ์ฝ ์ค์ |
configs/deepfake |
๋ฅํ์ดํฌ ๊ธฐ์ค์ ยทํ๋ณด ๋น๊ต์ ๊ณ ์ ์คํ ์ค์ |
reports |
๊ฐ์ธ์ ๋ณด๋ฅผ ์ ์ธํ ์ง๊ณ ๊ฒฐ๊ณผ์ ๊ทธ๋ํ |
tests |
๋์ยท์งํยทAPIยท๋ ธํธ๋ถ ์ฌํ ํ ์คํธ |
docs |
๋ชฉ์ ๋ณ ์ฌ์ฉ ๊ฐ์ด๋ยท๋ฐ๋ชจยท์คํ ๋ฌธ์์ ์ฝ๋ ์์ |
CONTRIBUTING.md |
๋ธ๋์นยท์ปค๋ฐยทPRยท๊ธ์ง ์ฐ์ถ๋ฌผ ๊ท์น |
python3.11 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements-api-test.txt
python -m unittest discover -s tests
python scripts/check_repository_hygiene.py- ์ผ๊ตด ์์ยท์ด๋ฏธ์ง, ์ผ๊ตด crop, ์๋ฒ ๋ฉ, ์์๋ณ ์ ์, checkpoint์ ONNX๋ GitHub์ ์ฌ๋ฆฌ์ง ์๋๋ค.
- ๊ณต๊ฐ ์น ๊ฒ์์ ์ ๊ทผ์ด ํ์ฉ๋ ๊ณต๊ฐ ์์ญ๋ง ๋์์ผ๋ก ํ๊ณ ๋น๊ณต๊ฐ ๊ณ์ ์ด๋ ์ ๊ทผ ์ ํ ์์ญ์ ์๋ ํ์ํ์ง ์๋๋ค.
- ์๋ณธ ์ฌ์ง๊ณผ ์ผ๊ตด ํน์ง์ API ์์ฒญ ์ฒ๋ฆฌ ํ ์๊ตฌ ์ ์ฅํ์ง ์๋๋ค.
- InsightFace ์ฝ๋์ ์ ๊ณต ์ฌ์ ํ์ต ๊ฐ์ค์น์ ์ฌ์ฉ ์กฐ๊ฑด์ ๋ค๋ฅด๋ค.
- ํ์ฌ
buffalo_l์ ์ผ๊ตด ๊ฒ์ถ ๊ฐ์ค์น๋ ๋น์์ ์ฐ๊ตฌ ๋ฒ์๋ก๋ง ์ฌ์ฉํ๋ค. - ํ์ฌ ์ผ๊ตด ๊ธฐ์ค๊ฐ๊ณผ ๋ฅํ์ดํฌ ๊ธฐ์ค๊ฐ์ ๋ชจ๋ ์ฐ๊ตฌ์ฉ์ด๋ค. K-FACE๋ก ํ๊ตญ์ธ ์ ยท์คํ์ง ํต์ ์กฐ๊ฑด์ ๊ฒ์ฆํ์ง๋ง, ์ค์ ์น ์ฌ์์ถยท์ต์ ์์ฑ ๋ฐฉ์์ ์ด์ ์ฑ๋ฅ์ ๋ณด์ฅํ์ง ์๋๋ค.
๋ชจ๋ธ๋ง์ ์๋ ์์๋ก ์งํํ๋ค. ์ ๋ชจ๋ธ์ ์ฑ๋ฅ ์์น๋ ์ค์ ์คํ ํ์๋ง ๊ธฐ๋กํ๊ณ , ๊ฐ ๋จ๊ณ๋ ๊ฐ์ ๋ถํ ๊ณผ ๊ฐ์ ์งํ๋ก ๋น๊ตํ๋ค.
- K-FACE ์ ํ์งโ์คํ์ง ์๋ฒ ๋ฉ ๋ณด์ ์ด๋ํฐ ๋น๊ต ์๋ฃยท๋ฏธ์ฑํ (#44)
- ์ ํด์๋ ์ผ๊ตด crop ๊ธฐ๋ฐ ์ธ์ ๋ฏธ์ธ ์กฐ์ ๊ณผ ์๋ก์ด ์ธ๋ถ ์ ๊ธด Test ์ค๊ณ (#47)
- EfficientNet-B4/Xception ๊ณต์ ๋น๊ต ์๋ฃยทEfficientNet-B4 ์ ์ง (#29)
- JPEG ์กฐ๊ฑด๋ถ ๊ฒฐํฉ Validation ํ๋ณด ์ ํ ์๋ฃ, ์ค์ ์น JPEG ํ์ง Gateยท์ธ๋ถ ๊ฒ์ฆ ์งํ (#35)
- SBI๋ก ๋ณด์ง ๋ชปํ ์กฐ์ ๋ฐฉ์์ ์ผ๋ฐํ ์ฑ๋ฅ ๊ฒ์ฆ (#30)
- ์ค์ ์์ hard negative์ ์ธ๋ถ ๊ฒ์ฆ subset ๊ตฌ์ถ (#31)
- ๊ฒฐ์น ํ๋ณด์ FTCN ์๊ฐ ์ ๋ณด์ ์์๋ธ ์ถ๊ฐ ํจ๊ณผ ๊ฒ์ฆ (#32)
์ ํ ํ์ดํ๋ผ์ธ์ ๋ชจ๋ธ๋ง๊ณผ ๋ณํํด ๋ค์ ์์๋ก ์ด์ด๊ฐ๋ค.
- ๊ฒ์ ์ด๋ฏธ์ง ๋ค์ค ์ผ๊ตด ์ฒ๋ฆฌ์ ์์ ์ผ๊ตด ํธ๋ ๋น๊ต ๊ตฌํ (#14)
- ๋น๋๊ธฐ ์ค์บ์ ํ๋ณด ์์ URL ๋ค์ด๋ก๋์ ์ฌ์์ ๋ณต๊ตฌ์ฉ ์๊ตฌ ํ ์ฐ๊ฒฐ (#17)
- ๊ฒ์ยท์ ๋ณยท์ด๋ฏธ์งยท์์ ONNX ์ฐ๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ค์ ๋์ ๋ฐ์ดํฐ๋ก ์์น ๊ฒ์ฆ (#18)
๋ฅ์๊ฐ ์ผ๊ตด๊ฐ๋๋ ๋ฑ๋ก ์ผ๊ตด๊ณผ ๊ณต๊ฐ ํ๋ณด์ ๋์ผ์ธ ๊ฐ๋ฅ์ฑ์ ArcFace๋ก ์ ๋ณํ๊ณ , Celeb-DF-v2 ์ ์ฒด๋ก ํ์ตํ ๋ณ๋ ๋ชจ๋ธ์ด ํ๋ณด ์์์ ๋ฅํ์ดํฌ ์ํ์ ๋ถ์ํ๋๋ก ์ค๊ณํ์ต๋๋ค. ํ์ฌ ์ผ๊ตด ๋น๊ต API์ ๋ฅํ์ดํฌ ํ์ตยทํ๊ฐ๋ ์๋ฃํ์ง๋ง ์ค๊ฒฝ๊ณ ์จ์ด ๋ชฉํ๋ฅผ ๋์๊ธฐ ๋๋ฌธ์ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ก ๊ณต๊ฐํ๊ณ ์ด์ ์ ์ฉ์ ๋ณด๋ฅํ์ต๋๋ค.