この投稿では、独自の AI 画像ジェネレーターを実行してセットアップする方法を見ていきます。これを最後まで機能させるには、CUDA 対応カードを備えた Linux システムが必要です。基本的な txt-2img スクリプトが Windows で動作するようになりました。残念ながら、7 月にリリースされた検索拡張拡散モデルでは、openimages データセットのインデックスを作成するためにscann
が必要です。これは Linux でのみ利用できます。 WSLは私にとってはうまくいきました。
必要なものを大まかに以下に示します。
= 32GB の RAM
AI サブレディットをブラウジングしているときに、潜在拡散レポをランダムに見つけました。いくつかの投稿で言及されていましたが、それが何であるかわからなかったので、グーグルで調べました。
私はコンピューター科学者でも数学者でもありませんし、ここで何が起こっているのかを本当に理解するために必要とされるものでもありません。新しい RAD モデルに関する論文は理解できて興味深いものですが、それ以上の調査はまだ行っていません。
潜在拡散で可能な 2 つの画像生成技術があります。両方をインストールして見ていきます。
最初にセットアップする txt2-img モデルは、オンラインの他の画像生成ツールで慣れているものだと思います。これにより、超低解像度の画像クリップが適切なプロンプト マッチであると判断され、ノイズが除去されてアップスケールされます。
RAD モデルは、構成可能な画像のデータベースを参照として使用し、慣れ親しんだ方法で拡散を行います。これは、汎用ジェネレーターとしてはあまり良くないことを意味しているようですが、実行可能に作成できる特定のトレーニング セットで使用できます。私は将来これを試してみます。
RAD は、かなり印象的な 768X768 の画像も生成します。
CUDA 11.3がインストールされていて、 conda
がシェルで動作することを確認してください。ここでコンダを入手できます
Pytorch を今すぐ (再) インストールして、後で依存関係の地獄に陥らないようにします。私はpip
でこれを行いましたが、conda も機能する可能性があります。
レポジトリに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 スクリプトを使用すると、シェルからすべてを簡単に実行できます。これを~/.bashrc
ファイルに含めて、シェルを再度開くことができます。必要に応じて 3 つのパスを変更してください。 PLMS については後で説明します。
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を使用して画像を拡大すると、かなり良い結果が得られます。
htop
を使用して、メモリ使用量のトラブルシューティング/表示を行います。pip
および/またはconda
を使用して正しいパッケージ バージョンを手動でインストールします (私は両方を実行しましたが、どちらがすべてを機能させたかはわかりません)。 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
スーパー コンピューターを持っていない限り、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 メモリが不足しないように、 scripts/knn2img.py
のバッチ サイズを変更する必要があります。 1 に下げる必要があるかもしれませんが、3090 では 2 に設定できました。
scripts/knn2img.py
をエディターで開く
243 行目に移動するか、「n_samples」を見つけます
デフォルト値を 1 または 2 に変更して保存します
コマンドラインパラメーターを使用してこれを行うこともできますが、私にはうまくいかないので、デフォルト値を変更したいと思いました.将来リポジトリを更新すると、これは上書きされる可能性があることに注意してください。
これで、openimages データベースを使用して RDM イメージを生成できます。
python scripts/knn2img.py --prompt "A blue pig" --database openimages --use_neighbors --knn 20
これを便利に実行するための~/.bashrc
スクリプトを次に示します。ここでも、必要に応じて 3 つのパスを変更してください。
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 は物事をより速く実行するはずです。今のところ、速度の増加を測定することはしませんが、画質/結果を主観的に見ていきます.
私のシステムでは、RDM モデルは一度に 2 枚の写真しか作成しないため、そのモデルのグリッドの代わりに両方の写真を含めました。
今後はほぼ確実に、より具体的なテストを行う予定であり、これらのモデルは今後の比較記事に含まれる予定です。
丘の上の木の家、風景写真
テキストから画像へ
プラムなし | プラム付き |
---|---|
RDM
プラムなし | プラム付き |
---|---|
紫色の一時停止の標識
テキストから画像へ
プラムなし | プラム付き |
---|---|
RDM
プラムなし | プラム付き |
---|---|
キツネの巣窟、デジタル アート
テキストから画像へ
プラムなし | プラム付き |
---|---|
RDM
プラムなし | プラム付き |
---|---|
ビッグゲームでの勝利、受賞歴のある写真
テキストから画像へ
プラムなし | プラム付き |
---|---|
RDM
プラムなし | プラム付き |
---|---|
砂丘を走るスポーツカー
テキストから画像へ
プラムなし | プラム付き |
---|---|
RDM
プラムなし | プラム付き |
---|---|
クレジットや毎月の制限はありません。純粋な AI 画像を自分で生成するだけです。いくつかのチューニング設定を見つけて、独自の画像トレーニング データベースを作成したら、これについてはまた話します。
うまくいけば、いくつかのチューニングと新しいリリース/モデルで、これが DALL-E の WOW ファクターに近づくでしょう。
ここにも掲載されています。