
CLIP Text Deprojectorを使って画像生成してみる ~MLPを適用してみる~
前回まで、内部次元数とレイヤー数を変化させてきましたが、今回は、MLPレイヤーを追加して比較してみます。
前回の記事
他のStable Diffusionの関連記事
Layered Diffusion Pipelineを使うためのリンク集
ライブラリの入手先と使用法(英語) : Githubリポジトリ
日本語での使用方法の解説 : Noteの記事
モデルアーキテクチャ
LSTMモデルを、TransformerのようにMLPネットワークを追加して拡張する方法として、以下の図に示すような2通りの方法を試しました。

(1)では、入力embeddingとLSTMの出力を加算せずにそれぞれ活性化関数を適用し、結合して線形変換を適用します。やや変則的なMLPの適用方法となりますが、パラメータ数が少なくなります。
(2)では、前回までのLSTMモデルにはほぼ手を加えず、出力に追加でMLPネットワークを適用します。(1)よりもパラメータ数が増えますが、内部次元を変更する自由度が生まれます。
初期LSTMモデルの拡張
まず、前回の記事と同様、以下の記事で扱った最初のバージョンにMLPを追加してみます。
比較したモデルは以下の通りです。
Deprojectorなし
MLPなし
モデル(1)
モデル(2)で、MLP中間層の次元が入力次元の2倍
モデル(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 (少年 少女 教室)


以上の結果から、モデル(2)でMLP次元を入力の2倍にしたもの(4段目)が最もよい結果となるようです。しかし、MLP次元を4倍にすると、逆に生成画像が悪化するようです。
内部次元数を増やすモデルの拡張
次に、この記事の後半で試した内部次元数を増やすモデルにMLPを追加してみます。
比較したモデルは上の節と同様、以下の通りです。
Deprojectorなし
MLPなし
モデル(1)
モデル(2)で、MLP中間層の次元が入力次元の2倍
モデル(2)で、MLP中間層の次元が入力次元の4倍
LSTM内部次元が入力次元の1倍
まず、LSTM内部次元を増やしていないモデルで実験します。


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


こちらでは、初期LSTMモデルの場合とは異なり、MLPを追加することが必ずしも改善にはつながらないようです。
まとめ
今回は、LSTMモデルにMLPを追加してネットワークを拡張してみました。
しかし、MLPを追加することは必ずしも生成画像を改善せず、ケースバイケースでの判断が必要であることが分かりました。