AI Image Detector
Modern uretici modellerin (Stable Diffusion, Midjourney, DALL-E, Flux, GPT Image vb.) urettigi gorselleri gercek ve yapay (fake) olarak siniflandirmak icin ince ayar yapilmis bir CLIP ViT-B/16 modelidir. Egitim; iz koruyucu (forensic), frekans-farkinda (frequency-aware) bir yaklasimla, LoRA ile yapilmistir.
Canli demo: ai-image-detector-space
Icindekiler
- Model Detaylari
- Performans
- Karar Esikleri
- Kullanim
- Egitim Verisi
- Sinirlamalar
- Etik Kullanim
- Depo Yapisi
- Atif
Model Detaylari
| Omurga (Backbone) | vit_base_patch16_clip_224.openai (CLIP ViT-B/16) |
| Goruntu boyutu | 256 x 256 |
| Ince ayar yontemi | LoRA (r=16, a=32), qkv + attn.proj hedefleri - omurgaya birlestirilmis (merged) |
| Gorev | Ikili goruntu siniflandirma (fake / real) |
| Skor | Sigmoid cikisi = p(real); 0 = fake, 1 = real |
| Lisans | MIT |
Performans
Modelin egitim ve esik secimi sirasinda hic gormedigi hold-out test bolunmesinde degerlendirilmistir:
| Metrik | Deger |
|---|---|
| Dogruluk (Accuracy) | 0.959 |
| F1 (real) | 0.958 |
| Makro F1 | 0.959 |
| Kesinlik (Precision, real) | 0.990 |
| Duyarlilik (Recall, real) | 0.928 |
| ROC-AUC | 0.994 |
| Ortalama Hassasiyet (Average Precision) | 0.994 |
| Sahte'i gercek sanma orani (real FPR) | 0.0095 |
| Belirsizlik orani | 0.0026 |
Erken durdurma oncesi en iyi dogrulama dogrulugu: 0.9735 (20 epoch'tan 10.'unda, patience=5 ile 12.'de durdu).
Karar Esikleri
Model p(real) skoru uretir. Sicaklik olceklemeli (temperature-scaled, T=0.595) karar kurali bir belirsizlik bandi kullanir:
fake_threshold real_threshold
<----- YAPAY ------><-- BELIRSIZ --><-- GERCEK -->
0 ---------------------------------------------------------------- 1
p(real) < 0.91-> fake (yapay)p(real) >= 0.93-> real (gercek)0.91 <= p(real) < 0.93-> uncertain (belirsiz) - karar vermekten kacinilir
Esikler, islem hedeflerini (fake_as_real <= 0.02) karsilayacak sekilde ozel bir kalibrasyon bolunmesinde secilmistir.
Kullanim
Model agirliklari model.safetensors olarak saklanir (LoRA bagdasticilari omurgaya birlestirilmistir). Yukleme icin CLIP ViT-B/16 basliginin timm ile yeniden kurulmasi gerekir.
Minimal cikarim ornegi
import torch
from safetensors.torch import load_file
import timm
# 1. Mimarinin yeniden kurulmasi ve birlestirilmis agirliklarin yuklenmesi
state = load_file("model.safetensors")
model = timm.create_model("vit_base_patch16_clip_224.openai", pretrained=False, num_classes=1)
model.load_state_dict(state, strict=False)
model.eval()
# 2. On-isleme (256x256, CLIP normalizasyonu)
from torchvision import transforms
tfm = transforms.Compose([
transforms.Resize((256, 256)),
transforms.ToTensor(),
transforms.Normalize(mean=[0.481, 0.458, 0.408], std=[0.269, 0.261, 0.276]),
])
x = tfm(image).unsqueeze(0)
# 3. Tahmin (sigmoid cikisi = p(real))
with torch.no_grad():
p_real = torch.sigmoid(model(x)).item()
pred = "real" if p_real >= 0.93 else "fake" if p_real < 0.91 else "uncertain"
print(p_real, pred)
Canli Demo (HF Space)
Modeli tarayicida denemek icin: ai-image-detector-space
Self-host (Docker)
Modeli kendi sunucunuzda calistirmak icin docker/ dizinindeki Dockerfile ve docker-compose.yml kullanin:
docker compose up
Bu komut; CPU-only PyTorch imaji kurar, model agirliklarini bu depodan indirir ve Gradio arayuzunu http://localhost:7860 adresinde baslatir.
Egitim Verisi
~20.000 normalize edilmis, kaynak-farkinda ve dengeli bir veri kumesinde egitilmistir:
- Gercek: Spawning/PD12M'den 7.553 gorsel (kamu mali / CC0).
- Yapay: pthan12/AIGenImages2026'dan 3.735 gorsel (modern ureticiler: Flux, Midjourney, GPT Image, DALL-E, Reve vb.) + poloclub/diffusiondb'den 3.818 gorsel (eski Stable Diffusion).
Bolunmeler (splits): 15.106 egitim / 1.888 dogrulama / 1.888 test / 1.118 dis test (genellemeyi olcmek icin kaynak grubuna gore ayri tutuldu). Bolunmeler arasi tekrar yok (SHA-256 ile dogrulandi).
Sinirlamalar
- Dagilim kaymasi (Distribution shift). Her dedektor gibi, bu model de egitildigi dagilim icinde genelleme yapar. Egitim dagiliminin disinda kalan gorseller (orn. cok kucuk, agir sikistirilmis veya alisilmadik kaynak stilleri) yanlis siniflandirilabilir.
- Dusmanca kacinma (Adversarial evasion). Kararli bir saldirgan, herhangi bir sabit dedektoru atlatmak icin perturbasyon tasarlayabilir. Bu model adaptif dusmanca saldirilara karsi dayanikli degildir.
- Uureticiler gelisiyor. Egitim verisinde temsil edilmeyen gelecekteki uretici surumlerinin tespiti daha zor olabilir. Daha yeni ureticilerle periyodik yeniden egitim onerilir.
- Yuze ozel iddia yok. Model gorsellerin tamamini puanlar; manipule edilmis bolgeleri yerellestirmez veya yuzler hakkinda garanti vermez.
Etik Kullanim
Bu model savunmaci kullanim icin tasarlanmistir: icerik ozgunluk kontrolleri, medya okuryazarligi ve adli analiz. Insan incelemesi olmadan bireyleri aldatici icerik olusturmakla yanlis suclamak icin kullanilmamalidir; belirsiz tahminler, sahtekarlik kaniti sayilmak yerine sonucsuz olarak ele alinmalidir.
Depo Yapisi
Bu depo bir model karti + demo deposudur. Egitim kodu ozel tutulmustur.
| Dosya/Dizin | Aciklama |
|---|---|
model.safetensors |
Birlestirilmis (merged) model agirliklari |
config.json |
Mimari, esikler ve normalizasyon parametreleri |
metrics.json |
Egitim, dogrulama ve test metrikleri |
app.py |
HF Space Gradio demosu |
docker/ |
Self-host icin Docker dosyalari |
Dockerfile |
CPU-only Docker imaji |
docker-compose.yml |
Tek komutla deploy |
examples/ |
Ornek test gorselleri |
Atif
Bu modeli kullanirsaniz lutfen atifta bulunun:
@misc{ai-image-detector-2026,
title = {AI Image Detector: CLIP ViT-B/16 LoRA model for AI image detection},
author = {Demir, Kaan},
year = {2026},
url = {https://huggingface.co/wkaandemir/ai-image-detector}
}
- Downloads last month
- 16,800
Model tree for wkaandemir/ai-image-detector
Base model
openai/clip-vit-base-patch16