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

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:

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
Safetensors
Model size
85.8M params
Tensor type
F32
ยท
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for wkaandemir/ai-image-detector

Adapter
(19)
this model

Space using wkaandemir/ai-image-detector 1