免费下载
节点包(comfyui_controlnet_aux辅助预处理器):
夸克:https://pan.quark.cn/s/593e79c74b7a
迅雷:https://pan.xunlei.com/s/VNxc8TZKgfYOqg_PXIC9DFznA1?pwd=9mfp#
来源github作者:Fannovel16
ComfyUI官方原生包:https://aizyk.com/1621.html
CN模型
SD1.5_CN模型:https://aizyk.com/952.html
SDXL_CN模型:https://pan.quark.cn/s/394b3b6f2d8f
ControlNet 辅助预处理器,用于制作 ControlNet 提示图像的即插即用 ComfyUI 节点集,
查看 Marigold Depth Estimator,它可以从高分辨率静态图像生成非常详细且清晰的深度图。
它创建的网格甚至可以 3D 打印。由于扩散器的原因,它无法在此扩展中实现,但 Kijai 有一个 Comfy 实现 https://github.com/kijai/ComfyUI-Marigold
安装
可以通过 ComfyUI Manager 来安装此节点,直接搜索ControlNet找到名为 ComfyUI's ControlNet Auxiliary Preprocessors 节点,作者是Fannovel16,(需要科学上网)
没有科学上网的朋友,可以在页面直接下载,解压后放入以下路径:
ComfyUI_windows_portable\ComfyUI\custom_nodes
Nodes 节点
请注意,此存储库仅支持预处理器制作提示图像(例如,stickman、canny edge 等)。除 Inpaint 之外的所有预处理器都集成到 AIO Aux Preprocessor
节点中。
该节点允许您快速获取预处理器,但无法设置预处理器自身的阈值参数。您需要直接使用其节点来设置阈值。
Line Extractors 线提取器
Preprocessor Node 预处理器节点 | sd-webui-controlnet/other sd-webui-controlnet/其他 |
ControlNet/T2I-Adapter ControlNet/T2I 适配器 |
---|---|---|
Binary Lines 二元线 | binary 二进制 | control_scribble 控制涂鸦 |
Canny Edge 精明的边缘 | canny 精明的 | control_v11p_sd15_canny control_canny 控制精明 t2iadapter_canny |
HED Soft-Edge Lines HED 软边线 | hed 赫德 | control_v11p_sd15_softedge control_hed 控制_hed |
Standard Lineart 标准艺术线条 | standard_lineart 标准线性图 | control_v11p_sd15_lineart control_v11p_sd15_ Lineart |
Realistic Lineart 写实艺术线条 | lineart (or lineart_coarse if coarse is enabled)艺术线条(如果启用了 coarse ,则为 lineart_coarse ) |
control_v11p_sd15_lineart control_v11p_sd15_ Lineart |
Anime Lineart 动漫艺术线条 | lineart_anime 线性动画 | control_v11p_sd15s2_lineart_anime |
Manga Lineart 漫画艺术线条 | lineart_anime_denoise 线性动画降噪 | control_v11p_sd15s2_lineart_anime |
M-LSD Lines M-LSD 线 | mlsd 最小二乘法 | control_v11p_sd15_mlsd 控制_v11p_sd15_mlsd control_mlsd 控制_mlsd |
PiDiNet Soft-Edge Lines PiDiNet 软边线 | pidinet 皮迪内特 | control_v11p_sd15_softedge control_scribble 控制涂鸦 |
Scribble Lines 涂鸦线 | scribble 涂 | control_v11p_sd15_scribble control_scribble 控制涂鸦 |
Scribble XDoG Lines 涂鸦 XDoG 线 | scribble_xdog 涂鸦_xdog | control_v11p_sd15_scribble control_scribble 控制涂鸦 |
Fake Scribble Lines 假涂鸦线 | scribble_hed 涂鸦_hed | control_v11p_sd15_scribble control_scribble 控制涂鸦 |
TEED Soft-Edge Lines TEED 软边线 | teed 特德 | controlnet-sd-xl-1.0-softedge-dexined control_v11p_sd15_softedge (Theoretically) control_v11p_sd15_softedge(理论上) |
法线和深度估计器
Preprocessor Node 预处理器节点 | sd-webui-controlnet/other sd-webui-controlnet/其他 |
ControlNet/T2I-Adapter ControlNet/T2I 适配器 |
---|---|---|
MiDaS Depth Map MiDaS 深度图 | (normal) depth (正常)深度 | control_v11f1p_sd15_depth control_v11f1p_sd15_深度 control_depth 控制深度 t2iadapter_depth t2iaadapter_深度 |
LeReS Depth Map LeReS深度图 | depth_leres 深度_leres | control_v11f1p_sd15_depth control_v11f1p_sd15_深度 control_depth 控制深度 t2iadapter_depth t2iaadapter_深度 |
Zoe Depth Map 佐伊深度图 | depth_zoe 深度佐伊 | control_v11f1p_sd15_depth control_v11f1p_sd15_深度 control_depth 控制深度 t2iadapter_depth t2iaadapter_深度 |
MiDaS Normal Map MiDaS 法线贴图 | normal_map 法线贴图 | control_normal 控制正常 |
BAE Normal Map BAE 法线贴图 | normal_bae 正常_bae | control_v11p_sd15_normalbae |
MeshGraphormer Hand Refiner (HandRefinder) MeshGraphormer 手工精炼器 (HandRefinder) |
depth_hand_refiner 深度手精炼器 | control_sd15_inpaint_depth_hand_fp16 |
Depth Anything 深度任何东西 | Depth-Anything 深度-任何东西 | |
Zoe Depth Anything 佐伊深度任何东西 (Basically Zoe but the encoder is replaced with DepthAnything) (基本上是 Zoe,但编码器被 DepthAnything 取代) |
depth_anything 深度_任何东西 | Depth-Anything 深度-任何东西 |
Normal DSINE 正常DSINE | control_normal/control_v11p_sd15_normalbae 控制_正常/控制_v11p_sd15_normalbae |
面部和姿势估计器
Preprocessor Node 预处理器节点 | sd-webui-controlnet/other sd-webui-controlnet/其他 |
ControlNet/T2I-Adapter ControlNet/T2I 适配器 |
---|---|---|
DWPose Estimator DWPose 估计器 | dw_openpose_full | control_v11p_sd15_openpose control_openpose 控制开放姿势 t2iadapter_openpose t2iaadapter_openpose |
OpenPose Estimator OpenPose 估计器 | openpose (detect_body) 开放姿势(检测身体) openpose_hand (detect_body + detect_hand) openpose_hand(检测身体+检测手) openpose_faceonly (detect_face) openpose_faceonly(检测脸部) openpose_full (detect_hand + detect_body + detect_face) openpose_full(检测手+检测身体+检测脸部) |
control_v11p_sd15_openpose control_openpose 控制开放姿势 t2iadapter_openpose t2iaadapter_openpose |
MediaPipe Face Mesh MediaPipe 面网格 | mediapipe_face 媒体管道面 | controlnet_sd21_laion_face_v2 |
Animal Estimator 动物估算器 | animal_openpose 动物_开放姿势 | control_sd15_animal_openpose_fp16 |
Optical Flow Estimators 光流估计器
Preprocessor Node 预处理器节点 | sd-webui-controlnet/other sd-webui-controlnet/其他 |
ControlNet/T2I-Adapter ControlNet/T2I 适配器 |
---|---|---|
Unimatch Optical Flow 统一光流 | DragNUWA 德拉努瓦 |
如何获取 OpenPose 格式的 JSON?
此工作流程会将图像保存到 ComfyUI 的输出文件夹(与输出图像相同的位置)。如果您还没有找到 Save Pose Keypoints
节点,请更新此扩展
Dev-side 开发端
可以使用 UI 上的 app.nodeOutputs
或 /history
API 端点从 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 编辑器):
const poseNodes = app.graph._nodes.filter(node => ["OpenposePreprocessor", "DWPreprocessor", "AnimalPosePreprocessor"].includes(node.type)) for (const poseNode of poseNodes) { const openposeResults = JSON.parse(app.nodeOutputs[poseNode.id].openpose_json[0]) console.log(openposeResults) //An array containing Openpose JSON for each frame }
对于 API 用户:Javascript
import fetch from "node-fetch" //Remember to add "type": "module" to "package.json" async function main() { const promptId = '792c1905-ecfe-41f4-8114-83e6a4a09a9f' //Too lazy 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) //An array containing Openpose JSON for each frame } } main()
Python
import json, urllib.request server_address = "127.0.0.1:8188" prompt_id = '' #Too lazy to POST /queue def get_history(prompt_id): with urllib.request.urlopen("http://{}/history/{}".format(server_address, prompt_id)) as response: return json.loads(response.read()) history = get_history(prompt_id)[prompt_id] for o in history['outputs']: for node_id in history['outputs']: node_output = history['outputs'][node_id] if 'openpose_json' in node_output: print(json.loads(node_output['openpose_json'][0])) #An list containing Openpose JSON for each frame
(失效请加V:xkd2310备注SD)