基本的に私的なメモです。

間違ってる事もあると思います。

 

Stable Diffusionで何がしたい?

それはもちろん、

 

「好きな女の子をモデルにしてあんな絵やこんな絵をAIに描かせたい!」

 

 

ということで、素人ではありますがその目標に向けてやってきた事を記録しておきます。

 

Stable Diffusion / Automatic1111のインストール方法などは様々なサイトに載ってるので割愛。

 

自分の利用環境は次のとおり。

 - Automatic1111のバージョンは1.6.0もしくは1.7.0

 - ExtensionsにはADetailer, DatasetTagEditor, ConfigPresets をインストール

   - 外部ツールにKohya SS GUIをインストール

 - グラボはGeforce RTX 3080 (VRAM 10G)

 

1. 顔を入れ替えればいいじゃん!発想

 調べた感じではLoraが良さそうということでモデルを作ってみた。

 

 1.1. 好きな女の子の写真で顔が綺麗に映っているものを50枚ほど頑張って用意した

   1.2. 画像をPictcutterで512x512, 768x768, 1024x1024とかで切り抜き。

 1.3. 切り抜いた画像を1つのフォルダに入れてファイル名を01.jpg, 02.jpg...

   というように番号順にリネーム(使ったツールはこちら

 1.4. StableDiffusionを起動してインストールしたExtensionsである

   「DatasetTagEditor」を開いて以下の手順でキャプションファイルを作る

    - 「Dataset directory」に画像のフォルダを指定

    - 「Use Interrogator Caption」で「Overwrite」にチェックを入れる

    - 「Interrogators」で「wd-v1-vit-tagger-v2」を選択する

    - 「Load」ボタンをクリック

    - 「Batch Edit Captions」タブをクリックして「Remove」タブをクリック

    - 沢山Tagが表示されてるのでLora学習でトレーニングしたいキーワードに

     チェックを入れて「Remove selected tags」をクリックする

      今回は「顔」!!なので1girl, lips, brown eyes, brown hair, noseなど

      1girl自体は例外ですが他は頭に関係してそうなものにチェックした。

      ちなみに髪飾りとかはチェックしなかった。

    - 隣にある「Search and Replace」タブをクリック

    - 「Edit Tags]にトリガーとなるキーワードを書く。(例:OrenoYome)

    - 「Prepend additional tags」にチェックを入れて

     「Apply changes to filtered images」をクリック

    - 最後に上のほうにある「Save all changes」をクリック

 

    これで画像フォルダへ画像毎にtxtファイルができる。

 

 1.5. Stable Diffusionを終了してKohya SS GUIを起動する

    ここの設定はよくわからないがグラボのスペックで動く設定を

    なんとなくで指定した。

 

    - 事前準備として次のフォルダを作った

      C:\SD\Lora\images\2_OrenoYome

      C:\SD\Lora\outputs

      C:\SD\Lora\output\sample

 

      2_OrenoYomeフォルダには1.4.でつくった画像ファイルと

      txtファイルを全部コピーしとくちなみにフォルダ名は

      「繰り返し回数」と「トリガー」名。

 

    - 「Lora」タブをクリック

    - 「Model Quick Pick」はそのままでの良いようだが自分はCIVITAI

      入手したYayoiMixのモデルファイルを指定してみた

      このモデルでも十分かわいらしい女の子描けるんだけど、やっぱり

     「あの子」がいいよね!ってことで、、、

    - 「Folders」のタブでは「Image folder」に「C:\SD\Lora\images\」

      を指定、「Output folder」には「C:\SD\Lora\outputs」を指定

    - 「Model output name」には「OrenoYome」

    - 「Parameters」のタブをクリック

       「Epoch」を30に設定

       「Caption Extension」に「.txt」を設定

       「Seed」に「42」を設定。(別にどんな数字でも良い)

       「Max resolution」はそもままでも良いが自分は「768,768」にした

       「Network Rank (Dimension)」を「128」に設定

       「Network Alpha」を「32」に設定

       他の設定はいじらない

    - つづいてサブタブの「Advance」をクリック

       「VAE」は設定しなくても良いが自分はなんとなくこれを指定した

       「Clip Skip」はリアル系だったので変えなかった。

       (アニメ系は2らしい)

    - つづいてサブタブの「Samples」をクリック

       「Sample every n epochs」を「1」に設定

       「Sample prompts」に以下のプロンプトを記入

 

       masterpiece, best quality, front view, 1girl, in white shirts, upper body, looking at viewer, simple background --n low quality, worst quality, bad anatomy,bad composition, side view, poor, low effort --w 768 --h 768 --d 1 --l 7.5 --s 28

 

    - 最後にStart trainingをクリック

     メモリが足りないような事がなければエラーなく進むはず。

     tritonのエラーが1行表示される場合があるがそれは気にしなくても

     トレーニングが進むならOK

 

 LoraトレーニングでEpoch数と繰り返し回数という言葉があるが結局のところ

 総Step数が重要だと理解。

 

  総Step数=繰り返し回数 x 画像枚数 x Epoch数

 

 今回繰り返し回数は2、画像数50、Epoch数30なので総Step数は3,000

 繰り返し回数を4にするとEpoch数は15で済むけど総Step数は変らないので

 トレーニング時間は変らない。

 じゃあ何が違うのかというと別に何も変わらない。

 GUIの設定だとEpoch毎にサンプルとLoraファイルを作るのでその数の違いは

 ある。

 小刻みにトレーニング状況をサンプルで確認したい場合は繰り返し回数を

 減らしてEpochを増やせばよい。

    

 1.6. トレーニング終了!

 

   100%までいけば終了。

   C:\SD\Lora\output\sampleに各Epoch毎に生成された画像サンプルが

   出来てるのでそれを見てよさげなEpoch数を確認する。

   C:\SD\Lora\output\にある該当Epoch数のLoraファイルを

   採用する事にした。

 

さーて、、このLoraを適用してあの子の画像を沢山作るぞーーー!!

 

、、、、、

、、、、、

 

あれ、、似てるけどなんか違う!wwww

 

<つづく>