Hoje lançamos o Virtual Try-On Safety Classifier no Hugging Face sob a licença Apache-2.0. Ele analisa as fotos de um produto e responde a uma única pergunta: se um cliente provar essa peça, o que a foto gerada vai mostrar?
Nós o desenvolvemos para filtrar produtos antes que cheguem a um modelo de provador virtual. Qualquer serviço de provador que aceite imagens variadas de produtos enfrenta o mesmo problema, por isso estamos publicando o modelo, a política de classificação e os testes de avaliação.
FAQok | A pessoa vestida normalmente | Roupas do dia a dia, moda fitness, roupas de mergulho, cosplays comportados, acessórios |
| revealing | Cobertura típica de moda praia | Biquínis, maiôs, cuecas, cintas modeladoras, micro shorts, roupas de festival |
| lingerie | Calcinhas e sutiãs, sem exposição íntima | Sutiãs, calcinhas, conjuntos de lingerie, bodys, ligas, corsets usados como lingerie |
| adult | Áreas íntimas expostas ou produto de cunho sexual | Micro biquínis, adesivos de mamilo, peças transparentes, sutiãs meia-taça (abertos), roupas BDSM e de fetiche, fantasias sexuais |
Três classificações extras acompanham o nível principal:
- subject: human_clothing, pet ou not_clothing. Um peitoral de cachorro e um acessório de bondage podem parecer iguais em uma foto de produto (packshot). Perucas, cosméticos e artigos de casa são marcados como não sendo roupas.
- swimwear: regular, near_micro ou micro. Regular e near micro caem em revealing; micro é adult. A palavra "micro biquíni" no título do produto não define nada; as fotos sim.
- ravewear: true ou false, para looks de festival. Isso não muda o nível, mas moda de festivais é onde o modelo tem menos certeza, então é uma informação útil de se ter.
Os níveis descrevem a imagem final, e não o produto ou a loja em si. A regra de bloqueio ideal depende do seu público: uma marca de moda íntima vai liberar lingerie, enquanto um marketplace infantil pode bloquear revealing. O modelo também retorna um sinalizador de bloqueio (blocked), acionado quando a probabilidade de adult for igual ou superior a 0,3. Isso ajuda a barrar mais produtos adultos em troca de um pequeno aumento de falsos positivos.
## Os casos difíceis
A maioria dos produtos é fácil de classificar. A política existe justamente para aqueles que não são, e cada regra nasceu de um produto real que exigiu uma decisão:
| Produto | Nível | O motivo |
|---|---|---|
| Top esportivo vendido como roupa de academia | ok | Usado como blusa em público |
| Mesmo corte vendido como bralette de lingerie | lingerie | Roupa íntima feminina |
| Sutiã de renda com mamilos claramente visíveis nas fotos | adult | Transparência revelando mamilos |
| Cuecas boxer masculinas | revealing | Nível de exposição igual à moda praia |
| Roupa de mergulho, camisa com proteção solar, burkini | ok | Cobertura total |
| Calça de couro, vestido com aspecto de látex | ok | Peças de moda |
| Macacão de couro ou látex vendido como fetiche | adult | Traje de fetiche |
| Arnês de couro no peito usado sobre uma camisa | ok | Acessório por cima da roupa |
| Arnês de tiras diretamente sobre a pele nua | adult | Artigo de fetiche |
| Máscara de animal para o Halloween | ok | Fantasia |
| Máscara de pup play | adult | Máscara de fetiche |
| Body chain (corrente corporal) usado sobre um vestido | ok | Joia por cima da roupa |
| Body chain sobre o tronco nu | adult | Usado sem nada por baixo |
| Cosplay com cobertura equivalente a roupas normais | ok | Fantasia |
| Roupa de anime estilo lingerie | adult | Cosplay sexualizado |
A política completa, com as regras para cada nível e tag, está publicada no arquivo LABELLING_POLICY.md junto com os pesos do modelo.
Os exemplos no topo deste post mostram o modelo final rodando em nosso próprio catálogo de demonstração. O maiô de manga longa é um caso interessante: tem mangas compridas e zíper frontal, mas a parte de baixo tem corte cavado. O provador virtual exibe o nível de exposição de moda praia, então o modelo classifica como revealing. Já o top esportivo frente única, logo ao lado no catálogo, crava ok com precisão de 0,97.
## Como desenvolvemos o modelo
Dados. Cerca de 2.600 produtos (aproximadamente 5.000 fotos) de catálogos de lojas virtuais, escolhidos para abranger os casos mais difíceis: lingeries, micro biquínis, fetiche, roupas de festival, cosplay e moda pet, além de uma grande fatia de moda casual do dia a dia para que o modelo não bloqueie em excesso. Usamos apenas fotos dos produtos, nunca imagens de clientes. Qualquer produto que pudesse mostrar um menor de idade em contexto revelador ou sexual foi sumariamente removido do conjunto de dados.
Rótulos. A IA Claude classificou cada produto depois de analisar todas as fotos e ler o título e a descrição, seguindo estritamente a política estabelecida. Um revisor humano verificou exemplos de calibração para todos os níveis e ajustou os casos limítrofes, e essas decisões voltaram para atualizar as regras da política. Essa política passou por diversas versões; a categoria lingerie, por exemplo, foi separada de adult assim que ficou claro que a maior parte da moda íntima não é explícita.
Modelo. A base é o modelo SigLIP 2 (so400m, patch 16, 384 px) do Google, também sob licença Apache-2.0. Disponibilizamos duas variantes:
| Variante | Tamanho | O que é |
|---|---|---|
| finetuned (padrão) | aprox. 0,9 GB | Os últimos 6 blocos do transformer e o pooling head treinados de ponta a ponta, com quatro camadas lineares (linear heads) |
| frozen | aprox. 120 KB sobre o SigLIP 2 | A torre de visão original, com camadas logísticas em cima das médias e máximos dos embeddings da foto |
A pontuação de um produto leva em conta todas as suas fotos juntas, pois o que uma foto esconde, muitas vezes a outra mostra (uma vista traseira, um detalhe no tecido).
Chegamos a testar um LLM de ponta orientado pela mesma política. A precisão chegou perto, mas cada chamada levava cerca de 1,6 segundo e ainda exigia uma rota de fuga (fallback) para lidar com timeouts. Já um classificador de visão computacional processa cada foto em dezenas de milissegundos usando uma GPU, entrega a mesma resposta todas as vezes e pode ser treinado novamente sempre que a política mudar.
## A eficiência do modelo
Usamos validação cruzada k-fold (5 grupos) em 2.596 produtos: cada item recebe uma nota de um modelo que nunca o viu durante a fase de treinamento.
| | finetuned | frozen |
|---|---|---|
| Precisão, 4 níveis | 94,6% | 94,2% |
| Produtos adultos não identificados, flag blocked | 34 de 534 | 39 de 534 |
| Falsos positivos (adulto), flag blocked | 52 | 55 |
| Recall em lingerie | 90% | 89% |
| Precisão no assunto (subject) | 99,2% | |
| Precisão da tag swimwear | 90,0% | |
Por grupo de produto (finetuned, nível principal):
| Grupo | Produtos | Precisão |
|---|---|---|
| Catálogos de moda casual (dia a dia) | 1.032 | 97,5% |
| Cordas e bondage | 75 | 100% |
| Marcas de moda praia | 230 | 95,2% |
| Marcas de lingerie | 120 | 94,2% |
| Anime e cosplay | 63 | 93,7% |
| Catálogos de fetiche, lingerie e pet | 631 | 92,6% |
| Moda praia exótica e micro | 330 | 91,8% |
| Moda para festivais e raves | 115 | 85,2% |
Autênticos micro biquínis: detectamos 91 de 95 peças.
Esse conjunto de testes é intencionalmente difícil. Nos catálogos de moda para o dia a dia, o tipo que a grande maioria das lojas vende, a precisão bate os 97,5%.
## Limitações
- Lingeries transparentes são a linha mais tênue. O que separa lingerie de adult é a visibilidade clara de mamilos ou genitais, e existem produtos extremamente parecidos dos dois lados da fronteira. Grande parte dos erros residuais está aqui.
- Moda para festivais é o ponto mais fraco. Meias arrastão, tecidos telados (mesh) e pedrarias induzem o modelo a classificar o item como adult.
- Baseado na fotografia do e-commerce ocidental. Pode haver uma precisão menor em estilos fotográficos muito diferentes.
- A ferramenta classifica produtos, não pessoas. Não use a ferramenta para identificar pessoas ou embasar decisões sobre elas.
## Como utilizar
python
# 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"]) # todas as fotos de um produto
print(pred.level, pred.blocked, pred.subject, pred.swimwear, pred.ravewear)
Trave a versão usando revision="v1.0" para que uma eventual atualização não altere seus resultados sem o seu consentimento. A inferência exige apenas open_clip e torch, e os pesos estão no formato safetensors.
Falsos positivos, falsos negativos e ideias para a próxima versão são sempre bem-vindos na aba Discussions do repositório do modelo.
## O que isso significa para a Genlook
A API de Try-On da Genlook já verifica cada produto antes de gerar o provador virtual: produtos adultos e de fetiche são barrados automaticamente, enquanto roupas de banho, íntimas e lingeries exigem uma conta paga para serem processadas. Uma tentativa recusada retorna um erro CONTENT_POLICY_VIOLATION e o crédito da requisição é devolvido (referência de erros). Foi exatamente para fazer essa filtragem que desenvolvemos este classificador.
Para os desenvolvedores, isso significa que a segurança é nativa da API e não mais um problema para se resolver por fora. Um único endpoint resolve qualquer tipo de produto, custando US$ 0,02 por provador virtual num plano fixo e caindo para US$ 0,015 dependendo do volume (ou US$ 0,04 via faturamento avulso). E as novas contas ainda começam com créditos gratuitos.
## Resumo
- O lançamento: um classificador licenciado sob Apache-2.0 baseado no SigLIP 2, que prevê o resultado que o provador virtual terá a partir das fotos do próprio produto.
- Por que existe: detectores NSFW analisam apenas os pixels da foto de um produto. Essa é a abordagem errada para provadores virtuais. Três desses modelos alcançaram apenas 48% a 62% de precisão nos nossos rótulos de teste.
- Saídas (Outputs): quatro níveis principais (ok, revealing, lingerie e adult), além de tags de assunto (subject), moda praia (swimwear) e moda festival (ravewear).
- Precisão: 94,6% considerando os quatro níveis em uma base de dados intencionalmente difícil, 97,5% na moda do dia a dia e 100% em artigos de cordas e bondage.
- Aberto: os pesos, o código de inferência e a política de classificação são públicos. A base de dados do treinamento, não.
---
Baixe o modelo no Hugging Face, gere sua chave de API em platform.genlook.app ou adicione o provador virtual na sua loja.
Dúvidas respondidas.
O que é o Classificador de Segurança para Provador Virtual?↓
Por que não usar um detector NSFW para o provador virtual?↓
Qual é o nível de precisão?↓
Posso usar o modelo comercialmente?↓
A API de provador virtual da Genlook possui verificações de segurança próprias?↓
Classificador de Segurança para Provador Virtual: Um Modelo Aberto de Moderação
Lançamos o Classificador de Segurança para Provador Virtual, um modelo Apache-2.0 que analisa fotos e prevê o resultado do provador virtual. Veja por que detectores NSFW falham, como criamos a ferramenta e seus resultados.
Pronto para reduzir devoluções e aumentar conversões?
Instale o Genlook na sua loja Shopify em minutos. Comece com nosso plano grátis.
Artigos relacionados
