ControlNet ヒント画像を作成するためのプラグアンドプレイ ComfyUI ノード セット
Flux.1 Dev の「アニメ スタイル、路上での抗議活動、サイバーパンク都市、ピンクの髪と金色の目をした女性 (視聴者を見て) が、太字のネオン ピンクで「ComfyUI ControlNet Aux」というテキストが書かれた看板を持っています」
コードは https://github.com/lllyasviel/ControlNet/tree/main/annotator の各フォルダーからコピー&ペーストされ、? に接続されます。ハブ。
すべてのクレジットと著作権は https://github.com/lllyasviel に帰属します。
アップデートページに移動してアップデートをフォローしてください
ComfyUI Manager をインストールし、そこで紹介されている手順を実行してこのリポジトリをインストールします。
Linux で実行している場合、または Windows で管理者以外のアカウントを実行している場合は、 /ComfyUI/custom_nodes
とcomfyui_controlnet_aux
書き込み権限があることを確認する必要があります。
install.batが追加され、検出された場合に実行してポータブルにインストールできます。それ以外の場合は、デフォルトでシステムが設定され、ConfyUI の手動インストール手順に従ったことが想定されます。
install.bat を実行できない場合 (Linux ユーザーなど)。 CMD/シェルを開き、次の操作を実行します。
/ComfyUI/custom_nodes/
フォルダーに移動します
git clone https://github.com/Fannovel16/comfyui_controlnet_aux/
comfyui_controlnet_aux
フォルダーに移動します
pip install -r requirements.txt
実行します。
path/to/ComfUI/python_embeded/python.exe -s -m pip install -r requirements.txt
実行します。
ポータブル/venv:
システムPythonを使って
ComfyUI を開始する
このリポジトリは、ヒント画像 (スティックマン、キャニーエッジなど) を作成するプリプロセッサのみをサポートしていることに注意してください。 Inpaint を除くすべてのプリプロセッサは、 AIO Aux Preprocessor
ノードに統合されています。このノードを使用すると、プリプロセッサをすぐに取得できますが、プリプロセッサ独自のしきい値パラメータを設定することはできません。しきい値を設定するには、そのノードを直接使用する必要があります。
プリプロセッサノード | sd-webui-controlnet/その他 | ControlNet/T2I アダプター |
---|---|---|
バイナリライン | バイナリ | control_scribble |
キャニーエッジ | 賢い | control_v11p_sd15_canny コントロールキャニー t2iadapter_canny |
HED ソフトエッジライン | 頭がついた | control_v11p_sd15_softedge コントロールヘッド |
標準線画 | 標準線画 | control_v11p_sd15_lineart |
リアルな線画 | Lineart (またはcoarse が有効な場合はlineart_coarse ) | control_v11p_sd15_lineart |
アニメの線画 | 線画_アニメ | control_v11p_sd15s2_lineart_anime |
マンガの線画 | 線画アニメデノイズ | control_v11p_sd15s2_lineart_anime |
M-LSDライン | mlsd | control_v11p_sd15_mlsd コントロール_mlsd |
PiDiNet ソフトエッジライン | ピディネ | control_v11p_sd15_softedge control_scribble |
落書き線 | 落書き | control_v11p_sd15_scribble control_scribble |
XDoG ラインを落書きする | scribble_xdog | control_v11p_sd15_scribble control_scribble |
偽の落書き線 | scribble_hed | control_v11p_sd15_scribble control_scribble |
TEED ソフトエッジライン | ティード | controlnet-sd-xl-1.0-softedge-dexined control_v11p_sd15_softedge (理論上) |
PiDiNet ラインを走り書きする | scribble_pidinet | control_v11p_sd15_scribble control_scribble |
AnyLine ラインアート | missoLine_fp16.safetensors ミストライン_ランク256 control_v11p_sd15s2_lineart_anime control_v11p_sd15_lineart |
プリプロセッサノード | sd-webui-controlnet/その他 | ControlNet/T2I アダプター |
---|---|---|
MiDaS 深度マップ | (通常の) 深さ | control_v11f1p_sd15_ Depth 制御深度 t2iadapter_ Depth |
LeReS 深度マップ | 深さ_レレス | control_v11f1p_sd15_ Depth 制御深度 t2iadapter_ Depth |
ゾーイ深度マップ | 深さ_ゾーイ | control_v11f1p_sd15_ Depth 制御深度 t2iadapter_ Depth |
MiDaS 法線マップ | ノーマルマップ | コントロール_ノーマル |
BAE 法線マップ | ノーマルベ | control_v11p_sd15_normalbae |
MeshGraphformer ハンド リファイナー (HandRefinder) | デプスハンドリファイナー | control_sd15_inpaint_ Depth_hand_fp16 |
奥行きのあるもの | 深さ_何でも | 深さは何でも |
ゾーイ・デプス・エニシング (基本的には Zoe ですが、エンコーダーは DepthAnything に置き換えられます) | 深さ_何でも | 深さは何でも |
通常のDSINE | control_normal/control_v11p_sd15_normalbae | |
Metric3D 深度 | control_v11f1p_sd15_ Depth 制御深度 t2iadapter_ Depth | |
メトリック 3D 法線 | control_v11p_sd15_normalbae | |
深さ何でも V2 | 深さは何でも |
プリプロセッサノード | sd-webui-controlnet/その他 | ControlNet/T2I アダプター |
---|---|---|
DWPose エスティメーター | dw_openpose_full | control_v11p_sd15_openpose control_openpose t2iadapter_openpose |
OpenPose エスティメーター | オープンポーズ (ボディ検出) openpose_hand (ボディ検出 + ハンド検出) openpose_faceonly (顔検出) openpose_full (手の検出 + 体の検出 + 顔の検出) | control_v11p_sd15_openpose control_openpose t2iadapter_openpose |
MediaPipe フェイス メッシュ | メディアパイプ_フェイス | controlnet_sd21_laion_face_v2 |
動物推定装置 | 動物のオープンポーズ | control_sd15_animal_openpose_fp16 |
プリプロセッサノード | sd-webui-controlnet/その他 | ControlNet/T2I アダプター |
---|---|---|
ユニマッチオプティカルフロー | ドラッグぬわ |
このワークフローは、画像を ComfyUI の出力フォルダー (出力画像と同じ場所) に保存します。 Save Pose Keypoints
ノードが見つからない場合は、この拡張機能を更新してください
IMAGE バッチ内の各フレームに対応する OpenPose 形式の JSON の配列は、UI または/history
API エンドポイントのapp.nodeOutputs
を使用して DWPose および OpenPose から取得できます。 AnimalPose からの JSON 出力は、OpenPose JSON と似た形式を使用します。
[ { "version": "ap10k", "animals": [ [[x1, y1, 1], [x2, y2, 1],..., [x17, y17, 1]], [[x1, y1, 1], [x2, y2, 1],..., [x17, y17, 1]], ... ], "canvas_height": 512, "canvas_width": 768 }, ... ]
拡張機能開発者向け (Openpose エディターなど):
const passNodes = app.graph._nodes.filter(node => ["OpenposePreprocessor", "DWPreprocessor", "AnimalPosePreprocessor"].includes(node.type))for (poseNodes の const poseNode) { const openposeResults = JSON.parse( app.nodeOutputs[poseNode.id].openpose_json[0]) console.log(openposeResults) //各フレームの Openpose JSON を含む配列}
API ユーザー向け: Javascript
import fetch from "node-fetch" //忘れずに "type": "module" を "package.json" に追加してください async function main() { const PromptId = '792c1905-ecfe-41f4-8114-83e6a4a09a9f' // 遅すぎるto POST /queue let History = await fetch(`http://127.0.0.1:8188/history/${promptId}`).then(re => re.json()) History =history[promptId] const nodeOutputs = Object.values(history.outputs).filter(output => Output.openpose_json) for (const nodeOutput of nodeOutputs) { const openposeResults = JSON.parse(nodeOutput.openpose_json[0]) console.log(openposeResults) //配列各フレームの Openpose JSON を含む }}main()
パイソン
import json, urllib.requestserver_address = "127.0.0.1:8188"prompt_id = '' #POST するのが遅すぎる /queuedef get_history(prompt_id): with urllib.request.urlopen("http://{}/history/{}" .format(server_address, prompt_id)) 応答として: return json.loads(response.read())history = get_history(prompt_id)[prompt_id]for o in History['outputs']: for node_id inhistory['outputs'] : node_output = History['outputs'][node_id] if 'openpose_json' in node_output: print(json.loads(node_output['openpose_json'][0])) #各フレームの Openpose JSON を含むリスト
プリプロセッサノード | sd-webui-controlnet/その他 | ControlNet/T2I アダプター |
---|---|---|
OneFormer ADE20K セグメンタ | oneformer_ade20k | control_v11p_sd15_seg |
元 COCO セグメンター | oneformer_coco | control_v11p_sd15_seg |
UniFormer セグメンター | セグメンテーション | control_sd15_seg control_v11p_sd15_seg |
プリプロセッサノード | sd-webui-controlnet/その他 | ControlNet/T2I アダプター |
---|---|---|
カラーパレット | 色 | t2iaadapter_color |
コンテンツシャッフル | シャッフル | t2iaadapter_style |
プリプロセッサノード | sd-webui-controlnet/その他 | ControlNet/T2I アダプター |
---|---|---|
画像の輝度 | recolor_luminance | ioclab_sd15_recolor sai_xl_recolor_256lora bdsqlsz_controlllite_xl_recolor_luminance |
画像の強度 | recolor_intensity | わかりません。たぶん上と同じでしょうか? |
百聞は一見に如かず
https://github.com/Fannovel16/comfyui_controlnet_aux/blob/main/examples/ExecuteAll.png 入力画像: https://github.com/Fannovel16/comfyui_controlnet_aux/blob/main/examples/comfyui-controlnet-aux-logo。 png
このリポジトリには、インポートできないカスタム ノードをスキップする新しいメカニズムが組み込まれています。このケースに遭遇した場合は、コマンド ラインからのログを使用して [問題] タブで問題を作成してください。
DWPose を高速化するには、TorchScript チェックポイント (.torchscript.pt) チェックポイントまたは ONNXRuntime (.onnx) を使用する 2 つの方法があります。 TorchScript の方法は ONNXRuntime よりも少し遅いですが、追加のライブラリを必要とせず、それでも CPU よりもはるかに高速です。
torchscript bbox 検出器は onnx 姿勢推定器と互換性があり、その逆も同様です。
この図に従ってbbox_detector
とpose_estimator
設定します。入力イメージが理想的である場合は、 .torchscript.pt
使用して他の bbox 検出器の末尾を試して、bbox 検出時間を短縮できます。
onnxruntime が正常にインストールされ、 .onnx
で終わるチェックポイントが使用されている場合、GPU を利用するためにデフォルトの cv2 バックエンドが置き換えられます。 NVidia カードを使用している場合、onnxruntime を自分でコンパイルしない限り、このメソッドは現在 CUDA 11.8 (ComfyUI_windows_portable_nvidia_cu118_or_cpu.7z) でのみ機能することに注意してください。
onnxruntime ビルドを確認します。
NVidia CUDA 11.x または以下/AMD GPU: onnxruntime-gpu
NVidia CUDA 12.x: onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
DirectML: onnxruntime-directml
OpenVINO: onnxruntime-openvino
ComfyUI を初めて使用する場合は、次の手順を実行する前にデバイスで実行できるかどうかをテストしてください。
それをrequirements.txt
に追加します
「インストール」で説明したinstall.bat
または pip コマンドを実行します。
anime_face_segment: bdsqlsz/qinglong_controlnet-lllite/Annotators/UNet.pth、anime-seg/isnetis.ckpt
densepose: LayerNorm/DensePose-TorchScript-with-hint-image/densepose_r50_fpn_dl.torchscript
ポーズ:
bbox_detector: yzd-v/DWPose/yolox_l.onnx、hr16/yolox-onnx/yolox_l.torchscript.pt、hr16/yolo-nas-fp16/yolo_nas_l_fp16.onnx、hr16/yolo-nas-fp16/yolo_nas_m_fp16.onnx、のいずれか16 /yolo-nas-fp16/yolo_nas_s_fp16.onnx
Position_estimator: hr16/DWPose-TorchScript-BatchSize5/dw-ll_ucoco_384_bs5.torchscript.pt、yzd-v/DWPose/dw-ll_ucoco_384.onnx のいずれか
動物のポーズ (ap10k):
bbox_detector: yzd-v/DWPose/yolox_l.onnx、hr16/yolox-onnx/yolox_l.torchscript.pt、hr16/yolo-nas-fp16/yolo_nas_l_fp16.onnx、hr16/yolo-nas-fp16/yolo_nas_m_fp16.onnx、のいずれか16 /yolo-nas-fp16/yolo_nas_s_fp16.onnx
ose_estimator: hr16/DWPose-TorchScript-BatchSize5/rtmpose-m_ap10k_256_bs5.torchscript.pt、hr16/UnJIT-DWPose/rtmpose-m_ap10k_256.onnx のいずれか
hed: lllyasviel/Annotators/ControlNetHED.pth
ファイル: lllyasviel/Annotators/res101.pth、lllyasviel/Annotators/latest_net_G.pth
線画: lllyasviel/Annotators/sk_model.pth、lllyasviel/Annotators/sk_model2.pth
Lineart_anime: lllyasviel/Annotators/netG.pth
マンガライン: lllyasviel/Annotators/erika.pth
Mesh_graphormer: hr16/ControlNet-HandRefiner-pruned/graphormer_hand_state_dict.bin、hr16/ControlNet-HandRefiner-pruned/hrnetv2_w64_imagenet_pretrained.pth
ミダス: lllyasviel/Annotators/dpt_hybrid-midas-501f0c75.pt
mlsd: lllyasviel/Annotators/mlsd_large_512_fp32.pth
Normalbae: lllyasviel/Annotators/scannet.pt
oneformer: lllyasviel/Annotators/250_16_swin_l_oneformer_ade20k_160k.pth
open_pose: lllyasviel/Annotators/body_pose_model.pth、lllyasviel/Annotators/hand_pose_model.pth、lllyasviel/Annotators/facenet.pth
pidi: lllyasviel/Annotators/table5_pidinet.pth
サム: dhkim2810/MobileSAM/mobile_sam.pt
ユニフォーム: lllyasviel/Annotators/upernet_global_small.pth
ゾーイ: lllyasviel/Annotators/ZoeD_M12_N.pt
ティード: bdsqlsz/qinglong_controlnet-lllite/7_model.pth
Depth_anything: LiheYoung/Depth-Anything/checkpoints/ Depth_anything_vitl14.pth、LiheYoung/Depth-Anything/checkpoints/ Depth_anything_vitb14.pth、または LiheYoung/Depth-Anything/checkpoints/ Depth_anything_vits14.pth のいずれか
diffusion_edge: hr16/Diffusion-Edge/diffusion_edge_indoor.pt、hr16/Diffusion-Edge/diffusion_edge_urban.pt、または hr16/Diffusion-Edge/diffusion_edge_natrual.pt のいずれか
unimatch: hr16/Unimatch/gmflow-scale2-regrefine6-mixdata.pth、hr16/Unimatch/gmflow-scale2-mixdata.pth、または hr16/Unimatch/gmflow-scale1-mixdata.pth
zoe_ Depth_anything: LiheYoung/Depth-Anything/checkpoints_metric_ Depth/ Depth_anything_metric_ Depth_indoor.pt または LiheYoung/Depth-Anything/checkpoints_metric_ Depth/ Depth_anything_metric_ Depth_outdoor.pt のいずれか
エールのサポートに感謝します。星のグラフが直線になるとは思いませんでした(笑)。