--- license: mit language: - tr - en tags: - ai-image-detection - image-classification - vit - clip - lora library_name: pytorch pipeline_tag: image-classification base_model: openai/clip-vit-base-patch16 --- # 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](https://huggingface.co/spaces/wkaandemir/ai-image-detector-space) --- ## Icindekiler - [Model Detaylari](#model-detaylari) - [Performans](#performans) - [Karar Esikleri](#karar-esikleri) - [Kullanim](#kullanim) - [Egitim Verisi](#egitim-verisi) - [Sinirlamalar](#sinirlamalar) - [Etik Kullanim](#etik-kullanim) - [Depo Yapisi](#depo-yapisi) - [Atif](#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 ```python 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](https://huggingface.co/spaces/wkaandemir/ai-image-detector-space) ### Self-host (Docker) Modeli kendi sunucunuzda calistirmak icin `docker/` dizinindeki Dockerfile ve `docker-compose.yml` kullanin: ```bash 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](https://huggingface.co/datasets/Spawning/PD12M)'den 7.553 gorsel (kamu mali / CC0). - **Yapay**: [pthan12/AIGenImages2026](https://huggingface.co/datasets/pthan12/AIGenImages2026)'dan 3.735 gorsel (modern ureticiler: Flux, Midjourney, GPT Image, DALL-E, Reve vb.) + [poloclub/diffusiondb](https://huggingface.co/datasets/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: ```bibtex @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} } ```