File size: 4,907 Bytes
d1ceb4e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7727360
 
d1ceb4e
 
7727360
 
 
 
 
 
 
 
d1ceb4e
 
 
7727360
 
 
 
 
 
 
 
 
d1ceb4e
 
 
7727360
 
 
 
 
 
 
 
 
d1ceb4e
 
 
 
 
 
7727360
d1ceb4e
 
 
 
 
 
 
 
 
 
 
7727360
 
 
d1ceb4e
 
2c90212
 
 
7d52236
2c90212
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
---
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.