oai / README.md
Skarn55's picture
Update README.md
7d52236 verified
|
raw
history blame
4.91 kB
---
license: apache-2.0
base_model: SmilingWolf/wd-vit-tagger-v3
pipeline_tag: image-classification
library_name: onnxruntime
language:
- fr
- en
tags:
- image-tagging
- anime
- photo-realistic
- onnx
- waifu-diffusion
- computer-vision
- browser-ml
- multi-label-classification
datasets:
- SmilingWolf/wd-vit-tagger-v3
---
# 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](https://huggingface.co/SmilingWolf/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](https://huggingface.co/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)
```javascript
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
- `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.