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    | わずかに差がある。全体的にわずかに暗い。 |


いいなと思ったら応援しよう!