AI生成画像でシェルを作ってみる

このページは 伺か Advent Calendar 2023 24日目の記事です。


はじめまして、あるいはお久しぶりです。企画専門で活動しております、おもちよいちと申します。

前日のZichqec様より襷を繋ぎまして、この度は画像生成AIを活用してシェルを作ってみたレポートをお送りいたします。

(ちなみに生成AIについて、りすな様が企画4日目に大変ためになるお話を公開していらっしゃったのでそちらもおすすめです)

今回は以前やってみた手順を軽くお話するだけで、生成環境の導入やシェル定義などの詳しい解説は割愛させていただきます。

もし興味を持った方はご自分で調べてみていただけると幸いです。

(特に生成AI関係は今現在お話してもすぐ古い情報になってしまうのでその時々で調べる方がおそらく効率的です)

はじめに -今回紹介するシェルを制作したきっかけ


今年8月頃に開催された企画「ゴースト上野駅」に参加しようと思い、そのためにはシェルが必要でした。

しかし、自分は絵を描く作業が苦手なのでなるべく絵の自作はしたくありません。(シェル定義を書くのは大好きです)

フリーシェルや立ち絵素材を探しても作りたいイメージに合いそうなものはすぐに見当たる範囲にはなく、

どなたかに制作依頼をするというのも打ち合わせや納品待ちの時間を取る余裕がなく完成の保証もできなかったため、

それならばやはり自作するしかないだろう、というところに至ってしまいました。

そこで思い付いたのがその頃色々と触って遊んでいた画像生成AIの活用です。

AI相手なら即納品・リテイクし放題、加筆修正も遠慮なくできるので引っ込み思案の自分にもってこいでした。

というわけで当時どういった手順でシェル制作をしたのか記憶を頼りに実際使った画像付きでざっくりとご紹介していきたいと思います。

もう4ヶ月前のことですので既に時代遅れな手法もあるかもしれませんが「こんなことができるんだな」くらいにゆるーく読んでいただけると幸いです。

シェルの作り方の説明に入る前に 作っていたゴーストのご紹介


まずはどんなものが出来上がったのかを先にお見せしておきます。

こんな感じ。特にこれといって工夫していないので当時のイラスト特化モデルにありがちな画風ですね。

ゴースト「傾ぎ寿ぎ嬉戯に接ぐ」で

ユーザさんのおうちに転がり込んでくる弥言(みこと)ちゃんです。

彼女はユーザさんの親戚で、親の仕事の都合でユーザさん宅に預けられた、という設定です。


ゴースト中ではユーザさん宅で過ごしている様子を描いていくので

シェルはラフな服装でクッションに座って寛いでいる姿にしました。


シェル化の際に元の画像からは80%に縮小しています。

(実際のページ上での表示はもうちょっと小さくなっていると思いますが)


なお、ゴースト上野駅の企画サイトを見ての通り結局参加していません。

ギリギリまで制作していましたがさっぱり間に合わなかったので諦めました。

その後なんとか仕上げたのがこちら……とこの場で配布できればよかったのですが、

残念ながら〆切を過ぎて燃え尽きて放置してしまっていたのでまだ出せる状態ではありません。

とはいえ一応アドベントカレンダーという企画でお披露目したということでトークが揃い次第公開予定です

いつになるかわかりませんしトークも最低限になると思うのでひとまず忘れておいてください。

本題 -シェル用の画像をAI生成してみる-


そういえば、生成環境はStable Diffusion web UI (AUTOMATIC1111氏版)で、ローカルで動かしています。

先述の通りweb UI本体や拡張機能の導入方法および詳しい使い方については解説いたしませんので気になる方は調べながらご覧ください。


最初は「椅子に座っている絵にしよう、それなら全身絵がいいな」と考えました。

しかしテキストでchair,sitting,full bodyを指定するだけではちょうどいい構図が出るまでのガチャが長くなりそうです。

そこで役に立ったのがControlNetという拡張機能です。ここではOpenPoseを使います。

ポーズを指示するための画像はOpenPose Editorという別の拡張機能でちゃちゃっと作りました。

テキストで簡単な容姿と服装も指示していざ生成!

指示用の画像がこんな感じ。棒人間ですね。

手指や表情の情報はありません。

(今はそれらの指示が作れる拡張機能もあります)

生成された画像がこちら。

切り抜きやすいようsimple backgroundも入れましたが

椅子が出過ぎましたね。影も邪魔かも。

裸足を指示するのを忘れていたので

プロンプトに追記して同シードで再生成。

椅子が箱に化けちゃった。影も濃い。

いきなりいい感じにイメージに合う可愛い子が生成されました。

プロンプトを修正して再生成した方では太腿も盛られてとてもよいです。しかし上半身は最初の方が気に入っています。

なんだかもうこの背景から切り抜くのも面倒だし足指の崩れも気になるし着せ替えを付けたくなったので服の影も邪魔ですね。

というわけでさくっと雑コラして

適当にトレスしてみます。

なんだかちょっとデッサンが狂っている感じがしますが今回は時短と省エネが目的だと割り切って作業を続けます。

こうして出来上がった線画をControlNetのCannyというものに通して色を塗ってもらいます。

以下に生成された画像を載せておきますが元の線画を見ての通りのっぺらぼうかつ裸なのでご覧になる時は気を付けてください。

(閲覧注意:クリックで展開されます)

体だけ見れば概ねいい感じに塗ってもらえました。

頭は顔も髪も描かなかったせいで後頭部と誤認したような調子で塗られたようです。

ちょっと怖いですね。まあ使うのは首から下だけなので気にしないことにします。

背景もベタっと一色になったので切り抜きやすくなりました。

線画では変だった左腕と左足の付け根も都合よく補正されています。

端の方の細かい部分が少し潰れているのは気になりますが

先程の線画を上から乗せて適当に塗り潰すことで対応します。

実際に重ねてみると少し合わない部分もあるので、線は全体の輪郭だけ残して

謎の白縁が食い込んだ部分はハイライトのようなものだと思ってそのまま使います。

さて、無事に服を剥ぐことができてしまったので着せ替え用の画像を作っていく……前に表情差分を作っていきます。

いずれにせよ服は着せないといけないのですが当時の自分はとりあえず表情を揃えることを優先したようです。

最初に生成した画像をi2i(image to image)に放り込み、表情の指示単語を変えてinpaintでマスクをぐりぐり塗って顔の部分だけ再生成します。

全部丸ごと貼っていると幅を食うので頭部だけトリミングして並べてみました。

髪も巻き込んで再生成しているので細部が変わっていますが適当になんとかします。

最初に生成した画像から前髪と後ろ髪を切り抜き、表情差分として生成した画像の顔部分も切り抜いて間に差し込みます。

少々加筆調整してこんな感じ。少しいまいちなところもありますが妥協。

正直なところ顔だけなら自分で描いてしまった方が早いのですがこの時はなんとなくAIに任せたくて無駄に手間をかけました。何故?

ちなみにAI生成するならポーズごと変えるのも楽だと思いますが今回は着せ替えを複数付けたかったのでやめておきました。


表情差分もできたところで着せ替えを作ります。

今度は具体的に着せたい服装が決まっていてテキストプロンプトの変更だけで描いてもらうのは難しそうだったので下絵を用意します。

体の色塗りをしてもらった時に「下手に顔や髪を省略したものを生成させようとすると大変なことになる」と実感したので

調整した体にきちんと頭もくっつけて、その上からざっくりと服の形に色を置いていきま

AIに描き直してもらうのでこれくらい大雑把で十分。服への干渉を減らすため後ろ髪は一旦消しておきます。切り抜きやすいよう背景も真っ白に。

1枚目、Tシャツの形と影は最初に生成したものを大まかにトレス。

2枚目、Tシャツの色を変えて短パンを同様にトレス。それと忘れていた肌色の調整をここで。

3枚目、中のシャツは1枚目を基に生成した画像を使い回しています。

Tシャツというだけなら普通に描いてもらえるのですが柄ガチャから逃げたかったのでこの手を使いました。

これらの画像を丸ごとi2iに放り込んでノイズ強度控えめで生成したのが以下。

表情等の細かいところがちょっと変わっていますが例によって服以外の部分は使わないので構いません。

というわけで、こうします。

切り抜いて加筆修正、肌に落ちる服の影も適当に入れました。

今はシェルに透過pngが使えるので簡単な着せ替えならこんな画像をそのままポンと乗せるだけで済んで楽ですね。


さあ、この子を座らせるための椅子の画像も作っていきましょう。

最初に生成した画像の椅子が気に入っていたのですが手の置き方と合わないので……とこねくり回していましたが

隠れていた部分を加筆するのがうまくいきませんでしたしそもそも幅を変えたらなんだか踏み台みたいになりましたし諦めました。

左手の形からしてソファのようなものに座っている感じも合わないし……ということで座布団にします。最初クッションとか言いましたがぶっちゃけ座布団です。

これを

こうしてもらって

こう。

そんなこんなでできあがり~

座布団、体、服、後ろ髪、顔、前髪をばらばらの状態でpng出力して縮小してサーフェス定義で重ねます。

後ろ髪が肩に乗って服の上に回ってしまうのでそこはさらに切り離しました。

あとは当たり判定の設定も適当にやって本当に完成です。めでたい。

実際に絵を描く工程をAIに委託しているだけで用意する画像自体はよくあるシェル制作と同じですね。

おかげさまで絵が描けなくても半日もあればそれなりのシェルができてしまいました。辞書はできてないけど。

おわりに

以上、解説未満の駆け足なレポートでした。駆け足過ぎて文体が土砂崩れになっていて申し訳ないです。

明日はアドベントカレンダー最終日、安馬様が担当なさいます。最後まで楽しんでいきましょう。

ご清覧ありがとうございました。