مجموعة من العقد المخصصة لـ ComfyUI تتضمن العقد المتغيرة لعدد صحيح وسلسلة وعائمة وعقد GPT وعقد الفيديو.
مهم
تم اختبار هذه العقد بشكل أساسي في Windows في البيئة الافتراضية التي توفرها ComfyUI وفي البيئة التي أنشأها دفتر الملاحظات للمساحات الورقية على وجه التحديد باستخدام Cyberes/gradient-base-py3.10:latest docker image. لم يتم اختبار أي بيئة أخرى.
استنساخ المستودع: git clone https://github.com/Nuked88/ComfyUI-N-Nodes.git
إلى دليل ComfyUI custom_nodes
الخاص بك
هام: إذا كنت تريد عقد GPT على وحدة معالجة الرسومات، فستحتاج إلى تشغيل ملفات install_dependency Bat . هناك إصداران: install_dependency_ggml_models.bat لطرز ggmlv3 القديمة و install_dependency_gguf_models.bat لجميع الطرز الجديدة (GGUF). يمكنك استخدام واحد منهم فقط في كل مرة! نظرًا لأن llama-cpp-python يحتاج إلى التجميع من الكود المصدري لتمكينه من استخدام وحدة معالجة الرسومات، فستحتاج أولاً إلى تثبيت CUDA وvisual studio 2019 أو 2022 (في حالة الخفاش الخاص بي) لتجميعه. للحصول على التفاصيل والدليل الكامل يمكنك الذهاب هنا.
إذا كنت تنوي استخدام GPTLoaderSimple مع نموذج Moondream، فستحتاج إلى تنفيذ البرنامج النصي 'install_extra.bat'، والذي سيؤدي إلى تثبيت الإصدار 4.36.2 من المحولات.
إعادة تشغيل ComfyUI
في حالة رغبتك في التراجع عن هذه التغييرات (بسبب عدم التوافق مع العقد الأخرى)، يمكنك استخدام البرنامج النصي 'remove_extra.bat'.
سيقوم ComfyUI تلقائيًا بتحميل كافة البرامج النصية والعقد المخصصة عند بدء التشغيل.
ملحوظة
سيتم تثبيت llama-cpp-python تلقائيًا بواسطة البرنامج النصي. إذا كان لديك وحدة معالجة الرسومات NVIDIA، فلن يعد إنشاء CUDA ضروريًا بفضل jllllll repo. لقد قمت أيضًا بإسقاط الدعم عن نماذج GGMLv3 نظرًا لأنه كان من المفترض أن تتحول جميع النماذج البارزة إلى أحدث إصدار من GGUF الآن.
ملحوظة
منذ 14/02/2024، خضعت العقدة لعملية إعادة كتابة واسعة النطاق، مما أدى أيضًا إلى تغيير جميع أسماء العقد لتجنب أي تعارض مع الامتدادات الأخرى في المستقبل (أو على الأقل أتمنى ذلك). ونتيجة لذلك، لم تعد مسارات العمل القديمة متوافقة وستتطلب استبدالًا يدويًا لكل عقدة. لتجنب ذلك، قمت بإنشاء أداة تسمح بالاستبدال التلقائي. على نظام التشغيل Windows، ما عليك سوى سحب أي سير عمل *.json إلى ملف migrate.bat الموجود في (custom_nodes/ComfyUI-N-Nodes)، وسيتم إنشاء سير عمل آخر باللاحقة _migrated في نفس المجلد مثل سير العمل الحالي. في نظام التشغيل Linux، يمكنك استخدام البرنامج النصي بالطريقة التالية: python libs/migrate.py path/to/original/workflow/. لأسباب أمنية، لن يتم حذف سير العمل الأصلي." لتثبيت الإصدار الأخير من هذا المستودع قبل أن يتغير هذا من Comfyui-N-Suite، قم بتنفيذ git checkout 29b2e43baba81ee556b2930b0ca0a9c978c47083
ComfyUI-N-Nodes
في custom_nodes
comfyui-n-nodes
في ComfyUIwebextensions
n-styles.csv
و n-styles.csv.backup
في ComfyUIstyles
GPTcheckpoints
في ComfyUImodels
custom_nodes/ComfyUI-N-Nodes
git pull
تسمح العقدة LoadVideoAdvanced بتحميل ملف فيديو واستخراج الإطارات منه. تم تغيير الاسم من LoadVideo
إلى LoadVideoAdvanced
لتجنب التعارضات مع عقدة LoadVideo
المتحركة.
video
: حدد ملف الفيديو المراد تحميله.framerate
: اختر ما إذا كنت تريد الاحتفاظ بمعدل الإطارات الأصلي أو تقليل السرعة إلى النصف أو الربع.resize_by
: حدد كيفية تغيير حجم الإطارات - "لا شيء"، أو "الارتفاع"، أو "العرض".size
: الحجم المستهدف إذا تم تغيير الحجم حسب الارتفاع أو العرض.images_limit
: الحد من عدد الإطارات المراد استخراجها.batch_size
: حجم الدفعة لإطارات التشفير.starting_frame
: حدد الإطار الذي تريد البدء منه.autoplay
: حدد ما إذا كنت تريد تشغيل الفيديو تلقائيًا أم لا.use_ram
: استخدم ذاكرة الوصول العشوائي (RAM) بدلاً من القرص لفك ضغط إطارات الفيديو. IMAGES
: صور الإطار المستخرجة كموترات PyTorch.LATENT
: ناقلات كامنة فارغة.METADATA
: البيانات الوصفية للفيديو - عدد الإطارات في الثانية وعدد الإطارات.WIDTH:
عرض الإطار.HEIGHT
: ارتفاع الإطار.META_FPS
: معدل الإطارات.META_N_FRAMES
: عدد الإطارات.تستخرج العقدة الإطارات من فيديو الإدخال بمعدل الإطارات المحدد. يقوم بتغيير حجم الإطارات إذا تم اختياره وإعادتها كدفعات من موترات صور PyTorch جنبًا إلى جنب مع المتجهات الكامنة والبيانات الوصفية وأبعاد الإطار.
تأخذ عقدة SaveVideo الإطارات المستخرجة وتحفظها مرة أخرى كملف فيديو.
images
: تأطير الصور كموترات.METADATA
: البيانات الوصفية من عقدة LoadVideo.SaveVideo
: تبديل حفظ ملف الفيديو الناتج.SaveFrames
: تبديل حفظ الإطارات إلى مجلد.CompressionLevel
: مستوى ضغط PNG لحفظ الإطارات. يحفظ ملف الفيديو الناتج و/أو الإطارات المستخرجة.
تأخذ العقدة الإطارات والبيانات الوصفية المستخرجة ويمكنها حفظها كملف فيديو جديد و/أو صور إطار فردية. يمكن تكوين ضغط الفيديو وضغط إطار PNG. ملاحظة: إذا كنت تستخدم LoadVideo كمصدر للإطارات، فسيتم الحفاظ على صوت الملف الأصلي ولكن فقط في حالة تساوي image_limit و start_frame مع الصفر.
تسمح عقدة LoadFramesFromFolder بتحميل إطارات الصور من مجلد وإعادتها كدفعة.
folder
: المسار إلى المجلد الذي يحتوي على صور الإطار. يجب أن يكون بتنسيق png، مسمى برقم (على سبيل المثال 1.png أو حتى 0001.png). سيتم تحميل الصور بالتسلسل.fps
: إطارات في الثانية لتعيين الإطارات المحملة. IMAGES
: مجموعة من صور الإطارات المحملة كموترات PyTorch.METADATA
: البيانات الوصفية التي تحتوي على قيمة FPS المحددة.MAX_WIDTH
: الحد الأقصى لعرض الإطار.MAX_HEIGHT
: الحد الأقصى لارتفاع الإطار.FRAME COUNT
: عدد الإطارات في المجلد.PATH
: المسار إلى المجلد الذي يحتوي على صور الإطار.IMAGE LIST
: قائمة صور الإطارات الموجودة في المجلد (ليست قائمة حقيقية، مجرد سلسلة مقسومة على n).تقوم العقدة بتحميل جميع ملفات الصور من المجلد المحدد، وتحولها إلى موترات PyTorch، وتعيدها كموتر مجمع مع بيانات التعريف البسيطة التي تحتوي على قيمة FPS المحددة.
يتيح ذلك بسهولة تحميل مجموعة من الإطارات التي تم استخراجها وحفظها مسبقًا، على سبيل المثال، إعادة تحميلها ومعالجتها مرة أخرى. من خلال ضبط قيمة FPS، يمكن تفسير الإطارات بشكل صحيح على أنها تسلسل فيديو.
تسمح عقدة SetMetadataForSaveVideo بإعداد البيانات التعريفية لعقدة SaveVideo.
تسمح عقدة FrameInterpolator بالاستيفاء بين إطارات الفيديو المستخرجة لزيادة معدل الإطارات والحركة السلسة.
images
: صور الإطار المستخرجة كموترات.METADATA
: البيانات الوصفية من الفيديو - عدد الإطارات في الثانية وعدد الإطارات.multiplier
: العامل الذي من خلاله زيادة معدل الإطارات. IMAGES
: إطارات محرفة كموترات للصور.METADATA
: البيانات الوصفية المحدثة بمعدل إطارات جديد.تأخذ العقدة الإطارات والبيانات الوصفية المستخرجة كمدخلات. يستخدم نموذج الاستيفاء (RIFE) لإنشاء إطارات إضافية بين الإطارات بمعدل إطارات أعلى.
يتم ضرب معدل الإطارات الأصلي في البيانات التعريفية بقيمة multiplier
للحصول على معدل الإطارات المحرف الجديد.
يتم إرجاع الإطارات المحرفة كدفعة من موترات الصورة، إلى جانب البيانات الوصفية المحدثة التي تحتوي على معدل الإطارات الجديد.
يتيح ذلك زيادة معدل الإطارات لمقطع فيديو موجود لتحقيق حركة أكثر سلاسة وتشغيل أبطأ. يقوم نموذج الاستيفاء بإنشاء إطارات واقعية جديدة لملء الفجوات بدلاً من مجرد تكرار الإطارات الموجودة.
تم أخذ الرمز الأصلي من هنا
نظرًا لأن العقدة البدائية لها قيود في الروابط (على سبيل المثال في الوقت الذي أكتب فيه، لا يمكنك ربط "start_at_step" و"خطوات" من ksampler آخر معًا)، فقد قررت إنشاء متغيرات العقدة البسيطة هذه لتجاوز هذا القيد المتغيرات هي:
تم تصميم هذه العقد المخصصة لتعزيز إمكانيات إطار عمل ConfyUI من خلال تمكين إنشاء النص باستخدام نماذج GGUF GPT. يوفر ملف README هذا نظرة عامة على العقدتين المخصصتين واستخدامهما داخل ConfyUI.
يمكنك إضافة المسار extra_model_paths.yaml حيث يوجد نموذج GGUF الخاص بك بهذه الطريقة (مثال):
other_ui: base_path: I:\text-generation-webui GPTcheckpoints: models/
وإلا فإنه سيتم إنشاء مجلد GPTcheckpoints في المجلد النموذجي لـ ComfyUI حيث يمكنك وضع نماذج .gguf الخاصة بك.
تم أيضًا إنشاء مجلدين داخل دليل "Lava" في مجلد "GPTcheckpoints" لنموذج LLava:
clips
: هذا المجلد مخصص لتخزين المقاطع الخاصة بنماذج LLava الخاصة بك (عادةً، الملفات التي تبدأ بـ mm في المستودع). models
: هذا المجلد مخصص لتخزين نماذج LLava.
تدعم هذه العقد في الواقع 4 نماذج مختلفة:
يمكن تنزيل نماذج GGUF من Huggingface Hub
هنا مقطع فيديو لمثال لكيفية استخدام نماذج GGUF بواسطة boricuapab
فيما يلي قائمة صغيرة بالنماذج التي تدعمها هذه العقد:
لافا 1.5 7 بي لافا 1.5 13 بي لافا 1.6 ميسترال 7 بي باكلافا نوس هيرميس 2 فيجن
####مثال مع نموذج لافا:
سيتم تنزيل النموذج تلقائيًا عند تشغيله لأول مرة. على أي حال، فهو متاح هنا الكود المأخوذ من هذا المستودع
####مثال على نموذج Moondream:
سيتم تنزيل النموذج تلقائيًا عند تشغيله لأول مرة. على أي حال، فهو متاح هنا الكود المأخوذ من هذا المستودع
####مثال على نموذج Joytag:
تعد عقدة GPTLoaderSimple
مسؤولة عن تحميل نقاط فحص نموذج GPT وإنشاء مثيل لمكتبة Llama لإنشاء النص. يوفر واجهة لتكوين طبقات GPU وعدد الخيوط والحد الأقصى للسياق لإنشاء النص.
ckpt_name
: حدد اسم نقطة تفتيش GPT من الخيارات المتاحة (سيتم تنزيل Joytag و Moondream تلقائيًا عند الاستخدام لأول مرة).gpu_layers
: حدد عدد طبقات GPU المراد استخدامها (الافتراضي: 27).n_threads
: حدد عدد المواضيع لإنشاء النص (الافتراضي: 8).max_ctx
: حدد الحد الأقصى لطول السياق لإنشاء النص (الافتراضي: 2048). تقوم العقدة بإرجاع مثيل لمكتبة Llama (MODEL) والمسار إلى نقطة التفتيش المحملة (STRING).
تسهل عقدة GPTSampler
إنشاء النص باستخدام نماذج GPT بناءً على موجه الإدخال ومعلمات الإنشاء المختلفة. فهو يسمح لك بالتحكم في جوانب مثل درجة الحرارة وأخذ العينات من أعلى مستوى والعقوبات والمزيد.
prompt
: أدخل موجه الإدخال لإنشاء النص.image
: إدخال الصورة لنماذج Joytag و Moondream و llava.model
: اختر نموذج GPT لاستخدامه في إنشاء النص.max_tokens
: قم بتعيين الحد الأقصى لعدد الرموز المميزة في النص الذي تم إنشاؤه (الافتراضي: 128).temperature
: قم بتعيين معلمة درجة الحرارة للعشوائية (الافتراضي: 0.7).top_p
: اضبط احتمالية top-p لأخذ عينات النواة (الافتراضي: 0.5).logprobs
: حدد عدد احتمالات السجل للإخراج (الافتراضي: 0).echo
: تمكين أو تعطيل طباعة موجه الإدخال إلى جانب النص الذي تم إنشاؤه.stop_token
: حدد الرمز المميز الذي يتوقف عنده إنشاء النص.frequency_penalty
، presence_penalty
، repeat_penalty
: التحكم في عقوبات توليد الكلمات.top_k
: قم بتعيين الرموز المميزة لـ top-k التي يجب مراعاتها أثناء الإنشاء (الافتراضي: 40).tfs_z
: اضبط عامل قياس درجة الحرارة للعينات الأكثر تكرارًا (الافتراضي: 1.0).print_output
: تمكين أو تعطيل طباعة النص الذي تم إنشاؤه إلى وحدة التحكم.cached
: اختر ما إذا كنت تريد استخدام الإنشاء المخبأ (الافتراضي: لا).prefix
suffix
: حدد نصًا لإضافته في المقدمة وإلحاقه بالموجه.max_tags
: يؤثر هذا فقط على الحد الأقصى لعدد العلامات التي تم إنشاؤها بواسطة Joydag. تقوم العقدة بإرجاع النص الذي تم إنشاؤه مع تمثيل سهل الاستخدام لواجهة المستخدم.
تعد عقدة ImagePadForOutpaintingAdvanced
بديلاً لعقدة ImagePadForOutpainting
التي تطبق التقنية التي تظهر في هذا الفيديو تحت قناع الطلاء الخارجي. تم أخذ جزء تصحيح الألوان من هذه العقدة المخصصة من Sipherxyz
image
: إدخال الصورة.left
: بكسل للتمديد من اليسار،top
: بكسل للتمديد من الأعلى،right
: بكسل للتمديد من اليمين،bottom
: بكسل للتمديد من الأسفل.feathering
: قوة الريشnoise
: مزج القوة من الضوضاء والحدود المنسوخةpixel_size
: ما هو حجم البكسل في التأثير المنقطةpixel_to_copy
: عدد البكسلات المراد نسخها (من كل جانب)temperature
: إعداد تصحيح اللون الذي يتم تطبيقه على جزء القناع فقط.hue
: إعداد تصحيح الألوان الذي يتم تطبيقه على جزء القناع فقط.brightness
: إعداد تصحيح الألوان الذي يتم تطبيقه على جزء القناع فقط.contrast
: إعداد تصحيح الألوان الذي يتم تطبيقه فقط على جزء القناع.saturation
: إعداد تصحيح اللون الذي يتم تطبيقه على جزء القناع فقط.gamma
: إعداد تصحيح الألوان الذي يتم تطبيقه على جزء القناع فقط. تقوم العقدة بإرجاع الصورة المعالجة والقناع.
تقوم العقدة DynamicPrompt
بإنشاء المطالبات من خلال دمج الموجه الثابت مع التحديد العشوائي للعلامات من الموجه المتغير. يتيح ذلك إنشاء مطالبات مرنة وديناميكية لحالات الاستخدام المختلفة.
variable_prompt
: أدخل موجه المتغير لاختيار العلامة.cached
: اختر ما إذا كنت تريد تخزين الموجه الذي تم إنشاؤه مؤقتًا (الافتراضي: لا).number_of_random_tag
: اختر بين "Fixed" و"Random" لعدد العلامات العشوائية المراد تضمينها.fixed_number_of_random_tag
: إذا كان number_of_random_tag
إذا كان "ثابتًا" فحدد عدد العلامات العشوائية المراد تضمينها (الافتراضي: 1).fixed_prompt
(اختياري): أدخل الموجه الثابت لإنشاء الموجه النهائي. تقوم العقدة بإرجاع الموجه الذي تم إنشاؤه، وهو عبارة عن مزيج من الموجه الثابت والعلامات العشوائية المحددة.
variable_prompt
مع فصل العلامة بفواصل، ويكون fixed_prompt
اختياريًا تعد عقدة CLIP Text Encode Advanced
بديلاً لعقدة CLIP Text Encode
القياسية. وهو يوفر دعمًا لأنماط إضافة/استبدال/حذف، مما يسمح بتضمين كل من المطالبات الإيجابية والسلبية داخل عقدة واحدة.
يسمى ملف النمط الأساسي n-styles.csv
ويقع في المجلد ComfyUIstyles
. يتبع ملف الأنماط نفس تنسيق ملف styles.csv
الحالي المستخدم في A1111 (في وقت كتابة هذا التقرير).
ملاحظة: هذه الملاحظة تجريبية ولا تزال تحتوي على الكثير من الأخطاء
clip
: مقطع الإدخالstyle
: سيقوم تلقائيًا بملء المطالبات الإيجابية والسلبية بناءً على النمط المختار positive
: ظروف إيجابيةnegative
: ظروف سلبية لا تتردد في المساهمة في هذا المشروع من خلال الإبلاغ عن المشكلات أو اقتراح التحسينات. افتح مشكلة أو أرسل طلب سحب على مستودع GitHub.
هذا المشروع مرخص بموجب ترخيص MIT. راجع ملف الترخيص للحصول على التفاصيل.