Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Stable Diffusion の仕組み

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

fine-tuning 手法の紹介

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

一般的な 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 手法の中で精度は最 も高くなる。

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

まとめ 大量のデータを用いた 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 手法について解説しました。

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

参考文献 [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/