← Back to スタジオ真榊

Pixiv Fanbox

アップスケールが理解る!hires/i2i/Extra/Adetailer徹底解説

Published 12/31/2024, 10:57:25 AM

アップスケールが理解る!hires/i2i/Extra/Adetailer徹底解説

こんばんは、スタジオ真榊です。こちらの記事は、AIイラストをより高画質にする「アップスケール」の方法についての大型特集です。


AIイラストはSD1.5系なら512x512px、SDXLなら1024x1024px前後で生成することを前提に学習されており、そうした規定サイズを大きく上回るサイズでいきなり生成しようとすると崩壊してしまいますし、小さい範囲に描画されたピクセルは綺麗に並ぶことができず、細部が低劣になってしまいます。そこで、いったん規定サイズで「タネ」となる画像を生成してから、より大きいサイズで詳細に描画(image2image)し直す工程が「アップスケール」というわけです。


アップスケールのやり方はそれぞれの個性や好みが出るところですし、フォトリアル系なのかアニメ調なのか、描き込み量を多くしたいのかそのままにしたいのかといったことによっても手順は分かれます。この記事では、アップスケールの前提となるキャンバスサイズの基礎知識から、3つのアップスケール手法と「ADetailer」の基本と応用、そして具体的な手順を詳しく紹介することで、誰でも場面に応じたアップスケールができるように解説していきます。


目次

はじめに - キャンバスサイズ設定の基本 -

  <学習によって生じた"バイアス">

  <"規定サイズ"を守ろう>

推奨のキャンバスサイズ

拡張機能でキャンバスサイズを選びやすくしよう

具体的なアップスケール手法

1.高解像度補助(Hires.fix)

  おすすめのアップスケーラー

  <重要:ライセンスを確認しよう>

  <アップスケールした"画像"も商用利用不可?>

  アップスケーラーのDL方法

  アップスケーラーをXYZ比較

2.image2imageアップスケール

  img2imgアップスケール実践テクニック

  Controlnet+img2imgアップスケール

3.Extraアップスケール

【コラム】SNS投稿時はサイズに注意

ADetailerで"ピンポイント"アップスケール

アップスケール実践編

終わりに - "盛りすぎ"にご注意 -


はじめに - キャンバスサイズ設定の基本 -

アップスケールについて考える前に、まずは基本であるキャンバスサイズの話から始めたいと思います。


AIイラスト画像を生成する上で、キャンバスの縦横比とサイズは重要な意味を持ちます。縦長のキャンバスなら、人物が単独で大きく映っている画像が描かれやすく、横長なら、複数の人物や背景が大きく映り込んだ画像が描かれやすい傾向がみられます。

例えばこちらは、「1girl,full body,simple background,solo(女の子の全身がシンプルな背景に描かれている)」と指定して生成した横長の4枚ですが、指示通りだと大きく余白ができることに「違和感」を覚えたAI側が、勝手にキャラクター設定のようなものを出してしまっています。

これは、そのモデルが学習したデータセットにおいて、縦長の画像と横長の画像にどんなものが描かれることが多いかが「バイアス」として現れたものです。右上以外の3枚はプロンプト的には正しいのですが、学習データセットで学んだ「こういうキャンバスサイズにはこういうものがよく描かれる」というバイアスから見ると、余白だらけで不自然(非常識)な3枚と言えます。


こちらはより極端な「縦横 1:2」の比率で生成したもの。プロンプト通りなのは右下だけになりました。AIは学習内容から「もっともらしい」回答を導き出す仕組みなので、不自然な指示を自然に解釈しようとして間違えてしまうことがあるのですね。


<学習によって生じた"バイアス">

画像生成でよくある男性キャラクターがなかなか出にくかったり、"looking away(向こうを向いて)"とどんなに強調しても"looking viewer"になってしまったり、「princess」が金髪碧眼でティアラを付けているキャラばかりになったりするのも、この「バイアス」の仕業です。なんでももっともらしくするというのは、ステレオタイプに陥りがちということでもあります。


正方形からおおむね2:3くらいまでの比率なら生成結果が比較的安定しますが、極端な縦横比のイラストを描かせようとすると、キャンバスサイズに無理に合わせた構図になるため、人体が妙に「間延び」してしまったり、謎のオブジェクト(布状が多い)が現れたりするなど、モデル性能によっては構図が崩壊しがちになります。

   ▲胴が長くなってしまい、布状のオブジェクトが出現した例(※SD1.5系)



SDXL系を始め最近のモデルは相当高性能なので、キャンバス比率と両立不可能なプロンプトを入力しなければ、このようになんとか工夫しておさめてくれるようにはなってきてはいます。が、キャンバスの縦横比が出力結果に大きな影響を及ぼすのは依然変わっていません。




<"規定サイズ"を守ろう>

キャンバスの縦横比だけでなく、サイズそのものの設定も重要です。


こちらはいきなり2048x2048pxで生成しておかしなことになった例。完成したものを拡大してみると細部は詳細なのですが、学習データセットの画像サイズと遠すぎて、どこに何を描けばいいのか分からなくなってしまった状態です。

SDXLモデルの教師データセットは基本的に1024pxサイズで学習されているので、その2倍の大きさだとどのようにピクセルが並ぶのかうまく計算できず、このように崩壊してしまうのですね。


また、顔や手の描画範囲が小さくなればなるほど、描画品質は大きく下がってしまいます。特に顔は全身の中で細かな線が集中する重要な部分ですので、狭い範囲に描画させようとしても、このように低劣化してしまうことがほとんど。このままではとても作品として出すことはできませんね。


小さい範囲に生成しても、いきなり大きく生成しても失敗してしまうなら、どうすればいいでしょうか。少々回りくどい問いかけになってしまいましたが、答えは「いったん規定サイズで構図を確定させてから、大きなサイズに拡大(詳細化)する」です。この工程が、今回解説する「アップスケール」というわけですね。


推奨のキャンバスサイズ

規定サイズで生成したアップスケール前の画像を、この記事では「下絵」と呼ぶことにします。下絵をどんなサイズで生成するのが良いかはいろいろな考え方があり、モデル提供者がおすすめの比率を紹介していることもありますが、短辺長辺とも64の倍数にしておくことをオススメします。1000x1500pxなどきりのいい数字にしたくなるところですが、1024x1408pxのようにどちらも64の倍数でないと、WebUI上の拡張機能でエラーが出ることがあるためです。


ちなみに、NovelAIにおける「普通」サイズは1216x832px、「大」サイズは1024x1536px。いずれも64の倍数でできています。

個人的には、NovelAIのインペイント機能で手などのミスを直すことが多いので、SDでの生成比率も同じ1216x832pxか1024x1536pxにしていることが多いです。(投稿時はイラスト内容に合わせて最適な大きさにトリミングしています)


SDXLモデルの場合は1024x1024pxが規定サイズです。短辺を1024pxとし、長辺を64の倍数にするとなると、選択肢は以下のようになります。2:3よりも正方形に近い比率にしたいなら、1024x1344pxか1024x1408pxサイズあたりがおすすめです。




拡張機能でキャンバスサイズを選びやすくしよう


こうしたキャンバスサイズをいちいち手で入力するのは面倒ですね。こちらの記事の「⑤生成サイズをボタンで一発選択」で紹介していますが、上のスクリーンショットのような「キャンバス比率一発決定ボタン」を出せる拡張機能があります。無駄な作業をカットできるので、「①デフォルトの生成設定を変更しよう」と合わせて、早めに導入しておくことをオススメします。


具体的なアップスケール手法

キャンバスサイズの基本をおさえたところで、さっそく具体的なアップスケールの手法について見ていきましょう。現在ローカル環境でよく使われているアップスケール手法を大きく分けると、次の3つに分かれます。


1.高解像度補助(Hires)アップスケール

…text2imageタブで、通常生成に引き続いて各種「アップスケーラー」を使って自動でimg2imgを行うもの。設定が簡単なので初心者にお勧め。

2.image2imageアップスケール

…img2imgタブで下絵を読み込み、より大きなサイズでimg2imgするもの。強度を高めるほどに下絵から変化してしまうが、Controlnetを使うことで線画を固定したり、タッチごと大胆に変えたりすることもできる

3.Extraアップスケール

…extra(その他)タブでできる、単純拡大して細部を補うだけの簡易アップスケール。その他タブでは、トリミングや反転、背景一括削除などさまざまな加工が行える。


一つずつ、詳しく見ていきましょう。



1.高解像度補助(Hires.fix)

ローカル生成において、多くの方が最初に試すアップスケールが「高解像度補助(Hires.fix)」です。これはtext2imageタブで画像生成をする際、通常生成に引き続いて「アップスケーラー」に出力画像を渡し、より大きなサイズにimg2imgしてもらう機能。設定が単純なので、初心者に優しいアップスケール方法と言えるでしょう。


デフォルトの「Latent」やアニメイラスト向けの「Real-ESRGAN 4x plus anime 6B」など、あらかじめ用意されたアップスケーラーから好みのものを選ぶことができ、自分で追加することも可能。アップスケーラーには、実写画像の詳細化が得意なもの、アニメ調が得意なものなどさまざまな種類がありますが、あまり強く掛けると絵柄や顔立ちがいわゆる「マスピ」らしく変化したり、崩壊したりしてしまう点に注意が必要です。


▲R-ESRGAN 4x+ Anime6Bによるアップスケール例(強度0.5)。ほとんど変化していないようだが、カーテンやスカートなどに注目するとディティールが付け加わっている。顔立ちも変化。


<高解像度でのステップ数(Hires steps)>

「高解像度でのステップ数」(Hires steps) は、Hiresをどれくらいのステップ数掛けるか決める項目。「0」にすると本生成のSTEP数と同じ回数だけ高解像度化処理が行われますが、生成結果の高精細化はある程度で飽和しますので、完全なノイズから画像生成する本生成と同じSTEP数は必要ないことが多いです。結果がさほど変わらないのに生成時間が増えてしまうのはもったいないので、私の場合、本生成が25~30STEP程度だったらHires stepsは15前後にしていることが多いです。


「サイズ変更後の幅・高さ」に数値を入力することで下絵とキャンバスサイズを変更することもできますが、予期しない結果を招くことがあるため、基本的には同じ比率のままアップスケールすることをおすすめします。


<アップスケール倍率>

下絵を横縦何倍のサイズにするかを選びます。例えば1024x1408pxの画像を2倍にアップスケールすると、2048x2816pxになります。当然、大きい画像にするほど品質は良くなりますが、推論時間(生成時間)が長く掛かり、ノイズ除去強度が高めだった場合は崩壊しやすくなります。実践では1.5~2倍くらいで掛けることが多いです。


<ノイズ除去強度>

「ノイズ除去強度」はHiresを使う上で最も重要な設定値。アップスケーラーによるimg2imgをどれくらいの強度で掛けるかを設定する数値です。「下絵」にどれくらいノイズを加えてから生成を行うかを決める数値ですので、最大値の「1」に近づくほど品質が上がる代わりに元の画像からは離れ、崩壊率も上がっていきます。適正な値はアップスケーラーによります。


<アップスケーラー>

アップスケーラーには、大きく分けて「アルゴリズム型アップスケーラー」「学習済みAIモデル型アップスケーラー」の二つの種類があり、適切なノイズ除去強度が異なります。


・AIモデル型:無数の画像で学習した内容に従って、下絵をimage2imageする仕組みのアップスケーラー。下絵に存在しない詳細を付け加えたり、ミスを修正する可能性を持つが、ノイズ除去強度が強すぎると逆に指の本数を増やしてしまうなど、不自然な結果を招くこともある。(例)Latent系、Real-ESRGAN 4x plus anime 6Bなど

・アルゴリズム型:あらかじめ決められた数学的ルールに従って下絵のアップスケールを行うアップスケーラー。潜在空間を通さないので崩壊しにくく、計算が早いが、存在しないディティールを付け加えるような動作はしない。Lanczos、Nearestなど。



下図は「Latent」アップスケーラーでノイズ除去強度を変化させた例。0.5より低いと逆に低劣化して線がジャギジャギになります。Latent系は絵の変化を厭わないので、下絵の崩壊を修正してくれる力がありますが、0.8くらい強くなると元絵から大きく離れてしまいます。


「Real-ESRGAN 4x plus anime 6B」や自分で追加できるHires「4x-AnimeSharp」などはアニメ調イラスト向きのアップスケーラー。ノイズ除去強度が低くてもLatentのように崩壊はしません。こちらはR-ESRGAN 4x+ Anime6Bのノイズ除去強度による違いを示した図。1に近づくと、下絵の画風が少し消えるのが分かります。


おすすめのアップスケーラー

フラットな塗りのアニメ調イラストのアップスケールにおいては、デフォルト搭載のものではR-ESRGAN 4x+ Anime6Bがオススメですが、他にも、「アニメ調特化」「写真特化」「顔特化」「白黒漫画特化」などさまざまな特徴のあるアップスケーラーがウェブ上で公開されています。こちらのデータベースから、普段使いの画風にあったものを探してみるのもよいでしょう。


評判のいいアニメ調イラスト向けのアップスケーラーを以下に紹介します。(AnimeSharpV2には修正度合いの強い「Sharp」と、被写体をできるだけ変更しない「Soft」があります)


<重要:ライセンスを確認しよう>

アップスケーラーも学習モデルである以上、CheckpointやLoRAなどと同じようにそれぞれ配布者が設定したライセンスが存在します。利用する際は必ずライセンスの内容を確認するようにしましょう。

          ▲「License」欄をチェック(Chrome翻訳)


この場合は「CC-BY-NC-SA-4.0」がライセンスです。基本的にアルファベット二文字が規定事項を示し、末尾の数字がバージョンを示しています。例えばCC-BY-NC-SA-4.0なら、『著作者情報の表示義務』『営利使用不可』『改変して新しいアップスケーラーなどを作成した場合は元のライセンスを継承する必要あり』の意味に当たります。(リンク先参照)


<アップスケールした"画像"も商用利用不可?>

アップスケーラー「UltraSharp」や「AnimeSharp」のライセンス表記がCC-BY-NC-SA-4.0(非営利、クレジット明記、ライセンス継承すれば改変・再配布可)となっている件につき、「生成した画像にもこのライセンスの効果は及びますか?」と制作者のKim2091氏に問い合わせたところ、お返事を頂きました。

結局のところ、法律専門家でなければライセンスの正確な法的効果については結論を出せないとのことですが、制作者としてライセンスに込めた意図や希望としては上記リンク先に書かれた通りとのことです。利用される場合はご一読ください。


アップスケーラーのDL方法

各プラットフォームで「.pth」(PyTorch)や「.onnx」(ONNX)形式で配布されているアップスケーラーを、SDwebUIの「models\ESRGAN」フォルダに置いて再読み込みすれば、ほかのアップスケーラーと同様に利用できるようになります。StabilityMatrixの場合は「G:\Data\Models\ESRGAN」に入れれば、各webUIで共有することができます。



アップスケーラーをXYZ比較

さきほど紹介した追加アップスケーラーを含めて、総当りを試してみましょう。使用したのはIllustrious系のオリジナルモデルで、ステップ28、スケール7、hiresステップ15で2倍にアップスケールしたものです。ノイズ除去強度は「0.4、0.5、0.6、0.7」の4種としました。


原寸大ではここにプレビューを掲載できないので、閲覧したい方はこちらからDLをお願いします。



Latent系では0.6以上ないと線がガビガビになってしまうことがまず分かります。


Animeとつくタイプのものは線を整える力があり、ノイズ除去強度によって崩壊することも少ないのが特色。ガタガタになりがちな制服の襟の白線も等間隔に見えるようそろえてくれています。(ただし、下絵で3本の白線を勝手に2本に変えたりすることまではできません)


各アップスケーラーの効果は使用するCheckpointによって異なりますし、各ユーザーの求める画風によっても価値が変わってくるので、あくまでご参考まで。Checkpoint配布者がおすすめのHiresの種類や設定を記載していることも多いので、覚えておきましょう。


<Hiresの保存設定>

HiresをONにして画像生成したとき、アップスケールを掛ける前の下絵は保存されませんが、設定画面から下絵とアップスケール後の画像を両方保存するよう設定することもできます。


「画像/グリッド画像の保存」から「高解像度補助を行う前にコピーを保存しておく」にチェックを入れると、Hires生成1回あたり画像が2枚保存されます。常にONにしておくとストレージを圧迫してしまうので、よく考えて使いましょう。





2.image2imageアップスケール

さて、Hiresの次の選択肢が「image2imageアップスケール」です。こちらは、下絵をimage2imageタブで読み込み、基本的には同じプロンプトでより大きなサイズにimage2imageするやり方です。Hiresと違ってさまざまな設定を自分でコントロールでき、ControlnetやLoRAを使うこともできるのが特色で、うまく使うと上の画像のようにテイストを変更したり、下絵に存在しないディティールを付け加えたりできるようになります。


HiresがAIお任せの「オートマ」アップスケール法とすれば、i2iはよりオーダーメードに近い「マニュアル」アップスケール法と言えるかもしれません。


要するにやっていることはただのimg2imgですから、表情程度ならプロンプトを一部変更すれば変えることもできます。(キャンバス全体が変化する点に注意)


アップスケール前に画像修正できるのも、Hiresと違う重要なポイントです。例えばこちらの下絵をどうしても使いたいけれども、右手に破綻がある場合。いろいろなやり方がありますが、例えばNovelAIでこのようにインペイントして…


修正してしまいます。プロンプトはbeautiful handのみです。(詳しいやり方はインペイントが理解る!参照)


あとはこの画像を「img2imgアップスケール」すればOK。拡大してみると分かりますが、指先がほんのり色づき、手のひらにも影がつくなど、自然な仕上がりになっています。こうしたワンクッションが挟めるのは、通常生成に引き続いて自動的にアップスケールされるHiresではできない芸当ですね。


インペイントすら使わず、強引に加筆するだけでいけることも。左の画像をピースサインに変えたいとして、右のようにクリスタなどで加筆してしまいます。


あとはimg2imgアップスケールする際に、「waving hand」だったところを「v」に変えれば、このように整えてくれます。ただし、ノイズ除去強度を高めにしておかないと、雑な加筆の痕跡が見えてしまいます。(その結果、黄色いエフェクトが星型に変化しているのが分かるかと思います)



img2imgアップスケール実践テクニック

さて、hiresと違ってimg2imgアップスケールはいろいろなことができる分、どうしたらいいのかよくわからなくなってしまうこともしばしばです。基本的には下絵を出したときのtext2image時と同じプロンプトや設定を踏襲しますが、


・ノイズ除去強度は0.45前後(0.5を超すと別のイラストになってしまうし、低すぎると品質向上しない)

・アップスケール後のキャンバスサイズは1辺あたり2000~3000px


ーとしておけば、基本的に大きな失敗はしないかと思います。


ただ、せっかくimg2imgアップスケールというひと手間を掛けるなら、LoRAやControlnetを併用してみるのがオススメ。具体的な手順を見てみましょう。




①LoRAを使ってアップスケールしてみる

下絵にimg2imgアップスケールを掛けるときに、調整系LoRAを使ってよりイメージに近い画風に寄せることが可能です。例えば、月須和・那々さんのSDXL FlatやSDXL Boldlineは、描き込み量や線の太さを調整するLoRA。どちらも「-1」で適用することで、線を繊細にし、描き込み量を増やすことができます。(詳しくは下記記事参照)


下の図は、1024x1024pxの下絵をimg2imgする際に、SDXL FlatとSDXL Boldlineを「-1」で適用したものです(ノイズ除去強度0.6)。左の下絵にない詳細が、右のアップスケール版では加わっており、線も繊細になっていることが分かります。

ただ、ノイズ除去強度が0.5を超えてしまうとこのように絵柄自体が変わってしまっていますし、規定サイズよりかなり大きめのサイズに拡大する場合は崩壊しやすくなってしまいます。(これを問題①とします)


②モデルを変更してアップスケールしてみる

普段使いのモデルの画風で仕上げたいけれども、そのモデルでは「このキャラを覚えていない」「背景が苦手」「カラーがイメージと違う」といった問題があるとします。そういうときは、そうした生成ができる別モデルを使っていったん下絵を出してから、普段使いの画風のモデルで強めにアップスケールしたくなるわけですが、やってみるとなかなかうまくいきません。


例えば、普段こういう画風のモデルだったとして、このモデルはキャラクターをフラットな塗りで描くことに特化しているため、美麗な背景が苦手だとします。


そこでこのように、別モデルで作りたい構図を出してしまって、上の画風に描き直そうとするわけですが…


強度を上げると別の構図になり、下げるとむしろ低劣になるため、アップスケールをしているのだかimg2imgに失敗しているのだかわからなくなってしまいます。(問題②)


問題①、②からわかるように、img2imgアップスケールの難しさは、「2048pxサイズ以上に大きく詳細化する際、強度を0.5より強めると崩壊してしまう」「0.5より弱めると元の画像にあるミスを継承してしまうし、画風を思ったように変化させられない」という点にあります。


低劣な部分をアップスケールで補ってもらったり、正しく描き直したりしてほしいけれど、あまり元画像から変化してしまうと、想定とは違うイラストになってしまう。特に、手描きイラストをAIで仕上げている場合、アップスケールで少しでも線が動いてしまうと、自分の絵とは感じられないものができてしまうでしょう。



Controlnet+img2imgアップスケール

ノイズ除去強度が低いと低劣な部分は直してもらえないし、高いと元画像から変化してしまう。そういうときは、Controlnetを使うのがオススメです。


例えば、さきほどの問題①。塗りを高品質にしたいけれども、線画が別モデルに引っ張られて顔立ちが変わってしまう場合は、月須和・那々さんが開発したSDXL用の汎用Controlnet「Anytest v3 / v4」が役立ちます。Anytestは入力された画像の線画を守りつつ、それ以外の部分はプロンプトに従って変更しようとする力を持っています。V3は線画を忠実に守ることを優先し、V4は多少線画が動いても構わないので、プロンプトを忠実に守る動作をします。


今回は多少線が動いてもいいのでリッチなテイストに変更したいわけですから、V4を適用。下絵のカラー配置はほどほどに参考にしてもらいつつ、カラーが得意なモデルに自由に描き直してもらいたいので、ノイズ除去強度は最大に近い0.9。SDXL FLATも-1適用して、より詳細を付け加えてもらいます。


こちらが下絵と、アップスケール結果。


通常のimg2imgでは顔立ちの線画が移動して別の絵になってしまっているのに対し、Anytestでは目の位置や口の角度をできる限り残そうとしていることが伝わるかと思います。


さきほど紹介したこのアップスケール例も、このようにanytestを使って線画部分を固定し、フラットな塗り部分は無視してもらうことで作っています。主な線画部分はそのままに、「存在しないディティールを追加する」というと近いでしょうか。


詳しいやり方はこちらの記事を参照のこと。特に手描きをAIに補助してもらいたい方にとっては、線をなるべく動かさずに高品質化できるanytestはさまざまな用途で役に立つと思います。





3.Extraアップスケール

ここまでは、アップスケーラーやAIモデル(Checkpoint)を使ってimg2imgする手法を解説してきましたが、いったん潜在空間を通す以上、下絵から大なり小なり見た目が変化することは避けられません。この項目では、下絵はできるかぎりそのままに、解像度を上げる手法を「Extraアップスケール」として紹介します。(この記事だけの造語です)


SDwebUIの画面上部のタブを御覧ください。左からtxt2imageタブ、image2imageタブときて、3つ目に来るのがその他(Extra)タブです。

ここでは既に完成したイラストをより大きなサイズに変更することができます。Hiresやi2iアップスケールのように絵自体が変化することはなく、画像を拡大したときに違いが分かる「ぼやけ補修」のようなアップスケール手法です。


例えば1024x1024ピクセルのAIイラストをそのまま8倍程度に拡大表示すると、普通はこのようにドットが目立ってしまいます。(かなり小さい範囲に顔面が描画された遠目の絵なので、このように低劣になっています)


「その他」タブでこの画像を読み込み、アップスケーラー1で「R-ESRGAN 4x+Anime6B」を選択。アップスケーラー2では何も選ばず(None)、倍率「4」で生成ボタンを押してみます。通常のHiresやimg2imgで画像を4倍(4096x4096px)にしたらものすごい時間が掛かるか、GPUによってはCUDA out of memoryエラーを起こすところですが…


このように、4.3秒で解像度4倍になったものが出力されました。



出力されたものを同じように拡大表示してみると、このように粗いドットが補修され、スムーズなタッチになっているのがわかります。しかし、元画像の低劣さは放置されたままですね。


Hiresやimg2imgアップスケールと異なり、Extraアップスケールは元画像をそのままに、「ドットの粗さだけを補修する」ような機能です。解像度が低く、拡大しようとするとすぐにドットが見えてしまうような画像に対して、簡易的にサイズアップしたいときに使う機能…ということになります。


<どんなときに使うの?>

これだけだと、「それっていったいどういうタイミング?」と混乱してしまいそうですね。Extraアップスケールは、例えばAI絵をコマに並べて漫画にしたいときに、コマに合わせて画像を拡大するとジャギーが目立ってしまう場合に有用です。クリスタ加筆で細部の修正をする方は、生成画像をいったん4倍サイズにしておいてから加筆して、そのあとimg2imgアップスケールを掛ける…といった用途にも使えるでしょう。


解像度が低い状態で加筆すると、このようにドット絵修正のような感じになってしまいますので…


Extraアップスケールで、このように線を滑らかにした状態から加筆を始めるとよいでしょう。



また、その他タブはこの「そのままアップスケール」機能にしか使えないわけでは当然なく、このように「自動サイズで切り取り」や「背景を削除」(拡張機能"RemBG"をインストールすることで使えます。こちらの記事の⑫参照)といった機能を一括で掛けることができる仕上げモードのような位置づけです。


また、その他タブの中にある「ディレクトリからバッチ処理」タブでは、ある階層のフォルダ(ディレクトリ)に保存してある複数画像に対し、一括でその処理を掛けることもできます。


例えば、デスクトップに「mina」というフォルダを作り、処理を掛けたい画像を10枚入れたとします。そのフルパスを「入力ディレクトリ」に入れ、「出力ディレクトリ」には「mina2」と入力します。存在しないフォルダなら、その名前のフォルダが新たに作られて、その中に処理済み画像が保存されます。


今回はこのように、「4倍にアップスケールし、左右反転画像を生成し、背景を削除する」という処理を選択してみました。


すると、「mina2」というフォルダ内に順次、指定した処理を施した画像が出力されていきます。

ちなみに、チェックを入れたすべての処理を施した画像のみが保存されるわけではなく、反転前のものと反転後のもの、背景削除版と削除前のものがちゃんと保存されます。LINEスタンプやアイコン、ノベルゲームの素材を作りたい場合や、LoRA学習用のデータセットを作りたいといったときに有用ですね。




【コラム】SNS投稿時はサイズに注意

X(Twitter)にAIイラストをアップしようとする際、サイズによってはトリミングされたり、自動的に低画質化してしまうことが知られています。現在は5MB以上の4K画像を投稿することが可能ですが、4K画像を表示するためには、閲覧するユーザー側が設定で高画質を読み込めるようにしている必要があります。せっかく作ったAIイラストをより見栄えよく届けるためには、最終的なサイズにも気を配ったほうが良いでしょう。


AIイラストは高解像度ほど良いと思いがちですが、SNSによって適切にサイズを調整しないとむしろ低劣化されてしまうこともありますし、ディスプレイで鑑賞するだけならそもそも過度な解像度は不要です。少なくともXにおいては、一辺が1000px~2000pxの間に収めるのが常識的なのかなと思っています。もちろんよほど細部まで描き込まれた超美麗なAI作品であればその限りではありませんが、拡大した場合AIならではの破綻も見えやすくなる点は留意しておきましょう。


ちなみに手描きイラストにおいては、印刷やグッズ化に使用できるレベルの超高解像度なデータを公開すると無断改変や悪用の恐れがあるため、SNSで公開する画像は鑑賞に堪えるぎりぎりのサイズにとどめるのが常識的と考えられています。ただ、背景まで描き込まれた一枚絵は拡大して鑑賞する人も多いので、細部がつぶれないギリギリのサイズを考えて出力するのが普通なようです。



ADetailerで"ピンポイント"アップスケール

さて、ここまで「Hires」「img2img」「Extra」の3つの基本アップスケール手法について見てきましたが、他にもイラストの高品質化に有用な機能はいくつも存在します。例えば、SD1.5系ではControlnet「Tile」を使ったアップスケールが有用でしたが、SDXL系が主流となった今は、以前ほど使われなくなってきているようです。


ここでは、どのベースモデルでも非常に使い勝手がよく、さまざまな応用のきく「Adetailer」について紹介しておきます。


<顔や手だけをimg2imgアップスケールできる>

「ADetailer(AfterDetailer)」は、下絵に描かれた顔面や手の部分を自動検出し、その周辺だけを詳細にimg2imgする機能。「顔だけ・手だけアップスケール」のような手法です。導入法や使い方などはこちらの記事で紹介しています。


例えばこちらの画像。横長のキャンバスに全身図をおさめたため、顔の描画範囲が狭く、かなり低劣な顔になってしまっていますね。手も破綻こそしていませんが、描いただけという感じです。


こういうときにADetailerをオンにしてみましょう。するとこのように、顔や手といった指定部位を順次専用AIモデルが検出し、大きなサイズでimg2imgしたあと、また元の場所にはめこんでくれます。

ちなみに、デフォルトではキャンバス内の顔・手・人物部分を抽出するモデルだけですが、瞳や耳、脚などさまざまな被写体・部位を検出できるモデルが存在します。


こちらがAdetailer前後の違いです。顔と手以外はそのままに、ピンポイントで高解像度化されていることがわかるかと思います。

ただし、Adetailerが行っているのは「ある部位を自動で切り取ってimg2imgアップスケールして、元の所へ戻す」ような作業ですので、基本的に元画像に引っ張られます。6本指になってしまっているものを、勝手に5本指に修正するような力はありません。当然ですが、検出部位が多いほど生成時間が増えてしまうことも覚えておきましょう。


こちらは同じ画像にHiresを掛けたものですが、キャンバス全体のアップスケールであれば、普通に通常のアップスケールで問題ないと思います。


<じゃあどういうときに使うの?>

Adetailerが真価を発揮するのは、Hiresのようにキャンバス全体を描き直してしまうと思ったとおりの結果にならないような状況です。


ADetailerはimg2imgを掛けるときにプロンプトを自由に変更できるので、キャンバス全体に効かせる通常のプロンプトとは別に、「顔面だけ」「手だけ」にピンポイントで任意のタグを効かせることができる機能と考えると良いでしょう。また、検出レベルの範囲や検出件数を指定することで、「メイン人物のみ」「背景のモブのみ」などとターゲットを絞ることも可能です。


これを理解すると、狙ったキャラの顔や手だけにピンポイントにタグを効かせられるほか、Adetailerで瞳や顔の品質をUPさせるための専用LoRAを掛けて、狙ったデザインに必ず収束させる…といったテクニックも可能になります。

初めはアップスケールとの使い分けが分かりにくいですが、仕組みが体感的に理解できると手放せなくなる、非常に高性能な拡張機能がADetailer。専用LoRAの作り方と適用方法はこちらの記事で検証しています。


アップスケール実践編

さて、ここまでの知識を踏まえて、こちらのイラストをアップスケールしてみましょう。慣れた方なら、面倒なお題なのがすぐ分かると思います。

プロンプトはこちら。キャンバスサイズは1408x1024pxです。


6girls,solo focus, sidelocks,(red-framed eyewear,semi-rimless eyewear:1.2),serafuku,hair between eyes,navy_sailor_collar,ponytail,short sleeves,shiny skin,black hair,white bow,red neckerchief, navy pleated skirt,pantyhose,masterpiece, best quality, newest, absurdres, highres, safe,general,blue eyes,, masterpiece, best quality, newest, absurdres, highres, safe,, white pupils,general,outdoor,school,city,friends,line up


ミナちゃんプロンプトと「solo focus」によって、なんとかメイン被写体はミナちゃんにできていますが、後ろの5girlsにまでその影響が出ており、このままアップスケールすると複数のミナちゃんが出てきてしまいそうな予感がしますね。いろいろ試してみましょう。


①Hiresアップスケール

まずは素直にHiresを掛けるところから始めます。アニメに強いAniScale2 Omniを0.4強度・16ステップで掛けて縦横2倍にしてみます。


結果がこちら。恐れていた通り「全員ミナちゃん現象」が起きました。それに、モブの顔面がつぶれてしまっているのもやはり気になりますね。


これを回避するためには、まず「ミナちゃん部分」と「モブ部分」を分割してアップスケールする必要があります。ADetailerの出番ですね。


②ADetailerでモブ顔のみ抽出

ADetailerでは、先ほども触れましたが検出レベルの範囲や検出件数を操作することが可能です。うまく指定してあげれば、ミナちゃん以外のモブキャラだけに、ミナちゃんではない顔面指定をすることができます。


例えばADetailerで顔面抽出モデル「face_yolov8n.pt」を使うと、このようにミナちゃんとモブの顔面が全て検出されてしまいます。ミナちゃんの顔を避けるためには、修正対象の検出範囲をサイズで指定してあげる必要があります。


具体的にはこのようにします。Mask max area ratioが「0.05」なので、キャンバス全体の面積の5%を超えているミナちゃんの顔面範囲は検出除外されます。Mask only the top kが「4」となっているので、ミナちゃんを除いた上位4件の顔面領域だけが検出されるはず。ついでにinpaint denoising strength(img2imgの強度)は強めの0.7、Use separate width/heightで1240x1240pxとし、「モブの顔面のみ1240x1240pxのキャンバスで強めにi2iして戻しなさい」という指示になっています。

モブ顔は適度にばらけさせたかったので、wildcardを使って髪型・髪色・目の色をランダム化しています。詳しいやり方はこちら。


するとこのようになりました。ミナちゃんの顔はそのままに、モブの顔のみが整っています。


別のモデル「person_yolov8n-seg.pt」を使うと、このようにキャラの顔ではなく全身を抽出することもできます。


こちらが生成結果。今度は全身がクォリティアップしています。


これでガタガタだったモブ部分は整いましたが、地面の線がちょっと日本とは思えない感じですので、画像編集ソフトで適当にそのへんの字面の色を拾って雑に塗りつぶしてしまいます。手の修正、視線の修正などがある場合も、このタイミングで行うとよいでしょう。


とはいえこれは下絵段階で、肝心のアップスケールはこれから。こちらを「下絵」として、ここからcontrolnet+ADetailer+img2imgアップスケールをします。



③controlnet+ADetailer+img2imgアップスケール

いきなり難度が高そうですが、設定はさほど難しくはありません。理屈的には、「これからimg2imgをするけど、anytestでどこに誰がいるかはちゃんと縛るね。その上でimg2imgするから、そのあとさっきみたいにモブをADetailerしてね」というのが狙いです。


この三つが揃わないとどうなるかというと、また全員ミナちゃん化したり…


謎の人物が変なところに登場したりします。


まず、プロンプトはこちら。

PP:5girls,solo focus, serafuku,masterpiece, best quality, newest, absurdres, highres, safe,general,blue eyes,, masterpiece, best quality, newest, absurdres, highres, safe,, white pupils,general,outdoor,school,city,friends,line up, <lora:sdxl-flat:-1> <lora:sdxl-boldline:-1>

マイナス適用した二つのLoRAはそれぞれ、描き込みを増やし、線を細くする効果があります。一方で、text2imageのときにあったred framed eyewearなどミナちゃんに関するタグはごっそり抜いています。モブがミナちゃんになってしまうと困りますし、容姿はControlnetで縛るので、もうタグを入れる必要がないのですね。


<キャンバス設定>

ごく単純。0.5強度で2倍にします。


<ADetailer設定>

さきほどと同じ。モブ4人だけにランダム化したプロンプトを適用します。


<Controlnet設定>

これもごく単純。ただanytest v4をデフォルト設定で掛けただけです。


結果がこちら。


モブもよほどアップで見ない限りは問題なく人物化されていますね。同キャンバス内ですので、制服デザインが統一されているのも良い感じ。


気になるのはここです。「crowd」をNPに入れてはいるのですが、ガチャの引きによってはこうした遠くの破綻はどうしても見えてしまう。こういう予期せぬ生成は、範囲が小さいならLama Cleanerなどで消すのが手っ取り早いかもしれません。


もちろん、Adobe税を支払っている場合は生成塗りつぶしで消してしまうのが早いです。



もう一つ、こちらの子が影の中に立っているのに全身が明るすぎることも気になりますね。


新規レイヤー(乗算モード・透明度50%)で、灰色のスプレーで塗ってあげればこのように簡単に暗く出来ます。はみ出しが気になるようなら、これを基にi2iアップスケールをしてもよいでしょう。(本来は下絵の段階で済ませておくべき作業でしたね)



上がアップスケール前、下がアップスケール後です。フラットなアニメ塗りだとややアップスケールの効果が分かりにくいのですが、モブの破綻をしっかり修正できていると思います。

モブの見た目には特にこだわりがなかったので、wildcardを使ってランダマイズしてしまいましたが、日本人離れした…というよりソシャゲの学校みたいなド派手なヘアカラーですね笑 もちろんここも自分の好みでプロンプトを操作しても良いでしょう。



終わりに - "盛りすぎ"にご注意 -

アップスケールの手法はユーザーによって全然違うと思いますし、破綻修正とも密接にリンクしているので、「これ」と言ったベストパターンというのは存在しません。実践編で見たように、「こうなったらこうすればいい」というアップスケール手法をたくさん知っておくと表現の幅が広がるので、「自分はHiresだけ」とか「img2imgだけ」と言わず、ケースバイケースでさまざまなやり方を試してみるのがオススメです。


アップスケールはもちろん美麗かつ正確に画像をアップグレードするのが目的なのですが、「盛りすぎない」ことも大切です。メインの被写体はどんどん美麗になっていくけど、背景の時空がどんどんねじ曲がっていく自撮り加工みたいになってしまっては、イラスト全体がおかしくなってしまいますよね。


例えばこの画像のように、一見描き込み量はものすごくて豪華でも、どこに目をやったらいいのか、この絵から「豪華」以外の何を感じたらいいのかよくわからなくなってしまったりします。ここまで美麗だと、もはや修正も気軽にできなさそうですね。

絵の良さを足し算することばかりではなく「引き算」のことも考えて、これは何を伝えたい絵なのか、アップスケールでどこをどう強調したいのか決めてから作業した方がよい結果になると思います。


それでは、今日はこのへんで。スタジオ真榊でした。




Attachments (71)

EoDE94G138RSDQ1obY1PRRIE.png

EoDE94G138RSDQ1obY1PRRIE.png

ToFzWllPlQJ3JcPr3FSorkZj.png

ToFzWllPlQJ3JcPr3FSorkZj.png

h1gS8cdBVsSE41AYZFPTv89o.png

h1gS8cdBVsSE41AYZFPTv89o.png

lFNzEPXUrt1zmo6cmhds47Ld.png

lFNzEPXUrt1zmo6cmhds47Ld.png

2wK5vFDTGcWRKtB09jk6S5Sl.png

2wK5vFDTGcWRKtB09jk6S5Sl.png

3UrkQijhVHC7bdqhWFdUxRBA.png

3UrkQijhVHC7bdqhWFdUxRBA.png

1qWLTWXY3eLLAFQJdA0z7KOY.png

1qWLTWXY3eLLAFQJdA0z7KOY.png

D4jU6Ahg3zzYczLYo4AQaVeo.png

D4jU6Ahg3zzYczLYo4AQaVeo.png

p6JtHFIrZl2EnfrpIAD2IDZL.png

p6JtHFIrZl2EnfrpIAD2IDZL.png

TQvLtngttoCnEpHAHpq3jmnr.png

TQvLtngttoCnEpHAHpq3jmnr.png

gaVSOfnNscgh0YQwyxVnC61I.jpeg

gaVSOfnNscgh0YQwyxVnC61I.jpeg

NFpy7Sqb5MUMHcZWjhIGkuye.png

NFpy7Sqb5MUMHcZWjhIGkuye.png

tilJzdA6YzqQiLjvGpezNabS.png

tilJzdA6YzqQiLjvGpezNabS.png

MPBamaUhWvcI0w9IE8UdVhMY.png

MPBamaUhWvcI0w9IE8UdVhMY.png

XkwSmjp9fO9X26NeKMozXDys.png

XkwSmjp9fO9X26NeKMozXDys.png

hMUSYhE3XwsbEWLQyOh5E3PY.png

hMUSYhE3XwsbEWLQyOh5E3PY.png

WShhJCpOozksYzwzJM0uuJW3.png

WShhJCpOozksYzwzJM0uuJW3.png

xyz_grid-0004-11111.png

xyz_grid-0004-11111.png

lGAROoEb5QaUtzvj2DXulQ4J.png

lGAROoEb5QaUtzvj2DXulQ4J.png

kWO54F753mBV81nQqujpfjI6.jpeg

kWO54F753mBV81nQqujpfjI6.jpeg

RC4xOijNi0VqiwYEOjut7nfO.jpeg

RC4xOijNi0VqiwYEOjut7nfO.jpeg

PcwoBNYIvzdow4Rb02ieRFAs.jpeg

PcwoBNYIvzdow4Rb02ieRFAs.jpeg

o3nfuggO8WwpoGgwRNEhmEni.png

o3nfuggO8WwpoGgwRNEhmEni.png

rK72ndAH4mSQyxjb3QcxrDWM.png

rK72ndAH4mSQyxjb3QcxrDWM.png

YYnujchiiU7JR3n7uKEIvXFa.jpeg

YYnujchiiU7JR3n7uKEIvXFa.jpeg

hDDqrZPkSRQPaikf4yVdOdte.jpeg

hDDqrZPkSRQPaikf4yVdOdte.jpeg

3lPEzAm9qOum1vhNDw0W7lMP.png

3lPEzAm9qOum1vhNDw0W7lMP.png

67ti140MA6XN4g57LS4WABNJ.png

67ti140MA6XN4g57LS4WABNJ.png

f6UNydhf1Wa2JF1EQagCnCPY.png

f6UNydhf1Wa2JF1EQagCnCPY.png

WgE6d8LfSR9NyLnGZtZTiMNi.png

WgE6d8LfSR9NyLnGZtZTiMNi.png

jyZ0OKo3x8j7G1QLAhbcg7LB.png

jyZ0OKo3x8j7G1QLAhbcg7LB.png

31hRL7ENjJXc8VazNOo9EnxM.jpeg

31hRL7ENjJXc8VazNOo9EnxM.jpeg

Wnl4VTqBQATwW7swMMao4p1Y.jpeg

Wnl4VTqBQATwW7swMMao4p1Y.jpeg

AJbQv32Ch8e06ntDdnx87QcX.png

AJbQv32Ch8e06ntDdnx87QcX.png

5T5JIjWKChUq2MozQJtJWJI5.png

5T5JIjWKChUq2MozQJtJWJI5.png

GqbzjuZnO9aakDMLOOOSv1x6.png

GqbzjuZnO9aakDMLOOOSv1x6.png

W7s0hhsvIwGIZfKSGpTcEE8o.png

W7s0hhsvIwGIZfKSGpTcEE8o.png

hfPP0GkQSOoIWVIDNogiOnbt.png

hfPP0GkQSOoIWVIDNogiOnbt.png

w4TwzQ95kP2nOeMZHlSzfxk8.png

w4TwzQ95kP2nOeMZHlSzfxk8.png

MMwAV6vC5R5RvRlRzJJsewlC.png

MMwAV6vC5R5RvRlRzJJsewlC.png

v3IJiQWmnPbYs0pLF9bLAtlT.png

v3IJiQWmnPbYs0pLF9bLAtlT.png

LttfWIWBtUNwwIS1T7pTP2QY.png

LttfWIWBtUNwwIS1T7pTP2QY.png

YfxoyNEwGHFeYt68mSUHDbmG.png

YfxoyNEwGHFeYt68mSUHDbmG.png

qPi6iGDAMSdJ9eENMa2SqtpY.png

qPi6iGDAMSdJ9eENMa2SqtpY.png

Zh31d6ZKvL1MZZYXU3fPAurR.png

Zh31d6ZKvL1MZZYXU3fPAurR.png

h3aCz3kXbo6BhU2dVgPpgq3Q.png

h3aCz3kXbo6BhU2dVgPpgq3Q.png

j8syEatIbK1kTgPlx2YYsmNs.jpeg

j8syEatIbK1kTgPlx2YYsmNs.jpeg

L7YGpdJp4Hes9y9oSAnu9Gn5.png

L7YGpdJp4Hes9y9oSAnu9Gn5.png

tSBw3jBphCeOLhNIs8tdhrdP.png

tSBw3jBphCeOLhNIs8tdhrdP.png

OEpo0gntPYI9DYk7toIvjxtq.png

OEpo0gntPYI9DYk7toIvjxtq.png

YaVdc2HecZhiBpmufT3CWGCR.png

YaVdc2HecZhiBpmufT3CWGCR.png

tYFjixWgVdcYgnHTdM43kY5u.png

tYFjixWgVdcYgnHTdM43kY5u.png

HlY0bF5H57D7Xss4229W7VZq.png

HlY0bF5H57D7Xss4229W7VZq.png

sMyf4fEuVrRwwlSviQGHFa1v.png

sMyf4fEuVrRwwlSviQGHFa1v.png

ty7N0VsbKKbjCdsqd2KMWEnZ.png

ty7N0VsbKKbjCdsqd2KMWEnZ.png

fMSLDJvJ8O3XIoG9SkLjAICZ.png

fMSLDJvJ8O3XIoG9SkLjAICZ.png

YRIiwlaKf4mleaGdZcVzVkBV.png

YRIiwlaKf4mleaGdZcVzVkBV.png

Q5sSLnnyCyCEix2luGG753Wz.png

Q5sSLnnyCyCEix2luGG753Wz.png

GDCsFTyv12sSDxYVNAHj1YcA.png

GDCsFTyv12sSDxYVNAHj1YcA.png

PGaTT81hzzz7GDtZCthSBttJ.png

PGaTT81hzzz7GDtZCthSBttJ.png

IU9hdaVrpnS7aLeRZ5aCXLKO.png

IU9hdaVrpnS7aLeRZ5aCXLKO.png

ZxIAFVzcSCO7F8T5odD2qQ3Q.png

ZxIAFVzcSCO7F8T5odD2qQ3Q.png

jML9rNP3BFLzujrf7pvb7hSZ.png

jML9rNP3BFLzujrf7pvb7hSZ.png

HNw6wyEznNMjg4bA2oLc5lm0.png

HNw6wyEznNMjg4bA2oLc5lm0.png

hEqcKFvcdY7QFUm1GOMZ9Bmv.png

hEqcKFvcdY7QFUm1GOMZ9Bmv.png

GNNLR953yImndHrMqa0XSGGK.png

GNNLR953yImndHrMqa0XSGGK.png

SRM71168m0UyFWCaZeCEavVH.png

SRM71168m0UyFWCaZeCEavVH.png

zYZCzftDoi67wdWTJ2Nupapl.png

zYZCzftDoi67wdWTJ2Nupapl.png

hddJgHL1nGt7physR8wAQUTH.png

hddJgHL1nGt7physR8wAQUTH.png

qd6YfPKIj6mnhBxOOhTixIe5.jpeg

qd6YfPKIj6mnhBxOOhTixIe5.jpeg

5uTiQVtEwNUxnEfn4bIuMX2f.png

5uTiQVtEwNUxnEfn4bIuMX2f.png