--- 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 включены для экономии памяти