WD ViT Tagger v3 - ONNX Runtime
🎯 Modèle ONNX optimisé pour le tagging d'images et l'analyse de contenu dans le navigateur
Ce dépôt héberge une version ONNX optimisée du modèle WD ViT Tagger v3, conçu pour une inférence efficace dans les navigateurs web via ONNX Runtime Web.
📋 Détails du Modèle
- Modèle de Base : SmilingWolf/wd-vit-tagger-v3
- Type de Modèle : Vision Transformer (ViT) pour classification multi-labels d'images
- Format : ONNX (optimisé pour WebAssembly)
- Taille d'Entrée : 448×448 RGB (ordre des canaux BGR)
- Sortie : ~9 000 tags répartis en plusieurs catégories
- Licence : Apache 2.0
🎨 Capacités
Le modèle peut analyser et étiqueter des images avec une grande précision pour :
- Tags généraux : Objets, actions, attributs, styles
- Tags de personnages : Identification de personnages (anime/manga)
- Tags de classification : général / sensible / explicite
- Photos réalistes : Fonctionne parfaitement sur des images réelles
- Anime/Manga : Modèle spécialisé pour styles illustrés
🚀 Utilisation
🌐 Outil en ligne (100% local, aucun serveur)
100% client-side — aucune image envoyée, tout se passe dans votre navigateur.
📦 JavaScript (Navigateur – ONNX Runtime Web)
import * as ort from 'onnxruntime-web';
// Charger le modèle
const session = await ort.InferenceSession.create(
'https://huggingface.co/Skarn55/oai/resolve/main/model.onnx',
{ executionProviders: ['wasm'] }
);
// Préparer l'image (448x448, BGR, plage 0-255)
const imageData = prepareImage(votreImage); // Voir preprocessing ci-dessous
const tensor = new ort.Tensor('float32', imageData, [1, 448, 448, 3]);
// Exécuter l'inférence
const results = await session.run({ [session.inputNames[0]]: tensor });
const scores = results[session.outputNames[0]].data;
// Filtrer les tags
const tags = scores
.map((score, i) => ({ tag: tagNames[i], score }))
.filter(x => x.score > 0.35)
.sort((a, b) => b.score - a.score);
// Affichage résultat
console.log("Tags détectés :", tags);
🔧 Prétraitement (Python)
def prepare_square_image(image, target_size=448): canvas = Image.new("RGBA", image.size, (255, 255, 255)) canvas.alpha_composite(image.convert("RGBA")) image = canvas.convert("RGB")
max_dim = max(image.size)
pad_left = (max_dim - image.size[0]) // 2
pad_top = (max_dim - image.size[1]) // 2
padded = Image.new("RGB", (max_dim, max_dim), (255, 255, 255))
padded.paste(image, (pad_left, pad_top))
if max_dim != target_size:
padded = padded.resize((target_size, target_size), Image.BICUBIC)
return padded
📊 Performance
| Élément | Valeur |
|---|---|
| Inférence navigateur | 3–5 s |
| Taille modèle | ~250 Mo |
| Tags totaux | 10 861 |
| Seuil recommandé | 0.35 |
📁 Fichiers fournis
model.onnxselected_tags.csv
🏷️ Catégories de tags
| Catégorie | Description | Exemples |
|---|---|---|
| Général | tags visuels | girl, solo |
| Artiste | noms d’artistes | … |
| Copyright | franchises | … |
| Personnage | noms de personnages | … |
| Meta | métadonnées | … |
| Classification | general, sensitive, explicit | … |
🎯 Cas d'usages
- Tagging automatique d'images
- Modération / filtrage
- SEO (métadonnées images)
- Annotation datasets ML
- Apps 100% navigateur (confidentialité)
⚙️ Spécifications Techniques
- Entrée :
float32,[1, 448, 448, 3], BGR, 0–255 - Sortie :
float32,[1, 10861] - Activation : sigmoid
🙏 Crédits
- Modèle original : SmilingWolf
- Dataset : WaifuDiffusion v3
- Conversion ONNX : François MENGUY
📜 Licence
Licence Apache 2.0, autorise :
- Utilisation commerciale
- Modifications
- Distribution
- Usage privé
Veuillez créditer SmilingWolf.
🔗 Modèles Associés
wd-vit-tagger-v3wd-swinv2-tagger-v3wd-convnext-tagger-v3
🛠️ Autres modèles par François MENGUY
Skarn55/gender-classification-onnx- https://fmenguy.fr/oai/
📧 Contact
Ouvrez une issue pour tout problème concernant cette version ONNX.
Conversion ONNX réalisée avec ❤️ par François MENGUY.
Model tree for Skarn55/oai
Base model
SmilingWolf/wd-vit-tagger-v3