CLIP Text Deprojectorを使って画像生成してみる ~アンサンブル~
前回までは、CLIP Text Deprojectorのモデルの単体での性能を上げることを行ってきましたが、今回は訓練データを変えて複数のモデルを作り、それらを合成することで、最終的な出力の品質を向上させてみました。
前回の記事
他のStable Diffusionの関連記事
Layered Diffusion Pipelineを使うためのリンク集
ライブラリの入手先と使用法(英語) : Githubリポジトリ
日本語での使用方法の解説 : Noteの記事
アンサンブル学習とは?
単純に言えば、複数のモデルを学習して、その出力を合成して最終出力にする手法です。一般的なアンサンブル学習には、最初の複数のモデルを学習する方法や、最後の出力を合成する方法にいくつかの方法があります。
また、ドロップアウトやマージモデルも広い意味でのアンサンブル学習と考えることもできます。
今回試したのは、複数のモデルの出力の平均を取る方法(以下、アンサンブル)と、複数のモデルのパラメータを平均した新しいモデルを作る方法(以下、マージ)の2種類の手法です。どちらも元の複数のモデルは元データのLAION 2B ENのテキストの異なる一部を取って学習したものになります。
アンサンブルとマージの比較
まず、アンサンブルとマージの2つの手法を比較しました。訓練データとして増強データを含む約3万件のデータを用いて学習した4つのモデルを元に、アンサンブルモデルとマージモデルを作って画像を生成しました。
左列は、合成前の単体のモデルを使った生成画像で、中列がアンサンブルモデルを用いたもの、右列がマージモデルを用いたものです。
最上段は参照用にDeprojectorを使わない生成画像、次の段から1つずつモデルを合成モデルに追加していったもので、2段目がモデル1つ、3段目がモデル2つ、4段目がモデル3つ、5段目がモデル4つを合わせたものです。
単一embedding
まずは単一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の合成の場合は、アンサンブルモデルとマージモデルにそれほどはっきりとした優劣はつけにくいように思われます。
訓練データ量の検討
次に、合成モデルを作る際の元のモデルを学習する際の訓練データの最適量を検討してみます。上記の結果を踏まえ、マージモデルではなく、アンサンブルモデルを用いて比較検討します。
最上段は比較用で、次の段から訓練データを2万件、3万件、4万件、5万件と変化させています。全て、4つのモデルを合成したアンサンブルモデルです。
1つ目は単一embeddingで上記で使用したプロンプトを左から右に1列ずつ並べています。
次は複数embeddingの合成で、やはり上記で使用したプロンプトを左から右に1列ずつ並べています。
以上の結果を見る限りでは、訓練データ量を増やすことが生成画像の質の向上にはつながっていないように見られ、2~3万件の訓練データで十分ではないかということが推測されます。
まとめ
アンサンブル学習を用いることで、モデルの質を向上させることができるようです。
アンサンブルとマージの2種類の手法を試したところ、アンサンブルの方が収束性がよいという結論を得ました。しかし、マージの方がパラメータが少なくて済むため、モデル数を増やした時の挙動は今後の検討課題です。
合成前のモデルの訓練データ量は、あまり増やしても質の向上にはつながらず、2~3万件で十分ではないかということが示唆されました。
この記事が気に入ったらサポートをしてみませんか?