用於製作 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/Shell 並執行以下操作:
導航到您的/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
請注意,此儲存庫僅支援預處理器製作提示影像(例如,stickman、canny edge 等)。除 Inpaint 之外的所有預處理器都整合到AIO Aux Preprocessor
節點中。此節點可讓您快速取得預處理器,但無法設定預處理器自身的閾值參數。您需要直接使用其節點來設定閾值。
預處理器節點 | sd-webui-controlnet/其他 | ControlNet/T2I 轉接器 |
---|---|---|
二元線 | 二進位 | 控制塗鴉 |
精明的邊緣 | 精明的 | control_v11p_sd15_canny 控制精明 t2iadapter_canny |
HED 軟邊線 | 赫德 | control_v11p_sd15_softedge 控制_hed |
標準藝術線條 | 標準線性圖 | control_v11p_sd15_ Lineart |
寫實藝術線條 | Lineart(如果啟用了coarse ,則為lineart_coarse ) | control_v11p_sd15_ Lineart |
動漫藝術線條 | 線性動畫 | control_v11p_sd15s2_lineart_anime |
漫畫藝術線條 | 線性動畫降噪 | control_v11p_sd15s2_lineart_anime |
M-LSD 線 | 最小平方法 | 控制_v11p_sd15_mlsd 控制_mlsd |
PiDiNet 軟邊線 | 皮迪內特 | control_v11p_sd15_softedge 控制塗鴉 |
塗鴉線 | 塗 | control_v11p_sd15_scribble 控制塗鴉 |
塗鴉 XDoG 線 | 塗鴉_xdog | control_v11p_sd15_scribble 控制塗鴉 |
假塗鴉線 | 塗鴉_hed | control_v11p_sd15_scribble 控制塗鴉 |
TEED 軟邊線 | 泰德 | controlnet-sd-xl-1.0-softedge-dexined control_v11p_sd15_softedge(理論上) |
塗鴉 PiDiNet 線條 | 塗鴉_pidinet | control_v11p_sd15_scribble 控制塗鴉 |
任意線藝術線條 | MistoLine_fp16.safetensors MistoLine_rank256 control_v11p_sd15s2_lineart_anime control_v11p_sd15_ Lineart |
預處理器節點 | sd-webui-controlnet/其他 | ControlNet/T2I 轉接器 |
---|---|---|
MiDaS 深度圖 | (正常)深度 | control_v11f1p_sd15_深度 控制深度 t2ia適配器深度 |
LeReS深度圖 | 深_leres | control_v11f1p_sd15_深度 控制深度 t2ia適配器深度 |
佐伊深度圖 | 深度佐伊 | control_v11f1p_sd15_深度 控制深度 t2ia適配器深度 |
MiDaS 法線貼圖 | 法線貼圖 | 控制正常 |
BAE 法線貼圖 | 正常_bae | control_v11p_sd15_normalbae |
MeshGraphormer 手工精煉器 (HandRefinder) | 深度手精煉器 | control_sd15_inpaint_depth_hand_fp16 |
深度任何東西 | 深度_任何東西 | 深度-任何東西 |
佐伊深度任何東西 (基本上是 Zoe,但編碼器被 DepthAnything 取代) | 深度_任何東西 | 深度-任何東西 |
正常DSINE | 控制_正常/控制_v11p_sd15_normalbae | |
公制三維深度 | control_v11f1p_sd15_深度 控制深度 t2ia適配器深度 | |
Metric3D 法線 | control_v11p_sd15_normalbae | |
深度任意 V2 | 深度-任何東西 |
預處理器節點 | sd-webui-controlnet/其他 | ControlNet/T2I 轉接器 |
---|---|---|
DWPose 估計器 | dw_openpose_full | control_v11p_sd15_openpose 控制開放姿勢 t2iaadapter_openpose |
OpenPose 估計器 | 開放姿勢(檢測身體) openpose_hand(偵測身體+偵測手) openpose_faceonly(偵測臉部) openpose_full(偵測手+偵測身體+偵測臉部) | control_v11p_sd15_openpose 控制開放姿勢 t2iaadapter_openpose |
MediaPipe 面網格 | 媒體管道面 | controlnet_sd21_laion_face_v2 |
動物估算器 | 動物_開放姿勢 | control_sd15_animal_openpose_fp16 |
預處理器節點 | sd-webui-controlnet/其他 | ControlNet/T2I 轉接器 |
---|---|---|
統一光流 | 德拉努瓦 |
此工作流程會將影像儲存到 ComfyUI 的輸出資料夾(與輸出影像相同的位置)。如果您還沒有找到Save Pose Keypoints
節點,請更新此擴展
可以使用 UI 或/history
API 端點上的app.nodeOutputs
從 DWPose 和 OpenPose 取得與 IMAGE 批次中的每個影格對應的 OpenPose 格式 JSON 陣列。 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 編輯器):
constposeNodes = app.graph._nodes.filter(node => ["OpenposePreprocessor", "DWPreprocessor", "AnimalPosePreprocessor"].includes(node.type))for (constposeNode ofposeNodes) { const opens. [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' POST /queue 讓歷史記錄=等待取得(`http://127.0.0.1:8188/history/${promptId}`).then(re => re.json()) 歷史記錄=歷史記錄[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]pultole.一個陣列包含每個畫面的 Openpose JSON }}main()
Python
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)) 作為回應:傳回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 |
OneFormer COCO Segmentor | oneformer_coco | control_v11p_sd15_seg |
UniFormer 分段器 | 分割 | 控制_sd15_seg control_v11p_sd15_seg |
預處理器節點 | sd-webui-controlnet/其他 | ControlNet/T2I 轉接器 |
---|---|---|
調色盤 | 顏色 | t2iaadapter_color |
內容隨機播放 | 隨機播放 | t2iaadapter_style |
預處理器節點 | sd-webui-controlnet/其他 | ControlNet/T2I 轉接器 |
---|---|---|
影像亮度 | 重新著色亮度 | ioclab_sd15_recolor sai_xl_recolor_256lora bdsqlsz_controlllite_xl_recolor_luminance |
影像強度 | 重新著色強度 | 我不知道。也許和上面一樣? |
一張圖勝過一千個字
https://github.com/Fannovel16/comfyui_controlnet_aux/blob/main/examples/ExecuteAll.png 輸入圖片:https://github.com/Fannovel16/comfyui_controlnet_aux/blob/main/examples/comfyaux-controlnetlnet-control。 PNG
這個倉庫有一個新的機制,它將跳過任何無法匯入的自訂節點。如果您遇到這種情況,請使用命令列日誌在問題標籤上建立問題。
有兩種方法可以加速 DWPose:使用 TorchScript 檢查點 (.torchscript.pt) 檢查點或 ONNXRuntime (.onnx)。 TorchScript 方式比 ONNXRuntime 慢一點,但不需要任何額外的函式庫,而且仍然比 CPU 快得多。
torchscript bbox 偵測器與 onnx 位元姿估計器相容,反之亦然。
根據這張圖設定bbox_detector
和pose_estimator
。如果輸入影像理想,您可以嘗試其他以.torchscript.pt
結尾的 bbox 偵測器,以減少 bbox 偵測時間。
如果 onnxruntime 安裝成功並且檢查點使用以.onnx
結尾,它將取代預設的 cv2 後端以利用 GPU。請注意,如果您使用的是 NVidia 卡,此方法目前僅適用於 CUDA 11.8 (ComfyUI_windows_portable_nvidia_cu118_or_cpu.7z),除非您自行編譯 onnxruntime。
了解您的 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
密集姿勢:LayerNorm/DensePose-TorchScript-with-hint-image/densepose_r50_fpn_dl.torchscript
dw姿勢:
bbox_Det? yolo-nas-fp16/yolo_nas_s_fp16.onnx
pose_estimator:hr16/DWPose-TorchScript-BatchSize5/dw-ll_ucoco_384_bs5.torchscript.pt、yzd-v/DWPose/dw-ll_ucoco_384.onnx
動物姿勢(ap10k):
bbox_Det? yolo-nas-fp16/yolo_nas_s_fp16.onnx
pose_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
manga_line: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
正常庫: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
Zoe:lllyasviel/Annotators/ZoeD_M12_N.pt
發條:bdsqlsz/qinglong_controlnet-lllite/7_model.pth
height_anything:LiheYoung/Depth-Anything/checkpoints/depth_anything_vitl14.pth、LiheYoung/Depth-Anything/checkpoints/depth_anything_vitb14.pth 或 LiheYoung/Depth-Anything/checkd-Anything/chanys/dething.
擴散_邊緣: 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/deppt_panythdoor_dept.
感謝各位的支持。我從來沒想過星星的圖表會是線性的哈哈。