ComfyUI Extension: comfyui-auto-mosaic

Authored by sugarkwork

Created

Updated

4 stars

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Auto detect and process sensitive areas using YOLO with mosaic, blur, white out, and PSD export.

Looking for a different extension?

Custom Nodes (0)

    README

    ComfyUI AutoMosaic

    ComfyUI AutoMosaic は、YOLOセグメンテーションモデルを使用して画像内の特定の領域(例:局部の露出など)を自動で検出し、モザイク処理やぼかし、白塗りなどの処理を行う ComfyUI 用のカスタムノードです。PSDファイルとして各レイヤーを分けて保存する機能も備えています。

    機能

    • 特定領域の自動検出: Ultralytics YOLO セグメンテーションモデルを利用し、指定したクラス名に該当する領域のマスクを検出します。(デフォルトでは sensitive_detect_v07.pt を使用)
    • 2モデル同時推論: 2つ目のYOLOモデルを任意で指定できます。指定した場合は2つのモデルを個別にロードして保持し、推論時に同時実行した結果を合算してから画像処理します。
    • 画像処理モード: 検出された領域に対して以下の処理を選択可能です。
      • mosaic (モザイク処理)
      • blur (ぼかし処理)
      • white (白塗り処理)
      • raw (処理なし、そのままのマスク領域)
    • PSD保存機能: 処理されたレイヤーと元の背景画像を分けて、1つのPSDファイルとして保存することが可能です。(処理の微調整に便利です)
    • モデルの自動ダウンロード機能: デフォルトの指定モデル (sensitive_detect_v07.pt) が見つからない場合は、自動的に HuggingFace からダウンロードするため、手動でモデルを配置する手間が省けます。

    インストール

    1. リポジトリのクローン ComfyUIの custom_nodes ディレクトリで以下のコマンドを実行します。

      cd ComfyUI/custom_nodes
      git clone <このリポジトリのURL> comfyui-auto-mosaic
      
    2. 依存関係のインストール 仮想環境またはComfyUIの環境内で以下のライブラリをインストールします。

      pip install -r comfyui-auto-mosaic/requirements.txt
      

      依存パッケージ:

      • ultralytics (YOLO用)
      • psd-tools (PSD保存用)
      • opencv-python-headless (画像処理用)

    ノードのパラメータ (Inputs)

    AutoMosaic ノードの設定項目は以下の通りです。

    | パラメータ名 | タイプ | デフォルト | 説明 | | :--- | :---: | :--- | :--- | | image | IMAGE | (必須) | 入力画像。 | | save_psd | BOOLEAN | False | True にすると、出力フォルダに結果をPSDファイルとして保存します(レイヤー分けあり)。 | | filename_prefix | STRING | "AutoMosaic" | 保存される画像のファイル名のプレフィックス。 | | confidence | FLOAT | 0.25 | YOLOの検出の信頼度(Confidence)の閾値。最小0.01、最大1.0。値を低くするとより多くの領域を検出しますが、誤検知が増える可能性があります。 | | process_method | COMBO | "mosaic" | 適用するエフェクト。["raw", "mosaic", "white", "blur"] から選択します。 | | factor | INT | 100 | モザイクやぼかしのブロックサイズ・強度を決定する係数。値が小さいほどブロックサイズ(モザイク1マスのサイズ)が大きくなります。 | | target_class | STRING | "pussy,penis" | モデルが検出する対象クラスの名前。複数ある場合はカンマ , 区切りで指定します。 | | model_name | COMBO | sensitive_detect_v07.pt | 1つ目のYOLOセグメンテーションモデル。 | | mask_expand | FLOAT | 0.0 | モザイク領域の追加膨張量。画像の長辺に対する%指定(0.1 刻み、最大 20.0%)。factor 由来の自動膨張に上乗せされ、検出マスクをさらに外側へ広げます。 | | video_mode | BOOLEAN | False | 複数フレーム(バッチ画像)を動画として扱い、検出漏れフレームを前後フレームのマスクから補完します。1 フレームのみの場合は通常モードと同じ挙動になります。 | | buffer_frames | INT | 10 | 動画モード時、検出漏れを補完できる最大連続フレーム数。検出フレーム間のギャップが buffer_frames 以下なら morph_method で補完。それより長いギャップでも、最後の検出フレームから buffer_frames 分はオプティカルフローで前方追跡、次の検出フレームの直前 buffer_frames 分は後方追跡で補完します。 | | morph_method | COMBO | "simple" | 動画モード時、検出フレーム間の補完方法。simple は前後マスクの線形補間、optical_flow はマスク輪郭ポリゴンを LK オプティカルフローで動画に追従させながら前後ブレンドします。| | model_name_2 | COMBO | None | 2つ目のYOLOセグメンテーションモデル。None の場合は1つ目のモデルのみで処理します。 |

    動画モード (Video Mode)

    動画モードを有効にすると、ComfyUI のバッチ画像入力(フレーム列)を一括で検出し、検出漏れフレームを補完してから出力します。挙動のサマリ:

    1. 全フレームに対して YOLO で検出を実行
    2. 検出フレーム間のギャップが buffer_frames 以下 → 選択したモーフィング方式 (simple または optical_flow) でフレーム間のマスクを補完
    3. ギャップが buffer_frames を超える長い未検出区間 → 直前の検出フレームから buffer_frames 分だけオプティカルフローで前方追跡し、次の検出フレーム前 buffer_frames 分は後方追跡(連続未検出が長すぎる中央部分は補完なし)
    4. 先頭・末尾の未検出フレームも、buffer_frames の範囲内であればオプティカルフロー追跡で補完

    simple は計算が高速で対象がほぼ静止している場合に向き、optical_flow は対象が動いていてフレーム間で位置がずれる場合に追従精度が出やすくなります。

    出力 (Outputs)

    • IMAGE: 処理後の合成画像。ComfyUIの他のノード(Save ImageノードやPreview Imageノードなど)へ接続して使用します。

    スタンドアローン WebUI (ComfyUI不要)

    ComfyUI本体を起動しなくても、本ノードの機能をブラウザから直接試せるスタンドアローンのGradioベースWebUIを同梱しています。 **Single Image(単一画像処理)と、フォルダ内の画像(サブフォルダ含む)を一括で処理するBatch Process(バッチ処理)**の2つのモードに対応しています。

    1. WebUIの起動 付属のバッチファイルを実行するだけで、必要な環境(Python仮想環境の作成、ライブラリのインストール)が自動でセットアップされ、WebUIが起動します。

      # Windowsの場合
      start_standalone.bat
      

      ※ 初回起動時に config.txt ファイルがない場合は自動生成され、メモ帳が開きます。必要なPythonとCUDAのバージョンを指定して保存してください。

    2. ブラウザでアクセス コンソールに表示されるURL(例: http://127.0.0.1:7860)にブラウザでアクセスして操作します。

    処理の仕組み

    1. モデルのロード: もし sensitive_detect_v07.ptmodels/ultralytics または models/yolo にない場合は、HuggingFaceから自動でダウンロードされます。model_name_2 が指定されている場合は、2つ目のモデルも別インスタンスとしてロードして再利用します。
    2. セグメンテーションの実行: 各画像に対し YOLO モデルがマスクとバウンディングボックスを予測します。2モデル指定時は同時に推論し、検出マスクを合算します。
    3. 設定された処理の適用: 合算後の検出結果のうち、クラス名が target_class に含まれている領域を切り抜いて process_methodfactor に基づく画像処理を加えます。
    4. 合成: 背景ベースレイヤーと各加工後のマスクレイヤーを下から順に重ねて出力用のテンソルとして返します。(save_psdが有効で出力可能な場合は、PSDレイヤーとしても保存されます)。

    既知の問題 / 制限事項

    • 複数画像のバッチ(Batched Tensors)が入力された場合も順番に処理し、対応する数の結果を出力します。ただし各画像の出力結果ファイル名は連番(_00001 等)で保存されます。
    • save_psd を使用する場合、大量のレイヤーまたは高解像度画像を処理するとメモリやストレージを消費しやすくなります。

    謝辞: このノードは Ultralytics の YOLO の技術基盤によって支えられています。

    Run ComfyUI workflows without the setup

    No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

    Learn more