animede/qwen-image-edit-omni

1つの Edit モデルで Edit / T2I / I2I を生成します(参照画像の枚数と strength で自動判定)

0

stars

2

commits

Python

primary language

Aug 18, 2026

updated

README

Qwen-Image-Edit-2511 Omni Server

English | 日本語

1つの Qwen-Image-Edit-2511 transformerを、画像編集だけでなくテキスト画像生成(T2I)と 画像画像変換(I2I)にも流用する、自己完結型のFastAPIサーバーです。ブラウザUIは日本語・英語を 切り替えられます。

このリポジトリはEditモデル1つで次の3モードを提供します。無印Qwen-ImageQwen-Image-2512などのT2I専用transformerはロードしません。

入力モード実装
参照画像なしT2IQwenImageEditPlusPipelineimage=Noneで実行
参照画像1〜3枚、strengthなしEdit通常のPlus画像条件付け
参照画像1枚、0 < strength <= 1I2I共有部品で構築したQwenImageImg2ImgPipeline

サンプルUI

Qwen-Image-Edit-2511 Omni ServerのサンプルUI

詳しい原理、制約、実装上の落とし穴は EditモデルをT2I/I2Iへ流用する技術を参照してください。

特長

  • 1つのEdit-2511 transformerでT2I / Edit / I2Iを実行
  • bf16、GGUF、fp8-lightningを選択可能
  • transformer / VAE / text encoder / tokenizerをモード間で共有
  • GGUF transformerへLightning LoRAを直接適用
  • GPU生成を同時1件に制限し、競合時はHTTP 409を返却
  • 遅延ロードと明示的なVRAM解放API
  • ダークテーマのレスポンシブUI(日本語 / English)

必要環境

  • CUDA対応GPU
  • Python 3.12
  • PyTorch、Transformers、Accelerate、PEFT、Safetensors、Hugging Face Hub
  • git main版Diffusers

既存の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から取得します。

UIでのモード選択

  • T2I: 参照画像を選ばず、プロンプトを入力
  • Edit: 参照画像を1〜3枚選び、strengthは空欄
  • I2I: 参照画像を1枚選び、strengthを指定

Lightning有効時は通常steps=4cfg=1.0shift=3.0が使われます。CFGが1.0のため、 ネガティブプロンプトは実質的に作用しません。

環境変数

変数既定値説明
QWENIMG_QUANTnonenone(bf16)、gguf-q4_k_mなど、fp8-lightning
QWENIMG_TE_QUANTnonetext encoderをnone(bf16)またはnf4でロード
QWENIMG_OFFLOADautonone / group / group_lowvram / model_cpu
QWENIMG_ATTNdefaultattention backend(native / flex / xformersなど)
QWENIMG_COMPILE01torch.compileを有効化
QWENIMG_DEVICEcuda実行デバイス
COMFYUI_DIR~/ComfyUIローカル重みを優先検索するComfyUIディレクトリ

量子化とLightning

  • GGUF: VRAM効率を優先。Lightning LoRAはCPU上でtransformerへ直接ロードしてからGPUへ移動します。
  • fp8-lightning: bf16 transformerへLoRAをfuseし、fp8ストレージへ変換します。Lightningは無効化できません。
  • bf16: 最大のメモリを使いますが、通常のpipeline-level LoRA切り替えが可能です。
  • LoRA適用に失敗した場合、少ステップのまま実行せず、自動的に30 steps / cfg 4.0側へ戻します。

QWENIMG_TE_QUANT=nf4はtext encoderを約5.5GBまで圧縮します。GGUFと組み合わせる場合は、 NF4変換時の一時ピークを避けるためtext encoderを先にロードします。

API

POST /api/edit

multipart/form-dataを受け取ります。

フィールド既定値説明
imagesfile[]なし0枚=T2I、1〜3枚=Edit、1枚+strength=I2I
promptstring必須生成または編集指示
negative_promptstring""ネガティブプロンプト
stepsinteger4推論ステップ数
cfgnumber1.0true_cfg_scale
seedinteger-1-1でランダム
lightningbooleantrueLightning 4-step LoRA
shiftnumber自動scheduler shift
strengthnumberなしI2I強度。0 < strength <= 1、画像1枚必須
width / heightinteger自動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"}

targeteditまたは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

検証状況と注意

  • RTX PRO 6000 BlackwellでGGUF Q4_K_MのT2I / Edit / I2Iを実機確認済みです。
  • 生成品質にはモデル、量子化、LoRA、shift、解像度、プロンプトが影響します。
  • edit_text_only.pyはDiffusersの関数ソース内の既知の2箇所を置換します。将来Diffusers側の 実装が変わり置換点が見つからない場合、T2Iだけを明示的なエラーにし、通常Editは維持します。
  • 本プロジェクトは評価・研究用途の最小サーバーです。認証、レート制限、永続ジョブキューは 含みません。

技術資料

ライセンス

このプロジェクトはApache License 2.0で提供されます。利用するモデル、モデル重み、 依存ライブラリには、それぞれの提供元が定める別のライセンスが適用される場合があります。

Contributors

animede/qwen-image-edit-omni

1つの Edit モデルで Edit / T2I / I2I を生成します(参照画像の枚数と strength で自動判定)

0

stars

2

commits

Python

primary language

Aug 18, 2026

updated

README

Qwen-Image-Edit-2511 Omni Server

English | 日本語

1つの Qwen-Image-Edit-2511 transformerを、画像編集だけでなくテキスト画像生成(T2I)と 画像画像変換(I2I)にも流用する、自己完結型のFastAPIサーバーです。ブラウザUIは日本語・英語を 切り替えられます。

このリポジトリはEditモデル1つで次の3モードを提供します。無印Qwen-ImageQwen-Image-2512などのT2I専用transformerはロードしません。

入力モード実装
参照画像なしT2IQwenImageEditPlusPipelineimage=Noneで実行
参照画像1〜3枚、strengthなしEdit通常のPlus画像条件付け
参照画像1枚、0 < strength <= 1I2I共有部品で構築したQwenImageImg2ImgPipeline

サンプルUI

Qwen-Image-Edit-2511 Omni ServerのサンプルUI

詳しい原理、制約、実装上の落とし穴は EditモデルをT2I/I2Iへ流用する技術を参照してください。

特長

  • 1つのEdit-2511 transformerでT2I / Edit / I2Iを実行
  • bf16、GGUF、fp8-lightningを選択可能
  • transformer / VAE / text encoder / tokenizerをモード間で共有
  • GGUF transformerへLightning LoRAを直接適用
  • GPU生成を同時1件に制限し、競合時はHTTP 409を返却
  • 遅延ロードと明示的なVRAM解放API
  • ダークテーマのレスポンシブUI(日本語 / English)

必要環境

  • CUDA対応GPU
  • Python 3.12
  • PyTorch、Transformers、Accelerate、PEFT、Safetensors、Hugging Face Hub
  • git main版Diffusers

既存の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から取得します。

UIでのモード選択

  • T2I: 参照画像を選ばず、プロンプトを入力
  • Edit: 参照画像を1〜3枚選び、strengthは空欄
  • I2I: 参照画像を1枚選び、strengthを指定

Lightning有効時は通常steps=4cfg=1.0shift=3.0が使われます。CFGが1.0のため、 ネガティブプロンプトは実質的に作用しません。

環境変数

変数既定値説明
QWENIMG_QUANTnonenone(bf16)、gguf-q4_k_mなど、fp8-lightning
QWENIMG_TE_QUANTnonetext encoderをnone(bf16)またはnf4でロード
QWENIMG_OFFLOADautonone / group / group_lowvram / model_cpu
QWENIMG_ATTNdefaultattention backend(native / flex / xformersなど)
QWENIMG_COMPILE01torch.compileを有効化
QWENIMG_DEVICEcuda実行デバイス
COMFYUI_DIR~/ComfyUIローカル重みを優先検索するComfyUIディレクトリ

量子化とLightning

  • GGUF: VRAM効率を優先。Lightning LoRAはCPU上でtransformerへ直接ロードしてからGPUへ移動します。
  • fp8-lightning: bf16 transformerへLoRAをfuseし、fp8ストレージへ変換します。Lightningは無効化できません。
  • bf16: 最大のメモリを使いますが、通常のpipeline-level LoRA切り替えが可能です。
  • LoRA適用に失敗した場合、少ステップのまま実行せず、自動的に30 steps / cfg 4.0側へ戻します。

QWENIMG_TE_QUANT=nf4はtext encoderを約5.5GBまで圧縮します。GGUFと組み合わせる場合は、 NF4変換時の一時ピークを避けるためtext encoderを先にロードします。

API

POST /api/edit

multipart/form-dataを受け取ります。

フィールド既定値説明
imagesfile[]なし0枚=T2I、1〜3枚=Edit、1枚+strength=I2I
promptstring必須生成または編集指示
negative_promptstring""ネガティブプロンプト
stepsinteger4推論ステップ数
cfgnumber1.0true_cfg_scale
seedinteger-1-1でランダム
lightningbooleantrueLightning 4-step LoRA
shiftnumber自動scheduler shift
strengthnumberなしI2I強度。0 < strength <= 1、画像1枚必須
width / heightinteger自動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"}

targeteditまたは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

検証状況と注意

  • RTX PRO 6000 BlackwellでGGUF Q4_K_MのT2I / Edit / I2Iを実機確認済みです。
  • 生成品質にはモデル、量子化、LoRA、shift、解像度、プロンプトが影響します。
  • edit_text_only.pyはDiffusersの関数ソース内の既知の2箇所を置換します。将来Diffusers側の 実装が変わり置換点が見つからない場合、T2Iだけを明示的なエラーにし、通常Editは維持します。
  • 本プロジェクトは評価・研究用途の最小サーバーです。認証、レート制限、永続ジョブキューは 含みません。

技術資料

ライセンス

このプロジェクトはApache License 2.0で提供されます。利用するモデル、モデル重み、 依存ライブラリには、それぞれの提供元が定める別のライセンスが適用される場合があります。

Contributors

Languages

Python

66.0%

JavaScript

15.7%

CSS

13.3%

HTML

4.9%