opendream aporta características muy necesarias y familiares, como capas, edición no destructiva, portabilidad y extensiones fáciles de escribir, a sus flujos de trabajo de Stable Diffusion. Vea nuestro vídeo de demostración.
sh ./run_ opendream .sh
. Después de ~30 segundos, tanto el frontend como el backend del sistema opendream deberían estar en funcionamiento. Los modelos de difusión se han convertido en herramientas poderosas en el mundo de la generación y manipulación de imágenes. Si bien ofrecen importantes beneficios, estos modelos a menudo se consideran cajas negras debido a su complejidad inherente. El ecosistema actual de generación de imágenes de difusión está definido por herramientas que permiten tareas únicas de manipulación de imágenes para controlar estos modelos: text2img, in-painting, pix2pix, entre otras.
Por ejemplo, interfaces populares como Automatic1111, Midjourney y DreamStudio de Stability.AI solo admiten la edición destructiva: cada edición "consume" la imagen anterior. Esto significa que los usuarios no pueden construir fácilmente a partir de imágenes anteriores o ejecutar múltiples experimentos en la misma imagen, lo que limita sus opciones de exploración creativa.
La edición no destructiva es un método de manipulación de imágenes que conserva los datos de la imagen original y al mismo tiempo permite a los usuarios realizar ajustes y modificaciones sin sobrescribir el trabajo anterior. Este enfoque facilita la experimentación y proporciona más control sobre el proceso de edición mediante el uso de capas y máscaras. Cuando eliminas una capa, todas las capas posteriores también se eliminan. Esto garantiza que todas las capas actualmente en el lienzo sean producto de otras capas existentes. Esto también permite "reproducir" de manera determinista un flujo de trabajo.
Al igual que Photoshop, opendream admite la edición no destructiva desde el primer momento. Obtenga más información sobre los principios de la edición no destructiva en Photoshop aquí.
Los usuarios también pueden guardar sus flujos de trabajo actuales en un formato de archivo portátil que se puede abrir más adelante o compartir con colaboradores. En este contexto, un "estado" es simplemente un archivo JSON que describe todas las capas actuales y cómo se crearon.
A medida que el ecosistema de código abierto florece en torno a estos modelos y herramientas, la extensibilidad también se ha convertido en una preocupación importante. Si bien Automatic1111 ofrece extensiones, suelen ser difíciles de programar, usar e instalar. Está lejos de tener tantas funciones como una aplicación como Adobe Photoshop.
A medida que se lanzan nuevas funciones para Stable Diffusion, como ControlNet, los usuarios deberían poder integrarlas perfectamente en sus flujos de trabajo artísticos con una sobrecarga y un tiempo mínimos.
opendream hace que escribir y utilizar nuevas funciones de difusión sea tan sencillo como escribir una función de Python. Sigue leyendo para aprender cómo.
Desde el principio, opendream admite dos operaciones primitivas clave integradas en el sistema central: dream
y mask_and_inpaint
. En este repositorio, se proporcionan extensiones para instruct_pix2pix
, controlnet_canny
, controlnet_openpose
y sam
(Segment Anything).
Cualquier lógica de manipulación de imágenes se puede escribir fácilmente como una extensión. Con las extensiones, también puedes decidir cómo funcionan determinadas operaciones. Por ejemplo, puede anular la operación dream
para usar DALL-E de OpenAI en su lugar o llamar a un punto final sin servidor en un servicio como AWS o Replicate. Aquí hay un ejemplo usando Baseten.
Hay dos formas de cargar extensiones.
opendream /extensions
. Las instrucciones para escribir su propia extensión se encuentran a continuación.A continuación se muestra una muestra de las extensiones admitidas actualmente. Puede utilizar los enlaces para instalar cualquier extensión determinada a través de la interfaz de usuario web.
Extensión | Enlace |
---|---|
DALL-E de OpenAI | Archivo |
Difusión estable sin servidor | Archivo |
Instruir a Pix2Pix | Archivo |
ControlNet astuto | Archivo |
ControlNet Openpose | Archivo |
Segmentar cualquier cosa | Archivo |
PhotoshopGPT | Esencia |
Tenga en cuenta que las extensiones pueden tener sus propios requisitos que deberá incluir en el archivo requirements.txt
. Por ejemplo, necesitarás agregar openai
si quieres usar la extensión DALL-E.
¡Siéntete libre de hacer un PR si creas una extensión útil!
Los usuarios pueden escribir sus propias extensiones de la siguiente manera:
opendream /extensions
.@ opendream .define_op
. Este decorador registra este método con el backend opendream .El método tiene algunos requisitos:
str
, int
, float
, Layer
, MaskLayer
o ImageLayer
.Layer
o una lista de objetos Layer
. opendream fue construido por Varun Shenoy, Eric Lou, Shashank Rammoorthy y Rahul Shiv como parte del CS 348K de Stanford.
No dudes en aportar cualquier contribución que consideres necesaria o útil. Este proyecto está bajo la licencia MIT.