見出し画像

最近よく使うモデルで眼鏡プロンプトについて検証した話

ご挨拶

※こちらの記事は AICollection アドベントカレンダー の12 日目の記事となります。

初めまして。すとりとれす(@story_trace)と申します。
皆さんはAI画像生成やってますでしょうか?私はというと、昨年11月ごろからすっかりはまってしまい、いまではローカル環境を自宅で作って毎日画像生成する日々です。

AI画像生成の良いところに、「自分の好きを追求できる」があると思っています。絵が描けない人でも、突き詰めれば自分の好きな絵柄、好きな性癖で絵を量産できる、そして更に「好き」の高みへ登っていける、それが自分にものすごく刺さりました。

で、私がどんな絵を作っているかというと・・・

こんなのとか

こんなのとか、こんなのです。

特にSNSとかで述べてこなかったのですが、ここまで私のtweetを見ている方にはわかるかもしれません。そうです。わたしは「眼鏡」が大好きな人です。自分の好きなものをひたすら自分で量産できる、これはほんとにいいことです。

いざ環境を導入して画像を生成していると、眼鏡を出力するにあたって多くの悩みがでてきます、、
それは、
どういうプロンプトにすればどんな眼鏡が出力されるのかよくわからん!
ということです。入力側としては、できれば出てくる眼鏡をコントロールしたいのです。ControlnetやLatentCoupleなんてものもでてきて、構図やポーズ、複数人の描き分けはできるようになっているものの、いまだ好きな眼鏡をすきに出せるまでには至っていない。それが2023年3月21日の画像生成AIの現在地です。進化激しいこの界隈ですので、中長期的には克服されていく課題とは思いますが、今現在どうするか、ということにあたり、自分がよく使うモデルにおいて、眼鏡の出力がどんな感じになるのか調べてみました。
勝手手法の勝手検証となりますが、よろしければご覧ください。
(そして、その筋の方がいらっしゃればぜひ議論したい・・・)

眼鏡プロンプト検証(勝手手法版)

手法と条件

  • 単純なプロンプトで100枚出力、出てきた画像を分類する
    1girl,<眼鏡ワード>,ネガティブプロンプトは(low quality, worst quality:1.4) 

  • 眼鏡ワード:
    (1)glasses
    (2)under-lim glasses
    (3)plastic frame eyewear

  • サンプラー:Euler a,ステップ数:20

  • CFG scale:7.5,Clip skip: 2

  • Hires upscale: 2, Hires upscaler: Latent,Denoising strength: 0.55

  • 画像サイズ512*512→1024*1024

  • 使用モデル:
    (1)RainMiX 
    (2)SE_V2_B
    (3)OsukiniMix_B
    (4)loliDiffusionV0.8.3(AOM2-SFW_M12-CLIP_VAE_PURIFIED)
    (5)7th_anime_v3_C
    ※選定理由=最近よく使っているから

結果(眼鏡ワード=”glasses”)

 さっそくですが、出力して分類した結果を示します。指定ワードは”glasses”ですので、各モデルの自然な眼鏡の解釈が出力されるのではないかと予想していますが、果たして…

表1:眼鏡をglassesで指定した場合
  • アンダーリムは非常に出にくい。トップリムやサングラスは出なかった
    →トップリムに関してはあまり眼鏡として学習されていない?
     おそらくサングラスはsunglassesなど別な単語で学習されている?

  • loli-Diffusionは眼鏡といえばフレーム無しがメイン

  • 多くのモデルはメタルフレームが出ることが多い(OsukiniMix_B、SE_V2_B1、7th_anime_v3_C)

  • loli-Diffusionや7th_anime_v3_Cはセルフレームが出にくい

 特段形状を指定しない”glasses”の指定でどのような傾向があるのかは見えてきました。これをベースとして、他のワードをみていこうかと思います。また、表に「失敗眼鏡」という謎の言葉がありますね。これについても分類の定義を下に示しておきます。

失敗眼鏡(造語)について
眼鏡を出力しているとよある現象です。
おでこ眼鏡(多重)は「眼鏡をしているにも関わらず、おでこに眼鏡をかけている状況」。奇形眼鏡(これも造語)は「眼鏡の形状がおかしかったり、空間に眼鏡っぽい奇形のオブジェクトが出力される状況」です。実は、眼鏡出力を突き詰めるうえでこれはこれで大きな課題なのですが、ここでは置いておきます。

珍しいアンダーリムが出ているのに・・・惜しい
おでこ眼鏡(多重)の例
変な形状の眼鏡をもっている・・・
奇形眼鏡の例

結果(眼鏡ワード=”under-rim glasses”)

 では、欲しい眼鏡を指定した場合どうなるのか、先ほどあまり出なかったアンダーリムがみたいなと思ったので"under-rim glasses"を指定してみます。

表2:眼鏡をunder-rim glassesで指定した場合

 うーーん。やっぱりアンダーリム、出にくいですね。増えてはいるのですが・・・ただ、loliDiffusionで16枚出ているのはかなりの進歩だと思います。あとは全体的な結果としてはglasses指定時と違いセルフレームが減ってしまっていることも気になります。

結果(眼鏡ワード="plastic frame eyewear”)

 次に、セルフレーム眼鏡を出してみますが、Bingくんに質問すると、英語では”plastic frame eyewear”がポピュラーらしいので、こちらで出力。

表3:眼鏡をplastic frame glassesで指定した場合

 絶対にセルフレームが出るというわけではないが・・・確かにセルフレーム増加していますね。特にRainMixでは半分がセルフレームになっています。やった!そして、OsukiniMix_B,7th_anime_v3_Cですが、アンダーリムが大幅に増えていてます。なぜ??ちょっと仮説も立ちません・・・
また、多重のおでこ眼鏡ではなく、ただおでこに眼鏡をかけている絵がloliDiffusionで出ました。これはこれでかわいい。。

RainMixのセルフレーム例
おでこ眼鏡

ただ、語句のframeが悪さをしているのか、絵画の枠みたいのが出てくる絵も多く出てきました。思わぬ副作用かもしれません。

7th_Anime_v3_Cで枠が強調されてしまった例

また、今回の指定だと、おでこにも眼鏡をかけてしまう確率や、奇形眼鏡が出る確率がどのモデルにおいても上がっていることも気になります。これは要因がよくわからないのですが、LatentでHiresをかけてしまっていることや単語数が多い、CFG値などいろいろなことが考えられそうです(要検証)

まとめ

 5つのモデルに対して、3つの眼鏡ワードでどのように出力が違うのか見てきました。大まかな傾向としてはこんな感じでしょうか。※今回の条件における検証結果であり、ユーザーの環境によって異なる結果となる場合もあると思いますので、あくまで参考として見ていただければ

  • フレーム無しの眼鏡を出したいならloli-Diffusionでglasses指定がよい

  • RainMixはセルフレームを指定してやれば比較的出やすい

  • アンダーリムは狙って出すのが難しいが、OsukiniMix_Bは指定してやればアンダーリムが出るチャンスがあるかもしれない。

  • SE_V2_Bはフレームが細い眼鏡が比較的出やすい(メタルフレームやフレーム無し)、7th_anime_v3_Cも同傾向(ただもうちょっといろいろな眼鏡が出る感じ)

  • セルフレーム指定では、モデルによってはしっかり効いてくれる一方で、意図しない眼鏡が出力される(理由不明。要検証)

おわりに(あと今後の課題とか)

 さて、いかがだったでしょうか。技術に自信がなく、モデルの原理を十分に理解できていないということもあり、今回は体当たりの物量出して検証する、ということをしてみました。モデルごとの違いに関しては、追加学習の有無、マージの系統樹なんかを調べていくと、もう少し理屈がつけられるかもしれません。
 単純に好きな眼鏡を出したいのであればLoraを使うのもありかと思っています。現に丸眼鏡に関してはCivitAIにLoraがあるようです。ただ、自分でこれっていうLoraモデルがまだ見つけられていないので、敷居は高いんで置いたままにしていた追加学習に関して勉強しなきゃかなあと思っているところ・・・
 また、改めて同条件でたくさんの眼鏡絵を出力すると、数多くの奇形眼鏡が出てきていて、これをなんとか抑えられないのかも課題です。ネガティブプロンプト等駆使していろいろ試しているのですが、なかなか難しいです。様々な眼鏡の失敗例を蓄積、学習させて、bad_promptやeasynegativeといったネガティブ用TIを作るとうまくいくのだろうか・・・こちらも要勉強・要検証といったところ。
 
 いま、仮説立てて、検証して、また仮説立てる、検証する・・・のループが最高に楽しくてしょうがないです。私にとってAIは「好き」を深堀していくツールになっています。画像生成AIに限らず、AIにはいろいろな課題も多いですが、この思いを忘れず、頑張っていきたいですね。

最後になりますが、本アドベントカレンダーが応援しているAIイラスト専門の展示即売会「AI-COLLECTION」が開催されます。詳細は下記のリンクから
AIイラスト専門の展示即売会 開催! (chichi-pui.com)

この界隈でもよくお見掛けする方々が多数出展されるので、よろしければ是非!わたしも見に行ってみようと思っています。

では、また。



ここからは、見たい人だけ見てね!

付録(眼鏡画像の分類基準)

ここからは今回の手法についての追加情報です。

データを分析するにあたり、眼鏡画像を分類の定義や基準作りが非常に難しかったです。また眼鏡がイラストで写実的に描かれるか、記号的に描かれるかでも見え方が変わってきます。今回はフレームの太さとアンダーリム/トップリムといいたフレームがある部位を中心に分類しました。(フレーム無、メタルフレーム、セルフレームとしているが、フレームの描かれ方が線に近いか、幅があるか、といった観点も入れて分類しています)。サングラスは二次元イラストの文脈ではまた種類が違うものかと思いますが、出力されてしまったので分類作った感じです。

1.フレーム無
 眼鏡のレンズだけでフレームが無かったり、描写上フレームが線で描かれているか、無いものをここに分類。AIの画像生成の性質上、明確に区分できませんが、眼鏡の線が極細に描かれているものをここに分類しました。

フレーム無の例

2.メタルフレーム
 セルフレームほど幅はなく、ある程度細く描かれているもの。これもAIの性質上、明確にメタルだと判断できなかったりするので、眼鏡の線がやや太いものを入れました。太さ=中という感じ

メタルフレームの例

3.セルフレーム(いわゆるプラスチックのフレーム)
 眼鏡のフレームをある程度幅をもって描いているものを分類。太さ=大~極太って感じです。

セルフレームの例

4.アンダーリム
 いわゆるアニメや漫画ではよくある形状の眼鏡の下半分のみにフレームがあるような眼鏡をここに分類しました。アニメでよくあるのはセルフレームのアンダーリムかと思いますがメタルフレームのアンダーリムもここにいれています。トップリムも同様ですが、セルフレームかメタルフレームかは問わず分類しています。

アンダーリムの例

5.トップリム
 あまり出力されませんでしたが、眼鏡の上半分にフレーム有と認められたものを分類しています。

トップリムの例

6.おでこ眼鏡(多重)
 すでに眼鏡をかけているのにおでこや頭に眼鏡をおいているような絵を分類しました。眼鏡オン眼鏡。それ以外においては出来が良く、非常に惜しい絵が多い印象でした。

おでこ眼鏡(多重)の例

7.奇形眼鏡
 眼鏡として形がおかしかったり、眼鏡状のオブジェクトが出ている絵です。眼鏡絵出力者としては何としても排除したいやつなんですが、いまのところ明確な手段なしです・・・もちろんi2i等画像修正すれば大丈夫なのですが

奇形眼鏡の例


この記事が気に入ったらサポートをしてみませんか?