Stable Diffusion: ¿Qué es ControlNet?

Un error común entre quienes se enfrentan por primera vez a las redes neuronales generativas es que el control del resultado final es tremendamente difícil, especialmente cuando se intenta alterar el resultado mediante diferentes frases. En la actualidad, existe un conjunto de herramientas conocido como ControlNet que facilita un control relativamente sencillo y eficaz de los resultados de la generación.
En este artículo, demostraremos cómo manipular fácilmente la pose de los personajes generados utilizando imágenes preexistentes y "esqueletos" personalizados, con la ayuda de una de estas herramientas, OpenPose.
Paso 1. Instalar Stable Diffusion Instalar Stable Diffusion
Por favor, utilice nuestra guía paso a paso para instalar Stable Diffusion con el modelo básico y WebUI. Esta guía se basa en el script AUTOMATIC1111.
Paso 2. Instalar la extensión ControlNet Instale la extensión ControlNet
Recomendamos encarecidamente no instalar la extensión ControlNet (sd-webui-controlnet) desde el repositorio estándar debido a posibles problemas de funcionalidad. Un problema importante que encontramos durante la preparación de esta guía fue la congelación de la interfaz web. Aunque la imagen se genera inicialmente con éxito, la WebUI deja de responder cuando se genera la imagen por segunda vez. Una solución alternativa sería instalar la misma extensión desde una fuente externa.
Abra WebUI y siga las pestañas: Extensions > Install from URL. Pegue esta URL en el campo apropiado:
https://github.com/Mikubill/sd-webui-controlnet
A continuación, haga clic en el botón Install:

Cuando el proceso se complete con éxito, debería aparecer el siguiente mensaje:
Installed into /home/usergpu/stable-diffusion-webui/extensions/sd-webui-controlnet. Use Installed tab to restart.
Vamos a reiniciar la URL pulsando el botón Aplicar y reiniciar UI en la pestaña Instalado:

Tras reiniciar la interfaz, aparecerá el nuevo elemento ControlNet con muchas opciones adicionales:

Paso 3. Descargar OpenPose
Añadir clave HF
Vamos a generar y añadir una clave SSH que podrás utilizar en Hugging Face:
cd ~/.ssh && ssh-keygen
Cuando se genera el par de claves, puedes mostrar la clave pública en el emulador de terminal:
cat id_rsa.pub
Copie toda la información empezando por ssh-rsa y terminando por usergpu@gpuserver, como se muestra en la siguiente captura de pantalla:

Abre un navegador web, escribe https://huggingface.co/ en la barra de direcciones y pulsa Enter. Inicie sesión en su cuenta de HF y abra Configuración del perfil. A continuación, seleccione SSH and GPG Keys y pulse el botón Add SSH Key:

Rellene el Key name y pegue el SSH Public key copiado del terminal. Guarda la clave pulsando Add key:

Ahora, tu cuenta HF está vinculada a la clave SSH pública. La segunda parte (clave privada) se almacena en el servidor. El siguiente paso es instalar una extensión específica de Git LFS (Large File Storage), que se utiliza para descargar archivos de gran tamaño, como modelos de redes neuronales.
Instalar Git LFS
El siguiente paso es instalar una extensión específica de Git LFS (Large File Storage), que se utiliza para descargar archivos de gran tamaño, como modelos de redes neuronales. Abre tu directorio de inicio:
cd ~/
Descarga y ejecuta el script de shell. Este script instala un nuevo repositorio de terceros con git-lfs:
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
Ahora, puedes instalarlo usando el gestor de paquetes estándar:
sudo apt-get install git-lfs
Vamos a configurar git para utilizar nuestro apodo HF:
git config --global user.name "John"
Y vinculado a la cuenta de correo de HF:
git config --global user.email "john.doe@example.com"
Descargar el repositorio
Recomendamos, si es posible, utilizar un disco duro local para descargar y almacenar los modelos. Puedes aprender más sobre esto en nuestra guía, Particionado de discos en Linux. Para este ejemplo, hemos montado un disco SSD en el punto de montaje /mnt/fastdisk. Hagámoslo propiedad del usuario por defecto:
sudo chown usergpu:usergpu /mnt/fastdisk
Abre el directorio:
cd /mnt/fastdisk
Clonar el repositorio ControlNet de HuggingFace. Git-LFS previamente instalado sustituirá automáticamente los punteros por archivos reales:
git clone git@hf.co:lllyasviel/ControlNet-v1-1
En este ejemplo, añadimos sólo un modelo a Stable Diffusion WebUI. Sin embargo, puedes copiar todos los modelos disponibles del repositorio (~18GB):
cp /mnt/fastdisk/ControlNet-v1-1/control_v11p_sd15_openpose.pth /home/usergpu/stable-diffusion-webui/models/ControlNet/
Paso 4. Ejecutar el proceso de generación
El modelo actual es bastante básico y puede no dar resultados satisfactorios. Por lo tanto, le sugerimos que lo sustituya por un modelo personalizado. Encontrará directrices sobre cómo hacerlo en este artículo: Modelos de difusión estable: personalización y opciones. Para este ejemplo, hemos descargado RealisticVision v6.0 B1.
Si desea generar su primera imagen utilizando OpenPose, abra la pestaña ControlNet, elija OpenPose, marque Enable y Allow Preview. A continuación, haga clic en Upload para añadir una imagen que contenga la pose deseada:

Puede solicitar al sistema que genere una vista previa de la pose haciendo clic en el botón con el icono de la explosión:

A la izquierda, se muestra la imagen original. A la derecha, puede ver el "esqueleto" que representa la pose reconocida por el modelo de red neuronal:
![]() |
![]() |
Ahora puede escribir la indicación principal, por ejemplo "dancing bear, by Pixar" o "dancing fox, by Pixar" y pulsar el botón Generate. Al cabo de unos segundos obtendrás resultados como estos:
![]() |
![]() |
El sistema intentará generar una nueva imagen, dado el "esqueleto" obtenido de la imagen original. En algunos casos, la pose puede no ser exacta, pero esto puede corregirse fácilmente editando manualmente el "esqueleto".
Paso 5. Cambio de pose
Aunque parezca magia, el modelo no es perfecto, y los errores ocasionales pueden afectar a la imagen final. Para evitar problemas durante la generación de la imagen, tienes la opción de ajustar manualmente el "esqueleto" haciendo clic en el botón Edit:

En el editor proporcionado, puedes ajustar fácilmente la pose arrastrando y soltando, o eliminar los puntos no deseados con un clic derecho. A continuación, haz clic en el botón Send pose to ControlNet y se aplicará la nueva pose:

Además de OpenPose, ControlNet ofrece diversas herramientas para personalizar y perfeccionar los resultados. Además, los servidores dedicados proporcionados por LeaderGPU garantizan un proceso rápido y cómodo.
Ver también:
Actualizado: 26.03.2025
Publicado: 21.01.2025