学習の事前準備

Last-modified: 2023-03-24 (金) 02:53:38

AUTOMATIC1111氏のWEBUIには「Dream Booth」「Hyper Network」「Textual inversion」の学習機能が備わっています。
このページでは学習時に適した画像・加工方法について解説していきます。

画像の準備【重要】

もっとも重要な要素と言って過言ではなく、適した画像でなければ電気代の無駄になります。
魅力と学習両方で優秀な画像を揃えることで、素晴らしい学習結果が得られることでしょう。
ただし全部をこれだけで集めるというのは難しいため、学習用画像の加工でも対応可能です。

背景 【最重要】

  • 白単色
    • 透過色はAUTOMATIC1111の拡大・加工時に黒色になったり、まだらな色になります。
    • 数枚程度であれば、シンプルな背景で妥協して良い気もします。
    • これをするだけでも段違いに良くなります。

他大事な要素

  • 品質
    • 清書された絵
      • ラフスケッチ・下書きは、にじみ・ゆがみを生じさせます。
      • 清書された絵と比較して、線や塗りが数段簡素であれば除外してください。
    • 目指す特徴への統一感
      • 画風学習であれば切り抜き不要です。
  • 大きさ
    • 短辺1024ピクセル以上で明瞭なもの。
      • 通常は後の自動加工で2分割し、なおかつ512x512に縮小するため、1024未満だと品質(画質)が劣化します。
      • 設定を変更して3分割するのであれば512×3=1536、4分割であれば512×4=2048ピクセル必要です。
      • (厳密にはいずれも比率・設定が関係します)
  • 不要要素
    • 文字
    • 吹き出し
      • 目立たない程度であれば妥協可

画像の加工【重要】

学習用画像加工編ページをご確認願います。
もし万が一、画像の準備だけで条件を満たすものを揃えられた場合は不要です。

AUTOMATIC1111上で加工する

加工設定

「Train」タブを開きます。 ※Settingsの横です。
「Preprocess images」タブを開きます。

以下の項目を見て入力します。

  • 「Source directory」
    • ここでは加工前のフォルダを指定します。
      例)H:\stable-diffusion-webui\toreninguONLY\あひる加工前
  • 「Destination directory」
    • ここでは加工後の画像を保存するフォルダを指定します。
      例)H:\stable-diffusion-webui\toreninguONLY\あひる加工後
      ※注意※
      加工後の画像生成先を加工前のフォルダ内にするとエラーが起きる可能性があります。
  • 「Width」「Height」
    • 加工後の横幅・縦幅のピクセル数を指定します。
      通常512のままで大丈夫です。
  • Existing Caption txt Action
    • ignore⇒無視
      copy⇒コピー
      prepend⇒先頭に追加
      append⇒追加
      試していないため不明だが、元にtxtがある場合どうするかだと思われる。
      自分で調整したtxtと自動captionを同時に使いたい場合prependを選ぶ?
  • 「Create flipped copies」
    • 左右反転したものを作成します。
      ※髪の毛の分け目とかを滅茶苦茶な覚え方したりしてしまうので、やめた方がいいです。
  • 「Split oversized images into two」
    • 「Split image threshold」を「1」、「Split image overlap ratio」を「0」にすれば、ほぼ全て2分割されます。(比率1:1除く)
      問題がなければこちらに指定してください。
    • サイズを超えた場合2つに分割する機能です。
      縦長の腰まで立ち絵などの画像を読み込ませた場合
      頭~肩、胴体~太もも みたいな感じで分割してくれます。
      一度適当なファイルで実際に使って確かめてみてください。
  • 「Auto focal point crop」
    • 自動的に輪郭や顔などを認識して、そこに焦点を合わせて切り抜きする
  • 【通常不要】「Use BLIP for caption」
    • BLIPというフレームワークを用いて画像に説明をつけます。(通常不要です)
  • 「Use deepbooru for caption」
    • deepdanbooruの機能を使い画像に説明をつけます。
      ※二次元美少女関連だとこちらを使った方がいい結果を得られるかもしれません。
      ※設定画面からInterrogate: deepbooru sort alphabeticallyのチェックを外した方が良い結果になると思われます。

加工開始

「Preprocess」ボタンを押すと画像の加工が始まります。
加工終了後、「Destination directory」で指定したフォルダを見ましょう。
フォルダ内には加工後の画像とその画像の説明を書いたtxtファイルが生成されるはずです。 (※ONにしていれば)

エラーが発生する場合

学習用画像の加工でアップスケールを行った場合、
「TypeError: a bytes-like object is required, not 'str'」
とのエラーにより、動作が止まる場合があります。
その際は適当な画像編集ソフトを開いて保存し直せば解消されます。(画質劣化に注意)

加工後のファイルについて

過去画像ファイルを加工&caption付けした場合ファイル名で出力されていましたが、
今はtxtファイルが出力されるようになっているはずです。
それで問題ありません。
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Textual-Inversion#filewords

filewords
[filewords] is a tag for prompt template file that allows you to insert text from filename into the prompt. By default, file's extension is removed, as well as all numbers and dashes (-) at the start of filename. So this filename: 000001-1-a man in suit.png will become this text for prompt: a man in suit. Formatting of the text in the filename is left as it is.

It's possible to use options Filename word regex and Filename join string to alter the text from filename: for example, with word regex = \w+ and join string = , , the file from above will produce this text: a, man, in, suit. regex is used to extract words from text (and they are ['a', 'man', 'in', 'suit', ]), and join string (', ') is placed between those words to create one text: a, man, in, suit.

It's also possible to make a text file with same filename as image (000001-1-a man in suit.txt) and just put the prompt text there. The filename and regex options will not be used.
ファイルワード
[filewords] はプロンプトテンプレートファイルのタグで、ファイル名からプロンプトにテキストを挿入することができます。デフォルトでは、ファイルの拡張子は削除され、ファイル名の先頭にある数字とダッシュ (-) もすべて削除される。したがって、このファイル名: 000001-1-a man in suit.png は、プロンプトのテキスト: a man in suit になります。ファイル名中のテキストの書式はそのままです。

例えば、word regex = \w+ と join string = , , とすると、上記のファイルは a, man, in, suit というテキストになります。regexを使ってテキストから単語を抽出し(それらは ['a', 'man', 'in', 'suit', ] )、それらの単語の間に join string (', ') を入れて a, man, in, suit という一つのテキストになります。

また、画像と同じファイル名のテキストファイル(000001-1-a man in suit.txt)を作り、そこにプロンプトのテキストを入れるだけでも可能です。filenameオプションとregexオプションは使用されません。

要約:
学習時のテンプレ内に[filewords]とある場合
画像ファイルのファイル名先頭にある数字とダッシュ(-)は削除され、拡張子も削除される。
画像ファイルと同じ名称のテキストファイルがある場合にはその中身が参照される。

word regexについての編集を求めています。ご協力いただけると幸いです。

やってはいけないこと

タグに作者タグ・作品タグを加えると、学習が進むにつれて歪んでいきます。
特に思うところがなければ、そのままでも大丈夫です。

学習画像ベンチマークテストを行う (HNのみ)

早速学習を開始したいところですが、
まずは学習用画像ベンチマークテストを実行してみましょう。
最低限変化がなければ、電気代の無駄になってしまいます。

まじの初心者の方へ

PCで何かフォルダを開いた際、一番上に [ファイル|ホーム|共有|表示]と出ていると思います。
ここではDドライブのすぐ上に「新しいフォルダー」を作った場合で話します。
そのフォルダ画面の右側には「新しいフォルダーの検索」と書いてあります。  ※ここで新しいフォルダーとはいま開いているフォルダーの名前になっているはずです。
その左側を見ていくと

[フォルダのマーク]>PC>ローカルディスク(D:)>新しいフォルダー

と書いてあるはずです。
その新しいフォルダーの文字の上で右クリックをしてみましょう。

アドレスのコピー(C)
アドレスをテキストとしてコピー(O)
アドレスの編集(E)
履歴の削除(D)

と出てくるはずです。
そして「アドレスをテキストとしてコピー」を選びます。

適当にそれをどこかに貼り付けてみましょう。

D:\新しいフォルダー

と出てくるはずです。これは「新しいフォルダー」は「Dドライブ」の中にあるよみたいな感じです。

そのまま仮に「新しいフォルダー」の中に「あひる」というフォルダーを作ったとします。
するとそのアドレスは

D:\新しいフォルダー\あひる

という表記になります。

ここまで見るとわかるかもしれませんが、一つ深くなる時には「\」を使って書いています。
実際の学習の作業ではトレーニング用の画像の場所やトレーニングに使うテンプレートファイルの場所などを指定する必要が出てきます。
実際に理解した上で手で打つも良しですし、アドレスをこうしてコピーして労力を減らしても良いです。

としあきTIPS

txt編集としあきTIPS

>めちゃめんどいけどtxtのキャラ名と目と髪関係のワードを消していけば精度上がるはず
>めっちゃめんどいけど…
>これは素材18枚でやったからいいけど素材多めでやる人は編集ツールみたいなのほしいね…
https://www.asukaze.net/soft/cassava/
txtの編集はExcelよりこれが楽
オプション設定でデータ形式のデフォルトを拡張子txtのカンマ区切りにすればそのまま読み書きできる
としあき
・Deepdanbooruで自動生成したタグから、TIで覚えさせたいタグを削除するツールできた
[[こちら:http://tajiken.org/uploader51/upload.cgi?get=00058]]
上記で無理な場合は↓を直接コピペしてURL欄に貼り付けてね
http://tajiken.org/uploader51/upload.cgi?get=00058

過去のとしあきTIPS

 ああーやっぱそうだ
 学習用の素材512x512にするとき白埋めでも黒埋めでもアルファ値0にしたら二分割画像とかにならないでちゃんと学ぶんだな…
 割と初歩目のミス…
 逆にパッチワーク的なタイリング的なパターン学習させたいなら必要分以外の箇所をアルファ255で埋めればいいってことだな
 >もしかして白を背景として誤学習しない感じ…?
 左学習して現時点の出力結果が右で今のところ黒背景としては扱われてないけど
 いわゆる白背景の立ち絵に黒塗りしてどうなるかはわからない

 TIファイル名
 >TIの学習用素材ってファイル名もしっかり学習してほしい要素を記した内容にしたほうがいいんです?
 ファイル名がプロンプトの一部になる場合逆効果になるとか聞いた
 かわいい○○を学習させようとすると
 「○○は素では可愛くないんだな!」と勘違いすると
 

ファイル名とpreview promptを同じにしててそこにuncensored入れてるんだけど

一応学習画像はすべて無修正(というかアレ自体描かれてないのもある)けど駄目なの?

概念的にはファイル名=画像になるように学習するからもともとの重み的にuncensoredの文字と無修正画像の概念的な結びつき精度が低い場合とか学習画像がuncensoredとは関係ない画像の場合にファイル名にuncensored入ってるとuncensoredの逆を学習しようとしちゃう…かも
一個前のスレでもほぼ同じこと書いたけど
学習時のpromptで生成した画像と教師画像との差異から誤差をとって学習してる
なので、uncensoredを学習promptに入れた場合uncensoredは学習の対象外になりやすいと推測できる
よって、強制的にuncensored化したいのであれば、そのワードは不要
もしくは逆にcensoredを入れることでより強い強制力をもつ学習となる可能性が高くなる
この辺ごっちゃになりやすいかもしれないけど学習時のpromptは教師画像の要素のうち”学習させたくない要素”であるべきなんだよ

コメント・指摘・助言

  • Use deepbooru for captionのタグ付けって、アルファベット順に並んでるけど、スコア順に並べた方が良い結果になるんじゃないかな… -- 2022-10-22 (土) 13:13:05
  • ばかだった…Interrogate: deepbooru sort alphabeticallyの設定に恐らく初期からチェックが入ってた…この設定を解除しておいた方が良い結果になると思います… -- 2022-10-22 (土) 13:33:48
  • 気になって仕方ないんだけどDream Boothで学習させたモデルデータから追加で学習ってできるの?キャラAを学習させたモデルデータでキャラBを学習させてキャラA,B共に出力できるようにしたい… -- 2023-02-13 (月) 23:22:34
  • 別サイトだけど「Dreambooth で複数の概念を学習させるには同時に学習させなければならない。」って書いてあったわ...何とか追加して2キャラ出させる方法が知りたい... -- 2023-02-14 (火) 01:46:58
  • 別のサイトだと大体全部、色んな種類の背景が映ってるほうが良い。白のみとかはNGみたいな書き方されてるけど、全部白塗りにした方がキャラ学習には良いってことかな。どこのサイトでも大前提としてキャラの学習なのか絵柄の学習なのか背景の学習なのかを書いてない時点で雑だから、折角ならそこらも書いてほしいな。 -- 2023-03-05 (日) 11:32:41
  • use blip for caption をチェックを押すとエラーで止まります。この際の対処法を知っていますか??? -- 1? 2023-03-07 (火) 15:31:57
  • 学習内容を削除は可能ですか。可能であれば操作手順をを教えていただきたいです。 -- さら? 2023-03-24 (金) 02:53:38