まずサクッと1枚作ってみよう!
今日のプロンプトとセッティング
今日の絵は、次のプロンプトで描いています。
Prompt:「Raw photo, best quality, Japanese girls, 20 years old, detailed skin, grin, coat, scarf, skirt」
Negative Prompt:「(Worst quality:2)」
スタイルは使用せず「Empty」のままでいきます。
その他の設定は以下の通り。モデルやシードも合わせると全く同じ絵を描くと思います。興味のある人はお試し下さい。
するとこんな絵が描けました。
指が若干おかしいですが、Aiは指の作画が超苦手何です。そこはもう割り切って付き合うしかありません。
LoRAの追加
LoRAを追加することで、モデルだけでは表現できない部分を補う事ができます。私が最近必ず使っているのが、more_details (SD1.x)です。
これをmodelと同じようにLoRAの所でインポートし、強度をデフォルトの60%のままで再作画してみます。
顔の凹凸が強調されリアリティが増します。たったこれだけの作業でここまでのImageを描くAI。人が騙すのが簡単な世の中になっていることをこれだけで感じる事ができます。
そして、実在しない人物の絵に対して、ちょっと可愛いんじゃない?と思っているということは、自分の脳も騙されているという事に他なりません。
SD1.5は、服装の指定をしないと薄着になる傾向があり、下手すると何も着てない状態の絵も描きます。Aiには心がないからですかね。
逆に言えば、指示されないことはやらないAiの機械的な部分でもあると思います。
高解像度化
では、これを高解像度化していきます。高解像度化にはUpscalerを使う方法、High Resolution Fixを使う方法、Image to Imageを使う方法など、様々な方法があります。
Upscaler
アップスケーラーは、元になってる絵の解像度を2倍又は4倍に引き伸ばす方法です。私の感覚としては、これは最終段階にかけるのが良いように思います。DrawThingsでは次のアップスケーラーが使えます。
High Resolution Fix
これは最も私が使う方法です。というか、イメージサイズを大きく設定すると自動的にONになります。
SD1.5は基本512×512のイメージでトレーニングされているため、大きなサイズの画像を描くと絵が破綻してしまう傾向にあります。High Resolution Fixではまず先に破綻のおきない小さいサイズで絵を描き、それを拡大してからImage to Imageで描き直すという作業をやっているように思います。
Image to Image
High Resolution Fixを手動でやるのがImage to Image(i2i)ですね。これは小さな顔を描かせた時に顔が破綻している時なんか、画素数を上げるために数枚描かせて成功したのを選ぶという時間のかかるアップスケールです。
高解像度化の手順
まず、High Resolution Fixで高解像度化してみます。
最初に画像のサイズを大きくします。私は最近、1024×1536で描いているので、そのサイズに設定します。
すると、描かれた画像が小さくなります。
ここで、白とグレーのチェック模様になっている部分はいわば空白です。このまま作画すると真ん中の絵はそのままで、周囲が書き足されます。俗にいう「アウトペイント」になりますが、画像と空白の間にマスク領域が無いので、このまま作画すると、外側の絵は破綻だらけになります。この辺のことは追々記事にしますので、今回は左下の「1 X」をクリックして、「2 X」にして、空白の部分を無くします。
これで、再度「Generate」をクリックします。今度はかなりの時間がかかりますので、マシンスペックによっては描けなかったり、描けてもコーヒーを入れて飲むぐらいの時間がかかるかもしれません。
すると、絵がこんな感じになりました。
若干人物が変わったように感じますね。しかも、右下に変なロゴとテキストも追加されています。
それでも、解像度が高くなると一気にリアリティが増すような気がします。
次に、Image to Imageを用いた高解像度化の説明をしてみます。
一旦一つ前の512×768で描いた絵を選択しなおします。そして、解像度を1024×1536に変更します。ここまでは前と同じ手順ですね。
次に、Strengthのスライダーを50%にします。
I2I強度はデフォルトで70%なのですが、それだと変化しすぎるので、50%にしました。元絵に似せたい場合は、もっと低く設定します。ただ、低くしすぎると、元絵で破綻していた指までそのまま描かれるので、多少自由度を持たせる意味で、今日は50%としてみました。
そしてI2Iの良いところは、数枚描いて良いのを選ぶという作業ができる点です。
今日はとりあえず、4枚描かせてみました。
もちろん、シード値が変わるので絵が変わるわけですが、Text to Imageでは無いので、ほぼ同じ絵が4枚描かれる事になります。複数の結果が得られるのが、High Resolution Fixと異なる点です。
その中で、一番気に入ったものを選べば良いのです。表情を優先するのか、指の破綻が一番少ないのを選ぶのか・・・。
とりあえず、選んだ一枚がこれ。
気になるところがないわけでは無いですが、ここからの修正はかなり大変な作業になります。キャンバスサイズも大きくなっているので、時間もかかりますし・・・。ということで、とりあえずの1枚としてはOKという事で、最後の高解像度化アップスケールを行います。
Upscalerを用いた最終仕上げ
アップスケーラーを使うには、左下のメニューから、Upscale with Real-ESRGAN 2X+を選ぶだけでです。更に大きくできる他のアップスケーラーもあるのですが、ファイルサイズも比例してデカくなるので、ここでは2倍に拡大してみます。
そして、出来上がったのが、こちらです。Imageサイスは2048×3072。
最後に
サクッとこんな絵が描けてしまう時代になってしまったんですね。ここから先は、本当に沼です。プロンプトを工夫したり(英語の勉強になる)、ControlNetを活用したり、パラメーターを色々いじってみたりと無限の可能性があります。
ただし、Xにもポストしましたが、AIを使っても描けない(描きにくい)絵は存在します。そこを突き詰めていくと時間が溶けていくので、描きやすい絵を低解像度で描いてみて、もし気に入った絵が描けたら高解像度化するというのが基本路線になります。
この記事で仲間が増えてくれたら良いなと願いながら、今回の記事を締めくくります。