ComfyUI-Advanced-ControlNet
Nodos para programar la intensidad de ControlNet en intervalos de tiempo y latentes por lotes, además de aplicar pesos personalizados y máscaras de atención. Los nodos ControlNet aquí admiten totalmente el muestreo de contexto deslizante, como el que se usa en los nodos ComfyUI-AnimateDiff-Evolved. Actualmente es compatible con ControlNets, T2IAdapters, ControlLoRAs, ControlLLLite, SparseCtrls, SVD-ControlNets y Reference.
Los pesos personalizados permiten la replicación de la función "Mi mensaje es más importante" de la extensión ControlNet sd-webui de Auto1111 a través de pesos blandos, y la función "ControlNet es más importante" se puede controlar de forma granular cambiando el uncond_multiplier en los mismos pesos blandos.
Los preprocesadores ControlNet están disponibles a través de los nodos cómodosui_controlnet_aux.
Características
- Programación de pasos de tiempo y fuerza latente
- Máscaras de atención
- Replica la característica "Mi mensaje es más importante" de la extensión sd-webui-controlnet a través de Soft Weights y permite modificar la suavidad a través de base_multiplier
- Replicar la característica "ControlNet es más importante" de la extensión sd-webui-controlnet a través de uncond_multiplier en Soft Weights
- uncond_multiplier=0.0 proporciona resultados idénticos a los de la función auto1111, pero los valores entre 0,0 y 1,0 se pueden usar sin problemas para controlar granularmente la configuración.
- Compatibilidad con ControlNet, T2IAdapter y ControlLoRA para ventanas contextuales deslizantes
- Soporte ControlLLLite
- Soporte de SparseCtrl
- Soporte SVD-ControlNet
- Redes de control de difusión de video estables entrenadas por CiaraRowles : profundidad, arte lineal
- Soporte de referencia
- Admite los modos
reference_attn
, reference_adain
y refrence_adain+attn
. style_fidelity
y ref_weight
son equivalentes a style_fidelity y control_weight en Auto1111, respectivamente, y la fuerza de Apply ControlNet es el equilibrio entre el resultado influenciado por referencia y el resultado sin referencia. También hay un nodo Reference ControlNet (Finetune) que permite ajustar style_fidelity, peso y fuerza de attn y adain por separado.
Tabla de contenido:
- Explicación de programación
- Nodos
- Uso (lo completaremos pronto)
Explicación de programación
Los dos conceptos centrales para la programación son los fotogramas clave de paso de tiempo y los fotogramas clave latentes .
Los fotogramas clave de paso de tiempo contienen los valores que guían la configuración de un controlnet y comienzan a tener efecto en función de su porcentaje de inicio, que corresponde al porcentaje del proceso de muestreo. Pueden contener máscaras para las fortalezas de cada latente, control_net_weights y latent_keyframes (fortalezas específicas para cada latente), todas opcionales.
Los fotogramas clave latentes determinan la fuerza del controlnet para latentes específicas; todo lo que contienen es el índice de lote del latente y la fuerza que el controlnet debe aplicar para ese latente. Como concepto, los fotogramas clave latentes logran el mismo efecto que una máscara uniforme con el valor de intensidad elegido.
Nodos
Los nodos ControlNet proporcionados aquí son los nodos Aplicar ControlNet avanzado y Cargar modelo ControlNet avanzado (o diff). Los nodos básicos de ControlNet también son compatibles y se pueden usar casi indistintamente; la única diferencia es que al menos uno de estos nodos debe usarse para que se utilicen las versiones avanzadas de ControlNets (importante para el muestreo de contexto deslizante, como con AnimateDiff-Evolved) .
Llave:
- ? - entradas requeridas
- ? - entradas opcionales
- ? - comienzan como widgets, se pueden convertir en entradas
- ? - entrada/salida opcional, pero no se recomienda su uso a menos que sea necesario
- ? - producción
Aplicar ControlNet avanzado
La misma funcionalidad que el nodo básico Apply Advanced ControlNet (Avanzado), excepto que se le agregan funciones Advanced ControlNet. Convierte automáticamente cualquier ControlNet de los cargadores ControlNet a versiones avanzadas.
Entradas
- ? positivo : condicionamiento (positivo).
- ? negativo : condicionamiento (negativo).
- ? control_net : controlnet cargado; Este nodo convertirá automáticamente a la versión avanzada, si es un tipo compatible.
- ? image : imágenes para guiar los controlnets - si el controlnet cargado lo requiere, deben ser imágenes preprocesadas. Si se proporciona una imagen, se utilizará para todas las latentes. Si se proporcionan más imágenes, se utilizará cada imagen por separado para cada latente. Si no hay suficientes imágenes para cumplir con el recuento latente, se repetirán las imágenes desde el principio para que coincidan con la funcionalidad básica de ControlNet.
- ? mask_optional : máscaras de atención para aplicar a controlnets; Básicamente, decide a qué parte de la imagen se aplicará el controlnet (y la fuerza relativa, si la máscara no es binaria). Igual que la entrada de imagen, si proporciona más de una máscara, cada una puede aplicarse a una latente diferente.
- ? timestep_kf : fotogramas clave de paso de tiempo para guiar el efecto controlnet a lo largo de los pasos de muestreo.
- ? latent_kf_override : anulación de fotogramas clave latentes, útil si no se necesitan otras funciones de fotogramas clave de paso de tiempo. NOTA: este fotograma clave latente se aplicará a TODOS los fotogramas clave de paso de tiempo, independientemente de si hay otros fotogramas clave latentes adjuntos a los fotogramas clave de paso de tiempo conectados.
- ? weights_override : anulación de pesos, útil si no se necesitan otras funciones de los fotogramas clave de paso de tiempo. NOTA: este peso se aplicará a TODOS los pasos de tiempo, independientemente de si hay otros pesos adjuntos a los fotogramas clave de los pasos de tiempo conectados.
- ? fuerza : fuerza de controlnet; 1.0 es toda su potencia, 0.0 no tiene ningún efecto.
- ? start_percent : porcentaje de paso de muestreo en el que se debe comenzar a aplicar controlnet; no importa qué start_percent esté configurado en los fotogramas clave de paso de tiempo, no tendrán efecto hasta que se alcance este start_percent.
- ? stop_percent : porcentaje de paso de muestreo en el que controlnet debería dejar de aplicarse; no importa qué porcentaje de inicio se establezca en los fotogramas clave de paso de tiempo, no tendrán efecto una vez que se alcance este porcentaje de fin.
Salidas
- ? positivo : condicionamiento (positivo) con controles aplicados
- ? negativo : condicionamiento (negativo) con controles aplicados
Cargar modelo ControlNet avanzado
Carga un modelo ControlNet y lo convierte en una versión avanzada que admite todas las funciones de este repositorio. Cuando se usa con el nodo Apply Advanced ControlNet , no hay razón para usar la entrada timestep_keyframe en este nodo; en su lugar, use timestep_kf en el nodo Apply.
Entradas
- ? timestep_keyframe : entrada opcional y probablemente innecesaria para que ControlNet use los timestep_keyframes seleccionados; no debe usarse a menos que sea necesario. Útil si este nodo no está adjunto al nodo Aplicar ControlNet avanzado , pero aún desea usar el fotograma clave de paso de tiempo o usar las salidas TK_SHORTCUT de ControlWeights en el mismo escenario. Será anulado por la entrada timestep_kf en el nodo Aplicar ControlNet avanzado , si se proporciona uno allí.
- ? model : modelo para conectar a la versión diff del nodo. Algunos controles están diseñados para recibir el modelo; Si no sabe qué hace esto, probablemente no quiera usar la versión diff del nodo.
Salidas
- ? CONTROL_NET : ControlNet avanzado cargado
Fotograma clave de paso de tiempo
Nodo de programación en intervalos de tiempo (pasos de muestreo) según el porcentaje de inicio establecido. El encadenamiento de fotogramas clave de paso de tiempo permite la programación de ControlNet en todos los pasos de muestreo (en porcentaje), a través de una programación de fotogramas clave de paso de tiempo.
Entradas
- ? prev_timestep_kf : se utiliza para encadenar fotogramas clave de Timestep para crear una programación. El orden no importa: los fotogramas clave de paso de tiempo se ordenan automáticamente según su porcentaje de inicio. Se sobrescribirá cualquier fotograma clave de paso de tiempo contenido en prev_timestep_keyframe que contenga el mismo porcentaje de inicio que el fotograma clave de paso de tiempo.
- ? cn_weights : pesos que se aplicarán a controlnet mientras este fotograma clave de paso de tiempo esté vigente. Debe ser compatible con el controlnet cargado, o arrojará un error explicando qué tipos de peso son compatibles. Si heredar_missing es Verdadero, si no se pasa control_net_weight, intentará reutilizar los pesos utilizados por última vez en la programación de fotogramas clave de paso de tiempo. Si el nodo Apply Advanced ControlNet tiene un peso_override, el peso_override se utilizará durante el muestreo en lugar de control_net_weight.
- ? latent_keyframe : fotogramas clave latentes que se aplicarán a controlnet mientras este fotograma clave de paso de tiempo esté vigente. Si heredar_missing es Verdadero, si no se pasa ningún latent_keyframe, intentará reutilizar los pesos utilizados por última vez en la programación de fotogramas clave de paso de tiempo. Si el nodo Apply Advanced ControlNet tiene un latent_kf_override, se utilizará latent_lf_override durante el muestreo en lugar de latent_keyframe.
- ? mask_optional : máscaras de atención para aplicar a controlnets; Básicamente, decide a qué parte de la imagen se aplicará el controlnet (y la fuerza relativa, si la máscara no es binaria). Igual que mask_optional en el nodo Aplicar ControlNet avanzado, puede aplicar una marca a todos los latentes o máscaras individuales para cada latente. Si heredar_missing es Verdadero, si no se pasa ninguna máscara_opcional, se intentará reutilizar la máscara_opcional utilizada por última vez en la programación de fotogramas clave de paso de tiempo. Mask_optional NO lo reemplaza en el nodo Apply Advanced ControlNet; Se utilizarán juntos.
- ? start_percent : porcentaje del paso de muestreo en el que este fotograma clave de paso de tiempo califica para ser utilizado. Actúa como la "clave" para el fotograma clave de paso de tiempo en la programación de fotogramas clave de paso de tiempo.
- ? fuerza : fuerza del controlnet; multiplica el controlnet por este valor, básicamente, aplicado junto con la fuerza en el nodo Aplicar ControlNet. Si se establece en 0.0, no tendrá ningún efecto durante la duración del efecto de este fotograma clave de paso de tiempo y aumentará la velocidad de muestreo al no realizar ningún trabajo.
- ? null_latent_kf_strength : fuerza para asignar a latentes que no se tienen en cuenta en los latent_keyframes pasados. No tiene ningún efecto si no se pasa ningún latent_keyframes o si no se tienen en cuenta los índices de lotes en los latent_keyframes durante el muestreo.
- ? heredar_missing : determina si se deben reutilizar valores de fotogramas clave de paso de tiempo anteriores para valores opcionales (control_net_weights, latent_keyframe y mask_option) que no están incluidos en este fotograma de paso de tiempo. Para heredar solo entradas específicas, utilice entradas predeterminadas.
- ? Guarantee_steps : cuando es 1 o más, incluso si el porcentaje de inicio de un fotograma clave de paso de tiempo anterior a este en el cronograma está más cerca del porcentaje de muestreo actual, este fotograma clave de paso de tiempo aún se usará para la cantidad especificada de pasos antes de pasar al siguiente fotograma clave de paso de tiempo seleccionado en el siguiente paso. Ya sea que se use o no el fotograma clave de paso de tiempo, sus entradas aún se tendrán en cuenta para fines de herencia_faltante.
Salidas
- ? TIMESTEP_KF : el fotograma clave de paso de tiempo creado, que puede vincularse a otro o a una entrada de fotograma clave de paso de tiempo.
Interpolación de fotogramas clave de paso de tiempo
Permite crear fotogramas clave de paso de tiempo con valores de fuerza interpolados en un rango de porcentaje determinado. (El primer fotograma clave generado tendrá Guarantee_steps=1, el resto que le sigue tendrá Guarantee_steps=0).
Entradas
- ? prev_timestep_kf : se utiliza para encadenar fotogramas clave de Timestep para crear una programación. El orden no importa: los fotogramas clave de paso de tiempo se ordenan automáticamente según su porcentaje de inicio. Se sobrescribirá cualquier fotograma clave de paso de tiempo contenido en prev_timestep_keyframe que contenga el mismo porcentaje de inicio que el fotograma clave de paso de tiempo.
- ? cn_weights : pesos que se aplicarán a controlnet mientras este fotograma clave de paso de tiempo esté vigente. Debe ser compatible con el controlnet cargado, o arrojará un error explicando qué tipos de peso son compatibles. Si heredar_missing es Verdadero, si no se pasa control_net_weight, intentará reutilizar los pesos utilizados por última vez en la programación de fotogramas clave de paso de tiempo. Si el nodo Apply Advanced ControlNet tiene un peso_override, el peso_override se utilizará durante el muestreo en lugar de control_net_weight.
- ? latent_keyframe : fotogramas clave latentes que se aplicarán a controlnet mientras este fotograma clave de paso de tiempo esté vigente. Si heredar_missing es Verdadero, si no se pasa ningún latent_keyframe, intentará reutilizar los pesos utilizados por última vez en la programación de fotogramas clave de paso de tiempo. Si el nodo Apply Advanced ControlNet tiene un latent_kf_override, se utilizará latent_lf_override durante el muestreo en lugar de latent_keyframe.
- ? mask_optional : máscaras de atención para aplicar a controlnets; Básicamente, decide a qué parte de la imagen se aplicará el controlnet (y la fuerza relativa, si la máscara no es binaria). Igual que mask_optional en el nodo Aplicar ControlNet avanzado, puede aplicar una marca a todos los latentes o máscaras individuales para cada latente. Si heredar_missing es Verdadero, si no se pasa ninguna máscara_opcional, se intentará reutilizar la máscara_opcional utilizada por última vez en la programación de fotogramas clave de paso de tiempo. Mask_optional NO lo reemplaza en el nodo Apply Advanced ControlNet; Se utilizarán juntos.
- ? start_percent : porcentaje del paso de muestreo en el que el primer fotograma clave de paso de tiempo generado califica para ser utilizado.
- ? end_percent : porcentaje del paso de muestreo en el que el último fotograma clave de paso de tiempo generado califica para su uso.
- ? Strength_start : intensidad del fotograma clave de paso de tiempo al inicio del rango.
- ? Strength_end : intensidad del fotograma clave de paso de tiempo al final del rango.
- ? interpolación : el método de interpolación.
- ? intervalos : la cantidad de fotogramas clave que se generarán en total: el primero tendrá su porcentaje de inicio igual al porcentaje de inicio, el último tendrá su porcentaje de inicio igual al porcentaje de fin.
- ? null_latent_kf_strength : fuerza para asignar a latentes que no se tienen en cuenta en los latent_keyframes pasados. No tiene ningún efecto si no se pasa ningún latent_keyframes o si no se tienen en cuenta los índices de lotes en los latent_keyframes durante el muestreo.
- ? heredar_missing : determina si se deben reutilizar valores de fotogramas clave de paso de tiempo anteriores para valores opcionales (control_net_weights, latent_keyframe y mask_option) que no están incluidos en este fotograma de paso de tiempo. Para heredar solo entradas específicas, utilice entradas predeterminadas.
- ? print_keyframes : si es Verdadero, imprimirá los fotogramas clave de paso de tiempo generados por este nodo para fines de depuración.
Salidas
- ? TIMESTEP_KF : el fotograma clave de paso de tiempo creado, que puede vincularse a otro o a una entrada de fotograma clave de paso de tiempo.
Fotograma clave de paso de tiempo de la lista
Permite crear fotogramas clave de paso de tiempo a través de una lista de elementos flotantes, como con la programación de valores por lotes de los nodos ComfyUI_FizzNodes. (El primer fotograma clave generado tendrá Guarantee_steps=1, el resto que le sigue tendrá Guarantee_steps=0).
Entradas
- ? prev_timestep_kf : se utiliza para encadenar fotogramas clave de Timestep para crear una programación. El orden no importa: los fotogramas clave de paso de tiempo se ordenan automáticamente según su porcentaje de inicio. Se sobrescribirá cualquier fotograma clave de paso de tiempo contenido en prev_timestep_keyframe que contenga el mismo porcentaje de inicio que el fotograma clave de paso de tiempo.
- ? cn_weights : pesos que se aplicarán a controlnet mientras este fotograma clave de paso de tiempo esté vigente. Debe ser compatible con el controlnet cargado, o arrojará un error explicando qué tipos de peso son compatibles. Si heredar_missing es Verdadero, si no se pasa control_net_weight, intentará reutilizar los pesos utilizados por última vez en la programación de fotogramas clave de paso de tiempo. Si el nodo Apply Advanced ControlNet tiene un peso_override, el peso_override se utilizará durante el muestreo en lugar de control_net_weight.
- ? latent_keyframe : fotogramas clave latentes que se aplicarán a controlnet mientras este fotograma clave de paso de tiempo esté vigente. Si heredar_missing es Verdadero, si no se pasa ningún latent_keyframe, intentará reutilizar los últimos pesos utilizados en la programación de fotogramas clave de paso de tiempo. Si el nodo Apply Advanced ControlNet tiene un latent_kf_override, se utilizará latent_lf_override durante el muestreo en lugar de latent_keyframe.
- ? mask_optional : máscaras de atención para aplicar a controlnets; Básicamente, decide a qué parte de la imagen se aplicará el controlnet (y la fuerza relativa, si la máscara no es binaria). Igual que mask_optional en el nodo Aplicar ControlNet avanzado, puede aplicar una marca a todos los latentes o máscaras individuales para cada latente. Si heredar_missing es Verdadero, si no se pasa ninguna máscara_opcional, se intentará reutilizar la máscara_opcional utilizada por última vez en la programación de fotogramas clave de paso de tiempo. Mask_optional NO lo reemplaza en el nodo Apply Advanced ControlNet; Se utilizarán juntos.
- ? float_strengths : una lista de flotantes, que corresponderá a la fuerza de cada fotograma clave de paso de tiempo; El primero se asignará a start_percent, el último se asignará a end_percent y el resto se distribuirá linealmente entre ellos.
- ? start_percent : porcentaje del paso de muestreo en el que el primer fotograma clave de paso de tiempo generado califica para ser utilizado.
- ? end_percent : porcentaje del paso de muestreo en el que el último fotograma clave de paso de tiempo generado califica para su uso.
- ? null_latent_kf_strength : fuerza para asignar a latentes que no se tienen en cuenta en los latent_keyframes pasados. No tiene ningún efecto si no se pasa ningún latent_keyframes o si no se tienen en cuenta los índices de lotes en los latent_keyframes durante el muestreo.
- ? heredar_missing : determina si se deben reutilizar valores de fotogramas clave de paso de tiempo anteriores para valores opcionales (control_net_weights, latent_keyframe y mask_option) que no están incluidos en este fotograma de paso de tiempo. Para heredar solo entradas específicas, utilice entradas predeterminadas.
- ? print_keyframes : si es Verdadero, imprimirá los fotogramas clave de paso de tiempo generados por este nodo para fines de depuración.
Salidas
- ? TIMESTEP_KF : el fotograma clave de paso de tiempo creado, que puede vincularse a otro o a una entrada de fotograma clave de paso de tiempo.
Fotograma clave latente
Un fotograma clave latente singular, selecciona la intensidad de un índice de lote específico. Si lote_index no está presente durante el muestreo, simplemente no tendrá ningún efecto. Se puede encadenar con cualquier otro nodo de tipo fotograma clave latente para crear una programación de fotogramas clave latentes.
Entradas
- ? prev_latent_kf : se utiliza para encadenar fotogramas clave latentes para crear una programación. Si un fotograma clave latente contenido en prev_latent_keyframes tiene el mismo índice de lote que este fotograma clave latente, tendrá prioridad sobre el valor de este nodo.
- ? lote_index : índice de latente en el lote al que aplicar la fuerza de controlnet. Actúa como la "clave" para el fotograma clave latente en la programación de fotogramas clave latentes.
- ? fuerza : fuerza de controlnet para aplicar al latente correspondiente.
Salidas
- ? LATENT_KF : el fotograma clave latente creado, que puede vincularse a otro o a una entrada de fotograma clave latente.
Grupo de fotogramas clave latentes
Permite crear fotogramas clave latentes a través de índices individuales o rangos estilo Python.
Entradas
- ? prev_latent_kf : se utiliza para encadenar fotogramas clave latentes para crear una programación. Si algún fotograma clave latente contenido en prev_latent_keyframes tiene el mismo índice de lote que este fotograma clave latente, tendrá prioridad sobre la versión de este nodo.
- ? latent_optional : las latentes que se espera que se pasen para el muestreo; Sólo es necesario si desea utilizar índices negativos (se convertirán automáticamente a valores reales).
- ? index_strengths : lista de cadenas de índices o rangos de índices estilo Python a los que asignar fortalezas. Si se pasa latent_optional, puede contener índices negativos o rangos que contengan números negativos, estilo Python. Los diferentes índices deben estar separados por comas. Las latentes individuales se pueden especificar mediante
batch_index=strength
, como 0=0.9
. Los rangos se pueden especificar mediante start_index_inclusive:end_index_exclusive=strength
, como 0:8=strength
. Los índices negativos son posibles cuando latents_optional tiene una entrada, con una cadena como 0,-4=0.25
. - ? print_keyframes : si es Verdadero, imprimirá los fotogramas clave latentes generados por este nodo para fines de depuración.
Salidas
- ? LATENT_KF : el fotograma clave latente creado, que puede vincularse a otro o a una entrada de fotograma clave latente.
Interpolación de fotogramas clave latentes
Permite crear fotogramas clave latentes con valores interpolados en un rango.
Entradas
- ? prev_latent_kf : se utiliza para encadenar fotogramas clave latentes para crear una programación. Si algún fotograma clave latente contenido en prev_latent_keyframes tiene el mismo índice de lote que este fotograma clave latente, tendrá prioridad sobre la versión de este nodo.
- ? lote_index_from : índice de lote inicial del rango, incluido.
- ? batch_index_to : finaliza el índice de lotes del rango, excluido (rango estilo Python).
- ? fuerza_desde : fuerza inicial de la interpolación.
- ? fuerza_to : fuerza final de la interpolación.
- ? interpolación : el método de interpolación.
- ? print_keyframes : si es Verdadero, imprimirá los fotogramas clave latentes generados por este nodo para fines de depuración.
Salidas
- ? LATENT_KF : el fotograma clave latente creado, que puede vincularse a otro o a una entrada de fotograma clave latente.
Fotograma clave latente de la lista
Permite crear fotogramas clave latentes a través de una lista de flotantes, como con la programación de valores por lotes de los nodos ComfyUI_FizzNodes.
Entradas
- ? prev_latent_kf : se utiliza para encadenar fotogramas clave latentes para crear una programación. Si algún fotograma clave latente contenido en prev_latent_keyframes tiene el mismo índice de lote que este fotograma clave latente, tendrá prioridad sobre la versión de este nodo.
- ? float_strengths : una lista de flotantes, que corresponderá a la fuerza de cada fotograma clave latente; Batch_index es el índice de cada valor flotante en la lista.
- ? print_keyframes : si es Verdadero, imprimirá los fotogramas clave latentes generados por este nodo para fines de depuración.
Salidas
- ? LATENT_KF : el fotograma clave latente creado, que puede vincularse a otro o a una entrada de fotograma clave latente.
Hay más nodos para documentar y mostrar el uso. ¡Los agregaremos pronto! HACER