opendream 、レイヤー化、非破壊編集、移植性、書きやすい拡張機能など、非常に必要とされている使い慣れた機能を Stable Diffusion ワークフローにもたらします。デモビデオをご覧ください。
sh ./run_ opendream .sh
実行します。約 30 秒後、 opendreamシステムのフロントエンドとバックエンドの両方が起動して実行されるはずです。 拡散モデルは、画像の生成と操作の世界における強力なツールとして登場しました。これらのモデルは大きな利点を提供しますが、その固有の複雑さのため、多くの場合ブラック ボックスと見なされます。現在の拡散画像生成エコシステムは、これらのモデルを制御するための 1 回限りの画像操作タスクを可能にするツール (特に text2img、in-painting、pix2pix など) によって定義されています。
たとえば、Automatic1111、Midjourney、Stability.AI の DreamStudio などの一般的なインターフェイスは、破壊的な編集のみをサポートしています。各編集は前の画像を「消費」します。これは、ユーザーが以前の画像から簡単に構築したり、同じ画像に対して複数の実験を実行したりすることができないことを意味し、創造的な探索のオプションが制限されます。
非破壊編集は、元の画像データを保存しながら、以前の作業を上書きすることなく調整や修正を行うことができる画像操作方法です。このアプローチにより、実験が容易になり、レイヤーとマスクを使用して編集プロセスをより詳細に制御できるようになります。レイヤーを削除すると、それ以降のレイヤーもすべて削除されます。これにより、現在キャンバス上にあるすべてのレイヤーが他の既存のレイヤーの産物であることが保証されます。これにより、ワークフローを決定的に「再生」することもできます。
Photoshop と同様に、 opendreamすぐに使える非破壊編集をサポートしています。 Photoshop の非破壊編集の原則について詳しくは、こちらをご覧ください。
ユーザーは、現在のワークフローをポータブル ファイル形式で保存し、後で開いたり、共同作業者と共有したりすることもできます。このコンテキストでは、「状態」とは、現在のすべてのレイヤーとその作成方法を説明する単なる JSON ファイルです。
オープンソース エコシステムがこれらのモデルやツールを中心に繁栄するにつれて、拡張性も大きな懸念事項になっています。 Automatic1111 は拡張機能を提供していますが、多くの場合、プログラム、使用、インストールが困難です。 Adobe Photoshop のようなアプリケーションほどフル機能を備えているわけではありません。
ControlNet などの Stable Diffusion の新機能がリリースされると、ユーザーはそれらの機能を最小限の負荷と時間で芸術的なワークフローにシームレスに統合できるようになります。
opendream使用すると、Python 関数を作成するのと同じくらい簡単に、新しい拡散機能を作成して使用できます。その方法については読み続けてください。
opendream最初から、コア システムに組み込まれた 2 つの主要なプリミティブ操作、 dream
とmask_and_inpaint
をサポートしています。このリポジトリでは、 instruct_pix2pix
、 controlnet_canny
、 controlnet_openpose
、およびsam
(Segment Anything) の拡張機能が提供されています。
あらゆる画像操作ロジックを拡張機能として簡単に作成できます。拡張機能を使用すると、特定の操作がどのように機能するかを決定することもできます。たとえば、 dream
オペレーションをオーバーライドして、代わりに OpenAI の DALL-E を使用したり、AWS や Replicate などのサービス上のサーバーレス エンドポイントを呼び出したりできます。 Baseten を使用した例を次に示します。
拡張機能をロードするには 2 つの方法があります。
opendream /extensions
フォルダーに追加します。独自の拡張機能を作成する手順は以下のとおりです。現在サポートされている拡張機能のサンプルを次に示します。リンクを使用すると、Web UI を通じて特定の拡張機能をインストールできます。
拡大 | リンク |
---|---|
OpenAIのDALL-E | ファイル |
サーバーレスの安定した普及 | ファイル |
Pix2Pix に指示する | ファイル |
コントロールネットキャニー | ファイル |
ControlNet オープンポーズ | ファイル |
何でもセグメント化 | ファイル |
PhotoshopGPT | 要旨 |
拡張機能には、 requirements.txt
ファイルに含める必要がある独自の要件がある場合があることに注意してください。たとえば、DALL-E 拡張機能を使用する場合は、 openai
を追加する必要があります。
便利な拡張機能を作成したらぜひPRしてください!
ユーザーは次のように独自の拡張機能を作成できます。
opendream /extensions
フォルダーに新しい Python ファイルを作成します。@ opendream .define_op
デコレーターを使用してメソッドを作成します。このデコレータは、このメソッドをopendreamバックエンドに登録します。この方法にはいくつかの要件があります。
str
、 int
、 float
、 Layer
、 MaskLayer
、またはImageLayer
が含まれます。Layer
またはLayer
オブジェクトのリストのみです。 opendream 、スタンフォード大学の CS 348K の一部として、Varun Shenoy、Eric Lou、Shashank Rammoorthy、および Rahul Shiv によって構築されました。
必要または役立つと思われる貢献を遠慮なく提供してください。このプロジェクトは MIT ライセンスに基づいてライセンスされています。