File size: 4,367 Bytes
195404a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b27a83f
 
 
 
 
 
 
 
 
 
 
195404a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b27a83f
 
195404a
 
 
b27a83f
195404a
b27a83f
195404a
 
 
 
b27a83f
 
 
 
 
 
 
195404a
 
 
 
 
 
 
 
 
 
 
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
# 🔄 Обновление Qwen-ImageForFlo-Advanced

## ✨ Что изменено

### 1. Опциональный импорт `spaces`
- ✅ Модуль `spaces` теперь опциональный
- ✅ Работает на RunPod, локально и в HF Spaces
- ✅ Автоматически определяет окружение

### 2. Автоматическая загрузка ControlNet
-**Автоматически проверяет** наличие ControlNet в кэше
-**Автоматически скачивает** если модели нет
-**Определяет путь** кэша (RunPod: `/workspace/.cache` или локально: `~/.cache`)
- ✅ Корректная обработка ошибок

### 3. Правильные препроцессоры ControlNet
-**OpenposeDetector** - для Pose detection
-**AnylineDetector** - для Soft Edge detection
-**DepthAnythingV2** - для Depth map extraction
-**Fallback режимы** - если препроцессоры недоступны
- ✅ Добавлен **"Soft Edge"** в выбор control types

### 4. Исправлены параметры API
- ✅ Параметр `controlnet_scale``controlnet_conditioning_scale`
- ✅ Соответствует стандартному API Diffusers

---

## 📝 Что делает новый код

### Проверка окружения:
```python
# Используем /workspace/.cache на RunPod или ~/.cache локально
if os.path.exists("/workspace"):
    cache_base = Path("/workspace/.cache")
else:
    cache_base = Path.home() / ".cache"
```

### Автоматическая загрузка:
```python
if not cache_dir.exists():
    logger.info("  📥 ControlNet не найден в кэше, скачиваю...")
    snapshot_download(
        repo_id=controlnet_model_id,
        local_dir=cache_dir,
        token=hf_token
    )
    logger.info("  ✓ ControlNet успешно загружен в кэш")
```

---

## 🚀 Как использовать

### На RunPod:

```bash
# 1. Скачать проект
cd /workspace
hf download Gerchegg/Qwen-ImageForFlo-Advanced --repo-type space --local-dir Qwen-ImageForFlo-Advanced

# 2. Установить зависимости
cd Qwen-ImageForFlo-Advanced
pip install -r requirements.txt

# 3. Запустить (ControlNet скачается автоматически!)
python app.py
```

### Локально:

```bash
# Клонировать и запустить
git clone https://huggingface.co/spaces/Gerchegg/Qwen-ImageForFlo-Advanced
cd Qwen-ImageForFlo-Advanced
pip install -r requirements.txt
python app.py
```

---

## ✅ Преимущества

1. **Не нужно вручную качать ControlNet** - всё автоматически
2. **Работает везде** - RunPod, локально, HF Spaces
3. **Умный кэш** - использует правильную директорию в зависимости от окружения
4. **Graceful degradation** - если ControlNet не загружается, приложение продолжит работать
5. **Правильные препроцессоры** - из референсной реализации InstantX
6. **Полная поддержка**: Canny, Soft Edge, Depth, Pose

---

## 📊 Загружаемые модели и препроцессоры

### Основные модели:
1. **Text2Image** - Qwen-Soloband-Diffusers (~40GB)
2. **Image2Image** - Создается из Text2Image
3. **ControlNet** - InstantX/Qwen-Image-ControlNet-Union (~3GB) - **АВТОМАТИЧЕСКИ!**

### Препроцессоры:
1. **OpenPose** - lllyasviel/Annotators (для Pose detection)
2. **Anyline** - TheMistoAI/MistoLine (для Soft Edge)
3. **Depth Anything V2** - depth-anything/Depth-Anything-V2-Large (для Depth maps)

Все препроцессоры загружаются автоматически при первом запуске!

---

## 🎯 Итог

Теперь для запуска Advanced версии достаточно:
1. Скачать проект
2. Установить зависимости
3. Запустить app.py

**Всё остальное скачается автоматически!** 🚀