Désactiver le filtre NSFW de Stable Diffusion (2026)
Le filtre NSFW de Stable Diffusion noircit des images innocentes. Pourquoi il produit des faux positifs, comment le désactiver selon la stack, et où se situe réellement la limite légale.

TL;DR
- Ce que c’est : le blocage NSFW est le safety checker de Stable Diffusion qui remplace votre image par un carré noir uni lorsqu’il estime que la sortie est explicite. C’est une machine à faux positifs, pas un détecteur de nudité.
- Correction rapide (diffusers) : chargez le pipeline avec
safety_checker=Noneetrequires_safety_checker=False. Une seule modification, et les carrés noirs disparaissent. - A1111 / ComfyUI : aucun des deux n’exécute ce filtre par défaut. Vous obtenez quand même des écrans noirs là-dedans ? C’est un wrapper de notebook Colab ou une erreur NaN, pas le safety checker.
- Image noire sans avertissement NSFW ? Bug différent. C’est un NaN VAE sur les GPU FP16. Lancez avec
--no-half-vae. - Avant de le désactiver : vous possédez les weights localement, donc c’est à vous de décider. La licence interdit toujours les sorties illégales, non consensuelles et CSAM. Cette limite ne bouge pas.
Vous avez saisi un prompt inoffensif, attendu le rendu, et obtenu un carré noir. Stable Diffusion a décidé que votre image était NSFW. Voici pourquoi cela arrive si souvent, comment le désactiver sur votre propre machine, et où les vraies limites restent en place.
Que signifie « NSFW block » dans Stable Diffusion ?
Cela signifie que le vérificateur de sécurité intégré a évalué votre image générée comme explicite et l’a remplacée par une image noire avant même que vous ne la voyiez. Le modèle fonctionne correctement. L’image est bien créée. Ensuite, un classificateur distinct examine les pixels, décide qu’ils ont franchi une limite, et masque le résultat. Vous recevez généralement un message comme « Potential NSFW content was detected in one or more images. A black image will be returned instead. »
Voici la partie importante. Le vérificateur intervient après la génération, ajouté par-dessus plutôt qu’intégrée au modèle, ce qui explique pourquoi le désactiver relève d’un changement de configuration et non d’un réentraînement. Il se déclenche aussi constamment par erreur. Le classificateur n’a aucune idée de ce que vous avez demandé. Il ne voit que les pixels qui sont sortis.
Votre image noire vient-elle du filtre, ou d’une erreur NaN ?
Avant de désactiver quoi que ce soit, déterminez quelle image noire vous avez réellement, car elles ont deux correctifs complètement différents. Les gens les confondent constamment, puis « désactivent le vérificateur de sécurité » pour un bug que le vérificateur de sécurité n’a jamais causé.
Deux signatures permettent de les distinguer :
- Blocage par le vérificateur de sécurité : vous obtenez un avertissement NSFW dans la console ou l’interface utilisateur. Le message dit littéralement que du contenu NSFW a été détecté. Celui-ci se corrige en désactivant le vérificateur.
- Blocage NaN du VAE : aucun message NSFW, parfois un
NansException: A tensor with all NaNs was produced in VAE. C’est une défaillance mathématique, pas une décision liée au contenu. Certains GPU ont du mal avec la demi-précision (FP16), les nombres débordent en NaN, et le décodage sort noir.
| Symptôme | Cause réelle | Correctif |
|---|---|---|
| Image noire + "NSFW detected" | Faux positif du vérificateur de sécurité | Désactiver le vérificateur |
| Image noire, aucun message NSFW | NaN FP16 dans le VAE | Lancer avec --no-half-vae |
| Noir uniquement sur les anciennes cartes (16xx) | Pas de prise en charge native de FP16 | Ajouter --no-half --no-half-vae |
| Noir uniquement sur SDXL | Précision de l’échantillonneur | Ajouter --upcast-sampling |

Aucun avertissement NSFW ? Alors arrêtez de lire les guides pour désactiver le filtre. Votre problème est la précision, et --no-half-vae règle la grande majorité des cas de NaN du VAE avec un coût d’environ 5 à 10 pour cent en vitesse. Désactiver un vérificateur de sécurité qui ne s’est jamais déclenché ne cache rien et vous fait perdre un après-midi.
Pourquoi le filtre signale-t-il des prompts innocents ?
Parce qu’il ne détecte pas la nudité. Il mesure la similarité avec des concepts cachés, et beaucoup d’images inoffensives se retrouvent près d’eux par accident. Sous le capot, le vérificateur est CLIP. Il fait passer votre sortie dans l’encodeur d’images ViT-L/14 de CLIP pour obtenir un embedding, puis compare cet embedding à 17 vecteurs fixes, chacun représentant un « concept sensible ». Si la similarité cosinus avec l’un d’eux dépasse un seuil, l’image est masquée en noir.
Ces 17 vecteurs de concepts sont volontairement cachés, afin que personne ne puisse les rétroconcevoir. L’effet secondaire est que vous ne pouvez pas voir ce que vous déclenchez. Un paysage, une fractale, un portrait, une assiette de nourriture, tout ce dont l’embedding dérive près de l’un de ces vecteurs est signalé. Des développeurs sur le suivi des issues de CompVis ont rapporté que le prompt "star" était bloqué. Un autre a été signalé pour "riding horse." L’un d’eux a écrit, à moitié en plaisantant, « peut-être que mon PC n’est pas safe for work ».
Ce n’est donc pas un jugement moral précis. C’est une vérification grossière de distance avec un seuil fixe, réglée pour surbloquer. Pour beaucoup de travaux réels, les faux positifs dépassent largement les vrais.
Comment désactiver le filtre NSFW dans Stable Diffusion ?
Trouvez la section correspondant à votre pile, car « Stable Diffusion » désigne trois ou quatre logiciels très différents, et un seul exécute ce filtre par défaut.
Diffusers (Python)
C’est celui qui est effectivement fourni avec le vérificateur activé. Passez safety_checker=None lorsque vous chargez le pipeline, et définissez requires_safety_checker=False pour faire taire l’avertissement qui suit :
from diffusers import StableDiffusionPipeline
import torch
pipe = StableDiffusionPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
safety_checker=None,
requires_safety_checker=False,
torch_dtype=torch.float16,
)Vous pouvez aussi le désactiver après la création du pipeline avec pipe.safety_checker = None. Vous préférez conserver le hook sans jamais bloquer ? Remplacez-le par un passe-plat qui indique que rien n’a été signalé :
pipe.safety_checker = lambda images, **kwargs: (images, [False] * len(images))Même résultat, sans spam d’avertissements répétés dans vos logs. Le safety_checker source réel est court si vous voulez lire exactement ce qu’il fait.
AUTOMATIC1111 / Forge
Bonne nouvelle : aucun des deux n’exécute le vérificateur de sécurité diffusers par défaut. Si vous obtenez des images noircies pour NSFW dans A1111 ou Forge spécifiquement, le coupable habituel est un notebook Colab qui a réintégré un filtre, ou une extension. Recherchez dans la cellule de votre notebook safety_checker ou une fonction check_safety et mettez-la en commentaire. Sur une installation locale normale, il n’y a rien à désactiver, car ce n’était jamais activé.
ComfyUI
Même chose : aucun filtre de sécurité par défaut. Un graphe ComfyUI standard ne noircira pas vos images en fonction du contenu. Si le vôtre le fait, un nœud personnalisé l’a ajouté. Supprimez ce nœud, ou vérifiez le wrapper avec lequel vous l’avez lancé.
Modification de model_index.json
Si un checkpoint continue de charger un vérificateur quoi que dise votre code, ouvrez son model_index.json, définissez "requires_safety_checker": false, et supprimez l’entrée safety_checker. Cela empêche complètement le module de se charger. Utile pour un modèle téléchargé qui embarque sa propre configuration de filtre.
Vous ne voulez pas le neutraliser complètement ? Ajustez-le plutôt.
Désactiver purement et simplement le vérificateur est la réaction la plus courante. Ce n’est pas la seule option, et sur un déploiement partagé ou public, ce n’est pas la plus judicieuse. Trois options intermédiaires :
- Détecter et gérer, pas masquer. Le pipeline peut renvoyer un indicateur NSFW par image au lieu de noircir silencieusement les éléments. Conservez l’indicateur, supprimez le blocage, puis routez ou journalisez vous-même les images signalées.
- Remplacer par Safe Stable Diffusion. Au lieu d’un carré noir, il oriente la génération vers l’image non explicite la plus proche. Vous gardez une sortie utilisable et un garde-fou.
- Relever le seuil, pas le supprimer. Si vous pouvez modifier le vérificateur, assouplir le seuil réduit les faux positifs tout en continuant à détecter les cas évidents. Plus de travail, beaucoup moins de surprises qu’une approche tout ou rien.
Pour un projet solo sur votre propre GPU, safety_checker=None convient. Pour tout ce qui est accessible aux utilisateurs, conservez un garde-fou. Un endpoint public sans filtre est une responsabilité que vous regretterez.
Désactiver le vérificateur de sécurité est-il même légal ?
Le désactiver est autorisé. Ce que vous générez une fois qu’il est désactivé, c’est là que se situent les vraies limites, et celles-ci ne disparaissent pas avec le filtre. Stable Diffusion est distribué sous la licence CreativeML Open RAIL-M. Elle accorde des droits étendus, ne revendique rien sur vos sorties, et place la responsabilité sur vous. Elle comporte aussi des restrictions fondées sur l’usage, avec de réelles conséquences.
La licence interdit explicitement d’utiliser le modèle pour produire ou partager du contenu illégal ou nuisible. Pas de CSAM. Pas d’images intimes non consensuelles. Pas de deepfakes de personnes réelles conçus pour tromper ou nuire. Ce ne sont pas des paramètres de filtre. Ce sont des lois dans la majeure partie du monde, et « le vérificateur de sécurité était désactivé » n’est une défense nulle part.
Voici donc la formulation honnête. Sur du matériel qui vous appartient, en exécutant des poids que vous avez téléchargés, vous pouvez configurer vos propres outils, et désactiver un filtre trop zélé produisant des faux positifs pour un travail réel est raisonnable. Générer du contenu illégal ne l’est pas, avec ou sans filtre. Gardez ces deux idées séparées et vous serez sur des bases solides.
Et si vous utilisez une API hébergée plutôt qu’en local ?
Dans ce cas, le filtre ne vous appartient pas, et c’est toute la différence. Lorsque vous appelez un endpoint d’image hébergé, le fournisseur exécute le modèle et applique sa propre politique de contenu côté serveur. Il n’y a pas de safety_checker=None que vous pouvez passer. Vous acceptez leurs règles, ou vous exécutez en local.
Ce compromis mérite d’être nommé clairement. Local Stable Diffusion vous donne un contrôle total, vérificateur de sécurité inclus, au prix d’un GPU, de la configuration des pilotes et de votre propre modération. Une API hébergée comme les endpoints d’image de Velokey évite la configuration et vous donne une seule clé pour plusieurs modèles, mais vous êtes à l’intérieur de la politique de contenu du fournisseur, pas en dehors. Vous espérez qu’une passerelle vous permette de contourner les règles de contenu ? Ce ne sera pas le cas, et celles qui prétendent le faire sont un problème de conformité en attente de se produire. Choisissez l’hébergé pour la commodité et le passage à l’échelle, le local pour le contrôle. Si vous comparez les API d’image en général, notre analyse des limites d’images de ChatGPT et les notes sur Qwen-Image 2.0 couvrent les coûts et plafonds réels de la génération hébergée, et Seedream 5.0 Pro couvre une option plus haut de gamme. Vous rencontrez plutôt une erreur d’IA totalement différente ? Notre correctif de l’erreur ChatGPT dans le flux de messages est le guide compagnon de celui-ci.
Questions fréquentes
Comment supprimer le filtre NSFW dans Stable Diffusion ?
Cela dépend de votre stack. Dans la bibliothèque diffusers, chargez le pipeline avec safety_checker=None et requires_safety_checker=False. Dans AUTOMATIC1111, Forge et ComfyUI, il n’y a généralement rien à supprimer, puisqu’ils n’exécutent pas ce vérificateur par défaut. Si vous obtenez encore des écrans noirs, c’est qu’un wrapper de notebook ou un nœud personnalisé a rajouté le filtre.
Pourquoi Stable Diffusion renvoie-t-il une image noire pour un prompt normal ?
Deux raisons possibles. Soit le vérificateur de sécurité a signalé à tort votre image comme NSFW, et vous verrez un avertissement NSFW, soit le VAE a produit un NaN sur un GPU en demi-précision, sans avertissement et parfois avec une NansException. Le premier problème se corrige en désactivant le vérificateur, le second en lançant avec --no-half-vae.
ComfyUI a-t-il un filtre NSFW ?
Non, pas par défaut. Une installation ComfyUI standard ne bloque pas les images en fonction du contenu. Si la vôtre produit des carrés noirs avec un message NSFW, c’est qu’un nœud personnalisé ou un wrapper externe que vous exécutez a ajouté un vérificateur de sécurité. Supprimez ce nœud et le blocage cesse.
Pourquoi mon prompt innocent a-t-il été signalé comme NSFW ?
Parce que le vérificateur mesure la similarité visuelle avec des vecteurs de concepts cachés, pas la nudité réelle. Des images inoffensives se retrouvent parfois proches de ces vecteurs par hasard. Les faux positifs signalés incluent des prompts aussi anodins que "star" et "riding horse." Le filtre surbloque par conception, donc les signalements bénins sont courants.
Est-il contraire à la licence de désactiver le vérificateur de sécurité ?
Non. La licence CreativeML Open RAIL-M vous permet de configurer vos outils locaux, y compris de désactiver le vérificateur. Ce qu’elle interdit, c’est la sortie : les contenus illégaux, non consensuels ou préjudiciables restent interdits, que le filtre soit activé ou non. Vous êtes responsable de ce que vous générez, pas de l’état du vérificateur.
Comment arrêter les avertissements safety_checker dans mes logs ?
Définissez requires_safety_checker=False lorsque vous chargez le pipeline, en plus de safety_checker=None. Vous préférez conserver l’attribut défini ? Remplacez-le par un dummy qui renvoie les images et une liste de flags tous à False. Les deux solutions suppriment l’avertissement répété que diffusers affiche à chaque appel.


