見出し画像

立ち絵髪差分作成までの手順


髪差分とは? その目的って?

事の起こり

SDを始め画像生成AI界隈において、立ち絵(ゲーム等に使われるキャラクター単体の絵)の表情差分(同じ絵で顔の表情だけを差し替える)は比較的容易に作れる事から、色々と作り方の記事なんかも検索すれば出る。
同様に服装の差分なんかも割と安定的に生産が出来る。

表情差分が作れるという事は、目鼻口等パーツごとにレイヤー別けして作れる、と考えて良さそうで。服装も上手くやれば上半身、下半身、下着、上着、スカート、ズボン……とこちらもまあレイヤー別けして作ってやれなくはなさそうだ。

そこで考える。「ゲームのキャラクリ等でよく有るパーツを選んでキャラを作るあれ、SDで素材作れるくね?」と。

そこまで考えて実際にSDで徐々に作業を進めていたのだが、ある段階でふと気がつくのだ――髪、面倒じゃね? と。

髪って奴は実に面倒である

先ずは裸のマネキンを用意します。
そこに目鼻口を用意しました。これらは(少なくとも真正面を向いていれば)輪郭線なんかを突き出ることはまあ無いので、実に簡単にレイヤー別けが出来る。
同様に服を着せても(余程のポーズをさせなければ)体の線に沿って出力する方法は色々とあるので、レイヤー的に体よりも上になることからも比較的容易に差分は作れる。

で、細かいアクセサリーだとかを除けば残るは髪だ。
だがこれが問題で、こいつらは今まで用意した表情差分や服装差分とガッツリ被ってくるのである。レイヤーの下だったり上だったり、縦横無尽に駆け回るのだ。挙げ句、目なんかと溶け合ったりし始めてもう手に負えない。

とはいえこのご時世、ググれば大抵の事は出るよね? と色々調べてみたのだが……無いのだ。先述したように表情差分は何件か出るし、服装もまあチラホラある。が、髪差分に関して効果的にこう、と書いているのは(自分が調べた限りでは)無かった。寧ろ「髪は今のところ無理っぽいよね」的な記事を数件見かけた。

さもありなん。SDは内部的に各パーツをレイヤーで別けている訳では無いので、それをレイヤー別けしよう、というのが土台無理だと言われればそれまでだ。表情や服装差分だって多少力技な所があるのだから。

が、それでも髪さえ何とか出来れば、実質勝ちなのだ。ゲームのキャラクリや、モブのランダム立ち絵やポトレの生成……色々とこれだけでゲーム開発の妄想が膨らむ。膨らまない? 少なくとも、俺は膨らむ。

で、昨日まで色々試した結果、結局は力技だけど、比較的に力押ししやすい下ごしらえ程度は出来たので、それらを纏めてみる事にした。

出力の環境

Stable Diffusion ForgeでkuronekoAnimemixV10を今回は使用。ただ基本的にSD系列&アニメ絵のcheckpointであれば同じことは出来るはず、多分。
Lora等に関しては場面に応じて解説入れます。
拡張機能はkatanukiを使用。背景カット系の他の拡張でも一応いけるとは思うが、katanukiが色々良さげに見える。

後何かしらの画像編集ソフトを用意。フォトショなり、GIMPなり。今回はGIMPを使います。

マネキンの作成

txt2imgで叩き台のマネキン出力

txt2imgでカオナシ&ハゲ頭&全裸な絵を出力させる。プロンプトの例としては以下

(bilateral symmetry:1.2),
(no hair:1.4),
front view,
anime style,thick coating,
Face in the middle,
no background,
looking at camer,
(stand upright:1.3),
(full nude),
solo girl,
<lora:ref-ban:1>
<lora:faceless_style_v1.0:4>
<lora:simpleBackgrounds:1>

(↓ネガティブ)
EasyNegative,posing,text,

今回の例に出す画像については、もう少し加筆してます

一部不要じゃね? と思うのもあるが、まあこれを叩き台に毎回試してます。

EasyNagativeは、まあとりあえず入れとけ、ですよね?

bilateral symmetry(左右対称)で極力真正面を向かせる(というより無理やりそう描かせる)ように仕向ける。ゲームのイベント用一枚絵なんかだと背景や髪型、服装なんかに影響が出るので難しいが、こうした直立正面なマネキンの素材なんかを作るのには向いているやり方な気がする。

anime style,thick coating,辺りは主線を極力太く描くため。効果がどこまであるのかは怪しい! が、単に素材の切り取りもそうだが、後の髪を出力する際のマスク指定にも響いてくるので、極力入れたい。

no backgroundと<lora:simpleBackgrounds:1>は最悪無くても良いが、単に絵柄の出来を確認する上での視認性として入れている。
(simple backgroundsは割とそのまま、単色背景を出力しやすくしてくれる。単にno backgroundだけでも今回は割と問題はない。)

(no hair:1.4),(full nude), <lora:faceless_style_v1.0:4>辺りが立ち絵素材の素材――つまりマネキン作成のキモ。checkpointによってはfull nude入れても服着たりするので、その辺りは適時修正を。
(faceless styleは目・鼻・口・眉・辺りを顔色で塗りつぶす的なLora。値の指定を2~にし始めて効果が出る。ガッツリのっぺら坊にするなら今回の4辺りが良さげ?)

<lora:ref-ban:1>は好みに応じて。個人的にはこれを入れずに出力すると顔に影が落ちがちなので、こうした人物の顔にポイントを置いた画像には必須なloraと感じている。勿論出したい画風に応じて、ではあるが。その点値によって強弱がつけれる辺りも、まあとりあえず入れとけ位使い勝手が良いlolra。
(ref ban――つまりはレフ板である。光が、こう、いい感じに顔に来るのである。マジ便利)

で、今回例として出力した素材がこちら


例なので顔周りだけ。
実際に試す時は全身絵でやっている。

ここでは細部に拘らないでいい。見るべき点は「姿勢」、或いは「シルエット」と言い換えても良いが、人物の外周に描かれている線の具合を重要視している。ここのバランスが悪いとこの後の修正作業も数が増えるので、この時点ではそこを重視。
ここで多少目鼻口が残っていたりしてもまあ問題は無い。髪は流石に消えていてもらわないと困るが。
色々試行錯誤している途中なため毎回直立不動な姿勢を取らせているが、何かしらのポージングをさせることも基本的には可能。勿論、動きによって作業難易度も増減はするが。ただそれも”顔周りに影響しない”程度であれば基本誤差かと。逆説ジョジョ立ちみたいな顔に腕・手・指・肩なんかがガンガン被って来るようなら難易度激増かと思われる。

img2imgでマネキンを厳選

叩き台が出来たらそいつをそのままimg2imgへ移動させる、プロンプトも基本そのまま。txt2imgで出力されたサムネイル下の絵画アイコン(Send image and generation~)を押すのでOK。
特に何も考えず、とにかくimg2imgを連打で出力してガチャする。強いて言うなら「完璧と言えないけど良くはなった」画像が出たら、それを出力元に変えて次々試す。良くなるに連れて微修正だけ欲しいのならノイズ除去強度(Denoising strengthだっけ?)の数値を減らしていくのもアリ。

今回はざっくりとだけ厳選したのがこちら

……何が変わった? と聞かれれば「あんまり変わってない」と答えるしか無いが。というか、個人的に最初のステップでそこそこのが出てしまった感。
強いて言うなら多少左右の対称性をチェックしただけ。それでも少し顔が右に傾いているのが気になるが……まあ今回は例として作っただけなので勘弁。

katanukiで型抜き

単に「髪差分を出力する」だけなら必須ではないが、やると色々捗るステップ。

拡張機能のkatanukiを使って出来たマネキンの背景を切り取り、更にマスク画像を出力しておく。


左が透過、右がマスク

この時点で元絵、透過、マスク、をそれぞれバックアップ保存しておくのが好ましい。これで数敗した過去があるので、是非。

髪差分の元となる画像の出力

ガチャ、その前に……

このまま画像をぶちこんでimg2imgしても髪を生やす作業は出来るのだが、それだとただの髪が生えたマネキンの画像を出すだけで終わる(とまで言わずとも、終わりがちになる)。後のためにもここで一つ面倒な作業を加える。

ひとまず先の透過画像とマスク画像を何かしらの画像編集ソフトへそれぞれレイヤー別けしてぶち込む。


今回は安定? 定番? のGIMPを使用

そうしたら次に投げ縄ツール等を使って「顔の輪郭線」を範囲選択する。

見辛いかも知れないがこんな感じにやっていく。地味に面倒。

そうしたら透過のレイヤーを非表示にして、マスクのレイヤーに移る。
そこから「首から下」と「先に選択した輪郭線の外側に残ったゴミ部分」を更に選択。
最後に新たなレイヤーを作るなりして「選択範囲を黒」「それ以外を白」で塗りつぶした新たなマスク画像を作成。

何かのだまし絵みたいな奴が出来る

と、まあ工程はともかくこうした画像が出来れば手段はなんでも良い。今後試すつもりだが、ここで耳も黒塗り(=保護領域)に加えるものありかも知れない。

この輪郭を保護する事によって比較的元の輪郭線を保ったまま髪が出力される様になる(つまり、差分として使いやすい画像になり易い)。

やらずとも数打てば、という話では有るが、この工程で相当打率が上がったと個人的には感じた。

もう一工程

マスク画像が用意できたらいよいよ髪を生やす為の髪を作るための髪が生えたマネキンを出力する作業だ! ええい、何を言っているか判らん! つまり、一番楽しい瞬間なのである! ……が、もう少しだけ設定すべき点がある。

先ずはimg2imgのinpaint uploadへ移り、プロンプトや画像サイズ等を全てこれまで通りに設定。

透過画像(元画像でもおk)と上で作ったマスク画像をそれぞれ投入。

こうなれば画像の投入はOK

次にプロンプトから「no hair」を取り除き、望む髪型のプロンプトを書き加える。
(long hair:1.4)、(red hair:1.2)等、色やどこまで強調するかは各々好みでどうぞ。ある程度は強調しないとハゲのままな場合もあるので注意。ちなみに色指定無しだと白~肌色ばかり出力される。元絵が肌色だから仕方ないね。

好みになるがbilateral symmetryも取り外してOK。入れてても割と左右分けされない髪型は出るには出る。

loraのfaceless styleの値を2に下げる。元々カオナシの所に4は強すぎるのか、4だと首が捻れたり輪郭はみ出す案件が多発。2だとそこそこ安定、それでいてカオナシは比較的維持される感。

最後に個々の塩梅ではあるが、一つ目ににマスクのぼかし(Mask blur?)を2に変更。こっちはなんとも。色々試して最適解を探している最中だが、2が良いかな? と。
二つ目にノイズ除去耐性(Denoising strength?)を0.5~0.6辺りに下げる。デフォ値、或いは上げたりすると輪郭飛び抜けたり、なんなら「新しい顔よ~!」とばかりに新たな輪郭が描かれたりする。その頻度を下げるためにもこの値については大体この辺まで落とすのが良さげ。ただ反面「おとなしい」髪型になりがちなので、その辺りはプロンプトの指定の仕方等と要相談&トライアンドエラーで各々最適解を探すのもヨシ。

一番楽しい時間の始まり

つまり、ガチャである。

とは言っても設定ミスが無いか? 今回用意した素材の向き不向きが合致しているのか? その他諸々の環境は? 等で「素材の素材として向いている」画像がどの程度の頻度で出るかは場合によって異なる。なので十~数十枚程度出力してみて、打率が低そうと感じれば必要に応じてステップを幾つか戻って修正を加える。

スタメン入り出来る程度の打率と感じたら、いよいよ本番。必要に応じてステップ数を増やすなりしてバッチ回数やバッチサイズを増やして大量生産しよう。

(long hair:1.4)のみ加えて12連ガチャした結果

この例でまあ比較的に良く出来たほう。悪いと首捻れやアン◯ンマン事案(=新たな輪郭が描かれる)が数枚混ざる。
ロング系を指定してもショートになりがちな傾向アリ。プロンプトの書き方やノイズ除去耐性辺りにもよりけり。

髪差分切り抜きの義――のハズが

後はこうして出来た画像を――力ずくで切り取るのじゃ!

……うん、すまない。今はここまでなんじゃ。とはいえ単に髪生やすよりは切り抜きやすく、差分の素材としては優秀になったのでは無いか? と思っている。
facelessの効果だと思うが顔面周りも比較的に髪が進出せず、マスクの効果で体の前にくる髪もほぼ無い。最悪多少被ってきても、主線を太くするプロンプトの効果で比較的にレイヤーの棲み分けがし易い被りで収まりやすい。これによって各レイヤーに与える影響を最小限にした素材……になっているはずだ。そうであってくれ。

ちなみに昨日の時点で試して出来たもの

layerdividerのインストールに失敗したのであれだが、髪色を強めに出せばこれで一気に切り抜けるのではないか? と思ったりしなかったり。まあ、どうあがいてもエラーなので試せないのだが。

忘備録的にNoteで纏めたお陰か、仕事から帰ってきて寝る間の小一時間(実際はNoteの記事を書きながらなので、もっと掛かっているが例として出した画像の出力作業としてはこの程度)で切り抜く前まで進められた。
実際、マネキンさえ出来ていて、マスクの画像を用意したら後は只管生成させるだけなので、産めや増やせやな状態に持っていくことは出来る。勿論、それに比例してくり抜く作業が増えるのだが。

明日も仕事。なので今日はNoteの記事書くためだけで寝る前の空き時間を使い切った感。明日以降、耳を保護したらどうなるのか? を試したい。……余りいい結果にならない気もするが、さて。


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