opendream apporte des fonctionnalités indispensables et familières, telles que la superposition, l'édition non destructive, la portabilité et des extensions faciles à écrire, à vos flux de travail de diffusion stable. Regardez notre vidéo de démonstration.
sh ./run_ opendream .sh
. Après environ 30 secondes, le frontend et le backend du système opendream devraient être opérationnels. Les modèles de diffusion sont devenus des outils puissants dans le monde de la génération et de la manipulation d’images. Bien qu’ils offrent des avantages significatifs, ces modèles sont souvent considérés comme des boîtes noires en raison de leur complexité inhérente. L'écosystème actuel de génération d'images de diffusion est défini par des outils qui permettent des tâches ponctuelles de manipulation d'images pour contrôler ces modèles - text2img, in-painting, pix2pix, entre autres.
Par exemple, des interfaces populaires comme Automatic1111, Midjourney et DreamStudio de Stability.AI ne prennent en charge que l'édition destructive : chaque édition « consomme » l'image précédente. Cela signifie que les utilisateurs ne peuvent pas facilement créer à partir d'images précédentes ou exécuter plusieurs expériences sur la même image, ce qui limite leurs options d'exploration créative.
L'édition non destructive est une méthode de manipulation d'image qui préserve les données d'image originales tout en permettant aux utilisateurs d'effectuer des ajustements et des modifications sans écraser le travail précédent. Cette approche facilite l'expérimentation et offre plus de contrôle sur le processus d'édition en utilisant des calques et des masques. Lorsque vous supprimez un calque, tous les calques suivants sont également supprimés. Cela garantit que tous les calques actuellement sur le canevas sont le produit d’autres calques existants. Cela permet également de « rejouer » de manière déterministe un flux de travail.
Comme Photoshop, opendream prend en charge l'édition non destructive dès le départ. Apprenez-en davantage sur les principes de l’édition non destructive dans Photoshop ici.
Les utilisateurs peuvent également enregistrer leurs flux de travail actuels dans un format de fichier portable qui peut être ouvert ultérieurement ou partagé avec des collaborateurs. Dans ce contexte, un « état » est simplement un fichier JSON décrivant toutes les couches actuelles et comment elles ont été créées.
Alors que l’écosystème open source se développe autour de ces modèles et outils, l’extensibilité est également devenue une préoccupation majeure. Bien qu'Automatic1111 propose des extensions, elles sont souvent difficiles à programmer, à utiliser et à installer. Il est loin d’être aussi complet qu’une application comme Adobe Photoshop.
À mesure que de nouvelles fonctionnalités pour Stable Diffusion, comme ControlNet, sont publiées, les utilisateurs devraient pouvoir les intégrer de manière transparente dans leurs flux de travail artistiques avec un minimum de surcharge et de temps.
opendream rend l'écriture et l'utilisation de nouvelles fonctionnalités de diffusion aussi simples que l'écriture d'une fonction Python. Continuez à lire pour savoir comment.
Dès le départ, opendream prend en charge deux opérations primitives clés intégrées au système principal : dream
et mask_and_inpaint
. Dans ce référentiel, des extensions pour instruct_pix2pix
, controlnet_canny
, controlnet_openpose
et sam
(Segment Anything) sont fournies.
Toute logique de manipulation d'image peut être facilement écrite sous forme d'extension. Avec les extensions, vous pouvez également décider du fonctionnement de certaines opérations. Par exemple, vous pouvez remplacer l'opération dream
pour utiliser le DALL-E d'OpenAI à la place ou appeler un point de terminaison sans serveur sur un service comme AWS ou Replicate. Voici un exemple utilisant Baseten.
Il existe deux manières de charger des extensions.
opendream /extensions
. Les instructions pour écrire votre propre extension sont ci-dessous.Voici un échantillon des extensions actuellement prises en charge. Vous pouvez utiliser les liens pour installer n'importe quelle extension donnée via l'interface utilisateur Web.
Extension | Lien |
---|---|
DALL-E d'OpenAI | Déposer |
Diffusion stable sans serveur | Déposer |
Instruire Pix2Pix | Déposer |
ControlNet Canny | Déposer |
ControlNet Openpose | Déposer |
Segmenter n'importe quoi | Déposer |
PhotoshopGPT | Essentiel |
Notez que les extensions peuvent avoir leurs propres exigences que vous devrez inclure dans le fichier requirements.txt
. Par exemple, vous devrez ajouter openai
si vous souhaitez utiliser l'extension DALL-E.
N'hésitez pas à faire un PR si vous créez une extension utile !
Les utilisateurs peuvent écrire leurs propres extensions comme suit :
opendream /extensions
.@ opendream .define_op
. Ce décorateur enregistre cette méthode auprès du backend opendream .La méthode a quelques exigences :
str
, int
, float
, Layer
, MaskLayer
ou ImageLayer
.Layer
ou une liste d’objets Layer
. opendream a été construit par Varun Shenoy, Eric Lou, Shashank Rammoorthy et Rahul Shiv dans le cadre du CS 348K de Stanford.
N'hésitez pas à apporter toute contribution que vous jugez nécessaire ou utile. Ce projet est sous licence MIT.