Heute haben wir den Virtual Try-On Safety Classifier unter einer Apache-2.0-Lizenz auf Hugging Face veröffentlicht. Das Modell analysiert Produktfotos und beantwortet eine zentrale Frage: Wenn ein Kunde diesen Artikel anprobiert, was wird auf dem generierten Foto zu sehen sein?
Wir haben es entwickelt, um Produkte zu prüfen, bevor sie an ein Virtual Try-On-Modell weitergegeben werden. Da jeder Try-On-Dienst, der beliebige Produktbilder verarbeitet, vor demselben Problem steht, stellen wir das Modell, unsere Kennzeichnungsrichtlinien (Labelling Policy) und die Auswertungen öffentlich zur Verfügung.
Warum klassische NSFW-Filter bei virtuellen Anproben versagen
Eine virtuelle Anprobe kombiniert das Foto einer Person mit dem Foto eines Produkts und zeigt die Person mit dem angezogenen Artikel. Das eigentliche Risiko liegt im Ergebnis – doch vor der Generierung lässt sich nur das Produktbild überprüfen.
Herkömmliche NSFW-Detektoren bewerten lediglich die Pixel des vorliegenden Bildes. Bei einem reinen Produktfoto führt das zur falschen Fragestellung:
- Ein flach liegendes Dessous-Set zeigt keine Nacktheit. Das Try-On-Ergebnis zeigt die Person jedoch in Unterwäsche.
- Nippel-Pads auf weißem Hintergrund sind nur ein paar Zentimeter Stoff. Das Try-On-Ergebnis ist aber „oben ohne“.
- Eine Fetisch-Maske auf einer Schaufensterpuppe ist an sich nicht anstößig. Dennoch handelt es sich um einen sexuellen Artikel.
- Ein Nacktmodel, das nur eine Halskette trägt, ist explizit. Die Halskette selbst ist jedoch ein völlig normales Produkt.
Als wir drei bekannte, frei verfügbare NSFW-Bildklassifikatoren (NudeNet, nsfw-vit und Falconsai) mit einem frühen Datensatz von 141 gelabelten Produkten testeten, stimmten sie nur bei 48 bis 62 % mit unseren Einstufungen überein. ShieldGemma 2 von Google kam mit speziell für diesen Anwendungsfall geschriebenen Richtlinien auf 71,6 %. Diese Modelle funktionieren einwandfrei – sie beantworten schlichtweg die falsche Frage.
Was der Classifier vorhersagt
Jedes Produkt erhält ein Level, geordnet nach Strenge:
| Level | Was das Try-On-Ergebnis zeigt | Beispiele |
|---|---|---|
ok | Die Person ist normal bekleidet | Alltagskleidung, Sportbekleidung, Neoprenanzüge, deckendes Cosplay, Accessoires |
revealing | Bedeckung auf Bademoden-Niveau | Bikinis und Badeanzüge, Herrenunterwäsche, Shapewear, Micro-Shorts, die meiste Festival-Mode |
lingerie | Damenunterwäsche, keine Intimbereiche sichtbar | BHs, Slips, Dessous-Sets, Bodysuits, Strumpfbänder, Korsetts als Unterwäsche |
adult | Entblößte Intimbereiche oder sexuelle Artikel | Micro-Bademode, Nippel-Pads, transparente Stoffe, Open-Cup-Designs, BDSM- und Fetisch-Mode, Kostüme für sexuelle Rollenspiele |
Neben dem Level gibt es drei weitere Ausgabewerte:
- subject:
human_clothing,petodernot_clothing. Ein Hundegeschirr und ein Bondage-Geschirr sehen auf einem Freisteller fast gleich aus. Perücken, Kosmetika und Haushaltswaren werden als „nicht-kleidung“ (not_clothing) erkannt. - swimwear:
regular,near_microodermicro. Regular und Near-Micro gelten alsrevealing, Micro alsadult. Das Wort „Microkini“ im Produktnamen spielt keine Rolle; allein die Fotos zählen. - ravewear: true oder false, speziell für Festival-Outfits. Es ändert zwar nichts am Level, aber bei Rave-Mode ist sich das Modell oft am unsichersten – daher ist dieser Hinweis hilfreich.
Die Level beschreiben das Ergebnis, nicht das Produkt oder den Shop. Welcher Filter der richtige ist, hängt von der Zielgruppe ab: Eine Dessous-Marke wird lingerie zulassen, während ein Marktplatz für Kinderprodukte vielleicht schon revealing blockiert. Das Modell liefert auch ein blocked-Flag (Wahrscheinlichkeit für adult bei 0,3 oder höher). Dies fängt mehr Adult-Produkte ab als das Top-Level allein, geht aber mit einem leichten Anstieg an fälschlich blockierten Artikeln einher.
Die Härtefälle
Bei den meisten Produkten ist die Entscheidung eindeutig. Unsere Richtlinien greifen bei den Grenzfällen, und jede Regel basiert auf echten Produkten, für die wir eine klare Entscheidung treffen mussten:
| Produkt | Level | Begründung |
|---|---|---|
| Sport-BH, verkauft als Fitnesskleidung | ok | Wird in der Öffentlichkeit als Top getragen |
| Gleicher Schnitt, verkauft als Bralette | lingerie | Damenunterwäsche |
| Spitzen-BH, Brustwarzen auf Fotos klar sichtbar | adult | Transparent im Brustbereich |
| Herren-Boxershorts | revealing | Bedeckung auf Bademoden-Niveau |
| Neoprenanzug, Rashguard, Burkini | ok | Vollständig bedeckend |
| Lederhose, Kleid im Latex-Look | ok | Modische Kleidung |
| Catsuit aus Leder/Latex, verkauft als Fetischmode | adult | Fetisch-Anzug |
| Leder-Brustgeschirr über einem Hemd | ok | Accessoire über der Kleidung |
| Riemengeschirr auf nackter Haut | adult | Fetisch-Artikel |
| Halloween-Tiermaske | ok | Kostüm |
| Pup-Play-Maske | adult | Fetisch-Maske |
| Körperkette, getragen über einem Kleid | ok | Schmuck über der Kleidung |
| Körperkette auf nacktem Oberkörper | adult | Über nackter Haut getragen |
| Cosplay, das wie normale Kleidung bedeckt | ok | Kostüm |
| Anime-Outfit im Dessous-Stil | adult | Sexualisiertes Cosplay |
Die vollständigen Richtlinien samt Regeln für alle Level und Tags finden Sie unter LABELLING_POLICY.md direkt bei den Modellgewichten.
Die Beispiele zu Beginn dieses Beitrags zeigen das finale Modell im Einsatz mit unserem eigenen Demo-Katalog. Der langärmelige Badeanzug ist ein gutes Beispiel: Zwar hat er lange Ärmel und einen Frontreißverschluss, doch der Beinbereich ist wie bei einem klassischen Einteiler geschnitten. Die virtuelle Anprobe zeigt demnach ein Bademoden-Niveau, also entscheidet das Modell auf revealing. Der Neckholder-Sport-BH direkt daneben erhält souverän ein ok mit 0,97.
Wie wir es entwickelt haben
Daten. Etwa 2.600 Produkte (rund 5.000 Fotos) aus Online-Shop-Katalogen, gezielt ausgewählt, um die Härtefälle abzudecken: Dessous, Micro-Bademode, Fetischkleidung, Festival-Outfits, Cosplay und Haustierbekleidung – kombiniert mit einem großen Anteil an Alltagsmode, damit das Modell nicht übermäßig viel blockiert. Wir nutzen ausschließlich Produktfotos und niemals Bilder von Kunden. Jegliche Artikel, die Minderjährige in einem freizügigen oder sexuellen Kontext zeigen könnten, wurden konsequent aus dem Datensatz entfernt.
Labels. Claude stufte jedes Produkt anhand unserer schriftlichen Richtlinien ein, analysierte dafür alle Fotos und las die Titel und Beschreibungen. Ein menschlicher Reviewer überprüfte Kalibrierungsbeispiele für jedes Level und korrigierte die Grenzfälle. Diese Erkenntnisse flossen dann wieder in die Richtlinien zurück. Die Richtlinie durchlief mehrere Iterationen; so wurde das Level lingerie beispielsweise erst von adult abgespalten, als klar war, dass die meiste Unterwäsche nicht explizit ist.
Modell. Die Basis bildet SigLIP 2 von Google (so400m, patch 16, 384 px) unter Apache-2.0. Wir stellen zwei Varianten zur Verfügung:
| Variante | Größe | Was es beinhaltet |
|---|---|---|
| finetuned (Standard) | ca. 0,9 GB | Die letzten 6 Transformer-Blöcke und der Pooling-Head durchgängig trainiert (End-to-End), mit vier linearen Heads |
| frozen | ca. 120 KB (zusätzlich zu SigLIP 2) | Der originale Vision-Tower, logistische Heads auf dem Mittel- und Maximalwert der Foto-Embeddings |
Die Bewertung eines Produkts erfolgt über alle dazugehörigen Fotos hinweg. Oft verbirgt eine Ansicht, was eine andere enthüllt (z. B. eine Rückenansicht oder eine Nahaufnahme des Stoffes).
Wir haben auch ein Frontier-LLM mit demselben Prompt getestet. Die Genauigkeit war vergleichbar, allerdings dauerte jeder Aufruf rund 1,6 Sekunden und erforderte zudem ein Fallback-System für Timeouts. Ein Vision-Classifier auf einer GPU benötigt nur wenige Millisekunden pro Foto, liefert stets die gleiche Antwort und lässt sich bei geänderten Richtlinien schnell nachtrainieren.
Wie gut das Modell funktioniert
Bei einer fünffachen Kreuzvalidierung über 2.596 Produkte wurde jeder Artikel von einem Modell bewertet, das ihn während des Trainings nie gesehen hatte.
| finetuned | frozen | |
|---|---|---|
| Genauigkeit (4 Level) | 94,6 % | 94,2 % |
Übersehene Adult-Produkte (blocked-Flag) | 34 von 534 | 39 von 534 |
False Positives (Adult, blocked-Flag) | 52 | 55 |
| Lingerie-Recall | 90 % | 89 % |
| Subject-Genauigkeit | 99,2 % | |
| Swimwear-Tag-Genauigkeit | 90,0 % |
Nach Produktgruppe (finetuned, oberstes Level):
| Gruppe | Produkte | Genauigkeit |
|---|---|---|
| Kataloge für Alltagsmode | 1.032 | 97,5 % |
| Rope & Bondage | 75 | 100 % |
| Bademoden-Marken | 230 | 95,2 % |
| Dessous-Marken | 120 | 94,2 % |
| Anime und Cosplay | 63 | 93,7 % |
| Fetisch-, Dessous- und Haustier-Kataloge | 631 | 92,6 % |
| Exotische & Micro-Bademode | 330 | 91,8 % |
| Festival und Rave | 115 | 85,2 % |
Echte Micro-Bademode: 91 von 95 erkannt.
Das Test-Set ist absichtlich anspruchsvoll. Bei Katalogen für Alltagsmode – also dem Sortiment, das die meisten Shops anbieten – liegt die Genauigkeit bei 97,5 %.
Einschränkungen
- Transparente Dessous sind die größte Herausforderung. Ob Brustwarzen oder Genitalien deutlich sichtbar sind, entscheidet über
lingerieoderadult, und oft existieren zum Verwechseln ähnliche Artikel auf beiden Seiten. Hier passieren die meisten verbleibenden Fehler. - Festival- und Rave-Mode ist die schwächste Gruppe. Netzstoffe, Mesh und Strass drängen das Modell schnell in Richtung
adult. - Primär westliche E-Commerce-Fotografie. Bei stark abweichenden Fotostilen ist mit einer geringeren Genauigkeit zu rechnen.
- Es klassifiziert Produkte, keine Menschen. Setzen Sie das Modell nicht ein, um Personen zu identifizieren oder Entscheidungen über sie zu treffen.
Probieren Sie es aus
# 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"]) # all photos of one product
print(pred.level, pred.blocked, pred.subject, pred.swimwear, pred.ravewear)
Nutzen Sie revision="v1.0", damit ein Update Ihre Ergebnisse nicht ungewollt verändert. Für die Inferenz benötigen Sie lediglich open_clip und torch; die Gewichte liegen im Safetensors-Format vor.
False Positives, False Negatives sowie Ideen für die nächste Version können Sie gerne im Discussions-Tab unseres Modell-Repos teilen.
Was das für Genlook bedeutet
Die Genlook Try-On API überprüft bereits heute jedes Produkt, bevor eine virtuelle Anprobe ausgeliefert wird: Adult- und Fetisch-Artikel werden abgelehnt, für Bademode und Unterwäsche ist ein kostenpflichtiger Account erforderlich. Eine abgelehnte Anprobe schlägt mit CONTENT_POLICY_VIOLATION fehl, und das entsprechende Guthaben wird erstattet (Fehlerübersicht). Genau für diesen Check haben wir diesen Classifier entwickelt.
Für Entwickler bedeutet das: Sicherheit ist direkt in die API integriert und muss nicht erst mühsam drumherum gebaut werden. Ein einziger Endpunkt deckt jeden Produkttyp ab – ab 0,02 $ pro Anprobe im Abo und bis zu 0,015 $ bei hohem Volumen (0,04 $ bei Pay-as-you-go). Neue Accounts starten mit einem kostenlosen Startguthaben.
Zusammenfassung
- Das Release: Ein Classifier auf Basis von SigLIP 2 unter Apache-2.0, der anhand von Produktfotos vorhersagt, was eine virtuelle Anprobe dieses Artikels zeigen würde.
- Warum es existiert: NSFW-Filter bewerten nur die Pixel eines Fotos – der falsche Ansatz für Try-Ons. Drei dieser Modelle erreichten bei unseren Labels nur 48 bis 62 %.
- Ausgaben: Vier Level (ok, revealing, lingerie, adult), plus Tags für Subject, Swimwear und Ravewear.
- Genauigkeit: 94,6 % über vier Level hinweg (getestet mit einem extra anspruchsvollen Datensatz), 97,5 % bei Alltagsmode, 100 % bei Rope & Bondage.
- Open-Source: Gewichte, Inferenz-Code und Kennzeichnungsrichtlinien sind öffentlich. Die Trainingsdaten hingegen nicht.
Holen Sie sich das Modell auf Hugging Face, generieren Sie einen API-Key auf platform.genlook.app oder integrieren Sie virtuelle Anproben in Ihren Shop.
FAQ
