見出し画像

CLIP Text Deprojectorを使って画像生成してみる ~モデルを書き直してみる(2)~

今回は、前回からの続きでモデルをより拡張性のあるモデルに書き換える実験を続けていきます。

前回の記事

他のStable Diffusionの関連記事

Layered Diffusion Pipelineを使うためのリンク集


VTモデル

合成前のパラメータ数の比較

前回の記事で、TransformerモデルとVicinityモデルの2種類のモデルを作成しました。実験では、どのモデルも同程度の性能を示していました。

今回の記事では、この2種類のモデルを合成して新しいモデルを作ることとします。TransformerモデルとVicinityモデルを合成するので、VT(vicinity-transformer)モデルと呼ぶこととします。

VTモデルの詳細に移る前に、それぞれのモデルで使われているパラメーター数を比較しておきます。CLIP Text ModelのEmbeddingの次元(Stable Diffusion v1.5では768)をDとして、これまでに扱ったCLIP Text Deprojectorのパラメーター数の概数は次のようになります。

  • 改良版モデル(Hugging Faceの最新): 20 D^2

  • 初期モデル: 12 D^2

  • Transformerモデル(書き換え版): 12 D^2

  • Vicinityモデル(一括適用版、vicinity=3): 13 D^2

  • Vicinityモデル(個別適用版、vicinity=3): 14 D^2

TransformerモデルとVicinityモデルでは、パラメータ数はほぼ同じですが、Vicinityモデルの正確なサイズはvicinityの値に依存します。

VTモデル(一括適用版)

VTモデルとTransformerモデルやVicinityモデルの違いは、TransformerモデルのAttention部分のアーキテクチャの違いにあり、それ以外の部分は全く同じアーキテクチャをしています。

VTモデルのアーキテクチャは、AttentionとVicinityのMLPを並列させて、最後に線形変換で1つの隠れ状態に統合する構造を取っています。以下に、アーキテクチャを図示します。

VTモデル(一括適用版、vicinity=2)

Vicinityモデルをベースにした部分(左側)はVicinityモデルのアーキテクチャと同様です。

Transformerモデルをベースにした部分(右側)は、一番左の隠れ状態が入力embeddingを用いるのではなく、ゼロテンソルを用いているところに変更があります。これは、すでに左側に入力embeddingを用いているため、2重に入力することを避け、Attention部分が隠れ状態のトークン間の関係性に特化することを期待したものです。

VTモデル(個別適用版)

VTモデルの個別適用版も、一括適用版と同様にTransformerモデルとVicinityモデルを並列に組み合わせた形をしています。以下に図示します。

VTモデル(個別適用版、vicinity=2)

VTモデルのパラメータ数

上記のVTモデルのパラメータ数を、改良版モデルと拡張前のTransformerモデルと比較してみます。

  • 改良版モデル(Hugging Faceの最新): 20 D^2

  • Transformerモデル(書き換え版): 12 D^2

  • VTモデル(一括適用版、vicinity=2): 16 D^2

  • VTモデル(個別適用版、vicinity=2): 17 D^2

このように、VTモデルは、Transformerモデルと改良版モデルとの中間程度のパラメータ数であることが分かります。

生成画像

前回の記事と同様、5万件の訓練データを使用して、8エポック学習させたモデル同士で画像生成を行って比較しました。

今回もこれまでと同じプロンプトを使用しています。

単一embedding

  • cat maid (猫耳メイド)

  • 1girl red hair blue eye black skirt(赤髪 青目 黒スカート)

  • 1boy 1girl in class room(少年 少女 教室)

複数embeddingの合成

  • cat, maid (猫 メイド)

  • 1girl, red hair, blue eye, black skirt (赤髪 青目 黒スカート)

  • 1boy, 1girl, in class room (少年 少女 教室)

画像は、最上段から、

  1. Deprojectorを使用しない(参照用)

  2. Transformerモデル

  3. Vicinityモデル(vicinity=3)

  4. VTモデル(vicinity=2)

となっています。

VTモデル(一括適用版)

VicinityモデルとVTモデルの両方で、一括適用版を使用した場合の生成画像の比較です。

単一embedding
複数embeddingの合成

VTモデルの生成画像が明らかに、TransformerモデルやVicinityモデルに比べて悪化しています。

VTモデル(個別適用版)

VicinityモデルとVTモデルの両方で、個別適用版を使用した場合の生成画像の比較です。

単一embedding
複数embeddingの合成

個別適用版では、VTモデルの生成画像が他に比べて改善しているのが見て取れます。特に複数embeddingの合成で顕著です。

まとめ

TransformerモデルとVicinityモデルを合成して、VTモデルを作成しました。

一括適用版と個別適用版を比較して、個別適用版のVTモデルが最も性能がよいことを確認しました。

今後は、VTモデル(個別適用版、vicinity=2)をベースに、モデルアーキテクチャの調整を進める予定です。

この記事が気に入ったらサポートをしてみませんか?