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.
1 import * as ort from 'onnxruntime-web' ;
2
3 // Charger le modèle
4 const session = await ort . InferenceSession . create (
5 'https://huggingface.co/Skarn55/oai/resolve/main/model.onnx' ,
6 { executionProviders : [ 'wasm' ] }
7 ) ;
8
9 // Préparer l'image (448x448, BGR, plage 0-255)
10 const imageData = prepareImage ( votreImage ) ; // Voir preprocessing ci-dessous
11 const tensor = new ort . Tensor ( 'float32' , imageData , [ 1 , 448 , 448 , 3 ] ) ;
12
13 // Exécuter l'inférence
14 const results = await session . run ( { [ session . inputNames [ 0 ] ] : tensor } ) ;
15 const scores = results [ session . outputNames [ 0 ] ] . data ;
16
17 // Filtrer les tags
18 const tags = scores
19 . map ( ( score , i ) => ( { tag : tagNames [ i ] , score } ) )
20 . filter ( x => x . score > 0.35 )
21 . sort ( ( a , b ) => b . score - a . score ) ;
22
23 // Affichage résultat
24 console . log ( "Tags détectés :" , tags ) ;
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
Ouvrez une issue pour tout problème concernant cette version ONNX.