Deforum Diffusion v04のクイックガイド
始める前に!
huggingfaceでアカウントを作成し、.ckptファイルをダウンロードし、Google Driveにファイルを置いてください。
Deforum Stable Diffusionノートブックでは、モデル(~4GB)をダウンロードし、Colab Notebookに正しくリンクすることが必要です。
以下のステップで、モデルをダウンロードし、google driveにアップロードする手順を説明します。
1.https://huggingface.co にアクセスし、サインアップしてアカウントを作成します。
2.アカウントにサインインしたら、https://huggingface.co/CompVis に移動してください。
ここでは、ダウンロード可能なすべてのチェックポイントに「-original」マークが付けられています。
3.「CompVis」ライブラリから「-original」モデル(stable-diffusion-v-1-4-original)を選択し、ダウンロードします。
使用条件に同意する必要があります。この記事を書いている時点では、sd-v1-4.ckptが最も良いモデルです。
4.モデルがコンピュータにダウンロードされるのを待っている間に、Deforum Notebookを開き、再生ボタンをクリックして「Model and Output Paths」セルを実行します。
このセルを実行することで、Google Driveに正しいフォルダとファイル構造が設定されます。
または、googleドライブに以下のフォルダを作成します。
5.モデルのダウンロードが完了したら、このmodelsフォルダにダウンロードしたモデルをアップロードする必要があります。
6.準備完了!
ノートブック・オーバービュー
1.Setup
NVIDIA GPU
コードを実行すると、割り当てられた GPU に関する情報が表示されます。
このセルは、ランセッションで接続されたGPUに関する情報を提供します。
Diffusionは一般に、画像のレンダリングにVRAM(ビデオRAM)を多用しています。
Colab GPUのtier listのベストからワーストは以下になります。
A100 (40gb Vram), V100 (16gb Vram), P100 (16gb Vram), T4, K80.
Model and Output Paths
・models_path:アップロードされたランタイムファイルを探す場所を指定します。
・output_path:ランタイム内で画像やファイルを出力する場所になります。
Google Drive Path Variables (Optional)
・mount_google_drive :これチェックすると、ランタイムの代わりにGoogleドライブにパスをリダイレクトします。
・models_path_gdrive:Google Drive上のモデルを指定する場所になります。
・output_path_gdrive:Google Drive上に出力される画像/ファイルの場所を指定する場所になります。
Setup Environment
setup_enviroment をチェックすると、pip/installs を処理する環境を構築します。
print_subprocessをチェックすると、pulledとbuild中のアイテムを表示するかどうかを選択します。
Python Definitions
実行時に使用する関数や定義をビルド環境に取り込みます。
ライブラリから変数を定義し、ランタイムにロードします。
Select and Load Model
・model_config:実行するファイルのタイプです。デフォルトは.yamlファイルになります。もしくはcustomで選択できます。
・model_checkpoint:選択するとダウンロードした.ckptファイルとデータセットをマッチングできます。
・custom_config_path:.yamlファイルをcustomしていない場合は空欄にしてください。
・custom_checkpoint_path:.cpktファイルをcustomしていない場合は空欄にしてください。
・load_on_run_all:チェックするとcellを含めた全ての機能を実行します。
・check_sha256:チェックサムとの比較を行います(ハッシュをチェックしてファイルの整合性を確認します)
・map_location:GPUコアを使用する場合はcuda(デフォルト)を選択、または使用しない場合はcpuを選択します(非推奨)
2.Settings
2a.Animation Settings
animation_modeはnone, 2D, 3D, Video Input, Interpolationから選択できます
NONE
このモードを選択すると、アニメーションモードのすべての機能を無視し、promptリストによって指定された、互いに関連性のない画像のバッチを出力します。
使用されるpromptは、non scheduled 、 non animation listに従います。出力する画像の数は、後のセルの "n_batches "で定義します。
2D
このモードを選択すると、「None mode」のpromptは無視され、フレーム番号でスケジュールされたpromptを参照します。
2Dモードは、生成される画像を一連のまとまった出力につなげようとします。
作成される出力イメージの数は、"max_frames "で定義されます。
2Dモードで制御できる項目は以下になります。
3D
このモードを選択すると、「None mode」のpromptは無視され、フレーム番号でスケジュールされたpromptを参照します。
3Dモードは、生成される画像を一連のまとまった出力につなげようとします。
作成される出力イメージの数は、"max_frames "で定義されます。
3Dモードで制御できる項目は以下になります。
video_input
このモードを選択すると、すべてのモーションパラメータを無視され、video_init_pathで指定された、ランタイムに読み込まれたビデオを参照します。
video_inputモードでは、「None mode」のpromptは無視され、フレーム番号でスケジュールされたpromptを参照します。
"Max_frames "は、video_inputモードでは無視され、代わりにビデオの長さから参照されたフレーム数に従います。
"extract_nth_frame "で、動画から抽出するフレーム数を指定します。
デフォルトの1では、ビデオのすべてのフレームが抽出されます。
2を指定すると、1つおきにフレームをスキップします。
3 以上の値は、これらのフレーム間を効果的にスキップし、より短い画像バッチを生成します。
現在のところ、video_input モードは他のすべてのcoherenceパラメータを無視し、各フレームにのみ影響を与えます。
Video_Input モードでは、Resume_from_timestring は使用できません。
interpolation_mode:
このモードを選択すると、全てのモーションパロメータとcoherenceパラメータを無視し、スケジュールフレーム番号でリストされた、アニメーションpromptで出力フレームをブレンドします。
interpolate_key_frame モードがチェックされている場合、出力フレーム数はpromptのスケジュールに従います。
未選択の場合、interpolationモードはpromptのスケジュールに関係なく、 "interpolate_x_frames" で指定したフレームのスケジュールに従って行われます。
デフォルト値の 4 は、promptの間に 4 フレームの補間を行います。
Animation Parameters:
animation_mode:
アニメーションの種類を選択します。
max_frames:
2Dまたは3Dモードで出力する画像の枚数を指定します。
border:
画像がフレームより小さい場合に生成されるピクセルの処理を制御します。
"wrap"モードを選択した場合、画像の反対側の端からピクセルを引き寄せます。
"Replicate"モードを選択した場合、ピクセルの端を繰り返し拡張します。
早い動きのあるアニメーションでは、このborder機能が空いたスペースにピクセルを配置するため、「線」ができることがあります。
Motion Parameters
motionパラメータは、キャンバスを1フレーム単位で動かすための命令です
angle
キャンバスを時計回り/反時計回りに1フレーム単位で回転させる2Dオペレーターです。
zoom
キャンバスの大きさを1フレーム単位で乗算的に拡大する2Dオペレーターです。 【不動=1.0】です。
translation_x
キャンバスを1フレーム単位で左右に移動する2D/3Dオペレーターです。
translation_y
キャンバスを1フレーム単位で上下に移動する2D/3Dオペレーターです。
translation_z
キャンバスを遠ざける/近づける移動をする3Dオペレーターです。(スピードはFOVで設定された速度)
rotation_x
キャンバスを1フレーム単位で上下に移動する3Dオペレーターです。
rotation_y
キャンバスを1フレーム単位で左右に移動する3Dオペレーターです。
rotation_y
キャンバスを時計回り/反時計回りに1フレーム単位で回転させる3Dオペレーターです。
noise_schedule
拡散処理の際に1フレーム単位で追加するノイズ量を決定します。
strength_schedule
前のフレームが次のフレームに与える影響の量を決定します。
次の計算式によってstepを制御します。
(strength_schedule * steps)] (stepsの詳細は後述)
contrast_schedule
1フレームごとの全体的なコントラストを調整します(デフォルトのニュートラルは1)
Coherence:
color_coherence
NONE, LAB, HSV, RGBから選択します。
LAB
A * B *軸で示されるカラーバランスです。(cielabで検索してください。)
HSV
色相(Hue)、彩度(Saturation)、明度(Value)によって示されるカラーバランスです。
RGB
赤(Red)、緑(Green)、青(Blue)によって示されるカラーバランスです。
diffusion_cadence
diffusionによって影響を受けるフレームの頻度を制御します。
3D Depth Warping:
use_depth_warping
チェックすると、画像を動的にワープする命令を行います(3Dモードのみ)。
midas_weight
depthmapを描画する中間点を設定します。範囲は[-1 から +1]です。
fov
キャンバス内を3Dで移動させる際のスケールをtranslation_zの値で調整します。
padding_mode
画角外のピクセルがシーンに入ってきたときの処理を指示します。
"Border" はキャンバスの縁を描画するピクセルとして使用します。
"Reflection"は、画像とタイル・ピクセルの繰り返しにより描画を近づけます。
"Zero"は新たな画素情報を追加しません。
sampling_mode,
"Bicubis"、"Bilinear"、"Nearest"モードから選択します。
save_depth_map
チェックすると、出力される画像と一緒にグレイスケールのdepth mapの画像を出力します。
Video Input
video_init_path
Video Inputモードでのみ、ビデオファイルが置いてあるディレクトリを参照します。
extract_nth_frame
この値で指定されたフレームのみが抽出、保存、およびdiffusionされます。
1を指定すると、すべてのフレームに適用されます。
2では、シーケンスのために1つおきにフレームを使用します。それ以上の値は、それぞれその数のフレームをスキップします。
Interpolation
interpolate_key_frames
promptスケジュールか _x_frames のどちらを無視するかを選択します。
interpolate_x_frames
prompt間を遷移するフレーム数を指定します。
(interpolate_key_frames = true の場合、アニメーションpromptの値に基づいて画像をガイドします。
falseに設定すると、promptの数値を無視しinterpole_x_framesの値を強制します)。
Resume Animation:
resume_from_timestring
チェックすると、指定した地点から作成を開始するよう指示します。
resume_timestring
アニメーション生成の再開時に参照するタイムスタンプを指定します。
2b. PROMPTS
上記例では、2つのpromptのグループがあります。
上は静止状態のpromptsで、下はanimation_promptsです。
animation modeで"NONE"を選択している場合、上のpromptsを参照して、画像を生成します。
その他のモード(2D、3Dなど)を選択している状態では、下のpromptsを参照します。
これらのpromptの構文に注意することは、Diffusionを実行する際に重要です。
静止画を出力する場合、promptの前に数字を配置してはいけません。画像処理中は「スケジュール」は利用できないからです。
上の例のpromptでは、森の画像と女性の画像を別々に生成して表示します。
2D/3Dアニメーションの実行中は、prompt番号のついている、下のグループの指示を参照します。
上記の例では、フレーム0から開始します。例ではリンゴの画像が生成されます。
フレームが進むと、20フレーム目まではリンゴが出力されたままですが、20フレーム目になると、今度はバナナを主役としたDiffusionが始まり、リンゴは参照されなくなります。
Interporationモードでは、まずpromptのリストから1枚ずつ画像を生成するように、promptsを「tween(繋ぐ)」します。
上記例では、リンゴ、バナナ、ココナッツ、ドリアンが描かれます。次に、Diffusionはpromptの間に存在するはずのフレームを描き始め、リンゴとバナナのハイブリッドを作り、バナナとココナッツの間のギャップを埋めていき、最後にドリアンの画像を分解して停止します。
(この特殊なモードでは max_frames を無視し、代わりに interpolate_key_frame/x_frame スケジュールで描画することを覚えておいてください。)
プロンプトが含むべき文脈については、多く資料が存在します。
あなたの作品にふさわしいと思うpromptsを選ぶのは、夢想家であるあなた自身です。
現在、deforumではpromptの重みはまだ実装されていませんが、以下のテンプレートに従えば公正な結果が得られるはずです。
[媒体] [テーマ] [アーティスト] [詳細] [リポジトリ]
例:“A Sculpture of a Purple Fox by Alex Grey, with tiny ornaments, popular on CGSociety”,
(アレックス・グレイによるパープルフォックスの彫刻、小さな装飾付き、CGSocietyで人気)
3. Run
Image settings
W
画像出力の「幅」をピクセル単位で定義します.
H
画像出力の「高さ」をピクセル単位で定義します.
Sampling Settings
seed
特定の出発点を指定します、(-1 = ランダムな出発点)
sampler
空間から画像を符号化・復号化する方法を選択します。
klms = Kernel Least Mean Square
dpm2 = Denoise Probabilistic Model
dpm2_Ancestral = dpm2 with reverse sampling path
heun = founded off of Euler by Karl Heun (maths & derivative solving)
euler = fractional-order anisotropic denoise (Euler-Lagrange equations)
euler_ancestral = reverse sampling path to Euler
plms = Pre-trained Language Model(s)
ddim = Denoising Diffusion Probabilistic Models
steps
モデルがpromptに達するまでに命令を反復する回数を指定します。
scale
prompt全体に対してどの程度の効力を発揮するかを指定します。
ddim_eta
samplerがddim モードである時のみ有効で、ddim と ddpm のサンプリング方法の比率を -1 から +1 の範囲で制御します。
0 はよりランダムな決定性であることを意味します。
Save & Display Settings:
save_samples
チェックすると出力画像を指定されたドライブに保存します(cadenceフレームを含みます)
save_settings
チェックすると実行時のすべての設定をsnapshot .txtとして、タイムスタンプ付きで保存します。
display samples
チェックすると完成した出力のイメージを画面に表示します。
Batch Settings:
n_batch
アニメーションモードが"none"の場合においては、promptごとに n 回出力します。
batch_name
フォルダを作成し、そのディレクトリの場所に出力内容を保存します。
seed behavior
以下の設定に基づき、seedに段階的な変更を行います。
・Iter
seedに増分的な変化を行います(例 77, 78, 79 ,80, 81, 82, 83…)
・Fixed
seedを変更しません (例33, 33, 33, 33, 33, 33…)
・Random
ランダムにseedを変更します (例472, 12, 927812, 8001, 724…)
make_grid
静止画をキャプチャして、プレビュー用のグリッドにつなぎ合わせます。
grid_rows
make_gridで設定した画像の配置の数を指定します。
Init_Settings
use_init
チェックすると、カスタムした画像をDiffusionの起点として使用します。
strength
0-1 のスケールで init_image/video の存在の量を決定し、0 は完全にdiffusionによる生成を意味し、1 は完全に init したソースによる生成を意味します
init_image
使用する init_image の場所を指定します。
use_mask
画像のどの部分をグレースケールでDiffusionするかを指示するための画像を追加します。
mask_file
使用するmaskファイルの位置を指定します。
invert_mask
チェックするとマスクのグレースケールを "0 から 1" から、 "1 から 0" に変更します。
mask_brightness_adjust
マスクのフロアの値を変更し、Diffusionの範囲を最適に制御します。
mask_constract_adjust
マスクの最小値/最大値を設定して、 diffusion の領域を制限します。
4. Create video from frames
skip_video_for_run_all
notebookを自動実行している場合、手動でチェックしてセルを再実行するまで、ビデオ作成がスキップされます。
デフォルトではオフになっています。
fps
映像がレンダリングされるフレームレートです。
image_path
順番に連結する場合に、イメージの位置を指定します。
必要なタイムスタンプを反映させるためには、ユーザーはこのパラメータを更新する必要があります。
mp4_path
作成したビデオを保存する場所です。
max_frames
生成に必要な画像の枚数を指定します。
この記事が気に入ったらサポートをしてみませんか?