TechnologyPublié le 7 octobre 2026Par Thibault Mathian

Classificateur de sécurité pour l'essayage virtuel : Un modèle ouvert pour la modération

Nous mettons en open source notre Classificateur de sécurité pour l'essayage virtuel, un modèle Apache-2.0 qui analyse les photos produits pour prédire le rendu. Pourquoi les filtres NSFW échouent, comment nous l'avons conçu et ses performances.

Sommaire

Aujourd'hui, nous publions le Classificateur de sécurité pour l'essayage virtuel sur Hugging Face sous licence Apache-2.0. Il examine les photos d'un produit pour répondre à une seule question : si un client essaie cet article, que montrera la photo générée ?

Nous l'avons créé pour filtrer les produits avant qu'ils n'atteignent un modèle d'essayage virtuel. Tout service d'essayage acceptant des images de produits arbitraires se heurte au même problème ; c'est pourquoi nous publions le modèle, les règles d'étiquetage et les évaluations.

Huit photos de produits issues de notre catalogue de démonstration Genlook, avec les résultats du classificateur : une brassière de sport, un short de bain et une veste courte sont classés « ok », trois maillots de bain sont « revealing » (révélateurs), un harnais pour chien est « ok » et étiqueté « pet » (animal), une perruque est « ok » et étiquetée « not clothing » (pas un vêtement).
Huit photos de produits issues de notre catalogue de démonstration Genlook, avec les résultats du classificateur : une brassière de sport, un short de bain et une veste courte sont classés « ok », trois maillots de bain sont « revealing » (révélateurs), un harnais pour chien est « ok » et étiqueté « pet » (animal), une perruque est « ok » et étiquetée « not clothing » (pas un vêtement).

Pourquoi les détecteurs NSFW classiques ne fonctionnent pas pour l'essayage virtuel

L'essayage virtuel prend en entrée la photo d'une personne et celle d'un produit, puis retourne une image de la personne portant ce produit. Le risque réside dans le résultat final, mais avant la génération, on ne peut vérifier que le produit.

Les détecteurs NSFW génériques évaluent les pixels de l'image qu'on leur soumet. Ce n'est pas la bonne approche pour une photo produit :

  • Une lingerie photographiée à plat ne contient aucune nudité. Mais l'essayage virtuel montrera le client en lingerie.
  • Des cache-tétons sur fond blanc ne sont que quelques centimètres de tissu. Le résultat de l'essayage sera topless.
  • Une cagoule fétichiste sur un mannequin n'a rien d'explicite. Cela reste un article à caractère sexuel.
  • Un mannequin posant nu avec seulement un collier produit une image explicite. Pourtant, le collier est un produit tout à fait classique.

Lorsque nous avons testé trois classificateurs d'images NSFW open source populaires (NudeNet, nsfw-vit et Falconsai) sur un échantillon initial de 141 produits étiquetés, ils n'étaient d'accord avec nos étiquettes que dans 48 à 62 % des cas. Le modèle ShieldGemma 2 de Google, configuré avec des règles spécifiques pour cette question précise, a atteint 71,6 %. Ces modèles fonctionnent très bien. Ils répondent juste à une autre question.

Ce que prédit le classificateur

Chaque produit reçoit un niveau, classé par degré de sévérité :

NiveauCe que montre le résultat de l'essayage virtuelExemples
okLe client habillé de façon classiqueVêtements du quotidien, tenues de sport, combinaisons de plongée, cosplays couvrants, accessoires
revealingUne couverture équivalente à un maillot de bainBikinis et maillots, sous-vêtements pour hommes, vêtements sculptants, micro-shorts, la plupart des tenues de festival
lingerieSous-vêtements féminins, sans zone intime visibleSoutiens-gorge, culottes, ensembles de lingerie, bodys, porte-jarretelles, corsets portés comme lingerie
adultZones intimes exposées, ou produit sexuelMicro-maillots, cache-tétons, pièces transparentes, bonnets ouverts, articles BDSM et fétichistes, costumes de jeux de rôle sexuels

Trois informations supplémentaires accompagnent ce niveau :

  • subject : human_clothing, pet ou not_clothing. Un harnais pour chien et un harnais de bondage se ressemblent sur une photo détourée. Les perruques, les cosmétiques et les articles pour la maison sont classés comme non vestimentaires.
  • swimwear : regular, near_micro ou micro. Les catégories régulières et proches du micro sont revealing ; le micro est adult. Le mot « microkini » dans le nom d'un produit ne change rien : seules les photos comptent.
  • ravewear : vrai ou faux, pour les tenues de festival. Cela ne modifie pas le niveau de sévérité, mais c'est là que le modèle est le moins certain, il est donc utile de le savoir.

Les niveaux décrivent le résultat, pas le produit ni la boutique. Le bon filtrage dépend de l'audience : une marque de lingerie autorisera le niveau lingerie, tandis qu'une marketplace pour enfants bloquera probablement le niveau revealing. Le modèle renvoie également un indicateur blocked (probabilité de niveau adult supérieure ou égale à 0,3), ce qui permet d'intercepter davantage d'articles pour adultes qu'avec le seul niveau principal, moyennant une légère hausse des faux positifs.

Les cas difficiles

La majorité des produits ne pose pas de problème. La politique a été pensée pour les exceptions, et chaque règle découle d'un cas réel ayant nécessité un arbitrage :

ProduitNiveauRaison
Brassière de sport vendue comme tenue de gymokSe porte comme un haut en public
Même coupe vendue comme bralette de lingerielingerieSous-vêtement féminin
Soutien-gorge en dentelle, tétons clairement visibles sur les photosadultTransparence au niveau des tétons
Boxers pour hommesrevealingCouverture équivalente à un maillot de bain
Combinaison de plongée, t-shirt anti-UV, burkiniokCouverture totale
Pantalon en cuir, robe aspect latexokPièces de mode
Combinaison en cuir ou latex vendue comme article fétichisteadultTenue fétichiste
Harnais de poitrine en cuir sur une chemiseokAccessoire porté sur un vêtement
Harnais à sangles sur peau nueadultArticle fétichiste
Masque d'animal pour HalloweenokDéguisement
Masque de pup-playadultMasque fétichiste
Chaîne de corps portée sur une robeokBijou sur vêtement
Chaîne de corps sur torse nuadultPorté sur peau nue
Cosplay couvrant comme un vêtementokDéguisement
Tenue d'anime façon lingerieadultCosplay sexualisé

La politique complète, incluant les règles pour chaque niveau et balise, est disponible dans le fichier LABELLING_POLICY.md, aux côtés des poids du modèle.

Les exemples en haut de cet article montrent le modèle appliqué à notre catalogue de démonstration. Le maillot de bain à manches longues est un cas intéressant : manches longues et fermeture éclair devant, mais le bas est échancré comme un maillot une pièce. L'essayage virtuel montre donc une couverture type maillot de bain, et le modèle indique revealing. À côté, la brassière de sport dos nu reste classée ok avec un score de 0,97.

Comment nous l'avons conçu

Les données. Environ 2 600 produits (soit près de 5 000 photos) issus de catalogues de boutiques en ligne. Nous les avons sélectionnés pour couvrir les cas complexes : lingerie, micro-maillots de bain, tenues fétichistes, tenues de festival, cosplay et vêtements pour animaux, tout en conservant une part importante de vêtements de tous les jours pour éviter que le modèle ne filtre à l'excès. Seules des photos de produits sont utilisées, jamais de photos de clients. Tout article susceptible de montrer un mineur dans un contexte révélateur ou sexuel a été définitivement supprimé des données.

L'étiquetage. Claude a étiqueté chaque produit en examinant toutes les photos et en lisant le titre et la description, en respectant la politique établie. Un réviseur humain a vérifié des exemples de calibrage pour chaque niveau et corrigé les cas limites, qui ont ensuite servi à ajuster la politique. Celle-ci a connu plusieurs versions ; le niveau lingerie, par exemple, a été séparé du niveau adult lorsqu'il est devenu évident que la plupart des sous-vêtements ne sont pas de nature explicite.

Le modèle. Il s'appuie sur SigLIP 2 de Google (so400m, patch 16, 384 px), sous licence Apache-2.0. Deux variantes sont proposées :

VarianteTailleCe dont il s'agit
finetuned (par défaut)environ 0,9 GoLes 6 derniers blocs transformers et la tête de pooling entraînés de bout en bout, avec quatre têtes de classification linéaires
frozenenviron 120 Ko par-dessus SigLIP 2Le modèle de vision original avec des têtes logistiques appliquées à la moyenne et au maximum des embeddings d'images

Un produit est évalué sur l'ensemble de ses photos, car l'une cache souvent ce qu'une autre révèle (vue de dos, photo de détail du tissu).

Nous avons également testé un LLM de pointe avec les mêmes règles. La précision était proche, mais chaque requête prenait environ 1,6 seconde, et une solution de repli était nécessaire pour gérer les délais d'attente. Un classificateur visuel tourne en quelques dizaines de millisecondes par photo sur un GPU, renvoie toujours le même résultat et peut être réentraîné facilement si la politique évolue.

Ses performances

Une validation croisée à 5 plis sur 2 596 produits a été réalisée : chaque produit est évalué par un modèle qui ne l'a jamais vu lors de l'entraînement.

finetunedfrozen
Précision, 4 niveaux94,6 %94,2 %
Produits adultes manqués, flag blocked34 sur 53439 sur 534
Faux positifs adultes, flag blocked5255
Rappel pour la lingerie90 %89 %
Précision sur le sujet99,2 %
Précision sur la balise swimwear90,0 %

Par groupe de produits (version finetuned, niveau principal) :

GroupeProduitsPrécision
Catalogues mode classique1 03297,5 %
Cordes et bondage75100 %
Marques de maillots de bain23095,2 %
Marques de lingerie12094,2 %
Anime et cosplay6393,7 %
Fétichisme, lingerie et animaux63192,6 %
Maillots de bain exotiques et micro33091,8 %
Festivals et rave11585,2 %

Pour les véritables micro-maillots de bain : 91 interceptés sur 95.

L'ensemble de test a été volontairement conçu pour être ardu. Sur les catalogues de mode classique, qui correspondent à ce que vendent la plupart des boutiques, la précision atteint 97,5 %.

Limites

  • La lingerie transparente reste la frontière la plus complexe. C'est la visibilité claire des tétons ou des parties génitales qui départage lingerie de adult, et des produits d'apparence similaire se retrouvent des deux côtés. C'est là que se concentrent la majorité des erreurs restantes.
  • Les tenues de festival et de rave constituent le groupe le moins performant. Résilles, mailles et strass poussent souvent le modèle vers la catégorie adult.
  • Principalement des photos e-commerce occidentales. Attendez-vous à une précision moindre sur des styles photographiques très différents.
  • Il classe des produits, pas des personnes. Ne l'utilisez pas pour identifier une personne ou prendre des décisions la concernant.

Comment l'utiliser

# pip install torch open_clip_torch safetensors huggingface_hub pillow
from huggingface_hub import hf_hub_download
import importlib.util

spec = importlib.util.spec_from_file_location(
    "tryon_safety",
    hf_hub_download("Genlook/tryon-safety-classifier", "tryon_safety.py"),
)
tryon_safety = importlib.util.module_from_spec(spec)
spec.loader.exec_module(tryon_safety)

clf = tryon_safety.TryOnSafetyClassifier.from_pretrained(
    "Genlook/tryon-safety-classifier", revision="v1.0"
)
pred = clf.predict(["front.jpg", "back.jpg"])  # toutes les photos d'un produit
print(pred.level, pred.blocked, pred.subject, pred.swimwear, pred.ravewear)

Fixez la révision revision="v1.0" pour qu'une mise à jour ne modifie jamais vos résultats à votre insu. L'inférence ne nécessite que open_clip et torch, et les poids sont au format safetensors.

Vos retours sur les faux positifs, les faux négatifs et vos idées pour la prochaine version sont les bienvenus dans l'onglet Discussions du dépôt du modèle.

Ce que cela implique pour Genlook

L'API Genlook Try-On vérifie déjà chaque produit avant qu'un essayage virtuel ne soit généré : les articles pour adultes ou fétichistes sont refusés, tandis que les maillots de bain et la lingerie nécessitent un compte payant. Un essayage refusé renvoie une erreur CONTENT_POLICY_VIOLATION et le crédit correspondant est remboursé (référence des erreurs). Ce classificateur est précisément le modèle que nous avons conçu pour effectuer cette vérification.

Pour les développeurs, cela signifie que la sécurité est intégrée d'office à l'API ; ce n'est plus un élément à construire par-dessus. Un seul endpoint gère tous les types de produits, à 0,02 $ par essayage virtuel avec abonnement (voire 0,015 $ pour les gros volumes) et 0,04 $ à la carte. De plus, tout nouveau compte bénéficie de crédits gratuits pour commencer.

En résumé

  • La sortie : un classificateur sous licence Apache-2.0 basé sur SigLIP 2, qui prédit ce que montrerait un essayage virtuel à partir des seules photos du produit.
  • Sa raison d'être : les détecteurs NSFW analysent les pixels d'une photo produit, ce qui n'est pas pertinent pour l'essayage virtuel. Trois d'entre eux n'ont obtenu que 48 à 62 % de réussite sur nos labels.
  • Les sorties : quatre niveaux (ok, revealing, lingerie, adult), plus des indicateurs pour le sujet (subject), les maillots de bain (swimwear) et les tenues de festival (ravewear).
  • La précision : 94,6 % sur les quatre niveaux avec un ensemble de données délibérément difficile, 97,5 % sur la mode classique, et 100 % sur la catégorie cordes et bondage.
  • L'ouverture : les poids, le code d'inférence et la politique d'étiquetage sont publics. Les données d'entraînement, en revanche, ne le sont pas.

Obtenez le modèle sur Hugging Face, récupérez une clé API sur platform.genlook.app, ou ajoutez l'essayage virtuel à votre boutique.

FAQ

Vos questions, nos réponses.

Qu'est-ce que le Classificateur de sécurité pour l'essayage virtuel ?↓
Pourquoi ne pas utiliser un simple détecteur NSFW pour l'essayage virtuel ?↓
Quelle est sa précision ?↓
Puis-je l'utiliser à des fins commerciales ?↓
L'API d'essayage virtuel de Genlook intègre-t-elle des filtres de sécurité ?↓

Prêt à réduire les retours et booster les conversions ?

Installez Genlook sur votre boutique Shopify en quelques minutes. Commencez avec notre forfait gratuit.

À lire aussi