opendream traz recursos muito necessários e familiares, como camadas, edição não destrutiva, portabilidade e extensões fáceis de escrever, para seus fluxos de trabalho de difusão estável. Confira nosso vídeo de demonstração.
sh ./run_ opendream .sh
. Após aproximadamente 30 segundos, tanto o frontend quanto o backend do sistema opendream devem estar instalados e funcionando. Os modelos de difusão surgiram como ferramentas poderosas no mundo da geração e manipulação de imagens. Embora ofereçam benefícios significativos, esses modelos são frequentemente considerados caixas pretas devido à sua complexidade inerente. O atual ecossistema de geração de imagens por difusão é definido por ferramentas que permitem tarefas pontuais de manipulação de imagens para controlar esses modelos - text2img, in-painting, pix2pix, entre outros.
Por exemplo, interfaces populares como Automatic1111, Midjourney e Stability.AI's DreamStudio suportam apenas edição destrutiva: cada edição "consome" a imagem anterior. Isso significa que os usuários não podem construir facilmente a partir de imagens anteriores ou realizar vários experimentos na mesma imagem, limitando suas opções de exploração criativa.
A edição não destrutiva é um método de manipulação de imagens que preserva os dados originais da imagem enquanto permite aos usuários fazer ajustes e modificações sem substituir o trabalho anterior. Essa abordagem facilita a experimentação e fornece mais controle sobre o processo de edição usando camadas e máscaras. Quando você exclui uma camada, todas as camadas posteriores também são excluídas. Isso garante que todas as camadas atualmente na tela sejam produtos de outras camadas existentes. Isso também permite "reproduzir" deterministicamente um fluxo de trabalho.
Assim como o Photoshop, opendream suporta edição não destrutiva pronta para uso. Saiba mais sobre os princípios da edição não destrutiva no Photoshop aqui.
Os usuários também podem salvar seus fluxos de trabalho atuais em um formato de arquivo portátil que pode ser aberto posteriormente ou compartilhado com colaboradores. Neste contexto, um “estado” é apenas um arquivo JSON que descreve todas as camadas atuais e como elas foram criadas.
À medida que o ecossistema de código aberto floresce em torno destes modelos e ferramentas, a extensibilidade também se tornou uma grande preocupação. Embora o Automatic1111 ofereça extensões, elas geralmente são difíceis de programar, usar e instalar. Está longe de ser tão completo quanto um aplicativo como o Adobe Photoshop.
À medida que novos recursos para Stable Diffusion, como ControlNet, são lançados, os usuários deverão ser capazes de integrá-los perfeitamente em seus fluxos de trabalho artísticos com sobrecarga e tempo mínimos.
opendream torna a escrita e o uso de novos recursos de difusão tão simples quanto escrever uma função Python. Continue lendo para saber como.
Desde o início, opendream oferece suporte a duas operações primitivas principais incorporadas ao sistema central: dream
e mask_and_inpaint
. Neste repositório, são fornecidas extensões para instruct_pix2pix
, controlnet_canny
, controlnet_openpose
e sam
(Segment Anything).
Qualquer lógica de manipulação de imagem pode ser facilmente escrita como uma extensão. Com extensões, você também pode decidir como determinadas operações funcionam. Por exemplo, você pode substituir a operação dream
para usar o DALL-E da OpenAI ou chamar um endpoint sem servidor em um serviço como AWS ou Replicate. Aqui está um exemplo usando Baseten.
Existem duas maneiras de carregar extensões.
opendream /extensions
. As instruções para escrever sua própria extensão estão abaixo.Aqui está uma amostra das extensões atualmente suportadas. Você pode usar os links para instalar qualquer extensão por meio da UI da Web.
Extensão | Link |
---|---|
DALL-E da OpenAI | Arquivo |
Difusão estável sem servidor | Arquivo |
Instrua Pix2Pix | Arquivo |
ControlNet Canny | Arquivo |
ControlNet Openpose | Arquivo |
Segmente qualquer coisa | Arquivo |
PhotoshopGPT | Essência |
Observe que as extensões podem ter seus próprios requisitos que você precisaria incluir no arquivo requirements.txt
. Por exemplo, você precisaria adicionar openai
se quiser usar a extensão DALL-E.
Sinta-se à vontade para fazer um PR se criar uma extensão útil!
Os usuários podem escrever suas próprias extensões da seguinte maneira:
opendream /extensions
.@ opendream .define_op
. Este decorador registra esse método no backend opendream .O método tem alguns requisitos:
str
, int
, float
, Layer
, MaskLayer
ou ImageLayer
.Layer
ou uma lista de objetos Layer
. opendream foi construído por Varun Shenoy, Eric Lou, Shashank Rammoorthy e Rahul Shiv como parte do CS 348K de Stanford.
Sinta-se à vontade para fornecer quaisquer contribuições que considere necessárias ou úteis. Este projeto está licenciado sob a licença MIT.