Набор пользовательских узлов для ComfyUI, включающий узлы целочисленных, строковых и плавающих переменных, узлы GPT и видеоузлы.
Важный
Эти узлы были протестированы в основном в Windows в среде по умолчанию, предоставленной ComfyUI, и в среде, созданной блокнотом для бумажного пространства, в частности, с образом docker cyberes/gradient-base-py3.10:latest. Любая другая среда не тестировалась.
Клонируйте репозиторий: git clone https://github.com/Nuked88/ComfyUI-N-Nodes.git
в ваш каталог custom_nodes
ComfyUI
ВАЖНО: Если вам нужны узлы GPT на графическом процессоре, вам необходимо запустить bat-файлы install_dependenty . Существует 2 версии: install_dependent_ggml_models.bat для старых моделей ggmlv3 и install_dependent_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. Я также отказался от поддержки моделей GGMLv3, поскольку все известные модели уже должны были переключиться на последнюю версию GGUF.
Примечание
С 02.14.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
: использовать ОЗУ вместо диска для распаковки видеокадров. IMAGES
: Извлеченные изображения кадров в виде тензоров PyTorch.LATENT
: Пустые скрытые векторы.METADATA
: Метаданные видео — частота кадров и количество кадров.WIDTH:
Ширина рамки.HEIGHT
: Высота рамы.META_FPS
: Частота кадров.META_N_FRAMES
: Количество кадров.Узел извлекает кадры из входного видео с указанной частотой кадров. Он изменяет размеры кадров, если выбрано, и возвращает их в виде пакетов тензоров изображений PyTorch вместе со скрытыми векторами, метаданными и размерами кадров.
Узел SaveVideo принимает извлеченные кадры и сохраняет их обратно в виде видеофайла.
images
: кадрируйте изображения в виде тензоров.METADATA
: метаданные из узла LoadVideo.SaveVideo
: переключить сохранение выходного видеофайла.SaveFrames
: переключить сохранение кадров в папку.CompressionLevel
: уровень сжатия PNG для сохранения кадров. Сохраняет выходной видеофайл и/или извлеченные кадры.
Узел принимает извлеченные кадры и метаданные и может сохранять их как новый видеофайл и/или отдельные изображения кадров. Можно настроить сжатие видео и сжатие PNG кадров. ПРИМЕЧАНИЕ. Если вы используете LoadVideo в качестве источника кадров, звук исходного файла будет сохранен, но только в том случае, если images_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/
В противном случае в папке модели ComfyUI будет создана папка GPTcheckpoints, куда вы сможете разместить свои модели .gguf.
Две папки также были созданы в каталоге «Llava» в папке «GPTcheckpoints» для модели LLava:
clips
: эта папка предназначена для хранения клипов для ваших моделей LLava (обычно это файлы, которые в репозитории начинаются с mm ). models
: эта папка предназначена для хранения моделей LLava.
Эти узлы фактически поддерживают 4 разные модели:
Модели GGUF можно загрузить с Huggingface Hub.
ЗДЕСЬ видео с примером использования моделей GGUF от boricuapab.
Вот небольшой список моделей, поддерживаемых этими узлами:
ЛлаВа 1,5 7Б ЛлаВа 1,5 13Б ЛлаВа 1,6 Мистраль 7Б БакЛаВа Ноус Гермес 2 Видение
####Пример с моделью Llava:
Модель будет автоматически загружена при первом запуске. В любом случае, он доступен ЗДЕСЬ. Код взят из этого репозитория.
####Пример с моделью Moondream:
Модель будет автоматически загружена при первом запуске. В любом случае, он доступен ЗДЕСЬ. Код взят из этого репозитория.
####Пример с моделью Joytag:
Узел GPTLoaderSimple
отвечает за загрузку контрольных точек модели GPT и создание экземпляра библиотеки Llama для генерации текста. Он предоставляет интерфейс для настройки слоев графического процессора, количества потоков и максимального контекста для генерации текста.
ckpt_name
: выберите имя контрольной точки GPT из доступных вариантов (joytag и Moondream будут автоматически загружены при первом использовании).gpu_layers
: укажите количество слоев графического процессора, которые будут использоваться (по умолчанию: 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
: установите топ-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_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. Подробности смотрите в файле ЛИЦЕНЗИИ.