English | 日本語
1つの Qwen-Image-Edit-2511 transformerを、画像編集だけでなくテキスト画像生成(T2I)と
画像画像変換(I2I)にも流用する、自己完結型のFastAPIサーバーです。ブラウザUIは日本語・英語を
切り替えられます。
このリポジトリはEditモデル1つで次の3モードを提供します。無印Qwen-Imageや
Qwen-Image-2512などのT2I専用transformerはロードしません。
| 入力 | モード | 実装 |
|---|---|---|
| 参照画像なし | T2I | QwenImageEditPlusPipelineをimage=Noneで実行 |
参照画像1〜3枚、strengthなし | Edit | 通常のPlus画像条件付け |
参照画像1枚、0 < strength <= 1 | I2I | 共有部品で構築したQwenImageImg2ImgPipeline |

詳しい原理、制約、実装上の落とし穴は EditモデルをT2I/I2Iへ流用する技術を参照してください。
既存のComfyUI用Python環境を継承するvenvを作る場合の例です。
/path/to/comfy-env/bin/python3 -m venv --system-site-packages venv
echo "/path/to/comfy-env/lib/python3.12/site-packages" \
> venv/lib/python3.12/site-packages/comfy_env.pth
venv/bin/pip install fastapi "uvicorn[standard]" python-multipart
venv/bin/pip install \
"git+https://github.com/huggingface/diffusers"
git main版Diffusersが必要なのは、Editパイプラインの内部プロンプト処理がimage=Noneを扱える
実装に依存するためです。Diffusers本体は変更せず、edit_text_only.pyで
呼び出し口だけを実行時に調整します。
推奨構成(GGUF Q4_K_M):
cd /path/to/qwen-image-edit-omni
QWENIMG_QUANT=gguf-q4_k_m \
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
venv/bin/python -m uvicorn app:app --host 0.0.0.0 --port 8602
ブラウザでhttp://localhost:8602/を開きます。モデルは起動時ではなく、最初の生成要求時に
ロードされます。重みがComfyUI配下にない場合はHugging Face Hubから取得します。
strengthは空欄strengthを指定Lightning有効時は通常steps=4、cfg=1.0、shift=3.0が使われます。CFGが1.0のため、
ネガティブプロンプトは実質的に作用しません。
| 変数 | 既定値 | 説明 |
|---|---|---|
QWENIMG_QUANT | none | none(bf16)、gguf-q4_k_mなど、fp8-lightning |
QWENIMG_TE_QUANT | none | text encoderをnone(bf16)またはnf4でロード |
QWENIMG_OFFLOAD | auto | none / group / group_lowvram / model_cpu |
QWENIMG_ATTN | default | attention backend(native / flex / xformersなど) |
QWENIMG_COMPILE | 0 | 1でtorch.compileを有効化 |
QWENIMG_DEVICE | cuda | 実行デバイス |
COMFYUI_DIR | ~/ComfyUI | ローカル重みを優先検索するComfyUIディレクトリ |
30 steps / cfg 4.0側へ戻します。QWENIMG_TE_QUANT=nf4はtext encoderを約5.5GBまで圧縮します。GGUFと組み合わせる場合は、
NF4変換時の一時ピークを避けるためtext encoderを先にロードします。
POST /api/editmultipart/form-dataを受け取ります。
| フィールド | 型 | 既定値 | 説明 |
|---|---|---|---|
images | file[] | なし | 0枚=T2I、1〜3枚=Edit、1枚+strength=I2I |
prompt | string | 必須 | 生成または編集指示 |
negative_prompt | string | "" | ネガティブプロンプト |
steps | integer | 4 | 推論ステップ数 |
cfg | number | 1.0 | true_cfg_scale |
seed | integer | -1 | -1でランダム |
lightning | boolean | true | Lightning 4-step LoRA |
shift | number | 自動 | scheduler shift |
strength | number | なし | I2I強度。0 < strength <= 1、画像1枚必須 |
width / height | integer | 自動 | 16の倍数へ丸められる出力寸法 |
例(T2I):
curl -X POST http://localhost:8602/api/edit \
-F 'prompt=A cinematic photograph of a red apple on a wooden table' \
-F 'steps=4' -F 'cfg=1.0' -F 'lightning=true' \
-F 'width=1024' -F 'height=1024'
レスポンスにはimage_url、実効パラメータ、生成時間、ピークVRAM、判定されたサブモードが
含まれます。
GET /api/statusモデルのロード状態、量子化、offload、VRAM、直近生成の概要を返します。
POST /api/unload{"target": "edit"}
targetはeditまたはallです。I2Iパイプラインも同じtransformerを参照するため、Editと一緒に
参照を破棄します。
qwen-image-edit-omni/
├── app.py
├── pipeline_manager.py
├── edit_text_only.py
├── static/
├── tests/
├── docs/
│ ├── edit2511-multirole-techniques.md
│ └── edit2511-multirole-techniques.en.md
├── outputs/
├── requirements.txt
├── README.md
└── README.en.md
edit_text_only.pyはDiffusersの関数ソース内の既知の2箇所を置換します。将来Diffusers側の
実装が変わり置換点が見つからない場合、T2Iだけを明示的なエラーにし、通常Editは維持します。このプロジェクトはApache License 2.0で提供されます。利用するモデル、モデル重み、 依存ライブラリには、それぞれの提供元が定める別のライセンスが適用される場合があります。
2 commits
Python
66.0%
JavaScript
15.7%
CSS
13.3%
HTML
4.9%
English | 日本語
1つの Qwen-Image-Edit-2511 transformerを、画像編集だけでなくテキスト画像生成(T2I)と
画像画像変換(I2I)にも流用する、自己完結型のFastAPIサーバーです。ブラウザUIは日本語・英語を
切り替えられます。
このリポジトリはEditモデル1つで次の3モードを提供します。無印Qwen-Imageや
Qwen-Image-2512などのT2I専用transformerはロードしません。
| 入力 | モード | 実装 |
|---|---|---|
| 参照画像なし | T2I | QwenImageEditPlusPipelineをimage=Noneで実行 |
参照画像1〜3枚、strengthなし | Edit | 通常のPlus画像条件付け |
参照画像1枚、0 < strength <= 1 | I2I | 共有部品で構築したQwenImageImg2ImgPipeline |

詳しい原理、制約、実装上の落とし穴は EditモデルをT2I/I2Iへ流用する技術を参照してください。
既存のComfyUI用Python環境を継承するvenvを作る場合の例です。
/path/to/comfy-env/bin/python3 -m venv --system-site-packages venv
echo "/path/to/comfy-env/lib/python3.12/site-packages" \
> venv/lib/python3.12/site-packages/comfy_env.pth
venv/bin/pip install fastapi "uvicorn[standard]" python-multipart
venv/bin/pip install \
"git+https://github.com/huggingface/diffusers"
git main版Diffusersが必要なのは、Editパイプラインの内部プロンプト処理がimage=Noneを扱える
実装に依存するためです。Diffusers本体は変更せず、edit_text_only.pyで
呼び出し口だけを実行時に調整します。
推奨構成(GGUF Q4_K_M):
cd /path/to/qwen-image-edit-omni
QWENIMG_QUANT=gguf-q4_k_m \
PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True \
venv/bin/python -m uvicorn app:app --host 0.0.0.0 --port 8602
ブラウザでhttp://localhost:8602/を開きます。モデルは起動時ではなく、最初の生成要求時に
ロードされます。重みがComfyUI配下にない場合はHugging Face Hubから取得します。
strengthは空欄strengthを指定Lightning有効時は通常steps=4、cfg=1.0、shift=3.0が使われます。CFGが1.0のため、
ネガティブプロンプトは実質的に作用しません。
| 変数 | 既定値 | 説明 |
|---|---|---|
QWENIMG_QUANT | none | none(bf16)、gguf-q4_k_mなど、fp8-lightning |
QWENIMG_TE_QUANT | none | text encoderをnone(bf16)またはnf4でロード |
QWENIMG_OFFLOAD | auto | none / group / group_lowvram / model_cpu |
QWENIMG_ATTN | default | attention backend(native / flex / xformersなど) |
QWENIMG_COMPILE | 0 | 1でtorch.compileを有効化 |
QWENIMG_DEVICE | cuda | 実行デバイス |
COMFYUI_DIR | ~/ComfyUI | ローカル重みを優先検索するComfyUIディレクトリ |
30 steps / cfg 4.0側へ戻します。QWENIMG_TE_QUANT=nf4はtext encoderを約5.5GBまで圧縮します。GGUFと組み合わせる場合は、
NF4変換時の一時ピークを避けるためtext encoderを先にロードします。
POST /api/editmultipart/form-dataを受け取ります。
| フィールド | 型 | 既定値 | 説明 |
|---|---|---|---|
images | file[] | なし | 0枚=T2I、1〜3枚=Edit、1枚+strength=I2I |
prompt | string | 必須 | 生成または編集指示 |
negative_prompt | string | "" | ネガティブプロンプト |
steps | integer | 4 | 推論ステップ数 |
cfg | number | 1.0 | true_cfg_scale |
seed | integer | -1 | -1でランダム |
lightning | boolean | true | Lightning 4-step LoRA |
shift | number | 自動 | scheduler shift |
strength | number | なし | I2I強度。0 < strength <= 1、画像1枚必須 |
width / height | integer | 自動 | 16の倍数へ丸められる出力寸法 |
例(T2I):
curl -X POST http://localhost:8602/api/edit \
-F 'prompt=A cinematic photograph of a red apple on a wooden table' \
-F 'steps=4' -F 'cfg=1.0' -F 'lightning=true' \
-F 'width=1024' -F 'height=1024'
レスポンスにはimage_url、実効パラメータ、生成時間、ピークVRAM、判定されたサブモードが
含まれます。
GET /api/statusモデルのロード状態、量子化、offload、VRAM、直近生成の概要を返します。
POST /api/unload{"target": "edit"}
targetはeditまたはallです。I2Iパイプラインも同じtransformerを参照するため、Editと一緒に
参照を破棄します。
qwen-image-edit-omni/
├── app.py
├── pipeline_manager.py
├── edit_text_only.py
├── static/
├── tests/
├── docs/
│ ├── edit2511-multirole-techniques.md
│ └── edit2511-multirole-techniques.en.md
├── outputs/
├── requirements.txt
├── README.md
└── README.en.md
edit_text_only.pyはDiffusersの関数ソース内の既知の2箇所を置換します。将来Diffusers側の
実装が変わり置換点が見つからない場合、T2Iだけを明示的なエラーにし、通常Editは維持します。このプロジェクトはApache License 2.0で提供されます。利用するモデル、モデル重み、 依存ライブラリには、それぞれの提供元が定める別のライセンスが適用される場合があります。
2 commits
Python
66.0%
JavaScript
15.7%
CSS
13.3%
HTML
4.9%