--- library_name: pytorch pipeline_tag: image-classification tags: - computer-vision - image-forensics - ai-image-detection - dinov2 - safetensors --- # Raven Raven은 실제 사진과 AI 생성 이미지를 구분하기 위해 만든 이미지 포렌식 모델입니다. 최종 출력은 `REAL`, `AI`, `UNCERTAIN` 로 총 3가지이고, AI 데이터는 GPT Image 2 계열을 기준으로 합니다. 판정 기준은 다음과 같습니다. ```text REAL p(AI) <= 0.28 UNCERTAIN 0.28 < p(AI) < 0.72 AI p(AI) >= 0.72 ``` ## 예시코드 ```python 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장: ```text AI 1,423 REAL 14 UNCERTAIN 30 ``` REAL 3,003장: ```text 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%** | - | 실제 판정 결과: ```text 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로 생성되었음을 증명하는 절대적인 증거로 사용해서는 안 됩니다.