はじめに
diffusersを使って画像を生成しようとするとモデルによってはNSFW検出されてしまい黒く塗りつぶされてしまう。
今回はそれの回避方法
探してみると、モジュールのPythonを書き換える方法が見当たるが、pipが使えなくなってしまうので無し。
公式的な方法もなく、いろいろ探していると、まともなやつが出てきたので備忘録
コード
以下のコードでパイプライン生成後にsafety_checker()
を上書きする
pipe = StableDiffusionPipeline.from_pretrained(MODEL_PATH).to("cuda")
if pipe.safety_checker is not None:
pipe.safety_checker = lambda images, **kwargs: (images, False)
そうすることでセーフティチェッカがダミー関数に置き換わって、そのまま出してくれる。
参考