見出し画像

CLIP Text Deprojectorを使って画像生成してみる ~MLPを適用してみる~

前回まで、内部次元数とレイヤー数を変化させてきましたが、今回は、MLPレイヤーを追加して比較してみます。

前回の記事

他のStable Diffusionの関連記事

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


モデルアーキテクチャ

LSTMモデルを、TransformerのようにMLPネットワークを追加して拡張する方法として、以下の図に示すような2通りの方法を試しました。

LSTMモデルにMLPを追加

(1)では、入力embeddingとLSTMの出力を加算せずにそれぞれ活性化関数を適用し、結合して線形変換を適用します。やや変則的なMLPの適用方法となりますが、パラメータ数が少なくなります。

(2)では、前回までのLSTMモデルにはほぼ手を加えず、出力に追加でMLPネットワークを適用します。(1)よりもパラメータ数が増えますが、内部次元を変更する自由度が生まれます。

初期LSTMモデルの拡張

まず、前回の記事と同様、以下の記事で扱った最初のバージョンにMLPを追加してみます。

比較したモデルは以下の通りです。

  1. Deprojectorなし

  2. MLPなし

  3. モデル(1)

  4. モデル(2)で、MLP中間層の次元が入力次元の2倍

  5. モデル(2)で、MLP中間層の次元が入力次元の4倍

使用したプロンプトはこれまでと同様、次の通りです。

単一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 (少年 少女 教室)

単一embedding
複数embeddingの合成

以上の結果から、モデル(2)でMLP次元を入力の2倍にしたもの(4段目)が最もよい結果となるようです。しかし、MLP次元を4倍にすると、逆に生成画像が悪化するようです。

内部次元数を増やすモデルの拡張

次に、この記事の後半で試した内部次元数を増やすモデルにMLPを追加してみます。

比較したモデルは上の節と同様、以下の通りです。

  1. Deprojectorなし

  2. MLPなし

  3. モデル(1)

  4. モデル(2)で、MLP中間層の次元が入力次元の2倍

  5. モデル(2)で、MLP中間層の次元が入力次元の4倍

LSTM内部次元が入力次元の1倍

まず、LSTM内部次元を増やしていないモデルで実験します。

単一embedding
複数embeddingの合成

LSTM内部次元が入力次元の1.25倍

次に、LSTM内部次元を1.25倍に増やしたモデルで実験します。

単一embedding
複数embeddingの合成

こちらでは、初期LSTMモデルの場合とは異なり、MLPを追加することが必ずしも改善にはつながらないようです。

まとめ

今回は、LSTMモデルにMLPを追加してネットワークを拡張してみました。

しかし、MLPを追加することは必ずしも生成画像を改善せず、ケースバイケースでの判断が必要であることが分かりました。

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