CLIP Text Deprojectorを使って画像生成してみる ~レイヤー数を増やす~
前回まで、LSTMの内部次元数を増やす実験をしてきましたが、今回は内部次元数を一定にして、LSTMを含むネットワークを多層化して比較します。
前回の記事
他のStable Diffusionの関連記事
Layered Diffusion Pipelineを使うためのリンク集
ライブラリの入手先と使用法(英語) : Githubリポジトリ
日本語での使用方法の解説 : Noteの記事
ネットワークの多層化
今回、ネットワークを多層化するにあたっては、LSTMモジュールのみの多層化ではなく、その後の線形変換などを含めた全体を多層化する形を取ります。
上図は、2層化したネットワークの簡略化した模式図です。入力embeddingは各レイヤーで直接入力されますが、再帰的な入力は2層目以降は前の層の出力を入力として受け取る形になります。
この構成は、encoder-decoder型のtransformerのdecoderのパターンに類似しています。
レイヤーの数は、2層ないし3層で、学習環境の都合上、パラメータ数に上限を設けてレイヤーの数に上限を設けています。
初期LSTMモデルの多層化
最初に試すのは、以下の記事で扱った最初のバージョンの多層化です。
このバージョンは、入力embeddingの情報の減衰を防ぐ変更も、LSTMの内部次元を増やす変更も行う前のものです。
パラメータ数をモデルファイルのサイズ換算で80MB程度を上限とすると、3層が上限となります。それを元に、以下の順に生成画像を並べました。
Deprojectorなし
レイヤー 1層
レイヤー 2層
レイヤー 3層
使用したプロンプトはこれまでと同様、次の通りです。
単一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層から2層への拡張は画像のノイズがはっきりと減少していますが、2層から3層への拡張における改善はあまり際立っていないようです。
情報減衰を防ぐモデルの多層化
次に、以下の記事の前半で取り扱った、入力embeddingの情報の減衰を防ぐ変更を入れたモデルを多層化しました。
この記事で試したモデルの内、最も生成画像の質が良かった「入力を加算し、残差を出力のみに含む」モデルのみを多層化しています。
前節と同様に、パラメータ数をモデルファイルのサイズ換算で80MB程度を上限とすると3層が上限となり、同様にして以下の順に生成画像を並べました。
Deprojectorなし
レイヤー 1層
レイヤー 2層
レイヤー 3層
このモデルの場合、多層化による生成画像のノイズの改善は見られず、むしろ部分的に悪化しているという結果となりました。
内部次元数を増やすモデルの多層化
最後に試したのは、次の記事の後半で試した内部次元数を増やすモデルの多層化です。
この記事で試したモデルの内、最も結果の良かった「線形変換後に残差接続を繋げる」モデルのみで実験をしています。
このモデルでは、内部次元数を増やすことができるため、パラメータ数上限のモデルファイルのサイズ換算で80MB程度を考え、次の設定のモデルで生成画像を並べました。
Deprojectorなし
内部次元 1倍。レイヤー 1層
内部次元 1.25倍。レイヤー 1層
内部次元 1倍。レイヤー 2層
内部次元 1.25倍。レイヤー 2層
レイヤー数が1層から2層に拡大する変更と、内部次元が1倍から1.25倍に拡大する変更の両方が相乗的に生成画像のノイズ低減に効果を与えていることが確認できました。
まとめ
LSTMモデルのネットワークの多層化の実験を行いました。
モデルのアーキテクチャによって、多層化の恩恵が受けられる場合と受けられない場合がありました。
初期LSTMモデル:2層が最適(3層は変化なし)
情報減衰防止:1層が最適(2層以上は悪化)
内部次元数増加:2層&内部次元1.25倍が最適(3層は確認せず)
この記事が気に入ったらサポートをしてみませんか?