¡Pregunte, nosotros le respondemos!

Aplicaciones y Guías

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:

Install sd-webui-controlnet

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:

ControlNet Restart UI

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

ControlNet enabled

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:

Copy RSA key

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:

Add SSH key

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

Paste the 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:

Enable OpenPose and Preview

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:

Show preview

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:

Dancing woman OpenPose skeleton

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:

Dancing bear Dancing fox

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:

Edit the skeleton

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:

Send pose to ControlNet

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