免费下载

节点包(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)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。