そのイラストは高画質? 実際の数値で比べよう! Flan-T5xxl と CLIP-L を徹底比較!
はじめに
こんにちは、きまま / Easygoing です。
今日は、イラストを見比べる方法について考えます。
お題:ウィンタースポーツ
今回のお題はウィンタースポーツです。
スキー場で仲間とともに楽しく過ごす様子を、イラストに描いてみます。
Image Difference Checker
まず、画像の違いについて客観的に評価するために、新しく Webページを作りました。
今回作成したページはこちらです。
このページでは、2枚の画像を入力すると次の結果を出力します。
差分マップ(カラーと白黒)
Mean Absolute Error (MAE):平均絶対誤差
Structural Similarity Index (SSIM):構造類似性指数
このマップと数字を比較することで、2枚の画像に違いを客観的に評価することができます。
なお、このツールで検出できるのは「違い」なので、どちらのイラストが優れているかは実際に人が見て判断する必要があります。
実際の比較!
それでは、早速このツールを使ってみたいと思います。
このところテキストエンコーダーについて記事を書いているので、今回もテキストエンコーダーの比較をしてみます。
Flan-T5xxl:T5xxl の最新版
T5xxl_v1.1 の改良版
命令と解答による追加学習を行って性能が向上
プロンプト理解力の向上も期待できる
まず最初に比較するのは Flan-T5xxl です。
Flan-T5xxl はプロンプトの文脈を理解する T5xxl に、命令と解答を与える追加学習を行い、性能を向上させたモデルです。
画像生成のプロンプトは命令文として扱うので、この追加学習によってプロンプトの再現性の向上が期待できます。
Flan-T5xxl の精度は、圧縮形式でどのように変わってくるのでしょうか?
Flan-T5xxl-FP32(32 bit)
Flan-T5xxl-FP32 はオリジナルの 32 bit のモデルで、生成されるイラストはとてもクリアーです。
ここからは、この FP32 形式 を基準に比較していきます。
右側の黒い画像はカラーの差分マップを表しています。
Flan-T5xxl-FP16(16 bit)
FP16 は一般的に広く使われている形式ですが、FP32 と比べると僅かに劣化があります。
Flan-T5xxl-Q8_0.gguf(8 bit)
GGUF 形式 は量子化圧縮を行った形式です。Q8_0.gguf は元のイラストにかなり近いですが、右手の指が微妙に違っています。
Flan-T5xxl-Q5_K_M(5 bit)
Q5_K_M.gguf まで圧縮すると、全体にかなり違いが出てきます。
特に、遠景の山の部分が省略されているのが分かります。
Flan-T5xxl-Q3_K_L(3 bit)
Q3_K_L まで圧縮すると、文字まで大きく変わっています。
結果のグラフ!
Flan-T5xxl は、圧縮して容量を削減すると、それだけ精度も低下 しています。
Q5_K_M 以下は劣化が目立つので、できれば Q6_K 以上を使う のが良さそうです。
T5xxl_v1.1: デフォルトの T5xxl
T5xxl の 2021年 に登場したバージョン
Flux.1 と SD 3.5 に標準で搭載
画像生成で一番広く使われている
続いて T5xxl_v1.1 を比較します。
T5xxl_v1.1 は先ほどの Flan-T5xxl より古いバージョンですが、公式に配布されているので一番広く使われていると思います。
T5xxl_v1.1 は FP8 形式 と GGUF 形式の両方が入手できるので、それぞれを比較してみます。
実際の画像
T5xxl_v1.1-FP32(32 bit)
T5xxl_v1.1 のオリジナルの FP32 形式は、Hugging Face の Google のページで公開されています。
T5xxl_v1.1-FP16(16 bit)
FP16 形式は、Hugging Face の Comfy UI のページで配布されていて、おそらく Flux.1 で一番よく使われているモデルです。
FP32 と比べると少し劣化があります。
T5xxl_v1.1-FP8e4m3fn_scaled(8 bit)
FP8e4m3fn_scaled 形式は、次に紹介する FP8e4m3fn を再調整して精度を上げたモデルです。
同じく ComfyUI のページで配布されています。
T5xxl_v1.1-FP8e4m3fn(8 bit)
こちらは、単純なFP8e4m3fn 形式です。先ほどの FP8e4m3fn_scaled よりもかなり劣化が目立ちます。
T5xxl_v1.1-Q8_0.gguf(8 bit)
ここからは、City69氏が公開している GGUF 形式です。
Q8_0.gguf 形式は、同じ容量で先ほどの FP8 形式よりも精度が良いと言われています。
T5xxl_v1.1-Q5_K_M.gguf(5bit)
Q5_K_M.gguf は 5ビットの GGUF 形式で、City69 氏 がすすめる最低ラインです。
先ほどの Q_8.gguf 形式と比べると、やはり劣化が目立ちます。
T5xxl_v1.1-Q3_K_L.gguf(3 bit)
3ビットの GGUF形式です。
ここまで軽量化すると画像生成では性能低下がハッキリ出ますが、大規模言語モデルとしてはまだ実用性はあると言われています。
結果のグラフ!
実際の精度
FP32
FP16
FP8e4m3fn_scaled
Q8_0
Q5_K_M
Q3_K_L
FP8e4m3fn
T5xxl_v1.1 は、かなり意外な結果になりました。
8bit 版は、一般的に FP8 形式より GGUF 形式の方が精度が良いと言われていますが、今回は FP8e4m3fn_scaled が再調整によって大幅に性能が向上 して、Q8_0.gguf 形式を上回る精度を出しています。
またその一方で、再調整をしていない FP8e4m3fn 形式は Q3_K_L より精度が劣っていて、GGUF 形式の精度の良さも裏付ける結果にもなっています。
AI は、モデルを軽量化したあと 再調整で大きく性能が変わる ことがわかります。
CLIP-L の比較
続いて CLIP-L の比較です。CLIP-L は容量は小さいですが、テキストと画像を直接結びつけるので、先ほどの T5xxl よりもイラストが大きく変化します。
まずは、それぞれの CLIP-L の FP32 と FP16 形式を比較してみます。
Long-CLIP-ViT-L-14-GmP-SAE(2024.12.19 リリース!)
Long-CLIP-ViT-L-14-GmP-SAE モデルは Long-CLIP-L の最新モデルで、2024.12.19 にリリースされました。
SAE :Sparse Autoencoder(スパース自己符号化器)モデルは今までとは違ったかなりの野心作で、ベンチマークスコアは若干低下しているものの 創造性が高まった モデルになります。
どちらもクリアーできれいなイラストですが、FP32 形式 と FP16 形式 でそれなりの精度の違いがあります。
なお、Long-CLIP-L モデルは今のところ ComfyUI でのみ 利用することができます。
また、FP32 形式のテキストエンコーダーを使うには、以前に紹介した --fp32-text-enc の設定が必要です。
改良型 CLIP-L と Flan-T5xxl の使い方
CLIP-SAE-GmP-ViT-L-14(2024.12.8 リリース!)
CLIP-SAE-GmP-ViT-L-14 は 、2024.12.8 にリリースされた CLIP-L の SAE モデルです。
こちらは ComfyUI だけでなく、Stable Diffusion webUI Forge でも利用できます。
このモデルも、FP32 と FP16 形式でやはり違いがあります。
標準型 CLIP-L
公式に配布されている標準型の CLIP-L です。
こちらも、FP32 形式 と FP16 形式で違いがあります。
改良型 CLIP-L vs 標準型 CLIP-L
最後に、改良型 CLIP-L と 標準型 CLIP-L を直接比較してみます。
イラストを比べると、左の改良型 CLIP-L の方が全体がクリアーでディティールが細かく、特に スキー板周りの描写 に違いがあるのが分かります。
今回計算した2つの指標のうち、SSIM は人が感じる印象とよく相関するといわれていますが、両者でこの値も大きく違ってきています。
CLIP-L は T5xxl と比較するとずっと小さな容量ですが、イラストの生成に直接関わるので 画質に大きく影響する ことが分かります。
CLIP-L は FP32 形式 を使う価値がある
今回の検証では、いずれのテキストエンコーダーでも FP32 形式 と FP16 形式で精度の違いがありました。
特に、CLIP-L は小さな容量にも関わらず画質に大きく影響してくるので、改良型 CLIP-L を使うとともに、FP32 形式 にアップグレードする意味はあると思います。
Flan-T5xxl は容量が大きいが・・・
一方で、Flan-T5xxl は容量が大きいですが、違いは CLIP-L ほど明らかではありません。
問題になるのがその容量で、Flan-T5xxl-FP32 の完全版は 45 GB もあります。
ComfyUI はモデルを効率的にロードする
ComfyUI は、大きいモデルでも効率良く扱うアルゴリズムになっていて、モデルの必要部分のみロードして、VRAM に収まらない場合は システム RAM で処理 を行っています。
プロンプトのエンコードは、その処理自体は軽いのでシステム RAM で処理しても通常は数秒以内で終わります。
キャッシュが使えるときは有利
一度エンコードしたプロンプトは キャッシュに保存 されるので2回目以降はエンコードは必要ありません。
そのため、同じプロンプトで続けて画像を生成するときは、重いテキストエンコーダーを使っても特に問題はありません。
一方で、自動プロンプト生成機能などを使って 毎回違うプロンプト入力 する場合は、その都度エンコードが必要になってきます。
このとき、エンコードの処理自体は数秒で終わりますが、大きなモデルだと ロードとアンロードにかかる時間 がネックになり、特に Flan-T5xxl-FP32 のフルモデルだと高速な m.2.SSD を利用していても十数秒はかかってきます。
128 GB の システム RAM があればすべてのモデルを RAM に保持できると思いますが、64 GB 以下の環境では RAM の容量に応じたモデル形式を選ぶのが良いかもしれません。
最適な画質と速度のバランスは人によって違うので、最後は自分の納得できる形式を選ぶのが良いでしょう。
まとめ:テキストエンコーダーでこんなに変わる!
画像を数値で比較できるページを公開
改良型 CLIP-L は FP32 形式 がおすすめ
Flan-T5xxl は システム RAM の容量に応じて選ぶ
今回、画像の違いを数値化することで、モデルの精度をより正確に比較できるようになりました。
今回の検証を通じて、テキストエンコーダーはかなり画質に影響していることが分かりました。
プロンプトのエンコード処理は 画像生成の最上流 に位置するので、ここで誤差が生じると後々それが増幅されていくのかもしれません。
PC のスペックが劣る環境でも、改良型 CLIP-L や FP32 形式など、ポイントを押さえてアップグレード すればかなり画質を改善できると思います。
Flan-T5xxl や 改良型 CLIP-L が、オープンソースで公開されていることに感謝しながら、これからも画像生成を楽しんでいきたいと思います。
最後までお読みいただきありがとうございます!
2025.1.11 追記
Flan-T5xxl と T5xxl_v1.1 の比較記事の紹介
matataByy さんが、Flan-T5xxl と T5xxl_v1.1 を含めて T5xxl を詳細に比較する記事を公開されました。
それによると、
プロンプトの理解力は Flan-T5xxl-FP32 が良い傾向にある
Flux.1[dev] より Flux.1[shnell] の方がプロンプトの追従性が良い
のようです。皆様もぜひ一度ご確認ください!