1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NSFW画像を処理するComfyUIカスタムノード「nsfw-shorier_comfyui」を自作して公開しました

Last updated at Posted at 2025-09-16

この記事では自分の作って配布したnsfw-shorier_comfyuiというComfyUIのカスタムノードを紹介します。内容は主にこれを作ったきっかけと重要性と使い方の説明です。

ComfyUIの使い方や、ComfyUIのカスタムノードは何なのか、どうやって作るかについてはここに説明しませんが、参考リンクはこの記事の最後に貼ってあります。

はじめに

私はComfyUIを使い始めてからもう既に1年経ちました。ComfyUIを使う時に普段色んな便利なカスタムノードをインストールする必要がありますね。そしてそのカスタムノードは誰でも簡単に作れると知ったら、自分でも作ってみたいと思うようになってきました。

去年も実は一度カスタムノードを作りました。このノードも興味があれば使っていただけたら嬉しいです。

ただしpaint by exampleは既に古い技術とも言えます。私も実は今全く使っていません。FLUX.1Qwen-Imageに嵌ってからStable Diffusionすら使わなくなりました。

しかし今回作ったNSFWを処理するカスタムノードは、たとえStable DiffusionでもFLUX.1を使う時でも役に立ちます。

画像生成AIを使ったことある人なら知っていると思いますが、NSFWというのはNot Safe for Work (職場では安全ではない) という意味です。

モデルにもよりますが、生成された画像は18禁など不適切なものも含まれる可能性があります。これを適切に処理するのは大事です。

私も今回NSFW対策が必要なので、自分で作るきっかけになりました。

今までの他のNSFW関連のカスタムノード

実はNSFW関連のComfyUIカスタムノードは今までたくさんあります。私も去年の記事で一部紹介して、自分も使っていました。

しかし実はあの時紹介したカスタムノードの他にもまだもっとたくさんあります。ここではとりあえずまとめておきます。

パッケージ名 ノード名 NSFWモデル 機能 公開日
trumanwong /
ComfyUI-NSFW-Detection
NSFWDetection Falconsai ・置き換え 2024-02-02
katalist-ai /
comfyUI-nsfw-detection
NudenetDetector NudeNet ・モザイク 2024-04-24
BetaDoggo /
ComfyUI YetAnotherSafetyChecker
YetAnotherSafetyChecker AdamCodd ・真っ黒
・スコア
2024-07-19
iamandeepsandhu /
ComfyUI-NSFW-Check
NSFWScore Falconsai
・スコア 2024-11-22
phuvinh010701 /
ComfyUI-Nudenet
ApplyNudenet NudeNet ・局部モザイク
・局部ぼかし
・置き換え
2025-01-03
shabri-arrahim (nino) /
ComfyUI-Safety-Checker
・FalconsAISafetyChecker
・CompVisSafetyChecker
Falconsai
CompVis
・真っ黒
・判定
2025-01-17
tighug /
comfyui-rating-checker
・RatingCheckerNudeNet
・RatingCheckerGantMan
・RatingCheckerMarqo
NudeNet
GantMan
Marqo
・スコア
・部分特定
2025-04-26
chaorenai (xiaodu) /
nsfw_No
nsfw_no Falconsai
・入れ替え 2025-05-07
42lux /
ComfyUI-safety-checker
Safety_Checker CompVis ・真っ黒
・判定
現在
非公開
ຫ = 以下はNSFW処理も含まれた多目的パッケージ = ຫ
SOELexicon /
ComfyUI-LexTools
NSFWClassifierNode umairrkhn
・スコア
・判定
2023-08-05
Acly /
ComfyUI Nodes for External Tooling
ETN_NSFWFilter CompVis ・ぼかし 2023-08-28
zhangp365 /
ComfyUI-utils-nodes
DetectorForNSFW NudeNet ・局部真っ黒
・判定
2024-03-20

機能項目の補足。

  • スコア :NSFWらしさを意味する0~1の数字を返す
  • 判定  :指定の閾値でNSFWかどうかのTrue/False値を返す
  • 真っ黒 :NSFWだったら真っ黒画像にする
  • ぼかし :NSFWだったらぼかす
  • モザイク:NSFWだったらモザイク化する
  • 置き換え:NSFWだったら準備しておいた画像で置き換える
  • 局部・・:画像の中のNSFWの部分だけ処理する(NudeNetモデルのみ)

実際にどのモデルも最初はスコアをくれるが、閾値を設定してこれを基準としてNSFWかどうかを判定できます。

そしてNSFWだと判定された画像をどう処理するかも次の話。単に真っ暗にすることもあれば、ぼかしやモザイク処理もあります。更に個別で準備した画像に置き換える処理もあります。

又この中でNudeNetというモデルだけはNSFWが置かれた位置情報もくれるので、このモデルを使って特定の部分だけ処理するという処理もあります。

このようにNSFW対策のためのカスタムノードはいっぱいありますが、どれもある特定のモデルや機能しか持っていません。

だったらもし私は全部のモデルを使って全部の機能が使用可能な総合カスタムノードパッケージを作ってみたらどうかな?……と考えるようになりました。

そうしたらこのパッケージをインストールするだけで全部のNSFW関連の処理ができて便利なはずです。そう考えて実行に移しました。

又上述のパッケージ名はどれも似ていてどっちなのか覚えにくくて紛らわしいので、今回私は独特の名前を考えることにしました。

とはいえ、複雑に考えたわけではありません。「shorier」というのはただ日本語の「処理」に「er」を付けただけです。単純ですが、重複することはないでしょう。

モデル纏め

以上紹介したカスタムノードで使われているモデルをここに纏めておきます。

モデル 機能 これを採用したノード制作者
CompVis 色んなNSFW要素のスコア shabri-arrahim、42lux、Acly
Falconsai NSFW/SFW分類 trumanwong、iamandeepsandhu、shabri-arrahim、chaorenai
AdamCodd NSFW/SFW分類 BetaDoggo
umairrkhn NSFW/SFW分類 SOELexicon
Marqo NSFW/SFW分類 tighug
GantMan 5クラス分類 tighug
NudeNet NSFW関連要素のある部分を検出 katalist-ai、phuvinh010701、tighug、zhangp365

Falconsai、AdamCodd、umairrkhn、umairrkhnはどっちも単にNSFWかSFWかを判定するもので基本的に同じです。ただニューラルネットワーク構造や訓練データの違いによって結果が違います。

その中でFalconsaiは一番よく使われているものですが、他のモデルと比べてあまり正確ではないという不評もあります。

GantManモデルはdrawings、hentai、neutral、porn、sexyの5クラス分類ですが、その中でhentai、porn、sexyはNSFWで、drawings、neutralはSFWとなります。

CompVisはStable Diffusion公式で使われているモデルなので、一番信用できるモデルと考えられます。実際に私が試して比較してみた結果これは本当に一番正確だと感じました。だから今回私が作ったカスタムノードではこのモデルを既定のモデルにしました。

NudeNetは他のモデルと違ってNSFW部分の位置情報までわかるので便利です。ただし精度はあまり良くなくて、見逃しや誤認識も多いという印象です。

NudeNetには320pxと640pxの2種類があって、640px版は細かいところまで検索できて、320pxよりもいい結果できますが、モデルファイルのサイズが大きくて、計算時間が長くなります。

以上7種類のモデルは全部私のカスタムノードで使用できるようにしています。ただしNudeNetは320pxと640pxがあるので、全部8種類選択できます。

インストール

GitHubのリポジトリはここにあるので、cloneしてComfyUI/custom_nodes/フォルダに配置したら使えます。

又comfy.orgにも登録されているので、ここのからもダウンロードできます。

とはいえ、今殆どの人はComfyUI Managerを使っていると思います。shoriとか検索したらすぐ見つかるはずです。ここから簡単にインストールできます。

截屏2025-09-16-21.53.04.jpg

ノード一覧

使う目的によって使い分けできるように色んなノードを作りました。全部9つあります。

ノード 機能 出力 使うモデル
GetNsfwScore NSFWらしいスコア ・0.0 ~ 1.0 ・CompVis
・Falconsai
・AdamCodd
・umairrkhn
・Marqo
・GantMan
・NudeNet
IsNsfw NSFW判定 ・True/False
・0.0 ~ 1.0
ReplaceIfNsfw NSFWなら置き換え ・画像
・True/False
・0.0 ~ 1.0
FilterNsfw NSFWなら処理する ・画像
・True/False
・0.0 ~ 1.0
FilterNsfwWithText NSFWなら処理して文字を入れる ・画像
・True/False
・0.0 ~ 1.0
SaveImageSfw NSFWを処理してから画像を保存する 無し
FindNudenetPart 全部のNudenetの検出結果 ・json NudeNetのみ
FindNsfwPart NSFWらしいNudenetの検出結果 ・json
CensorNsfwPart Nudenetの検出結果を基にNSFW部分だけ処理する ・画像
・json

基本的にどのノードも同じようにモデル選択できます。ただし最後の3つのノードはNudeNetのみです。NudeNetは内容の位置情報も返すから、特別に位置情報を使う処理ノードも作ることにしました。

各ノードの解説

- GetNsfwScore

一番基本のノードで、NSFWコンテンツの可能性を示す0~1のスコアを出力します。

モデルによって判定基準が異なり、出力されるスコアも大きく異なる場合があります。
GetNsfwScore.jpg

- IsNsfw

GetNsfwScoreの機能に加え、スコアからthreshold(閾値)を設定して画像がNSFWかどうかを判定します。閾値が低いほどNSFWと判定されやすくなります。

IsNsfw.jpg

- ReplaceIfNsfw

NSFWと判定された部分をカスタム画像で置き換えます。resizetrueに設定すると、置換画像のサイズが元画像に合わせて調整されます。

ReplaceIfNsfw.jpg

- FilterNsfw

NSFW画像に対して処理を行います。ぼかし、モザイク処理、全面黒・白への置き換えなど、処理モードを選択できます。

FilterNsfw.jpg

- FilterNsfwWithText

FilterNsfwと同じ機能に加え、テキストの追加をサポートします。この方法はComfyUI-TextOverlayパッケージに基づいています。PC内のフォントやカスタムフォントファイル(例:字魂手刻宋.ttfmeiryoub.ttc)を使用できます。フォントファイルは本リポジトリのfontフォルダに配置してください。ComfyUI-TextOverlayパッケージを既にインストールしている場合は、そのfontsフォルダ内のフォントファイルも使用できます。

FilterNsfwWithText.jpg

- SaveImageSfw

元のSaveImageノードと同様に画像を保存しますが、NSFWと判定された場合は黒く変換されます。さらに、画像をjpgまたはwebp形式で保存するかを選択できます。このノードはcomfyui-saveimage-plusを基に編集されています。

SaveImageSfw.jpg

- FindNudenetPart及びFindNsfwPart

nudenetモデルを使用して画像内の特定要素を識別します。FindNudenetPartはすべての要素を検出し、FindNsfwPartは通常NSFWと見なされるコンテンツのみ識別します。閾値設定もできます。

このノードはComfyUI-utils-nodesを基に編集されています。

model_resulutionは各バージョンのNudeNetモデルを示します。320と640を選択できます。

nudenetモデルはGetNsfwScoreや他のノードでも使用できますが、その場合出力されるスコアは検出された最高スコアの要素のみを表し、要素の位置情報は提供しません。

FindNsfwPart.jpg

- CensorNsfwPart

FindNsfwPartと同様にNSFW部分を識別し、これらの領域に対して特定の処理を行います。使用できる処理方法はFilterNsfwと同じですが、識別された特定領域にのみ適用されます。

CensorNsfwPart.jpg

NSFWちゃん

因みに上の例の処理モード「NSFW-chan」は、今回カスタムノード作成をきっかけに作ったキャラクターです。このカスタムノードのロゴとしても使っています。この画像はこの前の記事で紹介したFLUX.1 depth devを使って生成されたものです。

nsfw-chan.jpg

FilterNsfwCensorNsfwPartの処理モードの一つとして選択できます。

終わりに

今回は色んな使い方ができる多機能のカスタムノードを作ったつもりです。よろしければ沢山の人に使っていただければ嬉しいです。もし気に入ってGitHubで☆をいただけたら更に開発し続けるための励みになります。

参考

カスタムノードの作り方

NudeNet

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?