Stable Cascadeの画質を比較してみた(Stage C/Bモデル, ComfyUI精度オプション)
生成速度・VRAM使用量測定はこちら
まとめ
注意) 今回、 比較は1つワークフローのみ対して行うので、ワークフローの内容によっては異なる結果となる可能性がある。
以下に比較結果のポイントをまとめる。
stage c lite モデルは画質が低い。
fp32, bf16オプションの画質の差はほぼ無い。
fp8e4m3fnオプションの画質はそれほど低くない。
fp8e5m2オプションは画質が低い。
参考リンク
fp8について
https://github.com/AUTOMATIC1111/stable-diffusion-webui/pull/14031
https://github.com/comfyanonymous/ComfyUI/discussions/2180
比較方法
画像Aから画像Bを減算し、その後目視で結果を視認しやすいよう、レベル補正をする。
結果から差分表現を作成・使用し、差分の程度を評価する。
また、各オプション・モデルの組み合わせに対し、画像Aに対する画像Bの見た目の特徴を評価する。
減算、レベル補正は次のコードの、level関数・cv2.subtract関数を使用する。
import cv2
def level(img: np.ndarray, cutoff=(0, 50)) -> np.ndarray:
img = np.clip(img, *cutoff)
img = cv2.normalize(
img, None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8UC1
)
return img
# レベル補正
level(image_a, image_b)
# 減算
cv2.subtract(image_a, image_b)
差分表現(4段階)
差分画像の差が目視でわかりにくいため、比較に差分表現を使用する。
| 表現 | 説明 |
| ---------------- | ---------------------------------------------------------- |
| ほぼ同じ | オブジェクトの輪郭やテクスチャがほぼ見えない。ほぼ黒画像。 |
| わずかに差がある | オブジェクトの輪郭が部分的にうっすら見える。 |
| 少し差がある | オブジェクトの輪郭やテクスチャがうっすら見える。 |
| 大きな差がある | オブジェクトの輪郭やテクスチャがはっきりわかる。 |
略称
| 略称 | 説明 |
| ---------------------------------------- | --------------------------------------------|
| fp32オプション | --force-fp32m オプションでComfyUIを起動。 |
| bf16オプション | --bf16-unet オプションでComfyUIを起動。 |
| fp8e5m2オプション | --fp8e5m2-unet オプションでComfyUIを起動。 |
| fp8e4m3fnオプション | --fp8e4m3fn-unet オプションでComfyUIを起動。 |
| c | stage c モデル。 |
| b | stage b モデル。 |
| モデル名 + l | stage c/b lite モデル。 例: cl, bl |
| モデル名 + bf16 または モデル名 + (bf16) | stage c/b bf16 モデル。 例: c(bf16), bl(bf16) |
| 無印 | lやbf16がつかないモデル。c, bモデルのこと。 |
ソフトウェアバージョン
Ubuntu 22.04.4 LTS
ComfyUI commit 8b60d33bb7ce969a53fc5e25bfa0e2dca7a17b23
Python 3.11.0rc1
CUDA 12.3
Torch関連
pytorch-triton 3.0.0+901819d2b6
torch 2.3.0.dev20240216+cu121
torchaudio 2.2.0.dev20240216+cu121
torchsde 0.2.6
torchvision 0.18.0.dev20240216+cu121
表記
A - B
| model | モデルB |
| ------- | ----------------------------- |
| モデルA | 差分表現 / Aに対するBの見た目 |
比較
fp32オプション
CLは画質が低く、異なる画像になる。
BLは少し色が薄くなる。
| model | C(BF16) | CL |
| ----- | ------------------------------------ | ---------------------------------------- |
| C | わずかに差がある。見た目はほぼ同じ。 | 大きな差がある。見た目が大きく異なる画像になる。|
| model | B(BF16) | BL |
| ----- | ---------- | ---------------------------- |
| B | ほぼ同じ。 | 少し差がある。少し色が薄くなる。 |
memo
以降、CLは画質が低いため、比較結果を表記しない。
また、他の組み合わせは、上記と同じ傾向の変化であり、無印とBF16モデルを比較した場合、「わずかに差がある」程度の小さな差はあるが、見た目の影響については、差分を見ると影響部分が判別できる程度。
bf16オプション
fp32オプションと同じ傾向だが、無印とbf16モデルとの差がほぼない。
fp8e5m2オプション
CとC(BF16)の差を見ると、fp32オプションより差が大きい。
BLにノイズが見られる。BL(BF16)だと更にノイズが増加。
| model | C(BF16) |
| ----- | ------------------------------------------ |
| C | 大きな差がある。fp32オプションより差が大きい。 |
| model | B(BF16) | BL |
| ----- | -------------------------------------- | ---------------------------- |
| B | わずかに差がある。ノイズは見られない。 | 大きな差がある。ノイズがみられる。 |
| model | BL(BF16) |
| ----- | ----------------------------------- |
| BL | 少し差がある。BLよりノイズがみられる。 |
fp8e4m3fnオプション
C,C(BF16)でfp32オプションより差が大きいが、fp8e5m2オプションより変化が少ない。
fp8e5m2オプションよりBLの画質低下が気にならない。BF16でもわずかに明るさが落ちる程度でノイズは見られない。
| model | C(BF16) |
| ----- | ------------------------------- |
| C | 大きな差がある。細部の形が異なる。 |
| model | B(BF16) | BL |
| ----- | ------------------ | --------------------------------------------------------------------------- |
| B | わずかに差がある。 | 少し差がある。少し解像感が減る。赤みが抜ける。少し色ムラがある。ノイズは見られない。 |
| model | BL(BF16) |
| ----- | ------------------------------------- |
| BL | わずかに差がある。全体的にわずかに暗い。 |