学習の事前準備

Last-modified: 2023-10-15 (日) 10:54:59

学習時に適した画像・加工方法について解説しています。

  • AUTOMATIC1111氏のWEBUIには「Dream Booth」「Hyper Network」「Textual inversion」の学習を中心とした解説をしていますが、どの学習方法でもポイントは同じです。
  • ページ途中に具体的な加工方法に関するページリンクがあります。

画像の準備【重要】

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

基本的な知識

「適した画像」って?

  • 学習の受け側(バケットサイズ等)と教師画像(インプット)の互いの要件がマッチしていること。
    それを意識してみましょう。
     
    • 解像度などのスケール要素
      互いの解像度や部品サイズに著しい差があると、正しく認識されません。
      具体的には、学習後に、出力画像の品質が粗いなどの影響が出ます。
    • タグと画像の相性
      そもそも不要なタグ付け(girl等)があると、間違った学習が行われます。
      具体的には、学習ロスが大きい場合や、学習後に変なポーズが現れるなどの影響が出ます。

背景 【最重要】

背景は、学習させたくないなら画像に入れない。
これをするだけで、学習対象の出来栄えが段違いに良くなります。

背景除去したあとは、単色化(白、黒、透過等)すると良い。

  • 白が無難。
  • 透過色は使いやすい。背景除去ツールで処理した画像そのままを使える。
    • AUTOMATIC1111で学習する場合、透過色は拡大・加工時に黒色になったり、まだらな色になる場合がある*1
  • どんな背景色であっても、タグで背景色を指定すればあまり気にしなくて良い。
  • 全画像を背景処理する必要はなく、数枚程度であれば、シンプルな背景で妥協して良い。
  • 背景色の吟味は、最初から取り組むべき課題ではなく、問題が生じてからで良い(後述)

背景色が学習結果へ侵食した場合

背景を単色化・透過すると、その要素が学習結果へ侵食する場合がある。
例:画像が黒くなる等。
ただし、学習方式によって侵食の程度は異なり、無視できる場合もある。

対策

  • タグtxtに背景色の情報を追記する
    • white background
    • simple background
    • ・・・等
  • 背景色にゆらぎを与える
    • グラデーション処理
    • ぼかし

注意事項

  • やりすぎると「white background」主体の絵として学習され、他の要素が薄まってしまうので、ほどほどに。
    • 背景色もキッチリ学習対象に含まれるんやで・・・。
  • 他のタグとのバランスが問われるため、一つの答えはない。
    • 賢くない学習方式だと、text endoer層のwhite backgroundへ、1girlのピクセル情報が漏出して、1girl本来の輝きが失われてしまうんやで・・・。んで、他のタグが相対的に強調されることも起こり得るんやで。
  • あくまでも「背景処理をせずに変な背景を学習されて、背景が1girlに融合するくらいなら、white backgroundが画像生成結果に登場する方がマシ」程度に考えておこう。
  • Q:背景色は何色がベスト?
    A:知らん。学習したい画風次第やで。ダークな世界観に黄色背景はないやろ。

他大事な要素

品質

  • 清書された絵
    • ラフスケッチ・下書きは、にじみ・ゆがみを生じさせます。
    • 清書された絵と比較して、線や塗りが数段簡素であれば除外してください。
  • 目指す特徴への統一感
    • 画風学習であれば切り抜き不要です。

解像度

  • 学習させたいパーツが、高解像度であること。
    • 特に、目や衣装小物といった画像サイズに対して小さな要素は、
      低解像度の画像を教師にすると、正確に学習されず、潰れてしまいます(歪む,odd eye等)。
      対策として、画像サイズを高解像度化することで、目等の輪郭を鮮明にするか、
      低解像度のまま、別途、顔のアップ画像(あるいは元絵を2分割する)を準備しましょう。
    • ただし、元絵を2分割する方法は、画像の構図(全体のバランス)の学習を曖昧にしがちなので、
      高解像度画像を使うに越したことはない。ここは議論が必要なところ(学習法と対象物を考慮しつつ)。
    • 目安として、元絵1枚だけを使うなら、
      短辺800~1000ピクセル以上を推奨。
      ひとまず、ディティールが潰れない下限値はこのあたり。今後のGPU高性能化や学習法の発展(LoHaのような高い線抽出能力等)次第で変わるでしょう。極論、学習中に自動で高精細化してくれるソフトがあれば低解像度画像でもいけちゃうので。
       
  • 解像度が学習方法にマッチしていること。
    • 適当なサイズかつスケール統一しておくべきです。
      大雑把に合わせてあれば、多少はソフト側でリスケールor画像2分割or理解してくれる。
      悪い例:  ※以下、Width×Hightです。
       教師画像:3840×2160、ソフト側の学習解像度:512×512
            →高精細な目などのパーツをそもそも認識せず、高解像度である意味がない。
             また、VRAM消費が大きくなる。
       教師画像:300×1280、ソフト側の学習解像度:512×512
            →元絵120×512にスケールダウン、または過剰分が切り捨てられる。
             →教師画像としての情報が不足する。
       教師画像:画像によって異なるアスペクト比
            →学習方法にもよって影響度は変わるが、避けるべき。
             画像毎のウェイト学習に差が影響が出る。ある画像に引きずられたり…
             ※ただし、昔からある学習方法HN,強化学習では厳禁ですが、
              最近の学習方法(LoRA等)ではどうなんでしょう?
  • 元絵を分割する加工をする場合、短辺1024ピクセル以上で明瞭なもの。
    • 通常は後の自動加工で2分割し、なおかつ512x512に縮小するため、1024未満だと品質(画質)が劣化します。
    • 設定を変更して3分割するのであれば512×3=1536、4分割であれば512×4=2048ピクセル必要です。
    • (厳密にはいずれも比率・設定が関係します)

枚数(種類数)

不要要素

  • 文字
  • 吹き出し
    • 目立たない程度であれば妥協可
      もっと見る

      数十枚以上ある画像のうち1枚だけ混入しても、不要要素におけるウェイト更新量は相対的に小さくなり、生成結果には現れにくいため。

タグ

  • 複雑な情報が多すぎる画像
    例えば、たくさんの人物がいる、身体を交差させている画像を教師にすると、
    極論「1girl」=「たくさんの手足を持った人間」になります(具体的にはもっと複雑)

    なお、学習方法によっても変わります。
    複雑な情報を扱うなら、HNよりもLoRAを使う等、より複雑な学習方法を試した方がよいです。

     
  • そもそも不要なタグは除去
    自動キャプション(後述のBLIP等)を使っていると、意図しないタグが混入する場合があります。
    キャプションのしきい値を上げるor手動にて、除去します。

    例:黒髪に青い光が反射した教師画像が、blue_hairと判定されタグ付与される、等

     
  • タグ同士の意図の混合
     タグ「girl」の画像に「boy」が登場していると、
     girlの特徴を持ったboyが学習されます(実際はもっと複雑)
     できれば画像毎の主張をシンプルにしておくほうが良いです。

画像の加工

下記のページをご覧ください。

タスク説明ページ
背景を消す、不要な要素を消す学習用画像の加工#t31fda1e
アップスケール (高画質化)学習用画像の加工#gdac2a4d
サイズ変更学習用画像の加工#gdac2a4d
タグ作成・編集キャプション・タグ編集

としあき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

*1 一方、sd-scriptsの場合は比較的気にならない