Downloads · 30 days
13
8% of all-time downloads
Skarn55/ai_detection
ai_detection is a image classification model from Skarn55. Use it when you need a label for an image. The card lists the license as mit.
Les CNN sont comme des détectives qui analysent une image zone par zone :
Downloads · 30 days
13
8% of all-time downloads
All-time downloads
158
Public
Repo size
1.9 GB
Likes
0
Public
Click a slice to open those files.
.onnx1.9 GB · 100%
From the Hugging Face model README
Les CNN sont comme des détectives qui analysent une image zone par zone :
🔧 Exemple d'architecture CNN : ResNet, EfficientNet, MobileNet
Les ViT découpent l'image en patchs (16×16 pixels) et les traitent comme des mots dans une phrase :
Avantages :
| Critère | ViT (Vision Transformer) | CNN (ResNet) |
|---|---|---|
| Détection d'artefacts subtils | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Cohérence globale | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Généralisation | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Vitesse d'inférence | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Taille du modèle | ⭐⭐⭐ | ⭐⭐⭐⭐ |
Décision finale : ViT est plus performant pour détecter les incohérences stylistiques et la cohérence d'éclairage typiques des images générées par IA (Stable Diffusion, Midjourney, DALL-E).
Vision Transformer (ViT-Base) ├── Patch Embedding (16×16 patches) │ └── 224×224 image → 196 patches ├── Transformer Encoder (12 layers) │ ├── Multi-Head Self-Attention (12 heads) │ ├── Layer Normalization │ └── MLP (Feed-Forward) ├── Classification Head │ ├── Global Average Pooling │ ├── Dense(768 → 256) │ ├── ReLU + Dropout(0.3) │ └── Dense(256 → 2) [Real, AI] └── Softmax
Paramètres totaux : ~86M
Taille du modèle ONNX : ~98 MB (FP16)
Images réelles : 50,000 images
Images IA : 50,000 images
transforms.Compose([
transforms.RandomHorizontalFlip(p=0.5),
transforms.RandomRotation(15),
transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2),
transforms.RandomResizedCrop(224, scale=(0.8, 1.0)),
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize(
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225]
)
])
Stratégie d'entraînement :
J'ai optimisé le modèle pour le **déploiement web ** sur mon site https://fmenguy.fr/odia :
import torch.onnx
# Export avec opset 17 (compatibilité maximale)
torch.onnx.export(
model,
dummy_input,
"model.onnx",
input_names=['input'],
output_names=['output'],
dynamic_axes={'input': {0: 'batch_size'}},
opset_version=17
)
J'ai créé une page HTML standalone qui utilise ce modèle directement dans le navigateur (pas de serveur !) :
index.html (page unique)
├── Prétraitement des images
│ ├── Resize vers 224×224
│ ├── Normalisation ImageNet
│ └── Conversion en tenseur Float32
├── Inférence ONNX
│ ├── Chargement du modèle (cache navigateur)
│ ├── Exécution sur WebAssembly/WebGL
│ └── Post-traitement des logits
└── Visualisation
├── Graphiques de confiance (Canvas)
├── Heatmaps d'activation (Grad-CAM simplifié)
└── Export des résultats (JSON/CSV)
import { AutoModel } from '@xenova/transformers';
const model = await AutoModel.from_pretrained('Skarn55/ai_detection');
const prediction = await model(image);
console.log(prediction.logits); // [score_real, score_ai]
const session = await ort.InferenceSession.create('model.onnx');
const input = new ort.Tensor('float32', preprocessedData, [1, 3, 224, 224]);
const output = await session.run({ input });
const scores = output.output.data;
const isAI = scores[1] > scores[0];
| Dataset | Précision | Recall | F1-Score |
|---|---|---|---|
| Test Set | 98.2% | 97.8% | 98.0% |
| Stable Diffusion | 99.1% | 98.6% | 98.8% |
| DALL-E 3 | 96.5% | 95.9% | 96.2% |
| Midjourney v6 | 97.3% | 96.7% | 97.0% |
MIT License - Libre d'utilisation commerciale et personnelle
⭐ Si ce modèle vous aide, mettez une étoile sur le repo !