Usar ControlNet desde Fooocus

Fooocus es una de las herramientas más sencillas para usar Stable Diffusion. Tiene un gran equilibrio entre complejidad y capacidades. En mi modesta opinión una de sus mayores carencias es la falta de ControlNet. Una herramienta que permite usar distintas características de la imagen para influir en el resultado. De tal forma que no solo podemos usar el prompt para describir la imagen que deseamos.

Es cierto que de forma nativa Fooocus soporta Canny (contornos), pero hay muchos más casos. A mi me interesa especialmente los esqueletos de OpenPose que permiten indicar deforma muy sencilla la posición de las personas en la imagen generada.

Los principales motivos para no soportar ControlNet son:

  • Falta de un buen ControlNet para SDXL, que es la versión de Stable Diffusion que usar Fooocus.
  • Necesidad de cargar varios ControlNet para cada tipo de imagen de referencia.
  • Añadir un preprocesador diferente para cada tipo de imagen de referencia que queramos extraer.

Por suerte desde la aparición de controlnet-union-sdxl-1.0, que permite usar un único modelo para múltiples ControlNet y que soporta SDXL, los dos primeros problemas han sido resueltos.

El tercer punto no queda más remedio que afrontarlo usando programas externos para generar las imágenes de referencia.

En el siguiente vídeo se explican los pasos para lograr integrar este modelo en Fooocus, sin tocar una sola linea de código:

El resumen de los pasos:

  1. Descargar controlnet-union-sdxl: diffusion_pytorch_model.safetensors
  2. Copiarlo en la carpeta Fooocus/models/controlnet
  3. Renombrarlo a (recomendable guardar el fichero anterior) a: control-lora-canny-rank128_old.safetensors
  4. Lanzar Fooocus
  5. En Advanced – Control – Marcar Skip Preprocessor para desactivar el preprocesador de ControlNet (solo sirve para Canny)
  6. Usar Image Prompt con PyraCanny activado
  7. Cargar como Image Prompt la imagen de referencia para ControlNet