Upgrade to Pro — share decks privately, control downloads, hide ads and more …

StableDiffusion 再学習法

minux302
November 04, 2022

StableDiffusion 再学習法

第二回創作+機械学習LT会での発表スライドです。

minux302

November 04, 2022
Tweet

Other Decks in Technology

Transcript

  1. Stable
    Diffusion
    再学習法
    君だけのモデルをカスタムしよう!
    まっくす (@minux302)

    View Slide

  2. 今日のお話
    Stable Diffusion のざっくりした仕組みと、その再学習法(fine-tuning)についていくつ
    か紹介していきます。

    View Slide

  3. なぜこの話を創作+機械学習LT会でするか?
    生成系AIが実応用に活用できそうなレベルまで性能が上がってきており、クリエイターの表
    現手法・手段の1つとしてAIの利用が現実的になってきました。
    クリエイターが自身の作品に活かすのであれば、汎用的な作風より自分の作風にカスタマイ
    ズされたAIの方が使い勝手が良いため、fine-tuning が重要となります。
    Stable Diffusion (Waifu Diffusion) に特定のテイストのイラストを学習させた例

    View Slide

  4. 今日のお話の対象者
    機械学習の中身が少しわかる人向けの資料です。
    機械学習なんにもわからない!という方は雰囲気だけでも掴んでいただけたらと思います。
    事前知識として文章から画像を生成するAI(text2image)についての比較的初学者向けの
    解説資料を twitter で公開しているのでよかったら参考にしてみてください。
    ←は技術書典で出した本の内容を無料公開したものなので本書も買ってくれると泣いて喜びます。
    [リンク]
    Text-to-Image 入門

    View Slide

  5. まっくす (@minux302)
    趣味でイラストや漫画を描いたりしてる機械学習エンジニアです。
    あまりにも背景が描きたくないので背景生成AIの開発を趣味でしてたりします。

    View Slide

  6. Stable
    Diffusion
    の仕組み

    View Slide

  7. Stable Diffusion 概観
    StableDiffusionの概観
    HuggingFace example Notebook より
    Text Encoder
    CLIP を使用。テキストを embedding へ変換。
    Denoising U-Net
    テキスト embedding で条件付しながら VAE でデコ
    ードする用の latent を生成。
    latent 空間で Diffusion するため計算コストが低
    く、一般家庭の GPU でも動くようになった。
    VAE
    latent を画像へデコード。
    右図が Stable Diffusion の概観です。

    View Slide

  8. CLIP
    テキストと画像を比較できる変数に変換。
    Stable Diffusion では Texture Encoder 部分を使用。
    CLIP の概要 [7]

    View Slide

  9. Diffusion Model
    ノイズを少しづつ取り除くモデルを作成し、完全なノイズから少しづつノイズを除去してい
    くことで画像を生成する。
    画像にノイズを少しづつ乗せていき完全なノイズにする。学習データ作成にあたる。
    ノイズを少しづつ取り除いていき画像を生成する。学習・推論時のステップ。
    Ho, Jonathan, et al. [5]

    View Slide

  10. Diffusion Modelの推論
    推論時は完全なノイズから少しづつノイズを取り除いて画像を生成していく。
    Hideyuki Tachibana, et al[6] より図一部引用

    View Slide

  11. Latent Diffusion
    Stable Diffusion は画像に対してではなく、生成画像の素となる潜在変数(latent)に対
    してDiffusionを行っている。これにより計算量を大幅に削減。
    ピクセル空間での
    Diffusion
    latent空間での
    Diffusion
    Decode

    View Slide

  12. Stable Diffusion 概観
    右図が Stable Diffusion の概観です。
    StableDiffusionの概観
    HuggingFace example Notebook より
    Text Encoder
    CLIP を使用。テキストを embedding へ変換。
    Denoising U-Net
    テキスト embedding で条件付しながら VAE でデコ
    ードする用の latent を生成。
    latent 空間で Diffusion するため計算コストが低
    く、一般家庭の GPU でも動くようになった。
    VAE
    latent を画像へデコード。

    View Slide

  13. fine-tuning
    手法の紹介

    View Slide

  14. 今日紹介する fine-tuning の手法
    大量のデータを用いた fine-tuning
    一般的な fine-tuning
    少数データを用いた 単語 Embedding のみの fine-tuning
    Textual Inversion
    少数データと正規化画像を用いた fine-tuning
    Dream Booth
    1枚の画像の編集に特化した fine-tuning
    Imagic
    01
    02
    03
    04

    View Slide

  15. 一般的な fine-tuning
    モデル全体を再学習する、一般的な意味での fine-tuning。
    代表的なものが Waifu Diffusion。Danbooruで収集した画像、タグデータをもとに
    fine-tuning したもの。
    Waifu-Diffusion 1.3 release note より

    View Slide

  16. 一般的な fine-tuning はコストがやばい!!
    純粋な fine-tuning ではデータを集めるコストと学習にかかるコストが大きくなります。
    Waifu Diffusion 1.3 では Stable Diffusion 1.4 を初期値として、Danbooruから収集
    した68万枚のテキストと画像のペアでA40 x 8 で10日ほど学習させています。
    金額として$3.1k(約45万円)かかっているらしいです。
    (Waifu Diffusion 1.3 Release Note より)
    コストが高い反面、高品質なデータが大量にあれば他の fine-tuning 手法の中で精度は最
    も高くなる。

    View Slide

  17. Textual Inversion
    3~5枚のラベルなし画像から特定の概念を学習させることが可能。
    下記例では数枚の置物の画像を学習させて、絵画風、アイコン風などの指定したスタイルで
    生成したり、置物をテーマにしたバッグを生成している。
    Gal, Rinon, et al [2] より引用

    View Slide

  18. Textual Inversion の学習
    Texture Encoder の中の Token -> Embedding 変換部分のみを fine-tuning してい
    る。Embedding 変換部分以外は固定し、学習させたい概念を表現できる S* という新規の
    単語表現を Embedding 空間の中から探している。
    画像の caption がないので
    "A photo of S*" など汎用的
    に使える caption を用意

    View Slide

  19. Textual Inversion の特徴
    Text Encoder の中の Text Transformer, Unet, VAE は学習しないため、モデルが
    既に学習済の表現のなかから学習させたい概念を探している
    Texture Encoder の Embedding 変換部分のみの fine-tuning となるため、学習枚数
    がすくなくとも過学習を起こしにくい
    学習は3090で1~2時間くらい

    View Slide

  20. Dream Booth
    Textual Inversion とほぼ同じ概念。学習画像3~5枚数程度から概念を学習。
    例えば一般的な概念としての犬ではなく、家で飼っている犬の画像で学習することで飼って
    いる犬の画像生成が可能となる。
    Ruiz, Nataniel et al [3] より引用

    View Slide

  21. Dream Boothの工夫
    学習画像枚数が少ないため、そのまま学習させると overfit がおきてしまう。
    また学習させる対象のクラスの概念を忘却し、学習させた対象に偏った生成をしてしまう
    language drift の問題もおきてしまう。
    Dream Booth ではより広い概念の画像(ex. 飼っている犬を学習させたい場合は一般的な
    様々な犬の画像)となる正規化画像を使って同時に学習させることでこれらの問題を解決。
    上段はoverfitにより学習画像と似たような構図になっている。
    下段では正規化画像を使うことによoverfitを解消している。
    中段では一般的な犬を生成しようとして学習させた犬の画像が生成されて
    しまう language drift の問題が発生している。
    下段では正規化画像を使うことにより language drift を解消している。

    View Slide

  22. Dream Booth の学習
    DreamBooth原著ではPixel空間でDiffusionを行っているImagenを使っているので図のモデルが
    Stable Diffusion と少し違います。(特に右側の高解像度化部分、Imagicではここも再学習すると精度が上がる)
    Stable Diffusion では Text Encoder と Unet を fine-tuning します。
    正規化画像は学習前のモデルで生成した画像を使っていますが、自前で用意しても学習できます。

    View Slide

  23. Dream Booth の特徴
    Unet も再学習するため Texture Inversion よりも精度が高い
    正規化画像の利用により過学習しにくい
    学習は省メモリ版(24GBでも動作)だと3090で2~3時間くらい

    View Slide

  24. Imagic
    1枚の画像に特化させて学習させることで、高精度に画像を編集することが可能。
    入力画像を指定したテキストをもとに編集できる。
    Kawar, Bahjat, et al [4]

    View Slide

  25. Imagic の学習
    以下の手順で学習を行う。
    (A)指定したテキストで入力した画像を再構成できるよう Texture Encoder を学習
    (B)(A)で最適化された embedding で入力した画像を最構成できるよう Unet を学習
    (C)最適化する前のテキストの embedding と(A)で最適化した embedding を比率を
    変えながら足し合わせて(B)で学習した Unet へ入力
    Imagic の学習手順

    View Slide

  26. Imagicの特徴
    1枚の画像の編集に特化させた fine-tuning
    Embedding を足し合わせるときの比率もある程度自動で求められる
    学習は3090で10分くらい

    View Slide

  27. まとめ
    大量のデータを用いた fine-tuning
    精度は高いがコストも高い
    一般的な fine-tuning
    少数データを用いた 単語 Embedding のみの fine-tuning
    単語表現を学習、過学習しにくい
    Textual Inversion
    少数データと正規化画像を用いた fine-tuning
    Unetも学習するので Textual Inversion より精度が高い
    Dream Booth
    1枚の画像の編集に特化した fine-tuning
    Imagic
    01
    02
    03
    04
    4つの fine-tuning 手法について解説しました。

    View Slide

  28. 実際につかってみるべし!
    今日紹介した手法は純粋な fine-tuning 以外は Google Colaboratory 等を用いてすぐに
    試すことができます。実際に使ってみないと肌感覚がつかめないので是非自分で回して見ま
    しょう。
    ただしデータの取扱には気をつけましょう!
    自分が権利をもっている画像等で試すのが安全です。

    View Slide

  29. 創作との今後
    今は技術が先行しており、仕組みが追いついていない状況です。今日紹介した fine-tuningも使い方を誤ればクリエ
    イターの方々に不利益を被らせる可能性があります。ですがこの技術から生まれる価値はあると思っています。クリエ
    イターの権利を守り、必要に応じて利益や価値を還元しつつ、新しい価値、作品を生み出せていくようなエコシステム
    が必要かもしれません。
    個人的にはAIを実際の創作に活用することに興味があります。
    巷では生成系AIに対して「〇〇に使えそう!」という声が多く見られます。
    ですが個人的に「使えそう!」と実際に「使える!」の間には大きなギャップがあると思っています。
    多くはなんとなく「使えそう!」と妄想している段階だと思っており、これをどうやって「使える!」に変えて行ける
    かが課題だと思っています。

    View Slide

  30. 参考文献
    [1] Rombach, Robin, et al. "High-resolution image synthesis with latent diffusion models." Proceedings of the IEEE/CVF
    Conference on Computer Vision and Pattern Recognition. 2022.
    [2] Gal, Rinon, et al. "An image is worth one word: Personalizing text-to-image generation using textual inversion." arXiv
    preprint arXiv:2208.01618 (2022).
    [3] Ruiz, Nataniel, et al. "Dreambooth: Fine tuning text-to-image diffusion models for subject-driven generation." arXiv
    preprint arXiv:2208.12242 (2022).
    [4] Kawar, Bahjat, et al. "Imagic: Text-Based Real Image Editing with Diffusion Models." arXiv preprint arXiv:2210.09276
    (2022).
    [5] Ho, Jonathan, Ajay Jain, and Pieter Abbeel. "Denoising diffusion probabilistic models." Advances in Neural Information
    Processing Systems 33 (2020): 6840-6851.
    [6] Quasi-Taylor Samplers for Diffusion Generative Models based on Ideal Derivatives
    [7] CLIP: Connecting Text and Images https://openai.com/blog/clip/

    View Slide