CLIP Text Deprojectorを使って画像生成してみる ~増強データの割合~
前回は、CLIP Text Deprojectorのモデルをembedding演算を工夫してモデルを改良するという記事を書きました。今回は、訓練データ中の増強データの最適な割合を探してみたいと思います。
前回の記事
他のStable Diffusionの関連記事
Layered Diffusion Pipelineを使うためのリンク集
ライブラリの入手先と使用法(英語) : Githubリポジトリ
日本語での使用方法の解説 : Noteの記事
増強データの生成方法とその割合
増強データはテキスト2つからembedding演算を用いてembeddingを1つ生成して入力にし、結合テキストから生成したlast hidden stateをターゲットとして生成されています。詳細は以下の記事で説明しています。
ただし、記事中ではembedding演算にベクトルの平均を取る方式を採用していますが、今は前回の記事で説明したように差の合計を取る方式に変更しています。
これにより、増強データを含む訓練データ(およびテストデータ)の割合は、次のようになっています。ただし、増強なしデータの割合をX%と置きます。
X% 増強なしデータ
(100-X)% 増強データ
(50-X/2)% 元テキスト1つをランダムに2分割して増強データを作成
(50-X/2)% 元テキスト2つから増強データを作成
これまでは、増強なしデータと増強データの割合を1:1(X=50%)として訓練データを作成していましたが、今回、2:3(X=40%)、1:2(X=33%)の訓練データを作成して、結果を比較してみることにします。
補足)トレーニング方法のおさらい
以前の記事で説明したように、Google Colabのメモリ使用量の制限内でトレーニングを行うため、特殊な手順でトレーニングを行っています。
増強データの生成をランダムに行う関係上、各分割データの件数は厳密ではなくおおよそ1万件となっています。また、全ての分割データに空文字列のデータを1件ずつ含めるヒューリスティクスが入っています。
生成画像 - 単一embedding
最左列からデータ増強割合が1:1(=50%)、2:3(=40%)、1:2(=33%)の順に並んでいます。また、最上段は比較用で、2段目以降が訓練データ2万件、3万件、4万件、5万件と並んでいます。
使用したプロンプトはこれまでと同じ3種類です。
cat maid (猫耳メイド)
1girl red hair blue eye black skirt(赤髪 青目 黒スカート)
1boy 1girl in class room(少年 少女 教室)
最右列の1:2の増強データ割合の生成画像は、元のプロンプトの内容が適切に反映されていない様子がありますが、左2列の生成画像は同程度の質があるように思われます。強いて言えば、1:1の画像に比べ、2:3の画像は生成画像の特徴がやや遅れて出現しているようにも思われます。
生成画像 - 複数embeddingの合成
複数embeddingの合成も、最左列からデータ増強割合が1:1(=50%)、2:3(=40%)、1:2(=33%)の順に並んでいます。また、上2段が学習件数2万件のモデルを用いた画像、下2段が学習件数4万件のモデルを用いた画像となります。
前回と同様、プロンプトには、次の3種類を使用しました。
cat, maid (猫 メイド)
1girl, red hair, blue eye, black skirt (赤髪 青目 黒スカート)
1boy, 1girl, in class room (少年 少女 教室)
複数embeddingの合成の場合は、中列の2:3の増強データ割合のモデルが最もプロンプトの意味に近い画像を出力しているように思われます。
また、3要素以上の合成では、いくつかの要素が無視される傾向があるように見えますが、この点はembeddingの合成がどういう意味を持った操作であるのかから含めて、もう少し検証が必要だと思います。
まとめ
増強データ割合は、2:3の場合(増強なしデータが40%)がもっともバランスの取れたトレーニングを行うことができると分かりました。
追記
最新のモデルをHugging Faceに登録しました。増強データ割合2:3で約3万件のデータでトレーニングしたモデルになります。
この記事が気に入ったらサポートをしてみませんか?