Stable Diffusionで年齢別に男女を生成してみた

世界平和仕様・・・だけじゃダメなんです

人物関係のプロンプトを入れると、大抵のモデルでは年頃の可愛い女の子がデフォルトで出力される世界平和仕様?のStable Diffusion。

男性諸君にとって可愛い女の子がたくさんいるってのは素晴らしいことではあるものの、今回はそれ以外の赤ちゃんや幼児といった子供から、おっさん、おばちゃんなど高齢者を含む人物をプロンプトで出力する方法についてまとめていきます。なお、言葉だけでなく実際に画像を見てもらった方が圧倒的に分かりやすいと思われるため、出力されたサンプル画像もいくつか掲載します。

当サイトではエ○方面の内容は掲載しておりません。今後掲載する予定もありませんので、そのような内容をお求めの方は他のサイトを検索してお探しください。すいません。

今回の記事の結論を先にお伝えしてしまいますと、「生成すること自体は可能なものの、色々なサイトに掲載されている品質向上タグ(クオリティタグ)を入れると基本的に美形の男女しか出なくなるため、年齢の違いを出すことが難しくなりガチャ要素が強くなり」ました。

乳児(1歳)infant

プロンプト:infant,1baby,1 year old

乳児単体で生成するのが非常に難しかったです。たくさん生成してガチャるしかない感じです。

soloや1babyとプロンプトを指定しても大抵母親と乳児のセットになってしまうことに加え、男の子、女の子を区別しようとしても反応を示さない。性別(male、female)をネガティブ要素にしてみましたが、それも効果がほとんどありません。

おそらくクオリティタグの影響を受けており、一般的な品質向上タグを入れた場合は単体の生成確率が上がるため、一度生成してからControlNetで調整していく方が最終的に早いような気がしました。

幼児(2~5歳)toddler

プロンプト:toddler,1baby,3 years old

こちらも母親とセットになることが多いが、単体で生成される確率は乳児(1歳)と比べて飛躍的に多くなりました。鉄板のプロンプトはtoddler(幼児)ですが、1babyと年齢指定でも生成されました。male、femaleと指定することで性別を区別して生成することもできます。

小学生(6~12歳)elementary school student

プロンプト:elementary school student,child,9 years old

とりあえず「elementary school student」を入れておけばなんとかなる感じです。乳児・幼児に比べて格段に生成されやすいです。制服を着た中学生や高校生とも思える男女も結構な確率で出てきますが、年齢指定タグを併用することで小学生っぽい子の画像生成確率が上がるようです。

中学生(13~15歳)junior high school student

プロンプト:junior high school student,13 years old

やはり私の場合はクオリティタグの影響を受けているようで、一般的な品質向上タグを入れただけなのですが、上記のように中学生のプロンプトで明らかに高校生と思える男女が高確率で出力された。クオリティタグを外すと中学生っぽい画像が一気に増えるので、個々の環境によっては普通に生成ができると思います。
簡単に高精細な中学生の男女を生成するだけなら、前記の小学生で生成されたものの使えそうなやつを拾う感じの方が良いと感じました。

高校生(16~18歳)high school student

プロンプト:high school student,teenager,18 years old

今までがウソだったように容易に生成できる。プロンプトに対して従順に反応する。
あまりにも簡単なため特記事項もない。ここで詰まっている、生成できなくて困っているなんて人はいないはず。好きなだけ美男子、美少女を出力してください。

大学生(19~22歳)university student

プロンプト:university student,college age,young adult,22 years old

20歳を超えた成年男女。学生との違いは顔にあどけなさが残るかどうか、といった具合。プロンプトを与えると比較的その通りに生成してくれる。性別や属性に関するプロンプトを入れない場合は女性になることが多い。

30歳台(30~39歳)thirties

プロンプト:thirties,35 years old

30歳を指定すると上記の大学生とほとんど差が無かった。ここらへんは各々が使用しているモデルによるっぽいので、実際に生成される画像を見て年齢(○ years old)を調整して理想を求めていっていただきたい。
数百枚生成してみたが、20歳台との違いは男女ともに胸部の筋肉が大きくなっていることと、男性の場合はあご髭の面積が大きくなっていること。

40・50歳台(40~59歳)middle aged

プロンプト:middle aged,uncle,aunt

これ以降、年齢(○ years old)のプロンプトを入れてもあんまり効果がなくなっていきました。

冒頭でも記載しましたが、画像の品質を向上させるタグ(クオリティタグ)を入れると、基本的に美形の男女しか出なくなるため年齢の違いを出すことが難しくなるようです。

中年を表す「middle aged」やおじさん「uncle」、おばさん「aunt」で40~50歳台の人物が表現できました。なぜか、おっさんだけ外国人っぽさが高くなってしまいますが、髪の色や日本人と指定するなどして近づけていけばいいと思います。

60歳以上(60歳~) old man,old woman

プロンプト:old man,old woman

こちらもクオリティタグが強すぎて年齢プロンプト「○ years old」が機能しない状態であるものの、old man,old womanが非常に有効でした。
大体60歳から80歳の老人が生成されるため、これで十分かと思います。

最後に

いかがだったでしょうか。

年齢が低い赤ちゃんから検証を始めたのですが、一番最初が一番生成するのが難しいという、なかなか筆者泣かせの結果となりました。

クオリティタグやモデルとの相性がかなり影響しますので、個々の環境によって微調整してくださいね。

コメント

タイトルとURLをコピーしました