AIお絵描き研究~手~
初めまして!
AIお絵描き研究にはまっている者です
よかったらTwitter見てね!
早速本題ですが、タイトルにもある通り今回「手」の描画について色々と試してみたので、その成果を紹介したいと思います。
ことの発端はこちらのツイート
プロンプトにこれを入れると手を前に出して、手の描画もうまくなる気がする
— でょ@AIお絵描き研究中 (@old10262882) November 25, 2022
outstretched_arms, outstretched_hand pic.twitter.com/Jvesdple2S
プロンプトにoutstretched_arms, outstretched_handを入れたところ手の描画がうまくいくことが多かったので、研究を進めてみようということで始まりました。
※あくまで、打率が高いということで、100%で出せるわけではないのでお手柔らかにお願いします。
キャラクターは固定した方が研究が進めやすいので、銀髪ボブカットちゃんにお願いしました。
基本のプロンプト
1girl intricate eye,((loli)),bangs,blush,collarbone,eyebrows_visible_through_hair, hair_ribbon, lens_flare, looking_at_viewer, mole, mole_under_eye,open_mouth, outdoors,folded , reaching, reaching_out, ribbon,sidelocks, smile, solo, bangs, blue_eyes, blunt_bangs, blush,collarbone, ((silver)) hair,small breasts, medium hair,bob cut
ネガティブプロンプト
bad hands, text, error, missing fingrs,loli
この基本プロンプトに追加する形でプロンプトの研究を進めます。
手を伸ばす
初めに先ほどのツイートの信憑性検証をしました。
追加プロンプト:outstretched arms, outstretched hand,nail_polish,
爪のプロンプトも追加しています(nail_polish, )
生成画像
いい感じに手描画ができています。
pointing, pointing at viewerも追加すると、人差し指を出すようになります
注意:爪のプロンプトを入れると次の画像のように指先の描画に異常が出る可能性があるので、気になる場合は抜いてください。
肘を曲げる
腕を伸ばした状態での手の描画を安定させることができましたが、このままだと構図のバリエーションが出せないので、肘を曲げられるかを試しました。
追加プロンプト:(((hands up))),((waving hands)), [[outstretched arms]], [outstretched hand],
新たにhands upとwaving handsを追加し、既存のoutstretched armsとoutstretched handを弱くしています。
生成画像
手を伸ばしたまま肘を曲げることができます。
肘を曲げた状態で、ポーズを取らせることができるかの検証です。
ここで大変苦戦しました。
ピースサインの問題点は曲げている指の描画にあります。曲げている指の本数が多くなるというのが、よく出る描画エラーです。
やけくそで入れたプロンプトで解決しました笑
追加プロンプト:(((hands up))),(waving hands), [[outstretched arms]], [outstretched hand],(((peace sign))),✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌✌
ふざけたプロンプトですが、正常なピースの生成率が上がりました。
生成画像
肘を曲げて指の描画を保ちつつピースサインをさせることができました。
手をあげる
腕の可動域を増やせるかの検証です。
追加プロンプト:(((hand up))),(waving hands), [[outstretched arms]], [outstretched hand],(arm up), bare arms,(salute),✋
最後の絵文字はあってもなくてもあんま変わりませんでしたが、一応お気持ちで
これには多少ブレがあり、ガチャ要素があります。完全に手をあげてくれることもありました。
生成画像
手をあげると、服装の露出が多くなるのは謎です。
謎ですとかいって、bare armのプロンプトが入ってましたね。ご指摘いただい方がありがとうございます。
手を握る
先ほどから手を開いた描画が多かったので、手を閉じれるかの検証です。
ここでも苦戦しました。今まで使っていたプロンプトでも色々と検証してみましたが、outstretched arms, outstretched handのプロンプトを使用するとうまく手を握れないようでした。
別のプロンプトでアプローチを試みました。
追加プロンプト:(clench one's fist:1.3)
こんな単純なプロンプトで解決するとは・・・
生成画像
いい感じに描画を保ちながら手を握ることができました。
傘を持つ
何故、手を握らせたかというと、モノを持たせたかったからです。
描画が難しい傘を持たせてみましょう。
追加プロンプト:(clench one's fist:1.3),umbrella,☂,rain,(seize umbrella handle:1.2),(1 Umbrella center pole:1.2),(1 umbrella handle)
これも結構ガチャ要素が多いのですが、傘を持つ手の再現性は高いと思います。あとは、傘がうまく描画されるかの問題ですね。
生成画像
傘の軸が頭の後ろに隠れると高確率で傘の位置がずれて描画ミスになります。
指定の指を出す
これは番外編的な感じですが、手の操作ということで参考にしてみてください。
追加プロンプト:the index finger,the finger
生成画像
こういう構図もいいですよね!
ということで、今回の手の研究に関する報告は以上になります。
何か新しい知見や情報を見つけた方はTwitterに教えてくださると助かります!
今後も研究続けたいと思うので。また何かあれば記事を書こうと思います。
記事を書いたらTwitterで宣伝するので、よければTwitterのフォローお願いします!