Mochi Diffusion: Stable Diffusion con Core ML

Publicado el 29 marzo 2023 por Daniel Rodríguez @analyticslane

Recientemente publique el análisis de DiffusionBee, una interfaz gráfica de usuario para la creación de imágenes a partir de cadenas de texto ( prompt) para Mac, y próximamente también para Windows. Un programa que facilita la evaluación de este tipo de tecnología ya que se instala como cualquier otro programa de Mac. Mochi Diffusion es una alternativa que usa la implementación de Stable Diffusion con Core ML para la ejecución de los modelos, lo que consigue que la ejecución sea bastante rápida en Mac, especialmente en aquellos equipados con Apple Silicon.

Instalación de Mochi Diffusion

Para instalar Mochi Diffusion en un solamente hay que descargar el archivo dmg con la última versión desde la página de GitHub del proyecto. Como es habitual una vez descargada la imagen solamente habrá que abrirla y arrastrar la aplicación a la carpeta de aplicaciones.

El instalador de Mochi Diffusion no contiene ningún modelo, por lo que será necesario descargar por lo menos uno para comenzar a evaluar la aplicación. Pudiendo obtener varios en la página para modelos de Core ML de Hugging Face. En donde deberemos descargar el modelo o modelos que más nos interese.

Una vez descargados los modelos, solamente se tendría que descomprimir el archivo zip y copiar este a la carpeta por defecto ~/Documents/‌MochiDiffusion/models/. Si no se desea guardar los modelos en esta carpeta, la ruta se puede cambiar en la configuración del programa.

Ventana de Mochi Diffusion

La primera impresión del da Mochi Diffusion es el de una aplicación sencilla, pero en la que se han cuidado los detalles. A la izquierda se encuentran las opciones para la generación de imágenes, en el centro de puede ver todas las imágenes generadas y a la izquierda los detalles de la imagen seleccionada. Un ejemplo de esta ventana se puede ver en la siguiente captura de pantalla.

Las opciones que ofrece la aplicación son las justas. En primer lugar, se muestra la zona para escribir el prompt, limitado a 75 caracteres, y a continuación el prompt negativo para los términos que no se desean. Bajo los prompts se puede ver una opción de HD. El tamaño de la imagen no se puede escoger y siempre se generará una cuadrada de 512×512 píxeles, pero si se selecciona la opción de HD la imagen se escalará a una de 2048×2048 píxeles. Al lado de esta opción se encuentra el botón con el que se pueden generar las imágenes.

A continuación, en este panel, se puede ver una zona en la que se puede arrestar una imagen para que la aplicación parta de ella. Bajo la que se encuentran las opciones de la ejecución del modelo. El número de imágenes que se desean generar, los pasos que realizará el modelo (limitado a un máximo de 50), la escala de guía con la que se afina la fidelidad del modelo, la semilla y el modelo seleccionado.

Uso de Mochi Diffusion para crear las imágenes del blog

Al igual que cuando se evaluó DiffusionBee veamos si es posible utilizar esta aplicación para crear las imágenes del blog. Pidiendo a la aplicación que genere ilustraciones para Analytics Lane y los títulos de las entradas de la semana pasada, para lo que use el modelo deliberate v2. Así uno de los mejores resultados para Analytics Lane ha sido.

Por otro lado, la mejor opción para Gráficos de Hexbin: alternativa a los gráficos de dispersión en Python ha sido la siguiente imagen.

En cuanto a las imágenes generadas para Números aleatorios criptográficamente seguros en Node he seleccionado la siguiente.

Finalmente, para ilustrar El método de Muller e implementación en Python me he decantado por la siguiente opción.

En ninguno de los casos he obtenido una imagen que pueda sustituir a las que he usado del banco de imágenes, pero es una simple prueba.

Conclusiones

Mochi Diffusion es una excelente opción para los usuarios de Mac que desean evaluar Stable Diffusion en un Mac, especialmente si cuenta con un procesador M1 o M2. A pesar de contar con menos opciones que DiffusionBee (las imágenes tienen que ser de 512×512 píxeles y la longitud de prompt está limitado a 75 caracteres) el uso de Core ML hace que la ejecución sea mucho más rápida, lo que facilita probar más prompts o semillas hasta conseguir lo que se desea.