Skip to content

Repository files navigation

tonarice (ComfyUI Custom Nodes)

このカスタムノードは、ComfyUI で anime-face-detector を利用してアニメ顔を検出し、顔領域・目・眉・口・顎・顔輪郭およびランドマークの抽出や切り抜き、可視化を行います。

ノード概要

  • AnimeFaceDetectorNode
    • anime-face-detectorLandmarkDetector を使用
    • bboxkeypoints を取得して顔のパーツ領域を出力
  • FacePartsVisualizerNode
    • 検出結果を画像上に描画
    • 出力は ComfyUI 互換の torch.Tensor 形式
  • SaveFacePartsJsonNode
    • 検出された顔・両目・口のBBox、および28箇所のランドマーク座標、元画像の解像度をパースしてJSON形式で保存します。
    • 外部アプリ(PixiJSなど)とのWebSocket連携のために、書き出したファイルのパス情報をUIイベントとして応答します。

前提条件 (動作確認環境)

このカスタムノードは、以下のパッケージ構成で動作確認が行われています。

  • Python: 3.10 〜 3.12 (ComfyUI 組み込み Python 環境)
  • PyTorch (torch): 2.10.0 以上 (動作確認環境: 2.12.1+cu130)
  • torchvision: 動作確認環境: 0.27.1+cu130
  • onnxruntime: 1.23.2 以上 (anime-face-detector の動作に必要)
  • CUDA: 12.1 以上 (GPUを使用する場合の推奨)

インストール

ComfyUI Portable 環境で次のコマンドを実行します。

python_embeded\python.exe -m pip install --upgrade pip setuptools wheel
python_embeded\python.exe -m pip install --no-build-isolation git+https://github.com/sawarae/anime-face-detector.git
python_embeded\python.exe -m pip install opencv-python numpy

Important

カスタムリポジトリ(sawarae/anime-face-detector)を使用する理由

オリジナルの anime-face-detector(PyPI公式パッケージ等)は、依存ライブラリである mmcvmmdet の導入難易度が Windows 環境において非常に高く、コンパイルエラーやセットアップ失敗が多発します。

これに対し、当プラグインで指定している sawarae/anime-face-detector は、mmcv 等への依存を排除し、ONNX Runtime 推論ベースに軽量化・最適化されたフォーク(改造)版 です。 これにより、Windows や ComfyUI の組み込み Python(python_embeded)環境からでも、余計なビルドエラーを起こさず pip のみでスムーズに導入でき、安定した高速な推論が可能となっています。

使い方

  1. ComfyUI を再起動する
  2. アニメ画像を読み込む
  3. AnimeFaceDetectorNode を追加し、画像を接続する
  4. FacePartsVisualizerNode を追加し、検出結果を接続して可視化画像を確認する
  5. SaveFacePartsJsonNode を接続し、画像および検出結果を接続してJSON出力を実行する
  6. ComfyUI/output ディレクトリに face_parts_XXXXX.json が生成されることを確認する

API連携による外部アプリ(PixiJS等)への引き渡し

workflows/face_detection_api.json をAPIフォーマットとして読み込み、外部アプリからComfyUIへ画像を送信後、WebSocketの executed イベントを購読することで、書き出されたJSONの保存パスを動的に取得し、PixiJS等のフロントエンドで顔パーツのアニメーションやモーフィング制御点として利用可能です。

実装のポイント

  • AnimeFaceDetectorNodecreate_detector(device="cpu") で検出器を初期化
  • LandmarkDetectordetector(image) 形式で呼び出す
  • モデル出力の bboxkeypoints を受け取り、left_eye, right_eye, mouth を推定
  • 検出失敗時も空 bbox/空 landmarks を返してノードが落ちないようにしている
  • FacePartsVisualizerNode は出力画像を [1, H, W, C]torch.Tensor に変換し、float32 かつ 0.0〜1.0 の範囲にする

フォルダ構成

  • __init__.py
  • anime_face_detector_node.py
  • face_parts_visualizer_node.py
  • requirements.txt
  • README.md
  • spec.md

requirements.txt

  • anime-face-detector
  • opencv-python
  • numpy

ComfyUI 側には torch が既に入っている前提です。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages