DALL-E自作 この投稿では、独自の AI 画像ジェネレーターを実行してセットアップする方法を見ていきます。これを最後まで機能させるには、CUDA 対応カードを備えた Linux システムが必要です。基本的な txt-2img スクリプトが Windows で動作するようになりました。残念ながら、7 月にリリースされた では、openimages データセットのインデックスを作成するために が必要です。これは Linux でのみ利用できます。 は私にとってはうまくいきました。 検索拡張拡散モデル scann WSL 必要なものを大まかに以下に示します。 Linux (WSL は問題ありません) 11.3 CUDA グラフィックス = 32GB の RAM 50GB のディスク容量 (openimage なしで ~30GB) 3xxx シリーズのカード (ここでは推測です。これはすべて 3090 FE で行われています) 潜在拡散 AI サブレディットをブラウジングしているときに、 をランダムに見つけました。いくつかの投稿で言及されていましたが、それが何であるかわからなかったので、グーグルで調べました。 潜在拡散レポ 私はコンピューター科学者でも数学者でもありませんし、ここで何が起こっているのかを本当に理解するために必要とされるものでもありません。新しい RAD モデルに関する論文は理解できて興味深いものですが、それ以上の調査はまだ行っていません。 テキストから画像への変換 vs. RAD 潜在拡散で可能な 2 つの画像生成技術があります。両方をインストールして見ていきます。 最初にセットアップする txt2-img モデルは、オンラインの他の画像生成ツールで慣れているものだと思います。これにより、超低解像度の画像クリップが適切なプロンプト マッチであると判断され、ノイズが除去されてアップスケールされます。 RAD モデルは、構成可能な画像のデータベースを参照として使用し、慣れ親しんだ方法で拡散を行います。これは、汎用ジェネレーターとしてはあまり良くないことを意味しているようですが、実行可能に作成できる特定のトレーニング セットで使用できます。私は将来これを試してみます。 RAD は、かなり印象的な 768X768 の画像も生成します。 インストール手順 テキストから画像へ がインストールされていて、 がシェルで動作することを確認してください。 を入手できます CUDA 11.3 conda ここでコンダ して、後で依存関係の地獄に陥らないようにします。私は でこれを行いましたが、conda も機能する可能性があります。 Pytorch を今すぐ (再) インストール pip 空き容量の多いドライブにレポをクローンします レポジトリに して、次を実行します。 cd conda env create -f environment.yaml conda activate ldm これにより、初期環境がセットアップされます。後で Pytorch でエラーが発生し、再インストールする必要がある場合は、environment.yaml に戻り、正しいパッケージ バージョンを使用して再インストールします。 モデルをダウンロードすると、トーチの依存関係がすべて正しく設定されている限り、準備完了です。 mkdir -p models/ldm/text2img-large/ wget -O models/ldm/text2img-large/model.ckpt https://ommer-lab.com/files/latent-diffusion/nitro/txt2img-f8-large/model.ckpt 次を使用して画像をサンプリングできるはずです。 python scripts/txt2img.py --prompt "my cool image" README で設定できるオプションを確認してください。 この bash スクリプトを使用すると、シェルからすべてを簡単に実行できます。これを ファイルに含めて、シェルを再度開くことができます。必要に応じて 3 つのパスを変更してください。 PLMS については後で説明します。 ~/.bashrc function txt2img() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --plms --n_iter 4 --ddim_eta 0.0 else python scripts/txt2img.py --prompt $1 --outdir '/mnt/g/My Drive/AI Image Tests/text2img' --n_iter 4 --ddim_eta 0.0 fi } 画像はデフォルトで 512X512 です。 を使用して画像を拡大すると、かなり良い結果が得られます。 This Jupiter Notebook トラブルシューティング コマンドの実行中に CUDA メモリ エラーが発生した場合は、バッチ サイズを小さくしてみてください。 を使用して、メモリ使用量のトラブルシューティング/表示を行います。 htop WSL を使用している場合は、すべての RAM が Linux で使用できることを確認してください。 torch 関連のエラーが発生した場合は、おそらく Pytorch を再インストールする必要があります。これにより、パッケージで他の問題が発生する可能性があります。 environment.yaml を確認し、 および/または を使用して正しいパッケージ バージョンを手動でインストールします (私は両方を実行しましたが、どちらがすべてを機能させたかはわかりません)。 pip conda RDM RDM の詳細については、 を参照してください。前に述べたように、それは基本的に、画像のデータベースとクリップの説明を既存の拡散プロセスと組み合わせたものです。この部分は、実行に時間がかかります。 こちら このモデルは、特に openimages トレーニングを使用する場合、実際のものを再現するのに最適であり、(まだ) あまり良くないように見え、拡散モデルから慣れ親しんだ奇妙な画像を作成することに注意してください。 Text-to-Image モデルを最初に機能させる 新しいパッケージをインストールし、トレーニング モデルをダウンロードします。 pip install transformers==4.19.2 scann kornia==0.6.4 torchmetrics==0.6.0 pip install git+https://github.com/arogozhnikov/einops.git mkdir -p models/rdm/rdm768x768/ wget -O models/rdm/rdm768x768/model.ckpt https://ommer-lab.com/files/rdm/model.ckpt これまでのところすべてが機能していることをテストします python scripts/knn2img.py --prompt "I'm a computer" すべてがうまくいけば、シェルに成功のテキストが表示されるはずです。ここで、すべての画像インデックス/モデルをダウンロードする必要があります。 openimages zip は 11GB です。 ArtBench データはかなり小さいです。 mkdir -p data/rdm/retrieval_databases wget -O data/rdm/retrieval_databases/artbench.zip https://ommer-lab.com/files/rdm/artbench_databases.zip wget -O data/rdm/retrieval_databases/openimages.zip https://ommer-lab.com/files/rdm/openimages_database.zip unzip data/rdm/retrieval_databases/artbench.zip -d data/rdm/retrieval_databases/ unzip data/rdm/retrieval_databases/openimages.zip -d data/rdm/retrieval_databases/ mkdir -p data/rdm/searchers wget -O data/rdm/searchers/artbench.zip https://ommer-lab.com/files/rdm/artbench_searchers.zip unzip data/rdm/searchers/artbench.zip -d data/rdm/searchers これで Artbench モデルを使用する準備が整いました (私の限られたテストではかなりうまく機能します) が、実際に必要なのは大規模な openimages モデルを参照として使用することです。データをダウンロードしましたが、インデックスを作成する必要があります。 Artbench データベースをテストする場合は、実行します。 python scripts/knn2img.py --prompt "A blue pig" --use_neighbors --knn 20 Openimages インデックス スーパー コンピューターを持っていない限り、Python マルチプロセッシングのひどいメモリ管理 (私が知る限り) により、レポからスクリプトで解凍した 4 つのファイルを使用してインデックスを作成することができなくなります。私が試した他のすべてのプロセスは、メモリが不足していました。 幸いなことに、必要なのはファイルを連結することだけです。必要に応じて、古いパーツ ファイルを後で削除できます。また、パーツ ファイルを openimages フォルダーから移動する必要があります。 cd data/rdm/retrieval_databases/openimages/ cat 2000000x768_part1.npz 2000000x768_part2.npz 2000000x768_part3.npz 2000000x768_part4.npz > 2000000x768.npz mv 2000000x768_* ~/temp cd ../../../../ これでトレーニング スクリプトを実行しても、メモリ不足になることはありません。これは、トレーニング スクリプトのマルチ ファイル機能に問題があると思います。 python scripts/train_searcher.py GPU メモリが不足しないように、 のバッチ サイズを変更する必要があります。 1 に下げる必要があるかもしれませんが、3090 では 2 に設定できました。 scripts/knn2img.py をエディターで開く scripts/knn2img.py 243 行目に移動するか、「n_samples」を見つけます デフォルト値を 1 または 2 に変更して保存します コマンドラインパラメーターを使用してこれを行うこともできますが、私にはうまくいかないので、デフォルト値を変更したいと思いました.将来リポジトリを更新すると、これは上書きされる可能性があることに注意してください。 これで、openimages データベースを使用して RDM イメージを生成できます。 python scripts/knn2img.py --prompt "A blue pig" --database openimages --use_neighbors --knn 20 これを便利に実行するための スクリプトを次に示します。ここでも、必要に応じて 3 つのパスを変更してください。 ~/.bashrc function diffuse() { if [ $# -eq 0 ]; then echo "Usage: diffuse '[prompt]' [--plms]" exit 1 fi cd /mnt/c/diffusion/latent-diffusion; conda activate ldm; if [ $2 = '--plms' ]; then python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 --plms else python scripts/knn2img.py --database openimages --prompt $1 --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 fi } スピードアップ ファイル (この場合は ) を作成し、次のように パラメーターを使用してスクリプトを指定することにより、バッチでプロンプトを実行することもできます。 prompts.txt –from-file python scripts/knn2img.py --database openimages --from-file ./prompts.txt --use_neighbors --outdir '/mnt/g/My Drive/AI Image Tests/RDM' --knn 20 サンプル prompts.txt prompt 1 prompt 2 prompt 3 モデルは一度しかロードされないため、多くのクエリを実行している場合、これにより多くの時間を節約できます。テキストから画像へのモデルには、このオプションがありません。 初期テスト、および PLMS 以下は、PLMS をオンおよびオフにした両方のモデルの初期結果です。 PLMS は物事をより速く実行するはずです。今のところ、速度の増加を測定することはしませんが、画質/結果を主観的に見ていきます. 私のシステムでは、RDM モデルは一度に 2 枚の写真しか作成しないため、そのモデルのグリッドの代わりに両方の写真を含めました。 今後はほぼ確実に、より具体的なテストを行う予定であり、これらのモデルは今後の比較記事に含まれる予定です。 丘の上の木の家、風景写真 テキストから画像へ プラムなし プラム付き RDM プラムなし プラム付き 紫色の一時停止の標識 テキストから画像へ プラムなし プラム付き RDM プラムなし プラム付き キツネの巣窟、デジタル アート テキストから画像へ プラムなし プラム付き RDM プラムなし プラム付き ビッグゲームでの勝利、受賞歴のある写真 テキストから画像へ プラムなし プラム付き RDM プラムなし プラム付き 砂丘を走るスポーツカー テキストから画像へ プラムなし プラム付き RDM プラムなし プラム付き 独自の画像ジェネレーターを呼び出す クレジットや毎月の制限はありません。純粋な AI 画像を自分で生成するだけです。いくつかのチューニング設定を見つけて、独自の画像トレーニング データベースを作成したら、これについてはまた話します。 うまくいけば、いくつかのチューニングと新しいリリース/モデルで、これが DALL-E の WOW ファクターに近づくでしょう。 も掲載されています。 ここに