やりたいこと
stable-diffusion.cppを使用してコマンドラインからQwen-Imageの画像編集を実行します。
この画像編集機能はGoogleのNanoBananaと比肩するらしいです。
AMDのGPUでもCPUでも実行可能です。
環境構築
stable-diffusion.cpp
以下のページから自分の環境にあったZipファイルをダウンロードします。
AMDのGPUで動かしたい場合はvulkanとつくものかrocmとつくものです。
(基本的にはvulkanでいいと思います。rocmはどうするGPUが限られるはずです。)

NVidiaのGPUはcudaが付くものが対象です。
avx512,avx2,avx,noavxはCPU動作です。お使いのCPUで使用できるavxのバージョンを調べてダウンロードしてください。(私は誤解していたのですがAMDのCPUもAVX使えるようです。どのバージョンが使用できるかはAIに聞いちゃうのが楽です。)
対象のダウンロードしたファイルを任意のフォルダに解凍したら準備完了です。
モデル
以下のページから一つづつ、計3つのモデルをダウンロードしてください。
VaeとLLMのモデルは以下で記事で使用したものと同じです。(Diffusionモデルは別の者なので気を付けてください。)
複数ファイルがあるものに関しては、ファイルサイズが大きいほどメモリが必要で精度がいいです。
環境と相談の上、どのモデルを使用するか決めてください。
私の環境(Ryzen 7 7735HS with Radeon Graphics + メモリ32G)ではQwen_Image_Edit-Q4_0.ggufを使用しました。
diffusion-model(Qwen Image Edit)

vae

llm

実行
コマンドラインを起動してstable-diffusion.cppを解凍したフォルダに移動します。
以下のコマンドを実行します。(モデルパス部分は使用するmodelのパスに置き換えてください。インプットファイルを入力画像のパスにしてください。)
sd-cli.exe --diffusion-model Diffusionモデルパス --vae VAEモデルパス --llm llmモデルパス --cfg-scale 2.5 --sampling-method euler --offload-to-cpu --diffusion-fa --flow-shift 3 -r インプットファイル -p "change eye color to red" --seed -1
./output.pngに入力画像の目が赤くなった画像が生成されれば成功です。
入力画像

出力画像

(上の例ではいい感じだったのですが”Close eyes”のプロンプトだと入力画像がそのまま出力されました。)
オプション(引数)
オプションは以下のページにまとめられています。
よく使われる基本的なものだけ以下に記載します。
| -m | モデルのパス |
| -p | プロンプト |
| -s | シード値 ランダムで生成するには-1を指定する。 指定しない場合、毎回同じ画像が生成されるため注意。 |
-H | 画像高さ |
| -W | 画像幅 |
--vae | VAEのパス |
--steps | ステップ。初期値20 モデルによっては少ない数字の方がいいので注意。 (Qwen Imageの公式の例では50でした。) |
実行速度
画像の生成速度は以下の通りです。(モデルのロード時間やイテレーション後の時間は含んでいません)
| モデル | 生成時間(s) |
| stable-diffusion(Vulkan) | 36 |
| Qwen Image(Vulkan) | 623 |
| Qwen Image 編集(Vulkan) | 1683 |
Qwen Image Edit 2509に関して
Qwen Image Edit 2509のモデルは以下のページにあります。
上記のQwen Image Editの実行コマンドのDiffusionモデルを以下でダウンロードしたモデルのパスに書き換えれことで動作しました。

公式ドキュメントではQwen Image Edit 2509を実行時に--llm_visionを加えていましたが、この引数を渡すと実行できませんでした。(環境の問題の可能性もありますが)実行結果
生成時間 : 2034.03s

たまたまかもしれませんがQwen Image Edit 2509では”Close eyes”もいい感じでした。



コメント