Instructions to use champao/nsfw-classifier with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- fastai
How to use champao/nsfw-classifier with fastai:
from huggingface_hub import from_pretrained_fastai learn = from_pretrained_fastai("champao/nsfw-classifier") - Notebooks
- Google Colab
- Kaggle
nsfw-classifier
Classificador de imagens em 5 categorias para moderação de conteúdo. ResNet34 ajustada por transfer learning a partir do ImageNet.
Leia a seção "Limitações" antes de usar. A acurácia global de 91% não descreve o comportamento do modelo fora do dataset de treino.
Classes
anime_drawing · hentai · neutral · porn · sexy
Uso
from huggingface_hub import hf_hub_download
from safetensors.torch import load_file
from fastai.vision.all import *
pesos = hf_hub_download("SEU_USUARIO/nsfw-classifier", "model.safetensors")
learn = vision_learner(dls, resnet34, n_out=5)
learn.model.load_state_dict(load_file(pesos))
Pré-processamento (em config.json): redimensionar para 256, recortar 224,
RGB em escala 0–1, normalização ImageNet
(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225]).
Só o safetensors é distribuído. O .pkl do fastai foi removido: pickle
executa código ao ser carregado, e o scanner do Hugging Face o marcava como
inseguro.
Treino
| Dados | 22.434 imagens (treino) + 4.049 (validação) |
| Fonte | strangerguardhf/NSFW-MultiDomain-Classification |
| Arquitetura | ResNet34 pré-treinada no ImageNet |
| Regime | fine_tune(10, base_lr=1e-3) — 1 época congelada + 9 destravadas |
| Hardware | GTX 1070 Ti, 22,5 min |
Resultados
Dentro da distribuição (validação, 4.049 imagens)
Acurácia global: 91,75%
| classe | recall | precisão |
|---|---|---|
| anime_drawing | 91,2% | 89,3% |
| hentai | 88,0% | 92,8% |
| neutral | 90,9% | 91,1% |
| porn | 93,5% | 95,6% |
| sexy | 94,3% | 90,5% |
Fora da distribuição (holdout, 29.629 imagens do Reddit)
Acurácia global: 91,01% — e este número engana. O holdout é 72% neutral,
então o agregado reflete quase só essa classe.
| classe | n | validação | holdout | queda |
|---|---|---|---|---|
| anime_drawing | 2.657 | 91,2% | 87,1% | -4,1 |
| hentai | 1.196 | 88,0% | 85,9% | -2,1 |
| neutral | 21.294 | 90,9% | 92,4% | +1,5 |
| porn | 347 | 93,5% | 60,2% | -33,3 |
| sexy | 4.135 | 94,3% | 90,5% | -3,8 |
Limitações
A classe porn não generaliza
Recall cai de 93,5% para 60,2% e a precisão vai a 31,1% em dados de outra
origem — de tudo que o modelo chama de porn, só um terço é.
A causa é conhecida: das 5.600 imagens de porn no treino, quase todas vêm de
uma única fonte. O modelo aprendeu a noção de pornografia daquele dataset —
material produzido — e erra em conteúdo amador.
Mas detecta "explícito" com confiabilidade
Os porn perdidos vão para sexy, não para neutral. Tratando as duas como
uma classe única:
| detectado como explícito | |
|---|---|
porn real (347) |
91,6% |
sexy real (4.135) |
95,7% |
falso positivo vindo de neutral |
3,4% |
Recomendação para produção: una porn e sexy num único rótulo. Como
detector binário NSFW o modelo é sólido; como classificador de grau, a fronteira
entre os dois não sobrevive à troca de distribuição — e é uma fronteira de
convenção, não de fato.
Outras
anime_drawing↔hentaié a confusão mais frequente nas duas avaliações. Fronteira de grau, na qual anotadores humanos também divergem.- Só imagens. Para vídeo, extraia frames e agregue as previsões.
- Viés de fonte. O treino vem de um dataset marcado como parcialmente sintético; parte do material pode ser gerada por IA.
- Não é um sistema de moderação completo. É um classificador. Decisões automáticas sobre conteúdo de usuários exigem revisão humana e calibração de limiar conforme o custo de cada tipo de erro.
Atribuição
Treinado sobre strangerguardhf/NSFW-MultiDomain-Classification. Verifique a licença do dataset antes de redistribuir este modelo.
- Downloads last month
- 39
Model tree for champao/nsfw-classifier
Base model
timm/resnet34.a1_in1k