Raven
Raven은 실제 사진과 AI 생성 이미지를 구분하기 위해 만든 이미지 포렌식 모델입니다.
최종 출력은 REAL, AI, UNCERTAIN 로 총 3가지이고, AI 데이터는 GPT Image 2 계열을 기준으로 합니다.
판정 기준은 다음과 같습니다.
REAL p(AI) <= 0.28
UNCERTAIN 0.28 < p(AI) < 0.72
AI p(AI) >= 0.72
예시코드
import warnings
warnings.filterwarnings("ignore")
import sys
from pathlib import Path
HERE = Path(__file__).resolve().parent
sys.path.insert(0, str(HERE))
from raven.inference import infer_image
model = HERE / "model.safetensors"
image_extensions = {
".png",
".jpg",
".jpeg",
".webp",
".bmp",
}
images = sorted(
[
file for file in HERE.iterdir()
if file.is_file()
and file.suffix.lower() in image_extensions
],
key=lambda p: p.name.lower()
)
for image in images:
print(f"File: {image.name}")
result = infer_image(
str(model),
str(image),
)
print(f"Verdict: {result['verdict']}")
print(f"AI: {result['ai_probability'] * 100:.2f}%")
print(f"REAL: {result['real_probability'] * 100:.2f}%")
print()
Benchmark
Validation 데이터는 총 4,470장입니다.
- REAL: 3,003
- AI: 1,467
| Metric | Result | 95% CI |
|---|---|---|
| Accuracy | 98.635% | 98.251% - 98.936% |
| Balanced Accuracy | 98.566% | 98.159% - 98.935% |
| AUROC | 0.998255 | 0.997220 - 0.999083 |
| Balanced AP | 0.998472 | 0.997685 - 0.999135 |
| AI confirmed recall | 97.001% | 95.998% - 97.758% |
| REAL confirmed recall | 97.502% | 96.881% - 98.003% |
| AI to REAL error | 0.954% | 0.569% - 1.596% |
| REAL to AI error | 0.599% | 0.379% - 0.946% |
| Coverage | 98.054% | - |
| Selective accuracy | 99.207% | - |
| Uncertain | 1.946% | - |
| Balanced Brier | 0.011403 | - |
| Balanced ECE | 0.005572 | - |
Decisions
AI 1,467장:
AI 1,423
REAL 14
UNCERTAIN 30
REAL 3,003장:
REAL 2,928
AI 18
UNCERTAIN 57
REAL-only Test
별도로 분리된 REAL 이미지 2,986장에서도 평가를 하였습니다.
| Metric | Result | 95% CI |
|---|---|---|
| Accuracy | 98.225% | 97.686% - 98.640% |
| REAL confirmed recall | 96.383% | 95.652% - 96.995% |
| REAL to AI error | 1.038% | 0.732% - 1.470% |
| Coverage | 97.421% | - |
| Selective accuracy | 98.934% | - |
| Uncertain | 2.579% | - |
실제 판정 결과:
REAL 2,878
AI 31
UNCERTAIN 77
Lighting
Validation 데이터의 밝기별 결과입니다.
| Group | N | Accuracy | AUROC | AI Recall | REAL Recall | Uncertain |
|---|---|---|---|---|---|---|
| dark | 299 | 99.331% | 0.999498 | 98.611% | 92.771% | 2.676% |
| dim | 1,137 | 98.769% | 0.999256 | 97.767% | 97.139% | 2.199% |
| extreme-dark | 28 | 96.429% | 1.000000 | 94.444% | 90.000% | 7.143% |
| normal | 3,006 | 98.536% | 0.997519 | 96.265% | 97.840% | 1.730% |
extreme-dark는 표본 수가 적기 때문에 다른 구간보다 수치의 불확실성이 클 수 있습니다.
Limitations
현재 AI 학습 데이터는 GPT Image 2를 중심으로 구성되어 있습니다.
따라서 위 benchmark는 GPT Image 2 계열과 현재 REAL 데이터 분포에서의 성능을 나타냅니다.
다음과 같은 경우 동일한 성능을 보장하지 않습니다.
- 학습에 포함되지 않은 AI 생성 모델
- 강한 JPEG 재압축
- 스크린샷
- 업스케일 및 노이즈 제거
- 과도한 색보정 또는 후처리
- 이미지 일부만 합성된 경우
- 매우 어두운 이미지
특히 Midjourney, FLUX, Stable Diffusion 등 다른 생성기에서의 성능은 별도로 검증되어야 합니다.
Raven의 출력은 이미지 출처에 대한 확률 기반 포렌식 판단이며, 이미지가 AI로 생성되었음을 증명하는 절대적인 증거로 사용해서는 안 됩니다.