File size: 13,080 Bytes
ba75352
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f397165
 
ba75352
f397165
ba75352
f397165
 
 
 
 
 
ba75352
f397165
ba75352
 
 
f397165
 
 
 
 
 
 
ba75352
f397165
ba75352
f397165
ba75352
 
 
 
f397165
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ba75352
f397165
ba75352
f397165
 
 
 
 
 
 
 
 
ba75352
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
---
title: Qwen Soloband Advanced - Image2Image + LoRA
emoji: 🎨
colorFrom: blue
colorTo: purple
sdk: gradio
sdk_version: "5.9.1"
app_file: app.py
pinned: true
license: apache-2.0
suggested_hardware: a10g-large
suggested_storage: medium
models:
  - Gerchegg/Qwen-Soloband-Diffusers
tags:
  - image-generation
  - image-to-image
  - lora
  - qwen
  - diffusers
short_description: Text2Image and Image2Image with LoRA support
preload_from_hub:
  - Gerchegg/Qwen-Soloband-Diffusers
---

# 🎨 Qwen Soloband Advanced

**Комплексная система генерации изображений** на базе Qwen-Image DiT с полным набором инструментов для профессиональной работы.

## 🆕 Что нового в версии 2.0

- ⚙️ **10+ Schedulers/Samplers** - Выбор алгоритма генерации (DPM++, Euler, UniPC и др.)
- 🎯 **Поддержка алиасов** - Короткие имена для API (`dpmpp_2m_karras`, `euler_a`)
- 🔧 **Кастомные модели** - Задавайте MODEL_REPO через переменную окружения
- 📦 **RunPod скрипты** - Автоматическая установка одной командой
- 📚 **Улучшенная документация** - Полное руководство по развертыванию

## 🚀 Основные возможности

### 📝 Text-to-Image
Генерация изображений из текстовых описаний:
- 🎨 Кастомная fine-tuned модель Qwen-Soloband
- 📐 Разрешения от 512×512 до 2048×2048
- ⚙️ Полный контроль параметров (steps, CFG, seed)
- 🎯 Оптимизированные настройки для лучшего качества

### 🔄 Image-to-Image
Модификация и трансформация существующих изображений:
- 🖼️ Загрузка любых изображений (PNG, JPG, WebP)
- 🎚️ **Denoising Strength** (0.0-1.0) - точный контроль степени изменения
- 🎨 Сохранение структуры при изменении стиля
- ✨ Улучшение качества, стилизация, художественная трансформация

### 🎭 LoRA Styles
Динамическая загрузка стилей для разнообразия:
- 📸 **Realism** - фотореалистичные изображения
- 🎌 **Anime** - современный японский стиль аниме
- 🎚️ **LoRA Scale** (0.0-2.0) - интенсивность стиля
- 📁 **Локальные LoRA** - Загрузка из `/workspace/loras/`

---

## 🚀 Quick Start на RunPod

### Одна команда - полная установка:

```bash
export HF_HUB_ENABLE_HF_TRANSFER=0 && \
pip install -q huggingface_hub[cli] && \
hf auth login --token ВАШ_ТОКЕН && \
cd /workspace && \
hf download Gerchegg/Qwen-ImageForFlo-Advanced --repo-type space --local-dir Qwen-ImageForFlo-Advanced && \
cd Qwen-ImageForFlo-Advanced && \
pip install -r requirements.txt && \
python app.py
```

**📖 Полная инструкция:** См. [RUNPOD_DEPLOYMENT.md](./RUNPOD_DEPLOYMENT.md)

### Или используйте скрипт:

```bash
wget https://huggingface.co/spaces/Gerchegg/Qwen-ImageForFlo-Advanced/resolve/main/quick_start.sh
chmod +x quick_start.sh
HF_TOKEN="ВАШ_ТОКЕН" ./quick_start.sh
```

---

## 🔌 API Usage

### Text-to-Image API

```python
from gradio_client import Client

client = Client("Gerchegg/Qwen-ImageForFlo-Advanced")

result = client.predict(
    prompt="SB_AI, a beautiful landscape",
    negative_prompt="blurry, low quality",
    width=1664,
    height=928,
    seed=42,
    randomize_seed=False,
    guidance_scale=2.5,
    num_inference_steps=40,
    lora_name="None",  # или "Realism", "Anime"
    lora_scale=1.0,
    scheduler_name="DPM++ 2M Karras",  # 🆕 Выбор scheduler/sampler
    api_name="/text2img"
)

image, seed = result
```

### Image-to-Image API

```python
result = client.predict(
    input_image="path/to/image.png",  # PIL Image или path
    prompt="Transform this into a painting",
    negative_prompt="blurry, low quality",
    strength=0.75,  # 0.0-1.0, больше = сильнее изменение
    seed=42,
    randomize_seed=False,
    guidance_scale=2.5,
    num_inference_steps=40,
    lora_name="None",
    lora_scale=1.0,
    scheduler_name="Euler Ancestral",  # 🆕 Выбор scheduler/sampler
    api_name="/img2img"
)

image, seed = result
```


## 💡 Примеры использования

### Text-to-Image
```
Prompt: "SB_AI, a beautiful mountain landscape at sunset, detailed"
Size: 1664×928
Steps: 40, CFG: 2.5
LoRA: None
```

### Image-to-Image
```
Input: фото человека
Prompt: "Transform into oil painting style"
Strength: 0.75 (сохранить структуру, изменить стиль)
LoRA: Analog Film
```


## 🎛️ Доступные Schedulers (Samplers)

⚠️ **Важно:** Qwen-Image использует **Flow Matching**, а не классическую diffusion!  
Работают только **FlowMatchEulerDiscreteScheduler** с различными параметрами shift.

### ✅ Протестированные и рабочие schedulers:

| Scheduler | Время | Speedup | Алиас | Рекомендация |
|-----------|-------|---------|-------|--------------|
| **Flow Euler (Shift 0.5)** | **33.8s** | **1.00x** | `flow_euler_shift05` | 🥇 **САМЫЙ БЫСТРЫЙ** (по умолчанию) |
| Flow Euler (Shift 2.0) | 34.6s | 1.02x | `flow_euler_shift20` | 🥈 Быстрый + детали |
| Flow Euler (Shift 1.5) | 38.8s | 1.15x | `flow_euler_shift15` | 🥉 Баланс |
| Flow Euler (Default) | 40.2s | 1.19x | `flow_euler` | Стандарт (shift=1.0) |

*Время указано для 1024×1024, 40 steps на ZeroGPU*

### Использование

**В интерфейсе:**  
Выберите в dropdown "Sampler/Scheduler"

**В API (полное имя):**
```python
scheduler_name="Flow Euler (Shift 0.5)"  # Самый быстрый!
```

**В API (алиас):**
```python
scheduler_name="flow_euler_shift05"  # Короткий вариант
```

**Примеры:**
```python
# Для быстрой генерации (рекомендуется)
scheduler_name="Flow Euler (Shift 0.5)"
num_inference_steps=40
# Время: ~34s

# Для максимума деталей
scheduler_name="Flow Euler (Shift 2.0)"
num_inference_steps=50
# Время: ~43s

# Стандартный
scheduler_name="Flow Euler (Default)"
num_inference_steps=40
# Время: ~40s
```

### 📊 Влияние Shift параметра:

- **Shift 0.5:** Больше шагов в начале → быстрее
- **Shift 2.0:** Равномернее распределение → детальнее
- **Разница:** 19% между самым быстрым и самым медленным

### 🔬 Почему только Flow Euler?

Qwen-Image это **Flow Matching** модель. Pipeline автоматически передает `sigmas` параметр в `scheduler.set_timesteps()`. Только `FlowMatchEulerDiscreteScheduler` полностью совместим с этой архитектурой.

**Не работают:** DPM++, обычный Euler, Ancestral, UniPC, DDIM - все это классические diffusion schedulers.

---

## 🎭 Доступные LoRA

### 🌐 HuggingFace Hub LoRA (2 предустановленных):

| Name | Trigger Word | Description |
|------|--------------|-------------|
| **Realism** | "Super Realism portrait of" | Фотореалистичные изображения |
| **Anime** | "Japanese modern anime style, " | Современное аниме |

💡 **Ленивая загрузка**: Hub LoRA скачиваются только при использовании, затем кэшируются.

### 📁 Локальные LoRA (рекомендуемый способ):

**Положите ваши .safetensors файлы в `/workspace/loras/`** - они автоматически появятся в списке!

**Преимущества локальных LoRA**:
- ✅ Не скачиваются с интернета (быстрее)
- ✅ Приватные (только у вас)
- ✅ Полный контроль версий
- ✅ Можно использовать любые кастомные LoRA

**Пример**:
```bash
/workspace/loras/
├── my_custom_style.safetensors     → появится как "my_custom_style"
├── portrait_lora.safetensors       → появится как "portrait_lora"
└── anime_v2.safetensors            → появится как "anime_v2"
```

**API использование**:
```python
# Используйте имя файла (без расширения)
result = client.predict(
    prompt="SB_AI, a portrait",
    lora_name="my_custom_style",  # Имя вашего локального файла
    lora_scale=1.0,
    api_name="/text2img"
)
```

💡 **Hub LoRA** автоматически добавляют trigger words. **Локальные LoRA** - без trigger words.

## 📊 Параметры

### Denoising Strength (Image2Image)
- **0.0-0.3**: Минимальные изменения, сохранение деталей
- **0.4-0.6**: Умеренные изменения, баланс
- **0.7-0.9**: Сильные изменения, новое изображение
- **1.0**: Полная перерисовка

### LoRA Scale
- **0.0**: Без эффекта
- **0.5**: Слабый эффект стиля
- **1.0**: Нормальный эффект (рекомендуется)
- **1.5-2.0**: Сильный эффект стиля

## 🔧 Технические детали

### Модели:
- **Base**: Gerchegg/Qwen-Soloband-Diffusers (по умолчанию)
- **LoRAs**: Различные (загружаются динамически)
- **Custom Models**: Поддержка через переменную окружения `MODEL_REPO`

### Использование кастомной модели:

```bash
# Через переменную окружения
MODEL_REPO="username/custom-qwen-model" python app.py

# Или экспортировать
export MODEL_REPO="username/custom-qwen-model"
python app.py
```

**Требования к кастомной модели:**
- Совместимость с Qwen-Image архитектурой
- Формат diffusers
- Включает: vae, text_encoder, tokenizer, transformer, scheduler

### Оптимизации:
- VAE tiling для больших изображений
- VAE slicing для batch
- Автоматическое управление LoRA

## 💰 Требования

- **GPU**: A40 (48GB) или A100 (80GB)
- **VRAM**: ~40GB для базовой модели
- **Storage**: ~45GB (модель)

## 📚 Дополнительная информация

- **Base Model**: [Qwen-Soloband-Diffusers](https://huggingface.co/Gerchegg/Qwen-Soloband-Diffusers)
- **Qwen-Image**: [Qwen/Qwen-Image](https://huggingface.co/Qwen/Qwen-Image)
- **Diffusers Docs**: [Image-to-Image Guide](https://huggingface.co/docs/diffusers/using-diffusers/img2img)
- **LoRA Explorer**: [Qwen-Image-LoRA-Explorer](https://huggingface.co/spaces/multimodalart/Qwen-Image-LoRA-Explorer)

## ⚠️ Важные замечания

### Image2Image для Qwen
Этот Space использует специализированный `QwenImageImg2ImgPipeline` для корректной работы с Qwen-Image архитектурой. В отличие от обычных Stable Diffusion моделей, Qwen-Image требует:
- Специальное кодирование изображений через `AutoencoderKLQwenImage`
- Параметр `true_cfg_scale` вместо `guidance_scale`
- Специальную упаковку латентов (packing 2x2)

### LoRA (Hub + Local)

- **Hub LoRA (2)**: Realism, Anime - скачиваются ПРИ ИСПОЛЬЗОВАНИИ, затем кэшируются
- **Local LoRA**: Любые .safetensors в `/workspace/loras/` - автоматически обнаруживаются
- Ленивая загрузка - не скачиваются и не занимают VRAM до использования
- Полная поддержка в API по имени

## 📝 License

Apache 2.0

## 🔧 Technical Notes**Image2Image**: Использует правильный `QwenImageImg2ImgPipeline` для Qwen-Image архитектуры  
✅ **Performance**: ~0.91s на шаг денойзинга на A100 GPU  
✅ **Optimization**: VAE tiling и slicing включены для экономии памяти