Deep Daze の使い方
以下の記事を参考にして書いてます。
1. Deep Daze
「Deep Daze」は、OpenAIの「CLIP」と「Siren」を使用した、テキストから画像をの生成するシンプルなコマンドラインツールです。このテクニックを発見したのは(そして素晴らしい名前を思いついたこと)、Ryan Murdockの功績によるものです。
これには、NvidiaGPUが必要です。
2. インストール
$ pip install deep-daze
3. 使用例
$ imagine "a house in the forest"
十分なメモリがある場合は、--deeperフラグを追加することで品質を向上させることができます。
$ imagine "shattered plates on the ground" --deeper
・mist over green hills(緑の丘の上の霧)
・shattered plates on the grass(草の上の粉々になったプレート)
・cosmic love and attention(宇宙の愛とアテンション)
・a time traveler in the crowd(群衆の中のタイムトラベラー)
・life during the plague(ペスト中の生活)
・meditative peace in a sunlit forest(太陽に照らされた森の瞑想の平和)
4. 高度な使用例
真の深層学習の方法では、層が多いほど良い結果が得られます。 デフォルトは16ですが、リソースに応じて32に増やすことができます。
$ imagine "stranger in strange lands" --num-layers 32
5. パラメータ
【概要】
imagine TEXT <flags>
【引数】
TEXT
(必須) 視覚化したい77文字未満のフレーズ。
【フラグ】
--learning_rate=LEARNING_RATE
Default: 1e-05
ニューラルネットの学習率。
--num_layers=NUM_LAYERS
Default: 16
サイレンニューラルネットで使用する隠れ層の数。
--batch_size=BATCH_SIZE
Default: 4
損失を計算する前にサイレンに渡す生成された画像の数。これを減らすと、メモリと精度が低下する可能性がある。
--gradient_accumulate_every=GRADIENT_ACCUMULATE_EVERY
Default: 4
各反復のnサンプルの加重損失を計算する。これを増やすと、バッチサイズを小さくして精度を上げることができる。
--epochs=EPOCHS
Default: 20
実行するエポックの数。
--iterations=ITERATIONS
Default: 1050
特定のエポックで損失を計算して逆伝播する回数。
--save_every=SAVE_EVERY
Default: 100
反復がこの数の倍数になるたびに画像を生成。
--image_width=IMAGE_WIDTH
Default: 512
画像の望ましい解像度。
--deeper=DEEPER
Default: False
32個の隠れ層を持つSirenニューラルネットを使用。
--overwrite=OVERWRITE
Default: False
同じ名前の既存の生成された画像を上書きするかどうか。
--save_progress=SAVE_PROGRESS
Default: False
Sirenの訓練が完了する前に生成された画像を保存するかどうか。
--seed=SEED
Type: Optional[]
Default: None
決定論的実行に使用されるシード。
--open_folder=OPEN_FOLDER
Default: True
生成された画像を表示するフォルダを開くかどうか。
--save_date_time=SAVE_DATE_TIME
Default: False
タイムスタンプを前に付けてファイルを保存。 e.g. `%y%m%d-%H%M%S-my_phrase_here`
--start_image_path=START_IMAGE_PATH
Default: None
ジェネレータは、テキスト入力に向けて操作される前に、最初に開始画像で学習される。
--start_image_train_iters=START_IMAGE_TRAIN_ITERS
Default: 50
開始画像の初期学習のステップ数。
--theta_initial=THETA_INITIAL
Default: 30.0
色空間の頻度を表すハイパーパラメータ。 ネットワークの最初の層にのみ適用される。
--theta_hidden=THETA_INITIAL
Default: 30.0
色空間の頻度を表すハイパーパラメータ。 ネットワークの非表示レイヤーにのみ適用される。
6. Priming
Mario Klingemannによって最初に考案され共有された手法であり、テキストに向けて操作される前に、開始画像でジェネレーターネットワークをプライミングすることができます。
使用する画像へのパスと、オプションで初期学習ステップの数を指定するだけです。
$ imagine 'a clear night sky filled with stars' --start-image-path ./cloudy-night-sky.jpg
・Priming開始画像
・プロンプト「A pizza with green peppers」で学習
7. Python
Pythonで「Deep Daze」を利用するには、「deep_daze.Imagine」を使います。
from deep_daze import Imagine
imagine = Imagine(
text = 'cosmic love and attention',
num_layers = 24,
)
imagine()
・4回の反復ごとの進行状況の保存
画像をinsert_text_here.00001.png、insert_text_here.00002.png(total_iterations%save_every)の形式で保存します。
imagine = Imagine(
text=text,
save_every=4,
save_progress=True
)
・各画像への現在のタイムスタンプの付加
タイムスタンプとシーケンス番号の両方を使用してファイルを作成します。
e.g. 210129-043928_328751_insert_text_here.00001.png, 210129-043928_512351_insert_text_here.00002.png, ...
imagine = Imagine(
text=text,
save_every=4,
save_progress=True,
save_date_time=True,
)
・GPUメモリ使用量多め
少なくとも16GBのVRANが使用可能な場合は、ある程度の余裕を持ってこれらの設定を実行できるはずです。
imagine = Imagine(
text=text,
num_layers=42,
batch_size=64,
gradient_accumulate_every=1,
)
・GPUメモリ使用量普通
imagine = Imagine(
text=text,
num_layers=24,
batch_size=16,
gradient_accumulate_every=2
)
・GPUメモリ使用量少なめ(4GB未満)
8GB VRAM未満のカードでこれを実行したい場合は、image_widthを下げることができます。
imagine = Imagine(
text=text,
image_width=256,
num_layers=16,
batch_size=1,
gradient_accumulate_every=16 # Increase gradient_accumulate_every to correct for loss in low batch sizes
)
8. Deep Dazeのこれから
これは単なるティーザーです。 自然言語で、画像や音声など、何でも自由に生成できるようになります。 Holodeckは私たちの生涯のうちに現実のものになりつつあります。
この技術の推進に関心がある場合は、「DALL-E for Pytorch」または「DALL-E for Mesh Tensorflow」の作業に参加してください。
9. 代替案
・BigSleep : CLIPとBigGANのジェネレーター
この記事が気に入ったらサポートをしてみませんか?