TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

いらすとやでTextual Inversionを試す

Stable Diffusionの追加画像によるスタイル学習の方法として、「Textual Inversion」という方法がある。

これは、3~5枚の画像を用いて、スタイルを表す新規の単語の埋め込みベクトルを学習する方法である。
既存のパラメータは一切更新しないで、既存モデルに新規の単語を追加することで、その単語が追加画像のスタイルを表すように学習される。

使用する画像は、配色やスタイルが統一されている必要がある。

ここでは、いらすとやの画像を使って、Textual Inversionを試してみた。

手順は、↓こちらのページの解説を参考にした。
note.com

追加画像

どこまで配色やスタイルが統一されている必要があるのか知りたかったため、いくつかのパターンを試した。

男の子

服の色が同じ、男の子の画像3枚を使用する。

女の子

服の色が同じ、女の子の画像3枚を使用する。

男の子と女の子

上記の男の子の画像3枚と女の子の画像3枚を合わせた、計6枚

適当な期間の画像118枚

2021年1月の画像+αの118枚
例:

結果

各パターンでの生成結果は以下の通り。
単語は、「irasutoya」に学習している。

男の子

プロンプト:「a boy, irasutoya」

・追加画像:男の子3枚

いらすとやにそっくりかと言われると違うが、雰囲気はでている。

「, irasutoya」をなくして、単に「a boy」とすると以下のようになる。

既存モデルには影響していないことが確認できる。

・追加画像:女の子3枚

配色のスタイルは反映されているが、性別不明な人物が生成されている。

・追加画像:男の子と女の子 計6枚

男の子っぽい画像と女の子っぽい画像が生成されている。

・追加画像:適当な期間の画像118枚

キャプションを無視して、よく分からない画像になっている。
配色もグレーな画像になっている。
やはり追加画像のスタイルが統一されている必要があるようだ。

人物以外の動物でも試してみた。
プロンプト:「a cat, irasutoya」

・追加画像:男の子3枚

猫が人間になってしまっている。
やはり追加画像にあるオブジェクトの影響を受けてしまうようだ。

・追加画像:女の子3枚

左1枚は猫がイラストぽくなっている。
右3枚は背景の配色のみスタイルが反映されている。

・追加画像:男の子と女の子 計6枚

猫が人物になっている。
右1枚は、文字のみのよくわからない画像が生成されたりしている。
追加画像のスタイルが統一されていないことが影響していそうである。

・追加画像:適当な期間の画像118枚

イラスト調だが、かわいくない猫が生成された。
配色も暗めである。

芝生の庭で走り回る犬のイラスト

少し複雑な説明文でも試してみた。
プロンプト:「Illustration of a dog running around in a lawn garden, irasutoya」

・追加画像:男の子3枚

説明の概念は理解できているが、犬が人物になる場合がある。

・追加画像:女の子3枚

あまりスタイルが反映されていない。
説明文が複雑になると、スタイルの指示が弱まるようだ。

・追加画像:男の子と女の子 計6枚

イラスト風になっているが、犬が人物になっている。

・追加画像:適当な期間の画像118枚

キャプションの意味は解釈できている。
イラスト調だが、いらすとやの雰囲気はない。

irasutoya

irasutoyaのみでも試してみた。
プロンプト:「irasutoya」

・追加画像:男の子3枚

デフォルメされた人物と配色が学習されていそうである。

・追加画像:女の子3枚

人物よりも配色が多く学習されていそうである。

・追加画像:男の子と女の子 計6枚

画像が統一されていないためか、よくわからない画像も生成されている。

・追加画像:適当な期間の画像118枚

グレーの配色で、よくわからない画像が生成される。

まとめ

いらすとやの画像でTextual Inversionを試してみた。
追加画像のスタイルが統一されている場合は、配色やイラストの雰囲気は反映することができた。
ただし、画像にあるオブジェクトも反映されてしまうため、別のオブジェクトを生成する場合は影響が出ることが分かった。
追加画像の配色やオブジェクトが統一されていない場合、いらすとやの雰囲気とは外れて意図したスタイルを反映することはできなかった。

前回試した潜在拡散モデルの追加画像と比較すると、反映されるスタイルは弱くなり、異なるオブジェクトにスタイルを反映させるのは難しい場合があることがわかった。
Textual Inversionを使う場合は、生成するオブジェクトと同じオブジェクトの画像で学習した方が良さそうである。