【中級】AI生成の手・指の修正方法(Krita AI diffusion編)
はじめに
指は生成AIの最も苦手とするところであり、どの生成システムもあまり進歩していません。苦手な理由は、2次元の拡散法だから、数の概念を理解していないから、人間側の認識(不自然を感じやすい)が原因、等さまざまあるようですが、拡散法の学習だけでは難しく、手の処理だけをAI側で特別扱いしなければ正しく表現できないというのが現状です。
Stable Diffusion では、ControlNet で手の形を誘導させる方法が一般的に利用されています。しかしながら、この方法で上手くできるのは単純な手のポーズだけで、背景と干渉していたり両手が重なっていた場合は、まず失敗します。
現状で、どんな状況でも必ず修正できるやり方は、手だけを3Dレンダーで合成させる事ですが、非常に面倒です。
もうひとつはインペイントを利用するやり方です。手を”手書き”して img2img するやり方です。しかし一回で成功する事はなく、3Dモデルほどではないですが面倒です。
そこで、基本的にはインペイントですが、ペイントソフトの Krita プラグイン krita-ai-diffusion で LCM+live 機能を利用すると、リアルタイムに手の修正が可能になります。しかも Krita の豊富な画像編集機能も同時に利用できるので、通常のインペイントと比較にならないほど効率的に作業できます。リアルタイムに確認できるわけですから。
この記事では Krita (krita-ai-diffusion)を利用した手の修正の紹介をします。
前準備
もちろんKrita を利用するので、ペイントソフト Krita と そのプラグインである krita-ai-diffusion をインストールする必要があります。
※ Krita-ai-diffusionの導入解説(※ 特に既存のComfyUIをバックエンドとして利用する方法)を含めて、下記事で一括して説明しています。
上画像を修正していきます。指の重なりがあると、ControlNet の手法では非常に困難です。
Stable Diffusion では、学習時の解像度で生成すると最も綺麗になります。Krita の生成機能はキャンパス全体を必ず生成するので、修正すべき場所だけを作業前に切り取ります。
生成対象にするオブジェクトを 512x512 解像度(学習時の解像度)にするのが良いです。学習時に 512x512 または 768x768 解像度で学習されているからです。筆者のやり方は、アップスケーラを利用した画像全体の拡大を行い、対象が 512x512 近くの大きさになるように拡大してから切り取っています。先に全体を拡大する手法をとると、AIが画像の量子化度合(鮮明さ)を一致させてくれるので、品質も良くなり、元に戻す時も楽になるからです。
本来は、krita-ai-diffusion が生成解像度を動的に変更できる機能があればいいのですが、現状はキャンパスサイズに固定されているようです。
Krita(krita-ai-diffusion)
Krita に読み込ませます。
修正すべき範囲を指定して、必要であれば、ブラシでレタッチしていきます。範囲を指定しない場合は全体が生成されてしまいます。
基本的にはただの img2img インペイントですが、リアルタイムに反映されることと、レイヤー機能が便利なので、効率的に作業できると思います。
完成
切り取った部分を元の画像に戻して完成です。
この記事が気に入ったらサポートをしてみませんか?