Stable DiffusionのNSFWフィルターを無効化する(2026)
Stable DiffusionのNSFWフィルターは無害な画像を黒塗りにする。なぜ誤検出するのか、スタックごとに無効化する方法、そして法的な境界線は実際どこにあるのか。

TL;DR
- それは何か: NSFW ブロックとは、Stable Diffusion の安全性チェッカーが、出力が露骨だと判断したときに、画像を真っ黒な正方形に差し替えるものです。これは誤検出を量産する仕組みであって、ヌード検出器ではありません。
- すばやい修正(diffusers): パイプラインを
safety_checker=Noneとrequires_safety_checker=Falseで読み込みます。この 1 つの変更で、黒い正方形は出なくなります。 - A1111 / ComfyUI: どちらもデフォルトではそのフィルターを実行しません。それでもそこでブラックアウトが起きる場合は、Colab ノートブックのラッパーか NaN エラーであり、安全性チェッカーではありません。
- NSFW 警告なしの黒い画像? 別のバグです。それは FP16 GPU 上での VAE NaN です。
--no-half-vaeを付けて起動してください。 - 無効化する前に: 重みはローカルで自分が所有しているため、判断はあなた次第です。ただしライセンスは、違法、非同意、CSAM の出力を依然として禁止しています。その一線は変わりません。
無害なプロンプトを入力し、レンダリングを待った結果、黒い正方形が出てきた。Stable Diffusion はあなたの画像を NSFW と判断したのです。なぜそれが起こり続けるのか、自分のマシンでそれをオフにする方法、そして本当の制限がどこに残るのかを説明します。
Stable Diffusion における "NSFW block" とは何ですか?
これは、組み込みの安全性チェッカーが生成画像を露骨なものと判定し、あなたが見る前に黒い画像に置き換えたことを意味します。モデル自体は正常に動作しています。画像は生成されます。その後、別の分類器がピクセルを見て、基準を超えたと判断し、結果を黒く塗りつぶします。通常は "Potential NSFW content was detected in one or more images. A black image will be returned instead." のようなメッセージが表示されます。
重要なのはここです。このチェッカーは生成後に配置されており、モデルに組み込まれているというより後付けされているため、無効化は再学習ではなく設定変更で済みます。また、誤作動も頻繁に起こします。この分類器は、あなたが何を依頼したのかをまったく知りません。出力されたピクセルだけを見ています。
あなたの黒い画像はフィルターによるものか、それとも NaN エラーか?
何かを無効化する前に、実際にどちらの黒い画像なのかを見極めてください。なぜなら、修正方法がまったく異なるからです。多くの人がこれらをしょっちゅう混同し、セーフティチェッカーが原因ではないバグに対して「セーフティチェッカーを無効化」してしまいます。
見分けるための特徴は 2 つあります。
- セーフティチェッカーによるブロック: コンソールまたは UI に NSFW 警告が表示されます。メッセージには、NSFW コンテンツが検出されたと文字どおり書かれています。これはチェッカーをオフにすることで修正します。
- VAE NaN ブロック: NSFW メッセージはまったく表示されず、ときどき
NansException: A tensor with all NaNs was produced in VAEが出ます。これはコンテンツ判断ではなく、数学的な失敗です。一部の GPU は半精度(FP16)で詰まり、数値がオーバーフローして NaN になり、デコード結果が黒くなります。
| 症状 | 本当の原因 | 修正方法 |
|---|---|---|
| 黒い画像 + "NSFW detected" | セーフティチェッカーの誤検出 | チェッカーを無効化する |
| 黒い画像、NSFW メッセージなし | VAE での FP16 NaN | --no-half-vae 付きで起動する |
| 古いカード(16xx)でのみ黒くなる | ネイティブ FP16 サポートがない | --no-half --no-half-vae を追加する |
| SDXL でのみ黒くなる | サンプラー精度 | --upcast-sampling を追加する |

NSFW 警告がありませんか? それなら、フィルター無効化ガイドを読むのはやめましょう。あなたの問題は精度であり、--no-half-vae は VAE NaN ケースの大多数を、速度低下がおよそ 5 から 10 percent 程度で解消します。発動してもいないセーフティチェッカーをオフにしても何も隠せず、午後を無駄にするだけです。
なぜフィルターは無害なプロンプトにフラグを立てるのか?
それはヌードを検出しているわけではないからです。隠された概念との類似度を測定しており、無害な画像でも偶然それらの近くに位置してしまうことが多々あります。内部では、このチェッカーは CLIP です。出力を CLIP の ViT-L/14 画像エンコーダーに通して埋め込みを取得し、その埋め込みを 17 個の固定ベクトルと比較します。それぞれのベクトルは「センシティブな概念」を表しています。そのうちのどれか 1 つとのコサイン類似度がしきい値を超えると、画像は黒塗りにされます。
これら 17 個の概念ベクトルは、誰にもリバースエンジニアリングされないよう意図的に隠されています。その副作用として、自分が何に引っかかっているのかを確認できません。風景、フラクタル、ポートレート、料理の皿など、埋め込みがそれらのベクトルのいずれかに近づいたものは何でもフラグが立てられます。CompVis issue tracker の開発者たちは、プロンプト "star" がブロックされたと報告しました。別の人は "riding horse" でフラグが立てられました。ある人は半分冗談で、「もしかすると自分の PC は職場閲覧注意なのかもしれない」と書いています。
つまり、これは正確な道徳的判断ではありません。固定されたカットオフを使った大ざっぱな距離チェックであり、過剰にブロックするよう調整されています。多くの実務では、誤検出が真の検出を大きく上回ります。
Stable DiffusionでNSFWフィルターを無効にするには?
使用しているスタックのセクションを見つけてください。"Stable Diffusion" は3つか4つのまったく異なるソフトウェアを指し、そのうちデフォルトでこのフィルターを実行するのは1つだけだからです。
Diffusers (Python)
実際にチェッカーが有効な状態で同梱されているのはこれです。パイプラインを読み込むときに safety_checker=None を渡し、後続の警告を抑えるために requires_safety_checker=False を設定します。
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,
)パイプラインが存在した後に pipe.safety_checker = None で切り替えることもできます。フックは維持したまま、ブロックだけは絶対にしたくない場合は? 何もフラグされなかったと報告するパススルーに置き換えます。
pipe.safety_checker = lambda images, **kwargs: (images, [False] * len(images))結果は同じで、ログに警告スパムが繰り返し出ることもありません。実際の safety_checker source は短いので、正確に何をしているか読みたい場合に確認できます。
AUTOMATIC1111 / Forge
朗報です。どちらもデフォルトではdiffusersのsafety checkerを実行しません。A1111またはForgeでNSFWのブラックアウトが発生している場合、よくある原因はフィルターを再度差し込んだColabノートブック、または拡張機能です。ノートブックのセルで safety_checker または check_safety 関数を検索し、コメントアウトしてください。通常のローカルインストールでは無効にするものはありません。そもそも有効になっていないからです。
ComfyUI
同じ話です。デフォルトではsafety filterはありません。標準のComfyUIグラフがコンテンツを理由に画像をブラックアウトすることはありません。もしそうなるなら、カスタムノードが追加しています。そのノードを削除するか、起動に使ったラッパーを確認してください。
Editing model_index.json
コードで何を指定してもチェックポイントがチェッカーを読み込み続ける場合は、その model_index.json を開き、"requires_safety_checker": false を設定して、safety_checker エントリを削除します。これにより、そのモジュールはまったく読み込まれなくなります。独自のフィルター設定を同梱しているダウンロード済みモデルに便利です。
完全に消したくない? 代わりに調整しよう。
チェッカーを丸ごと無効化するのはよくある手です。しかしそれが唯一の方法ではなく、共有環境や公開デプロイでは賢いやり方でもありません。中間的な選択肢は3つあります。
- 検出して処理する。空白にはしない。 パイプラインは、黙って画像を黒塗りする代わりに、画像ごとのNSFWフラグを返せます。そのフラグを保持し、ブロックは外し、フラグ付き画像のルーティングやログ記録は自分で行います。
- Safe Stable Diffusionに差し替える。 黒い四角を返す代わりに、生成を最も近い非露骨な画像へ誘導します。使える出力とガードレールの両方を維持できます。
- 削除せず、しきい値を上げる。 チェッカーを編集できるなら、カットオフを緩めることで、明らかなものは捕捉しつつ誤検出を減らせます。手間は増えますが、全か無かよりも予期せぬ事態ははるかに少なくなります。
自分のGPU上で動かす個人プロジェクトなら、safety_checker=Noneで問題ありません。ユーザーがアクセスできるものなら、ガードレールは残しておきましょう。フィルターのない公開エンドポイントは、後悔することになる負債です。
セーフティチェッカーを無効にすることは、そもそも合法なのか?
オフにすること自体は認められています。本当の制限が存在するのは、オフにした状態で何を生成するかであり、その制限はフィルターを外しても消えません。Stable Diffusion は CreativeML Open RAIL-M license の下で提供されています。このライセンスは広範な権利を付与し、あなたの出力物に対して何も権利を主張せず、責任をあなたに課します。また、実効性のある利用ベースの制限も含まれています。
このライセンスは、違法または有害なコンテンツを生成または共有するためにモデルを使用することを明示的に禁止しています。CSAM は不可。本人の同意のない親密な画像は不可。欺いたり危害を加えたりする目的で作られた実在人物のディープフェイクは不可。これらはフィルター設定の問題ではありません。世界のほとんどの地域で法律の問題であり、「セーフティチェッカーをオフにしていた」はどこでも抗弁にはなりません。
つまり、率直に言えばこうです。自分が所有するハードウェア上で、ダウンロードした重みを実行する場合、自分のツールを設定する自由はありますし、実務上の作業のために過敏で誤検知の多いフィルターをオフにすることは合理的です。違法コンテンツを生成することは、フィルターの有無にかかわらず合理的ではありません。この2つの考えを切り分けておけば、確かな立場に立てます。
ローカルではなく hosted API を使っている場合は?
その場合、フィルターはあなたが無効化できるものではなく、そこが決定的な違いです。hosted image endpoint を呼び出すと、プロバイダーがモデルを実行し、サーバー側で独自のコンテンツポリシーを適用します。渡せる safety_checker=None はありません。相手のルールを受け入れるか、ローカルで実行するかです。
このトレードオフは、はっきり言語化する価値があります。ローカルの Stable Diffusion は、セーフティチェッカーを含めて完全な制御を得られる一方で、GPU、ドライバー設定、そして自前のモデレーションが必要になります。Velokey の image endpoints のような hosted API は、セットアップを省き、複数モデルにまたがって 1 つのキーを提供しますが、あなたはプロバイダーのコンテンツポリシーの内側にいるのであって、外側にいるわけではありません。ゲートウェイならコンテンツルールを回避できるかも、と期待していますか? それはできませんし、できると主張するものは、いずれコンプライアンス上の問題になります。利便性とスケールを取るなら hosted、制御を取るならローカルを選びましょう。画像 API 全般を比較検討しているなら、私たちの ChatGPT image limits breakdown と Qwen-Image 2.0 notes が hosted 生成の実際のコストと上限を扱っており、Seedream 5.0 Pro はより上位の選択肢を扱っています。まったく別の AI エラーに遭遇していますか? 私たちの ChatGPT error in message stream fix は、このガイドの姉妹記事です。
よくある質問
Stable Diffusion の NSFW フィルターを削除するにはどうすればよいですか?
使用しているスタックによります。diffusers ライブラリでは、safety_checker=None と requires_safety_checker=False を指定してパイプラインを読み込みます。AUTOMATIC1111、Forge、ComfyUI では、通常は削除するものはありません。デフォルトではそのチェッカーを実行しないためです。それでもブラックアウトが発生する場合は、notebook のラッパーやカスタムノードがフィルターを再追加しています。
Stable Diffusion が通常のプロンプトに対して黒い画像を返すのはなぜですか?
考えられる理由は 2 つあります。安全性チェッカーが画像を NSFW と誤検知した場合で、その場合は NSFW 警告が表示されます。もう 1 つは、半精度 GPU 上で VAE が NaN を生成した場合で、警告はなく、ときどき NansException が出ます。前者はチェッカーを無効化することで修正でき、後者は --no-half-vae を付けて起動することで修正できます。
ComfyUI には NSFW フィルターがありますか?
いいえ、デフォルトではありません。標準の ComfyUI インストールでは、コンテンツを理由に画像をブロックすることはありません。NSFW メッセージ付きの黒い四角が生成される場合は、実行しているカスタムノードまたは外部ラッパーが安全性チェッカーを追加しています。そのノードを削除すれば、ブロックは止まります。
無害なプロンプトが NSFW としてフラグ付けされたのはなぜですか?
チェッカーは実際のヌードではなく、隠れた概念ベクトルとの視覚的類似度を測定するためです。無害な画像が偶然それらのベクトルに近くなることがあります。報告されている誤検知には、"star" や "riding horse." のような穏当なプロンプトも含まれています。このフィルターは設計上、過剰にブロックするため、無害なフラグ付けはよくあります。
安全性チェッカーを無効化することはライセンス違反ですか?
いいえ。CreativeML Open RAIL-M ライセンスでは、チェッカーをオフにすることを含め、ローカルのツール構成を設定できます。禁止されているのは出力です。フィルターがオンかオフかにかかわらず、違法、非同意、または有害なコンテンツは禁止されたままです。責任を負うのは、生成したものに対してであり、チェッカーの状態に対してではありません。
ログ内の safety_checker 警告を止めるにはどうすればよいですか?
パイプラインを読み込むときに、safety_checker=None と併せて requires_safety_checker=False を設定します。属性を設定したままにしたい場合は、画像とすべて False のフラグリストを返すダミーに置き換えます。どちらも、diffusers が呼び出しごとに出力する繰り返し警告を抑制します。


