dalle-flow - DALL・Eフローは、テキストプロンプトから高解像度画像を生成するためのインタラクティブなワークフローです。

(A Human-in-the-Loop workflow for creating HD images from text)

Created at: 2022-04-30 23:15:08
Language: Python

DALL・Eフロー:テキストからHD画像を作成するためのヒューマンインザループワークフロー
ヒューマン・イン・ザ・ループテキストからHD画像を作成するためのワークフロー

GoogleColabで開く GoogleColabで開く

DALL・Eフローは、テキストプロンプトから高解像度画像を生成するためのインタラクティブなワークフローです。まず、DALL・E-Megaを利用して画像候補を生成し、次にCLIP-as-serviceを呼び出して候補をプロンプトでランク付けします。推奨される候補は、拡散のためにGLID-3 XLに送られます。これにより、テクスチャと背景が豊かになることがよくあります。最後に、候補はSwinIRを介して1024x1024にアップスケールされます。

DALL・EFlowは、クライアントサーバーアーキテクチャでJinaを使用して構築されているため、高いスケーラビリティ、ノンブロッキングストリーミング、および最新のPythonicインターフェイスが提供されます。クライアントは、TLSを使用したgRPC / Websocket/HTTPを介してサーバーと対話できます。

なぜヒューマンインザループ?ジェネレーティブアートは創造的なプロセスです。DALL・Eの最近の進歩は人々の創造性を解き放ちますが、単一プロンプト単一出力UX / UIを持つことは、想像力を単一の可能性に固定します。これは、この単一の結果がどれほど優れていても悪いことです。DALL・Eフローは、ジェネレーティブアートを反復手順として形式化することにより、ワンライナーの代替手段です。

使用法

DALL・Eフローはクライアントサーバーアーキテクチャにあります。

更新

ギャラリー

泥だらけの犬のリアルな写真ノーマンロックウェルによるリンゴとオレンジを比較する科学者ワッパーでポーズをとる堂々としたバーガーキングの油絵の肖像画人間の頭蓋骨、アートステーションを搭載した永遠の時計別の惑星の素晴らしい風景ローマ帝国のボードゲームキックスターターの衰退と崩壊星を夢見るヘルメットのガラスに宇宙が映るアライグマの宇宙飛行士、デジタルアートディスコボール、85 mmレンズ、スタジオ照明であるリンゴの写真キュービズムの絵ドナルド・トランプ幸せなサイバーパンク外でお茶を飲むハムスターの油絵マックス・エルンストによるロードス島の巨像森の真ん中に大きな城のある風景表現主義のスタイルでチェスをしている間、カニエ西部の中世の油絵は満足していると感じます宇宙船でイライラした猫のオイルパステル画原発事故の危機に瀕している恐竜中世の街とファンタジーの風景アボカド、デジタルアートの形のGPUチップ海の巨大なゴム製のアヒルアンティークの白黒写真でオーストリア皇帝としてのパディントンクマ街の上にスーパーヒーローが腰掛けて、漫画のような雨の夜反射する海の水に沈むシンセウェイブスタイルの夕日、デジタルアートティツィアーノスタイルのオーシャンビーチフロントの油絵ルーベンス風のクリンゴン将軍の油絵都市、トップビュー、サイバーパンク、デジタルリアルアート魔法の部品と古いスチームパンクの力学で作られた中世のサイボーグオートマトンの油絵雲の上を航行する海賊船の上面図の水彩画シド・ブラクのスタイルでラッヘル・ライスによって美しい花と果物で作られた騎士反射する湖の上を飛んでいる虹色の熱気球の3Dレンダリングタイムズスクエアのスケートボードのテディベア夜の居心地の良いベッドルームコンピューターを使ったサルの油絵レオナルド・ダ・ヴィンチによって発明された検索機の図宇宙空間のオオハシのステンドグラスの窓空に天の川銀河がある夜の森の中でのキャンプファイヤーAIコガネムシで作られたバイオニックキラーロボットダリのスタイルで、街の真ん中にあるバビロンの空中庭園イジェフスクの絵画油マシュマロのオフィスチェアの超リアルな写真都市とファンタジーの風景ゴッホスタイルのオーシャンビーチ正面図空港内で再会した家族の油絵、デジタルアートT-Rexに乗っている騎士のアンティーク写真雲の上を航行する海賊船の上面図マティスのスタイルでチェスをしている人型ロボットの油絵フランス皇帝ナポレオンに扮した猫のキュービズム絵画サングラスをかけた帽子をかぶったハスキー犬ヴィンセント・ディ・フェイトのスタイルで雲の間に神秘的な城が現れますゴールデングッチエアポッドリアルな写真

クライアント

GoogleColabで開く

クライアントの使用は非常に簡単です。次の手順は、JupyterノートブックまたはGoogleColabで実行するのが最適です。

最初にDocArrayJinaをインストールする必要があります。

pip install "docarray[common]>=0.13.5" jina

私たちはあなたがプレイするためのデモサーバーを提供しました:

⚠️ 大量のリクエストが原因で、サーバーの応答が遅れる場合があります。それでも、稼働時間を長く保つことに非常に自信があります。こちらの手順に従って、独自のサーバーをデプロイすることもできます。

server_url = 'grpc://dalle-flow.jina.ai:51005'

ステップ1:DALL・EMegaを介して生成する

次に、プロンプトを定義しましょう。

prompt = 'an oil painting of a humanoid robot playing chess in the style of Matisse'

それをサーバーに送信して、結果を視覚化してみましょう。

from docarray import Document

da = Document(text=prompt).post(server_url, parameters={'num_images': 8}).matches

da.plot_image_sprites(fig_size=(10,10), show_index=True)

ここでは、16個の候補を生成します。8個はDALLE-megaから、8個はGLID3 XLから生成されます。これは、

num_images
で定義されているとおりで、約2分かかります。長すぎる場合は、小さい値を使用できます。

ステップ2:GLID3XLを介した選択と改良

16の候補は、CLIP-as-serviceでソートされ、インデックス-

0
がCLIPによって判断された最良の候補です。もちろん、あなたは違った考え方をするかもしれません。左上隅の数字に気づきましたか?最も気に入ったものを選択して、より良いビューを取得します。

fav_id = 3
fav = da[fav_id]
fav.display()

それでは、選択した候補をサーバーに送信して拡散させましょう。

diffused = fav.post(f'{server_url}', parameters={'skip_rate': 0.5, 'num_images': 36}, target_executor='diffusion').matches

diffused.plot_image_sprites(fig_size=(10,10), show_index=True)

これにより、選択した画像に基づいて36枚の画像が得られます。

skip_rate
ゼロに近い値、または1に近い値を指定して、指定された画像にモデルを強制的に近づけることで、モデルの即興性を高めることができます。全体の手順は約2分かかります。

ステップ3:SwinIRを介して選択してアップスケールする

最も気に入った画像を選択して、よく見てください。

dfav_id = 34
fav = diffused[dfav_id]
fav.display()

最後に、最後のステップである1024x1024pxへのアップスケーリングのためにサーバーに送信します。

fav = fav.post(f'{server_url}/upscale')
fav.display()

それでおしまい!一つです。満足できない場合は、手順を繰り返してください。

ところで、DocArrayは、非構造化データ用の強力で使いやすいデータ構造です。クロスモーダル/マルチモーダルドメインで作業するデータサイエンティストにとっては非常に生産的です。DocArrayの詳細については、ドキュメントをご覧ください

サーバ

以下の手順に従って、独自のサーバーをホストできます。

ハードウェア要件

DALL・EFlowには、ピーク時に21GBのメモリを搭載したGPUが1つ必要です。すべてのサービスがこの1つのGPUに組み込まれます。

主に事前トレーニング済みモデルをダウンロードするために、ハードドライブに少なくとも40GBの空き容量が必要です。

高速インターネットが必要です。遅い/不安定なインターネットは、モデルをダウンロードするときにイライラするタイムアウトをスローする可能性があります。

CPUのみの環境はテストされておらず、おそらく機能しません。Google ColabはOOMをスローしている可能性が高いため、これも機能しません。

サーバーアーキテクチャ

Jinaをインストールしている場合、上記のフローチャートは次の方法で生成できます。

# pip install jina
jina export flowchart flow.yml flow.svg

Dockerで実行

サーバーをすぐに実行できるDockerfileを提供しています。

DockerfileはベースイメージとしてCUDA11.6を使用しているため、システムに応じて調整することをお勧めします。

git clone https://github.com/jina-ai/dalle-flow.git
cd dalle-flow

docker build --build-arg GROUP_ID=$(id -g ${USER}) --build-arg USER_ID=$(id -u ${USER}) -t jinaai/dalle-flow .

建物は平均インターネット速度で10分かかり、10GBのDockerイメージになります。

実行するには、次のようにします。

docker run -p 51005:51005 -v $HOME/.cache:/home/dalle/.cache --gpus all jinaai/dalle-flow
  • 最初の実行には、平均インターネット速度で約10分かかります。
  • -v $HOME/.cache:/root/.cache
    Dockerを実行するたびにモデルを繰り返しダウンロードすることを回避します。
  • の最初の部分
    -p 51005:51005
    は、ホストのパブリックポートです。公にサービスを提供している場合は、他の人がこのポートにアクセスできることを確認してください。その2番目のパーは、flow.ymlで定義されたポートです

実行すると、次のような画面が表示されます。

ネイティブで実行する場合とは異なり、Docker内で実行すると、プログレスバー、カラーログ、および印刷の鮮明さが低下する場合があることに注意してください。これは、Dockerコンテナ内のターミナルの制限によるものです。実際の使用には影響しません。

ネイティブに実行

ネイティブに実行するにはいくつかの手動手順が必要ですが、多くの場合、デバッグが簡単です。

クローンリポジトリ

mkdir dalle && cd dalle
git clone https://github.com/jina-ai/dalle-flow.git
git clone https://github.com/JingyunLiang/SwinIR.git
git clone https://github.com/CompVis/latent-diffusion.git
git clone https://github.com/hanxiao/glid-3-xl.git

次のフォルダ構造が必要です。

dalle/
 |
 |-- dalle-flow/
 |-- SwinIR/
 |-- glid-3-xl/
 |-- latent-diffusion/

補助リポジトリをインストールする

cd latent-diffusion && pip install -e . && cd -
cd glid-3-xl && pip install -e . && cd -

GLID-3-XL用にダウンロードする必要のあるモデルがいくつかあります。

cd glid-3-xl
wget https://dall-3.com/models/glid-3-xl/bert.pt
wget https://dall-3.com/models/glid-3-xl/kl-f8.pt
wget https://dall-3.com/models/glid-3-xl/finetune.pt
cd -

インストールフロー

cd dalle-flow
pip install -r requirements.txt

サーバーを起動します

dalle-flow/
これで、次のコマンドを実行できます。

jina flow --uses flow.yml

この画面がすぐに表示されます。

最初の起動時に、DALL・Eメガモデルおよびその他の必要なモデルをダウンロードするのに約8分かかります。進行中の実行は、成功メッセージに到達するのに約1分しかかかりません。

すべての準備が整うと、次のように表示されます。

おめでとうございます!これで、クライアントを実行できるようになります。

モデルの変更、永続性の追加、Instagram / OpenSeaへの自動投稿など、サーバーフローを好きなように変更および拡張できます。JinaとDocArrayを使用すると、DALL・E Flowをクラウドネイティブにして、本番環境に対応させることが簡単にできます。

サポート

参加しませんか

DALL・EFlowはJina AIによってサポートされており、 Apache-2.0でライセンスされています。オープンソースで次のニューラル検索エコシステムを構築するために、AIエンジニアやソリューションエンジニアを積極的に採用しています。