見出し画像

そうだ!AI画像生成をちゃんと勉強しよう💡8章:Hires. fixとRefinerについて


※勉強しているのは、Stable Diffusion、SeaArt系になります。

画像多めで重かったらごめんなさい🙏

だんだん手を付けるのに躊躇するような触ったこともないような、よくわからない項目しか残らなくなってきました…。
でもText to Imageの項目すべてを明らかにするまで頑張りたいと思います!
私にはChatGPTくんがついているので😎✨

※定期ですが、私の記事はSeaArt公式のガイドブックと、ChatGPTくんに聞いた内容を引用したりして、それをなるべくわかりやすく変えて書いています。(いつもありがとう)

それでは本日も等身大の私でよろしくお願いします!
いつももくじは最後に入れるけど、これ見ただけでじんましん出そう😂



Hires. fixについて

これは何をするためのものか、読み方すらわかりません。
助けてChatGPTく~ん!

こんな間抜けな会話をしました🤣
はい、ハイレゾフィックスです!これで親近感が少し湧きました

Hires. fixとは

Stable DiffusionのHires. fixの項目一覧

高解像度の画像を生成する際に品質を向上させるための技術です。
この機能は、最初に低解像度の画像を生成し、それを高解像度にアップスケールしてから、詳細を追加して最終的な画像を作成します。

通常の画像生成の手順とは異なるようです。

(画像生成とアップスケールをいっぺんにやるってことかな🤔)


Hires. fix(High Resolution fix)の仕組み

1.低解像度の画像を生成:
最初に、指定されたプロンプトに基づいて、比較的低い解像度の画像を生成します。
これは高速かつ効率的に行われます。低解像度の画像は、基本的な構図や大まかな形状が決まる段階です。

2.アップスケール:
生成された低解像度の画像を、高解像度にアップスケールします。
アップスケールとは、画像のサイズを大きくすることです。
ただし、この段階では詳細が失われる可能性があります。

3.詳細の追加:

アップスケールされた高解像度の画像に対して、再度ディテールを追加する処理を行います。これにより、細部がシャープでクリアな画像が得られます。
具体的には、再びノイズを加え、拡散モデルがそのノイズを除去しながら詳細を復元します。


Hires. fixのメリット

  • 高品質な画像:

    • 高解像度の画像を生成する際、単に画像サイズを大きくするだけではディテールが失われがちです。Hires. fixはこの問題を解決し、高品質な画像を生成します。

  • 効率的な処理:

    • 最初に低解像度の画像を生成することで、計算リソースを節約し、全体の処理時間を短縮します。その後の詳細追加処理で高解像度の品質を確保します。


Hires. fixでのパラメータ

アップスケーラー以外のオプションは通常、デフォルト値に設定されます。

Upscaler(アップスケーラー)

  • ドロップダウンから、画像のサイズ変更に使用するアップスケーラーの種類を選択できます。

以下の4つはガイドブックで紹介されていたアップスケーラーです。

・4x-UltraSharp:
このアルゴリズムは、画像の解像度を 4 倍に高めます。画像を拡大するときに、エッジと詳細の鮮明さを維持することに特に注意を払います。
R-ESRGAN 4x+:
このアルゴリズムは、画像の解像度を 4 倍以上に向上させます。GAN を使用して画像の品質を向上させ、より細かいテクスチャを持つよりリアルな画像を生成します。
R-ESRGAN 4x+ Anime6B:
このアルゴリズムは、画像の解像度を 4 倍以上に高め、アニメ スタイルの画像に最適化されています。
8x_NMKD-Superscale_150000_G:
このアルゴリズムは画像の解像度を 8 倍に高め、
高解像度の出力を必要とするアプリケーションに適しています。

SeaArtガイドブックより

Hires steps(ハイレゾステップス)

  • 高解像度化する際のステップ数。

  • ステップ数が多いほど詳細が増え、品質が高くなりますが、計算時間が長くなります。

Denoising strength(デノイジングストレングス)

  • ノイズ除去の強さ。

  • 強い値に設定すると、滑らかでクリーンな画像になりますが、詳細が失われる可能性があります。弱い値に設定すると、ディテールが保持されますが、画像が荒れることがあります。

Upscale by(アップスケールバイ)

  • 画像をどれだけ大きくするかの倍率。

  • 元の画像サイズを何倍にするかを設定します。2倍なら2倍の解像度、1.5倍なら1.5倍の解像度に拡大します。

Resize width to(リサイズウィズトゥ)

画像の横幅を指定された特定のピクセル数にリサイズする設定です。

Resize height to(リサイズハイトゥ)

画像の縦幅を指定された特定のピクセル数にリサイズする設定です。


Upscale byを使用する場合、Resize width toやResize height toは使えません。
逆に、Resize width toかResize height toどちらかを指定又は両方を指定する場合、Upscale byは使えません。


(Hires. fix内の)Checkpoint(チェックポイント)

解像度の画像を生成する際に使用するチェックポイントを指定する設定です。

Hires sampling method(ハイレゾサンプリングメソッド)

解像度の画像を生成する際に使用するサンプリング方法を指定する設定です。

Hires schedule type(ハイレゾスケジュールタイプ)

高解像度化する際にノイズをどのように除去するかのスケジュールを設定するものです。

Checkpoint、Hires sampling method、Hires schedule typeのデフォルト値は「Use same scheduler(同じチェックポイントを使う)」となっているので、基本的にはそのままでいいのかなと思います。
これも検証しがいがありそうです。また日をあらためてやります…
今日はデフォルトでの画像生成をお試しします!


Hires. fixパスのプロンプト

Hires. fixパスのプロンプトは、高解像度化プロセス中に使用される指示(テキストプロンプト)のことです。このプロンプトは、最初に低解像度の画像を生成した後、アップスケールして高解像度にする際に適用されます。

  • 役割:

    • 画像の高解像度化中に追加の詳細や内容を指定します。

    • 最初に生成された低解像度の画像をアップスケールし、さらに詳細を追加するために使用されます。

  • :

    • 「風景の画像」を生成する場合、プロンプトには「美しい夕焼けの山々」と記載します。これにより、アップスケールされた画像には夕焼けや山の詳細が強調されます。


Hires. fixパスのネガティブプロンプト

Hires. fixパスのネガティブプロンプトは、高解像度化プロセス中に避けたい要素を指定する指示(テキストプロンプト)のことです。この設定を使用することで、生成される画像から特定の要素や特徴を排除できます。

  • 役割:

    • 高解像度化中に避けたい要素を指定します。

    • 例えば、生成される画像に不要なオブジェクトや望ましくないスタイルが含まれないようにするために使用されます。

  • :

    • 「風景の画像」を生成する場合、ネガティブプロンプトには「ビル、車、人」と記載します。これにより、アップスケールされた画像にはビルや車、人が含まれないように制御されます。

これらの設定を適切に使用することで、Stable Diffusionで生成される高解像度画像の品質と内容をより細かく制御することができます。

※最初のパスと同じプロンプトを使用する場合は空のままにします。


Hires. fix使ってみる

それでは出力がどんな感じになるか実際にやってみたいと思います!
私のアップスケーラーには19種類入っているので全部試してみます。

試すUpscaler19種類はこちら

・Latent
・Latent(antialiased)
・Latent(bicubic)
・Latent(bicubic antialiased)
・Latent(nearest)
・Latent(nearest-exact)
・None
・Lanczos
・Nearest
・DAT x2(エラー)
・DAT x3(エラー)
・DAT x4(エラー)
・ESRGAN_4x
・LDSR(他と比べて時間がかかった約6分)
・R-ESRGAN 4x+
・R-ESRGAN 4x+ Anime6B
・ScuNET GAN
・ScuNET PSNR
・SwinIR 4x

DATの3つはエラーが出てしまったので生成できませんでした。

TypeError: argument of type 'NoneType'is not iterable

「'NoneType' 型の引数は反復可能ではない」らしいです。
私には何のことだかさっぱりわからないので、
エラーが出てしまうものは諦めます。

モデル:awpainting
Clipskip:2
VAE:Automatic
サンプラー:DPM++2M Karras
サンプリングステップ:25
シード値固定

Hires.fixパラメータ

※たぶんデフォルトのまま

Upscaler:(ここを色いろ変えてみる)
Hires steps:0
Denoising strength:0.7
Upscale by:2

今回結果の違いがわかりやすいように細かな描写が出るようなプロンプトを用意したかったので、Civitaiのモデルページのものを使わせていただきました🙏
best quality,masterpiece,illustration,ultra-detailed,beautiful detailed eyes,(1girl:1.3),white robe,magician,enchanting spell,high-angle view,magical forest,otherworldly beauty,casting pose,magical staff,invocation effects,soft and ethereal light,fantastical atmosphere,mystical creatures,empowering allies,enhancing abilities,elemental magic,swirling energy,pulsating aura,determination,support,vibrant colors,glowing runes,levitating,swirling leaves,teamwork,magical bonds,protective shield,guiding light,shimmering particles,enchanted surroundings,harmony with nature,hope,wisdom,ancient secrets,celestial beings,arcane knowledge,mystic symbols,spellcasting,elemental forces,

AWPainting https://civitai.com/models/84476/awpainting

まずはHires.fixを使わない通常の生成方法で出力してみます。

Hires.fix未使用 512×768

クリアさは弱いですが全然いい感じです。
次にHires.fixを使って生成してみます。まずは一番上の「Latent」から。

Latent使用 1024×1536


え?すごいんだが?!


すべてがグレードアップしている!こ、これがHires.fixかっ…!
解像度が上がったので、画像サイズも700KB→2.62MBにグレードアップしています(当たり前といえば当たり前だけど…)

残りのUpscalerもどんどん試していきます!
結果を見比べやすいように一覧にしますね。バラの画像が欲しい方はzipファイルをダウンロードしてみてください🎶

Hires.fixのUpscaler結果一覧

Upscaler19種比較1
Upscaler19種比較2

こんな結果になりました。
私には違いがよく分からないので各自見ていただいて気に入ったものを使ってみるか、よくおすすめされている「R-ESRGAN 4x+」や「R-ESRGAN 4x+ Anime6B」あたりを使うか、もしかしたらモデルによっては推奨アップスケーラーが書いてある場合もあるのでそれを使うかしてもらうと良いのではないでしょうか。

ただ、「LDSR」は他のに比べてかかる時間が数倍なので避けた方が無難かも?

今日はアップスケーラー以外のパラメータは試しませんでしたが、
「Hires steps」は値を変えると出力が変わると思うので、気になる方は試してみてはいかがでしょうか( ⩌⩊⩌)✧

・・・

・・・私が気になってしまった🤣

1個だけやって終わりにします🤣

Hires steps比較

さきほどの画像で、アップスケーラーは「R-ESRGAN 4x+ Anime6B」にして、Hires stepsを10ずつ増やして(0は上にあるので飛ばします)150までやりますw

他のパラメータはすべて先ほどと同じなので知りたい方は上を遡ってください🥳

ステップ数を上げていくたびに生成時間が延びていくので、数分待つあいだ

  • 次につくる画像のプロンプトを考えたり、

  • noteを書いたり、

  • ポイ活をして待ちましょう?😙

生成し終わりました!後半は1つ生成するのに約5分かかりました。

うーん、これもそんなに違いがわかりませんね🤔全部ステキ。
強いて言えば装飾の描きこみ量とかが増えてるでしょうか。
モデルにもよるのでしょうが、そんなにステップ数を増やさなくてもクオリティ高く仕上がるのではないでしょうか。


ちなみにシード値をランダムに戻して、Hires stepsを0と20にしてそれぞれ生成してみた結果がこちら。

シード値 -1 Hires steps 0
シード値 -1 Hires steps 20

20の方は最初の画像と似てますが、やはりランダムですね。
気になったので30も出してみちゃいましたw

シード値 -1 Hires steps 30


幽体離脱はじめてます。もしかしたらステップ増やしすぎると破綻が起こってくるのでは?今までのパラメータも極端な値にすると品質が落ちてたりしたので。
これまた気になってしまったので40も生成してみることに。


シード値 -1 Hires steps 40

全然ステキなのが出てきました✨幽体離脱はたまたまだったようです。
しかしこのプロンプト考えた人神ですね😍たくさんときめかせてもらいました!

検証はこの辺りにしておいて…

毎回ハイレゾフィックスをONにしていると、時間もかかるしパソコンへの負荷もかかるし電気代もかかってしまうので、

通常の生成方法で作る

気に入った画像ができたらシード値を固定する

ハイレゾフィックスをONにして高解像度で生成する

この流れが良いのではないかと思います✨
私はこの作戦でいきます。


Refinerについて

Refiner(リファイナー)とは、画像生成の過程で生成された画像をさらに改良し、品質を向上させるための追加処理を行う技術やモジュールのことです。

Refiner(リファイナー)の役割

  1. 改良・精製:

    • 生成された画像の細部を修正し、より高品質で詳細な画像にするための処理を行います。

    • 生成プロセスの最後の段階で、画像のノイズを取り除き、ディテールを強調します。

  2. ディテールの追加:

    • 画像の細部を強調し、クオリティを向上させます。

    • 初期の画像生成ステップで失われた細かい部分や詳細を再現します。

例えるなら、初期の彫刻に細かい彫刻を施して美しい仕上げを行うようなものです。
リファイナーを使うことで、生成される画像の品質が向上し、より詳細で魅力的な画像を得ることができます。


RefinerのCheckpoint(チェックポイント)

Checkpointは、モデルが特定の状態に保存されたデータのことです。生成プロセスの途中でモデルのパラメータや状態を保存し、後でその状態を利用して画像生成を続けることができます。

  • 役割:

    • モデルが学習や生成の途中で保存された特定の状態を使用します。

    • これにより、生成プロセスの異なる段階で最適なパラメータを適用することができます。

  • :

    • 例えば、ある特定のテーマやスタイルに最適化されたCheckpointを使用することで、そのスタイルやテーマに適した画像生成が可能になります。

Switch at(スイッチアット)

Switch atは、生成プロセスの特定のステップ数でリファイナーに切り替えるポイントを設定するものです。

  • 役割:

    • 生成プロセスの途中で、通常のモデルからリファイナーモデルに切り替えるタイミングを指定します。

    • この設定により、生成の初期段階は通常のモデルで行い、後半の詳細な調整や改良はリファイナーモデルで行うことができます。

  • :

    • 生成プロセスが50ステップある場合、Switch atを30に設定すると、最初の30ステップは通常のモデルで生成し、残りの20ステップはリファイナーモデルで詳細を調整します。

なんとなく分かった気がするけど、使うモデルが切り替わるってことかな🤔
やってみるか。

Refinerつかってみる

モデル:majicmixrealisticV6
Clip skip:1
VAE:klF8Anime2VAE
サンプラー:Euler a
サンプリングステップ:50
CFGスケール:10
画像サイズ:512×512

プロンプト:
bishoujo,pigtail hair,brown hair,wet_swimsuit,smile,drink,sitting by the pool,available light,night,fireworks,swimming pool,full_shot,turn_one's_back,looking_back,top quality,super fine illustration,8K(美少女,おさげ,茶髪,濡れた水着,笑顔,飲み物,プールサイドに座る,照明あり,夜,花火,プール,フルショット,振り向きざま,後ろ姿,最高画質,超精細イラスト,8K)

通常のモデルを実写系のものにして、
リファイナーのチェックポイントをイラスト系(MeinaPastel)にしてみます。

これでSwitch atを最小の0.01から始めて0.1からは0.1ずつ増やして最大の1まで生成してみたいと思います。

Switch at 比較

通常のモデルでリファイナーで指定したCheckpointに切り替わるタイミングは、0.1なら通常のモデルが10%進んだ段階、0.5なら50%、1なら100%進んだ段階(リファイナーのモデルの要素は0%)でリファイナーのモデルに切り替わるようです。

体は徐々に実写っぽくなっていますが、顔はぎりぎりまでリファイナーのモデルが出てきていますね。背景の変化はよくわかりませんでした。

とにかく、Checkpoint同士のハーフができあがるみたいなイメージでしょうか。
いつか使いこなしたいと思います(今はムリw)



お疲れさまでした。これで当初の予定のText to Imageのパラメータはすべて勉強できました!

次はImage to Imageを学んでいきたいと思います。
耐えられるのか私の脳みそ…!

お世話になっているガイドブックです👇



今日のサムネ生成過程(ChatGPT,DALL-E 3)

私「「そうだ!AI画像生成をちゃんと勉強しよう💡8章:Hires. fixとRefinerについて」というタイトルのnote記事を書きました。 このタイトルに合うような画像を作ってください。 要望は、夏服を着たロングヘアーの美少女、日本の少女漫画のようなタッチで、水彩画のようなカラーリングで16:9で描いてください。」

ChatGPTくん「こちらが「そうだ!AI画像生成をちゃんと勉強しよう💡8章:Hires. fixとRefinerについて」のタイトルに合うイラストです。ご確認ください。」

私「パソコンも置いてあって良い感じです、ありがとう!」

以上。


(2024.8.2追記)

おまけの成果ギャラリーvol.8

そうだ!AI画像生成をちゃんと勉強しよう💡の執筆開始

やみくもに画像を生成していても一向に思い通りの絵が出てこないし、他の人は長文のプロンプトで素敵な絵をいっぱい作っているし…
私もあんな画像が出せるようになりたい!そう思って勉強することに決めました。丁度ガイドブックも見つけたので。
んで、どうせ勉強するからにはやったことを忘れたくない、何度も資料を見直すのもヤダ(めんどくさがり発動)
そんなわけでnoteでの執筆が始まりました。


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?