مجموعات عقدة ComfyUI للتوصيل والتشغيل لإنشاء صور تلميحات ControlNet
"أسلوب الرسوم المتحركة، احتجاج في الشارع، مدينة السايبربانك، امرأة ذات شعر وردي وعيون ذهبية (تنظر إلى المشاهد) تحمل لافتة مكتوب عليها النص "ComfyUI ControlNet Aux" باللون الوردي الغامق النيون" على Flux.1 Dev
يتم نسخ الكود ولصقه من المجلدات المعنية في 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
محمول/فينف:
مع نظام بيثون
ابدأ تشغيل ComfyUI
يرجى ملاحظة أن هذا الريبو يدعم فقط المعالجات المسبقة التي تقوم بإنشاء صور تلميحات (مثل Stickman وcanny edge وما إلى ذلك). يتم دمج كافة المعالجات المسبقة باستثناء Inpaint في عقدة AIO Aux Preprocessor
. تسمح لك هذه العقدة بالحصول على المعالج المسبق بسرعة، لكن لن تتمكن من تعيين معلمات الحد الأدنى الخاصة بالمعالج المسبق. تحتاج إلى استخدام عقدتها مباشرة لتعيين العتبات.
عقدة المعالج المسبق | SD-webui-controlnet/أخرى | كونترول نت/T2I-محول |
---|---|---|
الخطوط الثنائية | ثنائي | control_scribble |
كاني إيدج | حكيم | control_v11p_sd15_canny control_canny t2iadapter_canny |
خطوط HED ذات الحواف الناعمة | هيد | control_v11p_sd15_softedge control_hed |
الخط القياسي | Standard_lineart | control_v11p_sd15_lineart |
رسم خطي واقعي | خطي (أو lineart_coarse إذا تم تمكين coarse ) | control_v11p_sd15_lineart |
أنيمي الخطي | linert_anime | control_v11p_sd15s2_lineart_anime |
مانغا الخطي | Linert_anime_denoise | control_v11p_sd15s2_lineart_anime |
خطوط M-LSD | mlsd | control_v11p_sd15_mlsd control_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 Lineart | MistoLine_fp16.safetensors MistoLine_rank256 control_v11p_sd15s2_lineart_anime control_v11p_sd15_lineart |
عقدة المعالج المسبق | SD-webui-controlnet/أخرى | كونترول نت/T2I-محول |
---|---|---|
خريطة عمق MiDaS | (عادي) العمق | control_v11f1p_sd15_عمق التحكم_العمق t2iadapter_عمق |
خريطة عمق LeReS | Deep_leres | control_v11f1p_sd15_عمق التحكم_العمق t2iadapter_عمق |
خريطة عمق زوي | Deep_zoe | control_v11f1p_sd15_عمق التحكم_العمق t2iadapter_عمق |
خريطة MiDaS العادية | Normal_map | control_normal |
خريطة بي ايه إي العادية | Normal_bae | control_v11p_sd15_normalbae |
مصفي اليد MeshGraphormer (HandRefinder) | Deep_hand_refiner | control_sd15_inpaint_ Deep_hand_fp16 |
عمق أي شيء | Deep_anything | عمق أي شيء |
زوي عمق أي شيء (أساسًا Zoe ولكن تم استبدال برنامج التشفير بـ DepthAnything) | Deep_anything | عمق أي شيء |
ديسين عادي | control_normal/control_v11p_sd15_normalbae | |
عمق متري ثلاثي الأبعاد | control_v11f1p_sd15_عمق التحكم_العمق t2iadapter_عمق | |
متري 3D عادي | control_v11p_sd15_normalbae | |
عمق أي شيء V2 | عمق أي شيء |
عقدة المعالج المسبق | SD-webui-controlnet/أخرى | كونترول نت/T2I-محول |
---|---|---|
مقدر DWPose | dw_openpose_full | control_v11p_sd15_openpose control_openpose t2iadapter_openpose |
مقدر OpenPose | مفتوح (detect_body) openpose_hand (detect_body + Detect_hand) openpose_faceonly (detect_face) openpose_full (detect_hand + Detect_body + Detect_face) | control_v11p_sd15_openpose control_openpose t2iadapter_openpose |
شبكة الوجه MediaPipe | mediapipe_face | controlnet_sd21_laion_face_v2 |
مقدر الحيوان | Animal_openpose | control_sd15_animal_openpose_fp16 |
عقدة المعالج المسبق | SD-webui-controlnet/أخرى | كونترول نت/T2I-محول |
---|---|---|
Unimatch التدفق البصري | اسحبNUWA |
سيحفظ سير العمل هذا الصور في مجلد إخراج ComfyUI (نفس موقع الصور الناتجة). إذا لم تجد عقدة Save Pose Keypoints
، فقم بتحديث هذا الامتداد
يمكن الحصول على مصفوفة من تنسيق OpenPose JSON المتوافق مع كل إطار في مجموعة IMAGE من DWPose وOpenPose باستخدام app.nodeOutputs
على نقطة نهاية واجهة المستخدم أو /history
API. يستخدم إخراج JSON من AnimalPose تنسيقًا مشابهًا نوعًا ما لـ 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 openposeResults = JSON.parse( app.nodeOutputs[poseNode.id].openpose_json[0]) console.log(openposeResults) // مصفوفة تحتوي على Openpose JSON لكل إطار}
لمستخدمي API: جافا سكريبت
جلب الاستيراد من "node-fetch" // تذكر إضافة "type": "module" إلى "package.json"async function main() { const PromptId = '792c1905-ecfe-41f4-8114-83e6a4a09a9f' // كسول جدًا للنشر / قائمة الانتظار دع التاريخ = ينتظر الجلب(`http://127.0.0.1:8188/history/${promptId}`).then(re => re.json()) History = History[promptId] constNodeOutputs = Object.values(history.outputs).filter(output =>put.openpose_json) for (constnodeOutput ofNodeOutputs) { 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, موجه_id)) كرد: إرجاع json.loads(response.read())history = get_history(prompt_id)[prompt_id]for o in History['outputs']: fornode_id in History['outputs'] :Node_output = History['outputs'][node_id] if 'openpose_json' innode_output: print(json.loads(node_output['openpose_json'][0])) # قائمة تحتوي على Openpose JSON لكل إطار
عقدة المعالج المسبق | SD-webui-controlnet/أخرى | كونترول نت/T2I-محول |
---|---|---|
OneFormer ADE20K Segmentor | oneformer_ade20k | control_v11p_sd15_seg |
OneFormer COCO Segmentor | oneformer_coco | control_v11p_sd15_seg |
قطاع UniFormer | التجزئة | control_sd15_seg control_v11p_sd15_seg |
عقدة المعالج المسبق | SD-webui-controlnet/أخرى | كونترول نت/T2I-محول |
---|---|---|
لوحة الألوان | لون | t2iadapter_color |
خلط المحتوى | خلط | t2iadapter_style |
عقدة المعالج المسبق | SD-webui-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). تعد طريقة TorchScript أبطأ قليلاً من ONNXRuntime ولكنها لا تتطلب أي مكتبة إضافية ولا تزال أسرع بكثير من وحدة المعالجة المركزية.
يتوافق كاشف torchscript bbox مع مقدر الوضع onnx والعكس صحيح.
قم بتعيين bbox_detector
و pose_estimator
وفقًا لهذه الصورة. يمكنك تجربة نهايات كاشف bbox الأخرى باستخدام .torchscript.pt
لتقليل وقت اكتشاف bbox إذا كانت الصور المدخلة مثالية.
إذا تم تثبيت onnxruntime بنجاح واستخدمت نقطة التفتيش النهايات ذات .onnx
، فسوف تحل محل الواجهة الخلفية الافتراضية cv2 للاستفادة من وحدة معالجة الرسومات. لاحظ أنه إذا كنت تستخدم بطاقة NVidia، فإن هذه الطريقة حاليًا لا تعمل إلا على CUDA 11.8 (ComfyUI_windows_portable_nvidia_cu118_or_cpu.7z) إلا إذا قمت بتجميع onnxruntime بنفسك.
تعرف على بنية onnxruntime الخاصة بك:
NVidia CUDA 11.x أو وحدة معالجة الرسومات التالية/AMD: 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، animé-seg/isnetis.ckpt
الكثافة: LayerNorm/DensePose-TorchScript-with-hint-image/densepose_r50_fpn_dl.torchscript
dwpose:
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، hr1 6 /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_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، hr1 6 /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/الشروح/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
بيدي: 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
Deep_anything: إما LiheYoung/Depth-Anything/checkpoints/عمق_anything_vitl14.pth، أو LiheYoung/Depth-Anything/checkpoints/عمق_anything_vitb14.pth أو LiheYoung/Depth-Anything/checkpoints/عمق_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_ Deep_anything: إما LiheYoung/Depth-Anything/checkpoints_metric_عمق/عمق_anything_metric_عمق_indoor.pt أو LiheYoung/Depth-Anything/checkpoints_metric_عمق/عمق_anything_metric_عمق_outdoor.pt
شكرا لدعم يال. لم أعتقد أبدًا أن الرسم البياني للنجوم سيكون خطيًا.