ComfyUI-Advanced-ControlNet
Узлы для планирования мощности ControlNet по временным шагам и пакетным латентным состояниям, а также для применения пользовательских весов и масок внимания. Узлы ControlNet здесь полностью поддерживают скользящую выборку контекста, подобную той, которая используется в узлах ComfyUI-AnimateDiff-Evolved. В настоящее время поддерживаются ControlNets, T2IAdapters, ControlLoRA, ControlLLLite, SparseCtrls, SVD-ControlNets и Reference.
Пользовательские веса позволяют копировать функцию «Мое приглашение важнее» расширения Auto1111 sd-webui ControlNet с помощью мягких весов, а функцией «ControlNet важнее» можно детально управлять, изменяя uncond_multiplier для тех же мягких весов.
Препроцессоры ControlNet доступны через узлы comfyui_controlnet_aux.
Функции
- Временной шаг и планирование скрытой силы
- Маски внимания
- Реплицируйте функцию «Мое приглашение важнее» из расширения sd-webui-controlnet с помощью Soft Weights и разрешите настройку мягкости с помощью base_multiplier.
- Репликация функции «ControlNet важнее» из расширения sd-webui-controlnet через uncond_multiplier на мягких весах.
- uncond_multiplier=0.0 дает идентичные результаты функции auto1111, но значения от 0,0 до 1,0 можно без проблем использовать для детального управления параметром.
- Поддержка ControlNet, T2IAdapter и ControlLoRA для скользящих контекстных окон.
- Поддержка ControlLLLite
- Поддержка SparseCtrl
- Поддержка SVD-ControlNet
- Стабильные сети управления диффузией видео, обученные CiaraRowles : Depth, Lineart
- Справочная поддержка
- Поддерживает режимы
reference_attn
, reference_adain
и refrence_adain+attn
. style_fidelity
и ref_weight
эквивалентны style_fidelity и control_weight в Auto1111 соответственно, а сила Apply ControlNet — это баланс между результатом под влиянием ссылки и результатом без ссылки. Существует также узел Reference ControlNet (Finetune), который позволяет отдельно настраивать style_fidelity, вес и силу attn и adain.
Оглавление:
- Объяснение планирования
- Узлы
- Использование (скоро заполню это поле)
Объяснение планирования
Двумя основными концепциями планирования являются ключевые кадры временного шага и скрытые ключевые кадры .
Ключевые кадры временного шага содержат значения, которые определяют настройки управляющей сети, и начинают действовать на основе их start_percent, который соответствует проценту процесса выборки. Они могут содержать маски для сильных сторон каждого скрытого, control_net_weights и latent_keyframes (конкретные сильные стороны для каждого скрытого), все это необязательно.
Скрытые ключевые кадры определяют силу контрольной сети для конкретных скрытых событий — все, что они содержат, это пакетный индекс скрытого объекта и силу, которую контрольная сеть должна применять для этого скрытого. По сути, скрытые ключевые кадры оказывают тот же эффект, что и однородная маска с выбранным значением силы.
Узлы
Представленные здесь узлы ControlNet — это узлы Apply Advanced ControlNet и Load Advanced ControlNet Model (или diff). Ванильные узлы ControlNet также совместимы и могут использоваться практически взаимозаменяемо — с той лишь разницей, что хотя бы один из этих узлов должен использоваться для использования расширенных версий ControlNet (важно для скользящей выборки контекста, например, с AnimateDiff-Evolved). .
Ключ:
- ? - необходимые входные данные
- ? - дополнительные входы
- ? - запускаются как виджеты, могут быть преобразованы во входные данные
- ? - дополнительный ввод/вывод, но не рекомендуется использовать без необходимости
- ? - выход
Применить расширенную ControlNet
Те же функции, что и у обычного узла Apply Advanced ControlNet (Advanced), за исключением добавленных к нему функций Advanced ControlNet. Автоматически преобразует любые загрузчики ControlNet из ControlNet в расширенные версии.
Входы
- ? позитивный : обусловленность (позитивный).
- ? негативный : обусловленность (негативный).
- ? control_net : загруженная сеть управления; будет автоматически преобразован в расширенную версию этим узлом, если это поддерживаемый тип.
- ? image : изображения для управления управляющими сетями — если загруженная управляющая сеть требует этого, они должны предварительно обработать изображения. Если предоставлено одно изображение, оно будет использоваться для всех скрытых изображений. Если предоставлено больше изображений, будет использоваться каждое изображение отдельно для каждого скрытого изображения. Если изображений недостаточно для соответствия скрытому количеству, изображения будут повторяться с самого начала, чтобы соответствовать функциям стандартной сети ControlNet.
- ? Mask_optional : маски внимания, применяемые к управляющим сетям; по сути, решает, к какой части изображения применить управляющую сеть (и относительную силу, если маска не двоичная). Как и при вводе изображения, если вы предоставляете более одной маски, каждая из них может применяться к разным скрытым.
- ? timestep_kf : ключевые кадры временных шагов для управления эффектом управляющей сети на этапах выборки.
- ? latent_kf_override : переопределение скрытых ключевых кадров, полезно, если другие функции ключевых кадров временного шага не нужны. ПРИМЕЧАНИЕ. Этот скрытый ключевой кадр будет применяться ко ВСЕМ временным шагам, независимо от того, есть ли другие скрытые ключевые кадры, прикрепленные к подключенным ключевым кадрам временных шагов.
- ? Weights_override : переопределение весов, полезно, если другие функции ключевых кадров временных шагов не нужны. ПРИМЕЧАНИЕ. Этот вес будет применяться ко ВСЕМ временным шагам, независимо от того, есть ли другие веса, прикрепленные к подключенным ключевым кадрам временных шагов.
- ? сила : сила сети управления; 1.0 — полная сила, 0.0 — никакого эффекта.
- ? start_percent : процент шага выборки, при котором должна начать применяться controlnet – независимо от того, какой start_percent установлен для ключевых кадров временного шага, они не вступят в силу, пока не будет достигнут этот start_percent.
- ? stop_percent : процент шага выборки, при котором controlnet должен прекратить применение - независимо от того, какой start_percent установлен для ключевых кадров временного шага, они не вступят в силу после достижения этого end_percent.
Выходы
- ? положительный : кондиционирование (положительное) с применением сетей управления
- ? отрицательный : кондиционирование (негативное) с применением сетей управления
Загрузить расширенную модель ControlNet
Загружает модель ControlNet и преобразует ее в расширенную версию, поддерживающую все функции этого репозитория. При использовании с узлом Apply Advanced ControlNet нет смысла использовать ввод timestep_keyframe на этом узле — вместо этого используйте timestep_kf на узле Apply.
Входы
- ? timestep_keyframe : необязательный и, вероятно, ненужный ввод, позволяющий ControlNet использовать выбранные timestep_keyframes — не следует использовать, если в этом нет необходимости. Полезно, если этот узел не подключен к узлу Apply Advanced ControlNet , но все же требуется использовать ключевой кадр временного шага или использовать выходные данные TK_SHORTCUT из ControlWeights в том же сценарии. Будет переопределен входом timestep_kf на узле Apply Advanced ControlNet , если он там предусмотрен.
- ? model : модель для подключения к дифференциальной версии узла. Некоторые сети управления предназначены для получения модели; если вы не знаете, что это делает, вы, вероятно, не захотите использовать дифференциальную версию узла.
Выходы
- ? CONTROL_NET : загружена Advanced ControlNet.
Ключевой кадр временного шага
Узел планирования по временным шагам (шагам выборки) на основе набора start_percent. Объединение ключевых кадров временных шагов позволяет ControlNet планировать этапы выборки (в процентах) с помощью расписания ключевых кадров временных шагов.
Входы
- ? prev_timestep_kf : используется для объединения ключевых кадров временного шага для создания расписания. Порядок не имеет значения: ключевые кадры временных шагов автоматически сортируются по их начальным процентам. Любой ключевой кадр временного шага, содержащийся в prev_timestep_keyframe, который содержит тот же start_percent, что и ключевой кадр временного шага, будет перезаписан.
- ? cn_weights : веса, которые будут применяться к сети управления, пока действует этот ключевой кадр временного шага. Должен быть совместим с загруженной управляющей сетью, иначе выдаст ошибку, объясняющую, какие типы веса совместимы. Если inherit_missing имеет значение True и не передается control_net_weight, будет предпринята попытка повторно использовать последние использованные веса в расписании ключевых кадров временного шага. Если узел Apply Advanced ControlNet имеет Weight_override, Weight_override будет использоваться во время выборки вместо control_net_weight.
- ? latent_keyframe : скрытые ключевые кадры, которые будут применяться к сети управления, пока действует этот ключевой кадр временного шага. Если inherit_missing имеет значение True, и никакой latent_keyframe не передается, будет предпринята попытка повторно использовать последние использованные веса в расписании ключевых кадров временного шага. Если узел Apply Advanced ControlNet имеет latent_kf_override, latent_lf_override будет использоваться во время выборки вместо latent_keyframe.
- ? Mask_optional : маски внимания, применяемые к управляющим сетям; по сути, решает, к какой части изображения применить управляющую сеть (и относительную силу, если маска не двоичная). То же, что и маска_optional в узле Apply Advanced ControlNet, можно применять либо одну маску ко всем скрытым объектам, либо отдельные маски для каждого скрытого значения. Если inherit_missing имеет значение True и маска_optional не передана, будет предпринята попытка повторно использовать последнюю использованную маску_optional в расписании ключевых кадров временного шага. Он НЕ переопределяется параметром Mask_optional на узле Apply Advanced ControlNet; будут использоваться вместе.
- ? start_percent : процент шага выборки, при котором этот ключевой кадр временного шага подходит для использования. Действует как «ключ» для ключевого кадра временного шага в расписании ключевых кадров временного шага.
- ? сила : сила сети управления; умножает controlnet на это значение, по сути, применяемое вместе с силой на узле Apply ControlNet. Если установлено значение 0,0, это не будет иметь никакого эффекта в течение действия этого ключевого кадра временного шага и увеличит скорость выборки, не выполняя никакой работы.
- ? null_latent_kf_strength : сила, назначаемая скрытым объектам, которые не учтены в переданных в latent_keyframes. Не имеет никакого эффекта, если во время выборки в latent_keyframes не переданы никакие latent_keyframes или в latent_keyframes не учтены никакие пакетные индексы.
- ? inherit_missing : определяет, следует ли повторно использовать значения из предыдущих ключевых кадров Timestep для дополнительных значений (control_net_weights, latent_keyframe и Mask_option), которые не включены в этот TimestepKeyframe. Чтобы наследовать только определенные входные данные, используйте входные данные по умолчанию.
- ? гарантировать_шаги : если значение равно 1 или больше, даже если start_percent ключевого кадра временного шага перед этим в расписании ближе к текущему проценту выборки, этот ключевой кадр временного шага все равно будет использоваться для указанного количества шагов перед переходом к следующему выбранному ключевому кадру временного шага в следующий шаг. Независимо от того, используется ли ключевой кадр Timestep или нет, его входные данные все равно будут учитываться для целей inherit_missing.
Выходы
- ? TIMESTEP_KF : созданный ключевой кадр временного шага, который можно либо связать с другим, либо ввести во входной ключевой кадр временного шага.
Интерполяция ключевого кадра временного шага
Позволяет создать ключевой кадр временного шага с интерполированными значениями силы в заданном процентном диапазоне. (Первый сгенерированный ключевой кадр будет иметь гарантированный_шаг = 1, остальные будут иметь гарантийный_шаг = 0).
Входы
- ? prev_timestep_kf : используется для объединения ключевых кадров временного шага для создания расписания. Порядок не имеет значения: ключевые кадры временных шагов автоматически сортируются по их начальным процентам. Любой ключевой кадр временного шага, содержащийся в prev_timestep_keyframe, который содержит тот же start_percent, что и ключевой кадр временного шага, будет перезаписан.
- ? cn_weights : веса, которые будут применяться к сети управления, пока действует этот ключевой кадр временного шага. Должен быть совместим с загруженной управляющей сетью, иначе выдаст ошибку, объясняющую, какие типы веса совместимы. Если inherit_missing имеет значение True и не передается control_net_weight, будет предпринята попытка повторно использовать последние использованные веса в расписании ключевых кадров временного шага. Если узел Apply Advanced ControlNet имеет Weight_override, Weight_override будет использоваться во время выборки вместо control_net_weight.
- ? latent_keyframe : скрытые ключевые кадры, которые будут применяться к сети управления, пока действует этот ключевой кадр временного шага. Если inherit_missing имеет значение True, и никакой latent_keyframe не передается, будет предпринята попытка повторно использовать последние использованные веса в расписании ключевых кадров временного шага. Если узел Apply Advanced ControlNet имеет latent_kf_override, latent_lf_override будет использоваться во время выборки вместо latent_keyframe.
- ? Mask_optional : маски внимания, применяемые к управляющим сетям; по сути, решает, к какой части изображения применить управляющую сеть (и относительную силу, если маска не двоичная). То же, что и маска_optional в узле Apply Advanced ControlNet, можно применять либо одну маску ко всем скрытым объектам, либо отдельные маски для каждого скрытого значения. Если inherit_missing имеет значение True и маска_optional не передана, будет предпринята попытка повторно использовать последнюю использованную маску_optional в расписании ключевых кадров временного шага. Он НЕ переопределяется параметром Mask_optional на узле Apply Advanced ControlNet; будут использоваться вместе.
- ? start_percent : процент шага выборки, при котором первый сгенерированный ключевой кадр временного шага может быть использован.
- ? end_percent : процент шага выборки, при котором последний сгенерированный ключевой кадр временного шага может быть использован.
- ? Strength_start : сила ключевого кадра временного шага в начале диапазона.
- ? Strength_end : сила ключевого кадра временного шага в конце диапазона.
- ? интерполяция : метод интерполяции.
- ? интервалы : общее количество ключевых кадров, которые нужно сгенерировать — начальный_процент первого будет равен start_percent, а начальный_процент последнего будет равен end_percent.
- ? null_latent_kf_strength : сила, назначаемая скрытым объектам, которые не учтены в переданных в latent_keyframes. Не имеет никакого эффекта, если во время выборки в latent_keyframes не были переданы никакие latent_keyframes или в latent_keyframes не были учтены пакетные индексы.
- ? inherit_missing : определяет, следует ли повторно использовать значения из предыдущих ключевых кадров Timestep для дополнительных значений (control_net_weights, latent_keyframe и Mask_option), которые не включены в этот TimestepKeyframe. Чтобы наследовать только определенные входные данные, используйте входные данные по умолчанию.
- ? print_keyframes : если True, будут распечатаны ключевые кадры временного шага, сгенерированные этим узлом, в целях отладки.
Выходы
- ? TIMESTEP_KF : созданный ключевой кадр временного шага, который можно либо связать с другим, либо ввести во входной ключевой кадр временного шага.
Ключевой кадр временного шага из списка
Позволяет создавать ключевой кадр временного шага с помощью списка плавающих чисел, например, с помощью расписания пакетных значений из узлов ComfyUI_FizzNodes. (Первый сгенерированный ключевой кадр будет иметь гарантированный_шаг = 1, остальные будут иметь гарантийный_шаг = 0).
Входы
- ? prev_timestep_kf : используется для объединения ключевых кадров временного шага для создания расписания. Порядок не имеет значения: ключевые кадры временных шагов автоматически сортируются по их начальным процентам. Любой ключевой кадр временного шага, содержащийся в prev_timestep_keyframe, который содержит тот же start_percent, что и ключевой кадр временного шага, будет перезаписан.
- ? cn_weights : веса, которые будут применяться к сети управления, пока действует этот ключевой кадр временного шага. Должен быть совместим с загруженной управляющей сетью, иначе выдаст ошибку, объясняющую, какие типы веса совместимы. Если inherit_missing имеет значение True и не передается control_net_weight, будет предпринята попытка повторно использовать последние использованные веса в расписании ключевых кадров временного шага. Если узел Apply Advanced ControlNet имеет Weight_override, Weight_override будет использоваться во время выборки вместо control_net_weight.
- ? latent_keyframe : скрытые ключевые кадры, которые будут применяться к сети управления, пока действует этот ключевой кадр временного шага. Если inherit_missing имеет значение True, и никакой latent_keyframe не передается, будет предпринята попытка повторно использовать последние использованные веса в расписании ключевых кадров временного шага. Если узел Apply Advanced ControlNet имеет latent_kf_override, latent_lf_override будет использоваться во время выборки вместо latent_keyframe.
- ? Mask_optional : маски внимания, применяемые к управляющим сетям; по сути, решает, к какой части изображения применить управляющую сеть (и относительную силу, если маска не двоичная). То же, что и маска_optional в узле Apply Advanced ControlNet, можно применять либо одну маску ко всем скрытым объектам, либо отдельные маски для каждого скрытого значения. Если inherit_missing имеет значение True и маска_optional не передана, будет предпринята попытка повторно использовать последнюю использованную маску_optional в расписании ключевых кадров временного шага. Он НЕ переопределяется параметром Mask_optional на узле Apply Advanced ControlNet; будут использоваться вместе.
- ? float_strengths : список плавающих значений, который будет соответствовать силе каждого ключевого кадра временного шага; первому будет присвоено значение start_percent, последнему будет присвоено значение end_percent, а остальные будут линейно распределены между ними.
- ? start_percent : процент шага выборки, при котором первый сгенерированный ключевой кадр временного шага может быть использован.
- ? end_percent : процент шага выборки, при котором последний сгенерированный ключевой кадр временного шага может быть использован.
- ? null_latent_kf_strength : сила, назначаемая скрытым объектам, которые не учтены в переданных в latent_keyframes. Не имеет никакого эффекта, если во время выборки в latent_keyframes не были переданы никакие latent_keyframes или в latent_keyframes не были учтены пакетные индексы.
- ? inherit_missing : определяет, следует ли повторно использовать значения из предыдущих ключевых кадров Timestep для дополнительных значений (control_net_weights, latent_keyframe и Mask_option), которые не включены в этот TimestepKeyframe. Чтобы наследовать только определенные входные данные, используйте входные данные по умолчанию.
- ? print_keyframes : если True, будут распечатаны ключевые кадры временного шага, сгенерированные этим узлом, в целях отладки.
Выходы
- ? TIMESTEP_KF : созданный ключевой кадр временного шага, который можно либо связать с другим, либо ввести во входной ключевой кадр временного шага.
Скрытый ключевой кадр
Единственный скрытый ключевой кадр, выбирает силу для определенного пакета_index. Если пакетный_индекс отсутствует во время выборки, он просто не будет иметь никакого эффекта. Может быть связан с любым другим узлом типа «Скрытый ключевой кадр» для создания расписания скрытых ключевых кадров.
Входы
- ? prev_latent_kf : используется для объединения скрытых ключевых кадров для создания расписания. Если скрытый ключевой кадр, содержащийся в prev_latent_keyframes, имеет тот же пакетный индекс, что и этот скрытый ключевой кадр, они будут иметь приоритет над значением этого узла.
- ? пакетный_индекс : индекс скрытого содержимого в пакете, к которому применяется сила контрольной сети. Действует как «ключ» для скрытого ключевого кадра в расписании скрытых ключевых кадров.
- ? Strength : сила контрольной сети, применяемая к соответствующему скрытому.
Выходы
- ? LATENT_KF : созданный скрытый ключевой кадр, который можно либо связать с другим, либо с входом скрытого ключевого кадра.
Скрытая группа ключевых кадров
Позволяет создавать скрытые ключевые кадры с помощью отдельных индексов или диапазонов в стиле Python.
Входы
- ? prev_latent_kf : используется для объединения скрытых ключевых кадров для создания расписания. Если какие-либо скрытые ключевые кадры, содержащиеся в prev_latent_keyframes, имеют тот же пакетный индекс, что и этот скрытый ключевой кадр, они будут иметь приоритет над версией этого узла.
- ? latent_optional : ожидаемые скрытые значения, которые будут переданы для выборки; требуется только в том случае, если вы хотите использовать отрицательные индексы (будут автоматически преобразованы в реальные значения).
- ? index_strengths : строковый список индексов или диапазоны индексов в стиле Python, которым можно назначить уровни. Если передан latent_optional, он может содержать отрицательные индексы или диапазоны, содержащие отрицательные числа, в стиле Python. Различные индексы должны быть разделены запятыми. Отдельные скрытые значения могут быть указаны с помощью
batch_index=strength
, например 0=0.9
. Диапазоны можно указать с помощью start_index_inclusive:end_index_exclusive=strength
, например 0:8=strength
. Отрицательные индексы возможны, когда latents_optional имеет входные данные со строкой, такой как 0,-4=0.25
. - ? print_keyframes : если True, будут распечатаны скрытые ключевые кадры, сгенерированные этим узлом, в целях отладки.
Выходы
- ? LATENT_KF : созданный скрытый ключевой кадр, который можно либо связать с другим, либо с входом скрытого ключевого кадра.
Скрытая интерполяция ключевых кадров
Позволяет создавать скрытые ключевые кадры с интерполированными значениями в диапазоне.
Входы
- ? prev_latent_kf : используется для объединения скрытых ключевых кадров для создания расписания. Если какие-либо скрытые ключевые кадры, содержащиеся в prev_latent_keyframes, имеют тот же пакетный индекс, что и этот скрытый ключевой кадр, они будут иметь приоритет над версией этого узла.
- ? пакетный_индекс_из : включен стартовый пакетный_индекс диапазона.
- ? пакетный_индекс_то : конец пакетного_индекса диапазона, исключенный (диапазон в стиле Python).
- ? Strength_from : начальная сила интерполяции.
- ? Strength_to : конечная сила интерполяции.
- ? интерполяция : метод интерполяции.
- ? print_keyframes : если True, будут распечатаны скрытые ключевые кадры, сгенерированные этим узлом, в целях отладки.
Выходы
- ? LATENT_KF : созданный скрытый ключевой кадр, который можно либо связать с другим, либо с входом скрытого ключевого кадра.
Скрытый ключевой кадр из списка
Позволяет создавать скрытые ключевые кадры с помощью списка плавающих элементов, например, с помощью расписания пакетных значений из узлов ComfyUI_FizzNodes.
Входы
- ? prev_latent_kf : используется для объединения скрытых ключевых кадров для создания расписания. Если какие-либо скрытые ключевые кадры, содержащиеся в prev_latent_keyframes, имеют тот же пакетный индекс, что и этот скрытый ключевой кадр, они будут иметь приоритет над версией этого узла.
- ? float_strengths : список плавающих значений, который будет соответствовать силе каждого скрытого ключевого кадра; Batch_index — это индекс каждого значения с плавающей запятой в списке.
- ? print_keyframes : если True, будут распечатаны скрытые ключевые кадры, сгенерированные этим узлом, в целях отладки.
Выходы
- ? LATENT_KF : созданный скрытый ключевой кадр, который можно либо связать с другим, либо с входом скрытого ключевого кадра.
Есть больше узлов для документирования и отображения использования — скоро добавим это! TODO