こんばんは、スタジオ真榊です。今夜の記事は、image2imageを画像の一部だけに掛けて修正できる「レタッチ機能」についてです!設定値と生成結果が直感的に結びつきにくいので、みんななんとなく体感でなんとかしている(そしてたいていなんとかならない…)のが、このレタッチ機能。いろいろな実験結果と共に、ようやく理解できた設定の使い分けや活用法について紹介していければなと思います。

「レタッチ機能でこんな事ができるよ!」という動画を作ってみたので、まずはこちらをどうぞ。

この動画では、レタッチ機能を使って背景の描き直し、余計な被写体の除去、小物の置き換え、表情チェンジといった作業を行っています。誰でも再現できるように、レタッチの基本的考え方や具体的操作方法を解説していきたいと思います。AIイラストの動画化のやり方も後半に紹介します!

レタッチ(inpaint)の基本

さて、img2imgのタブの中にある「レタッチ(inpaint)」機能は、UI画面上で黒く塗りつぶした(マスクした)部分をAIに描き直してもらうi2i機能です。通常のi2iが画面全体に及ぶのに対し、一部だけを書き換えられるのがレタッチということ。もちろん逆に「マスクした場所を残して、それ以外を書き換えてもらう」ことも可能です。

例えば、口を開けているイラストをレタッチして、閉じている形にしたい場合。まずはこうして、レタッチしたい部分をマスクで覆います。画面右上のボタンを使うと、ペンの太さを調整したり、一つ前の描き込みに戻したりすることができます。

レタッチ(inpaint)の基本:図版1

プロンプトは、元画像のプロンプトを一部書き換える(or書き足す)方法でもいいのですが、このようにごく一部だけ書き換える場合は、「2girl,maid costume,~ closed mouth」とするのではなく、プロンプト欄はシンプルに「closed mouth」のみの方がうまくいくことが多いです。なぜ「2girl」や「maid costume」といったプロンプトがないのに口の位置が破綻しないかというと、レタッチといっても本質的にはi2iですので、元のイラストからclosed mouthが描かれる位置は自然と特定されるのですね。

逆に、広い範囲をマスクして大きく描き直してもらう場合は、元のプロンプトに書き足す(書き換える)方がうまくいくようです。

レタッチ(inpaint)の基本:図版2

こちらはレタッチではなく、通常のimage2imageを使い、「closed mouth」のみのプロンプトで生成したもの。プロンプトが「closed mouth」しかないので、当然全体の絵も変わってしまっていますが、「閉じた口」の位置はあってますよね。なら、この口のところだけを切り抜いて元画像に合成しちゃえばいいじゃん!ということで、その工程を自動でやってくれるのがレタッチ機能なわけです。「元画像を複製して」「プロンプト通りにi2iして」「マスク部分にはめ込む」を一工程でやってくれる機能と考えて下さい。

基本的には「出したいもの」「変えたいもの」をプロンプトで指示するのですが、邪魔なものを消したいときにはネガティブプロンプトを使うこともできます。さっきの例で言えば、「open mouth」をネガティブ指定しても口を閉じさせられるでしょう。マスク部分だけをピンポイント修正する機能だと考えるのではなく、「これから画面全体をi2iするぞ!あとでマスク部分に合成お願いね」というマインドで臨むことがレタッチの基本です。

設定画面の見方

さて、次に設定画面の解説です。

設定画面の見方:図版1

ここが本当に分かりづらいですよね。各設定が意味していることやその効果が直感的に想像できないので、生成結果にどう影響するのか分からないままに使っている(またはあきらめた)人が多いのではないかと。賢木も同じなのですが、ここからはいろいろと実験しながら体感的に分かってきたことを体系立ててお伝えしていきたいと思います。

まずは各数値の解説から。

「マスクぼかし」

マスクされた部分のふちをほどよくぼかすための機能。UI画面上では分かりませんが、数値を大きくするとマスクのブラシがスプレー状になると思ってください。0だとマスク部分の境目が目立って、レタッチ部分が周囲から浮いてしまいます。逆に大きすぎると、意図した範囲外までi2i効果が及んでしまったり、マスクしたと思ったところがしっかり覆えてなかったりするので、ほどほどの数値にしましょう。

設定画面の見方:図版2

上の画像は、街の風景をマスクして室内(in door,room)に入れ替えたもの。ぼかしが小さいと、マスクの境目がはっきりして、髪の間から元の風景が見えてしまっていますね。よくわからない場合はまず4~10pixelくらいにして結果を見てみると良いでしょう。

「マスクモード」

マスクされた部分をレタッチするか、それとも逆かを選べる設定。書き換えたい場所を塗りつぶすのと、残したい場所を塗りつぶすのと、どっちが塗りやすいかで使い分けましょう。

「画像を修正する範囲」

・「全体像」とすると、元画像全体をプロンプトに従ってi2iした上で、元画像にマスク部分だけを合成してくれる。直感的に何が起こるかわかりやすく、崩壊しにくいので、こちらが基本。

・「マスクのみ」にすると、マスク部分のみをまず指定のキャンバスサイズにクローズアップしてプロンプト通りに描いた後、元のサイズに縮小するという特殊なやり方になる(下画像参照)。拡大してからi2iするので、マスク部分が高画質になるものの、周囲となじまないこともあるので中・上級者向け。キャラの顔のクオリティーアップや、遠景にある被写体の破綻修正などに使える。ノイズ除去強度が強いと破綻するので注意。

設定画面の見方:図版3

「マスクされたパディングのみ(Only masked padding)」

マスクモードを「マスクのみ」にしたとき、どれくらいクローズアップしてからi2iするかを決めるためのスライダー。「0」にするとマスク部分を一番小さく囲う四角形にクローズアップされる(▽下図・ピンクの四角)が、高い数値にするとその四角形の周囲に余白(パディング)が追加される(▽下図・青の四角)ため、より広い範囲を参照してAIがお絵かきできるようになる(▽画像右下)

設定画面の見方:図版4

差し替え用のクローズアップ画像は、最終的にはマスクの形に切り取られてはめ込み合成されるので、このスライダーを0にしても100にしても、黒髪の女の子の顔などが書き換えられることはありません。では何のためにある設定かというと、あまりクローズアップしすぎると何が描いてあるのかAIが理解できず、上手にi2iできないケースがあるため。「差し替え用の画像は視野を広く持って描いてね」と頼みたいときに、Only masked paddingを広げましょう。

「ノイズ除去強度」…通常のimg2imgと同じで、プロンプトによる修正と元画像のどちらを重視するかのパーセンテージと考えましょう。1.0だとマスク周辺との調和を考えずにプロンプト重視でレタッチする。0だと元画像と同じものが出る。0.5だとマスク周辺と調和を考えつつ、プロンプトもできるだけ再現できるように頑張ってくれる。大きく書き換えるなら強めにするが、プロンプトによっては元画像と位置がずれて見当違いの画像が生成されてしまうので注意。ノイズ除去強度を強くしつつ崩壊を防ぐには、ControlnetのCannyを使おう。

「リサイズモード」「幅」「高さ」・・・レタッチする際にキャンバスサイズを変えることもできます。元画像と同じ比率であればそのまま拡大縮小されますし、比率が異なる場合は「リサイズモード」の指定を参照して処理結果が決まります。慣れてくると、レタッチと同時にアップスケールすることもできます。

====================================

…と、ここまではおおむね理解できるんじゃないでしょうか。

問題はこれです。「マスクされたコンテンツ」。