見出し画像

Stable Diffusion : ハイパーネットワーク学習ガイド

 こんにちは、こんばんは teftef です。今回の記事は automatic1111 様が作成した Stable Diffusion Web UI を使って自分好みのイラストの学習方法について解説していきたいと思います。この記事では Stable Diffusion Web UI の設定に関しては飛ばしめで行きます。主もまだつい最近まで初学者であり、説明が間違っていたり勘違いがある可能性が0ではないということをご了承ください。もう出てるかもしれませんが、一応備忘録なので書きます。

Stable Diffusion Web UI のセッティング

 まず Stable Diffusion Web UI をセッティングしてきます。Automatic1111 様の Git hub はこちら。

Python のインストール

このページに行っていただき、必要なバージョンを選択し、ダウンロードしましょう。バージョンは 3.10.xx であれば問題ないです。

Git のダウンロード

続いて Git コマンドを使うためにこちらのページからダウンロードしましょう。主は今回 E ドライブ直下に置きました。

     E:\stable-diffusion-webui

こんな感じです。

Stable Diffusion Web UI

 それではGit clone を使ってコードを所定のパスにダウンロードし、学習済み重みファイル (ckpt) をダウンロードし、

    E:\stable-diffusion-webui\models\Stable-diffusion

の下に実装したい ckpt ファイルを置きます。続いて webui-user.bat ファイルを編集します。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--deepdanbooru

call webui.bat

 このように変更してあげましょう。

 最後にダブルクリックで実行すれば Stable Diffusion Web UI が使えるようになります。ちなみに今回、主はこちらの ckpt ファイルを使わせていただきました。

 ここまで大まかにざっくり説明しましたが、詳しく知りたい方はこちらからどうぞ。

ハイパーネットワークのトレーニング

 ハイパーネットワークというのは簡単に言うと、指定した画像の特性を学習し、自分好みのキャラを生成しやすくできるようにするネットワークです。では自分好みの画像を20枚ほど入力し、これをトレーニングすることでその画像のスタイル(?)を学習し、その入力画像のような絵を出してくれます。

 やり方はこちらの記事に載っていますが、英語で、しかも割と長いので、実際に主が試してみた記録と感想を書きます。

Stable Diffusion の起動

 最初に Git hub からダウンロードしてきたファイルの中  "E:\stable-diffusion-webui\webui-user.bat" (主はEドライブ直下に置いたのでこのようなPath になっています。)をダブルクリックします。最初は必要ライブラリのインストールなのでしばらく待つ必要があります。画面に動きがなくても、下図のように URL が出るまで触らずに気長に待ちましょう。
 この URL が出たら これをコピーしてお好きなブラウザに貼り付けます。

Stable Diffusion text2image の使い方

 するとこのような画面になると思います。
左上のドロップダウンを先ほどダウンロードしてきた ckpt ファイルを選びます(今回はwaifu diffusion ver-1.3 を選択しています)。

 後はこの図のように入力を調整して、右上の Generate を押すと画像が生成されます。ちなみに画像は自動でセーブされて

  E:\stable-diffusion-webui\outputs\txt2img-images

に出てきます。

ハイパーネットワーク Setting

 一番上のタブから Settings タブに行き、以下の写真の部分を設定します。

Interrogate Option
Training

最後に一番上の Apply Setting を押すのを忘れずに!

忘れないように

画像用意

ここでトレーニングさせたい画像を 20~30 枚ほど用意します。
それをどこかのフォルダに保存しておきます。今回はこんな感じに。

トレーニングさせたい画像

 このフォルダの Path をコピーしておきましょう。今回主はStable_Diffusion_hypernet_img という画像とPreprocess専用のフォルダを E 直下に作りました。

E:\Stable_Diffusion_hypernet_img\ver01

ここに画像を保存しました。

 続いて Preprocess あとの画像および text を保存するフォルダを以下のように作りました。

E:\Stable_Diffusion_hypernet_img\ver1_test_preprocess

 この Path をコピーしてこのように配置します。これ後で使うので忘れずに。
(上に画像フォルダへの Path、下に Preprocess あとの画像および text を保存する Path)

Preprocess

 そしたらこのようにチェックを入れて、右下の Preprocess を押してしばらく待ちましょう。

ハイパーネットワーク Training

まずは Training タブ内の Create hypernetwork タブに行き、ここの name に好きな名前を入れて右下の Create hypernetwork を押します。今回は適当にSD_ver1 としました

Preprocess

 続いてこの Path の下にtextファイルを作ります。
名前は自由です(主はdandooru_filewords.txt)。

E:\stable-diffusion-webui\hypernetWork

そしたらその text ファイルを編集します。

[filewords]

とだけ入力し、保存しましょう。そしたらその text ファイルの Path をコピーしておきましょう。

続いて先ほどの Stable Diffusion web UI に戻りTrainタブのTrainのこの画面の入力です。

  • Hypernetwork : ハイパーネットワーク Training 作った名前を選択

  • Learning rate : 10^(-6) ~ 10^(-7) オーダーの数字

  • Batch size : 1

  • Dataset Directory : 画像用意の最後にコピーした Path 。  主は今回はE:\Stable_Diffusion_hypernet_img\ver1_test_preprocess 

  • Log directiry : 出力なのでお好きな場所をどうぞ。     主は今回は E:\stable-diffusion-webui\hypernetWork

  • Prompt template file  : はつい先ほど Preprocess で作った text ファイルの Parh          主は今回はE:\stable-diffusion-webui\hypernetWork\dandooru_filewords.txt

  • Width : 512

  • Hight : 512

  • Max step : 10000くらいのほうがいい

  • Save an image…  : セーブ間隔(いじらなくてもいい)

  • Save an copy … : セーブ間隔(いじらなくてもいい)

Train 入力

Trainng 開始

 ここまでお疲れさまでした、いよいよこれで下のTrain Hypernetwork を押してトレーニング開始です!!

学習させたハイパーネットワークの使用

 Prompt template file で入力した Path を見ると学習させたハイパーネットワークが出力されているので、それのいいやつを一つ選んで

E:\stable-diffusion-webui\models\hypernetworks

下にコピーします。そして Settings タブに行き真ん中下にこのような部分があるので、先ほどコピペしたHypernetworkを一つ選びます。このように設定し、そして最後に一番上の Apply Setting を押すのを忘れずに!

 そしたら最後に text2image タブに戻り、プロンプトを打って Generate します、うまく学習されていると、少ない Prompt でも自分が初めに教えた画像のような雰囲気で生成してくれます。
 まあなかなかうまくいかないもんです…. 

結果

 例を載せておきます。今回の学習画像はこのように青と後ろ向きが多くなっています。

学習画像

 ちなみに主は30000stepほど訓練させてみて300ごとに結果を出してみてこうなりました。

訓練

 まあ過学習(発散?)しましたが…とりあえず途中の11100あたりを選んで使ってみました。Prompt は "Agirl ,dress ,glass,moon"

Agirl ,dress ,glass,moon
Agirl ,dress ,glass,moon
Agirl ,dress ,glass,moon
Agirl ,dress ,glass,moon
Agirl ,dress ,glass,moon

 うん、確かに雰囲気そんな感じだけど、ちょっと今回は失敗かもです。。。
でも姿勢とかは振り向く姿勢が多くてちょっとびっくり。

 ちなみに後ろの方のStepを使って生成するとこんな感じ

{masterpiece},high quality,strong red sunlight,shiney light,gradient bangs,Blue to light blue gradient hair ,Standing in front of crystal,{Crystal backgroung} ,light blue and white dress,Crystal background,{{Pillar of crystal}}, blue eyes,official art, upper body,looking at viewer, wind lift, gown,{black long hair}, facing away,{{{turn around face}}},{{{holding sword}}},sword,Stand up straight,crystal quartz,Stare,red real moon,big full moon,
masterpiece

参考

 今回の訓練なのですが、かなり成功してらっしゃる方がいて、ぜひこちらを合わせてお読みください!またDream booth もこちらの方のほうが主より断然熟練者です。ぜひ読んでみてください。

次回予告と宣伝

 今回はここまでです。次回は Diffusion model です。これまで GAN の記事で 「GAN ってすごい!」感を出してきましたが、ついに最強の Diffusion model の登場です。最後まで読んでいただきありがとうございました。最後に少し宣伝です。主のteftefが運営を行っているdiscordサーバーを載せます。このサーバーではMidjourneyやStble Diffusionのプロンプトを共有したり、研究したりしています。ぜひ参加してお絵描きAIを探ってみてはいかがでしょう。(teftef)

この記事が気に入ったらサポートをしてみませんか?