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)

👉 https://fmenguy.fr/oai/

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.onnx
  • selected_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-v3
  • wd-swinv2-tagger-v3
  • wd-convnext-tagger-v3

🛠️ Autres modèles par François MENGUY


📧 Contact

Ouvrez une issue pour tout problème concernant cette version ONNX.

Conversion ONNX réalisée avec ❤️ par François MENGUY.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for Skarn55/oai

Quantized
(1)
this model