Gerchegg commited on
Commit
8d8517a
·
verified ·
1 Parent(s): 0776fda

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +30 -60
app.py CHANGED
@@ -22,10 +22,9 @@ from diffusers import (
22
  QwenImageImg2ImgPipeline
23
  )
24
  from diffusers.schedulers import (
25
- DPMSolverMultistepScheduler,
26
  EulerDiscreteScheduler,
27
- EulerAncestralDiscreteScheduler,
28
- UniPCMultistepScheduler
29
  )
30
  from huggingface_hub import hf_hub_download
31
 
@@ -59,84 +58,55 @@ if torch.cuda.is_available():
59
  # =================================================================
60
 
61
  # Конфигурации для разных типов schedulers
62
- # Основаны на исследовании популярных вариантов в Qwen-Image и сообществе
 
63
  SCHEDULER_CONFIGS = {
64
- # === ПОПУЛЯРНЫЕ (Рекомендуемые) ===
65
- "DPM++ 2M Karras": {
66
- "class": DPMSolverMultistepScheduler,
67
- "config": {"algorithm_type": "dpmsolver++", "solver_order": 2, "use_karras_sigmas": True},
68
- "alias": "dpmpp_2m_karras"
69
- },
70
- "DPM++ SDE Karras": {
71
- "class": DPMSolverMultistepScheduler,
72
- "config": {"algorithm_type": "sde-dpmsolver++", "solver_order": 2, "use_karras_sigmas": True},
73
- "alias": "dpmpp_sde_karras"
74
- },
75
- "DPM++ 3M SDE Karras": {
76
- "class": DPMSolverMultistepScheduler,
77
- "config": {"algorithm_type": "sde-dpmsolver++", "solver_order": 3, "use_karras_sigmas": True},
78
- "alias": "dpmpp_3m_sde_karras"
79
  },
80
- "Euler Ancestral": {
81
- "class": EulerAncestralDiscreteScheduler,
82
  "config": {},
83
- "alias": "euler_a"
84
  },
85
  "Euler": {
86
  "class": EulerDiscreteScheduler,
87
  "config": {},
88
  "alias": "euler"
89
  },
90
-
91
- # === ЭКСПЕРИМЕНТАЛЬНЫЕ (Альтернативные варианты сигм) ===
92
- "DPM++ 2M": {
93
- "class": DPMSolverMultistepScheduler,
94
- "config": {"algorithm_type": "dpmsolver++", "solver_order": 2},
95
- "alias": "dpmpp_2m"
96
- },
97
- "DPM++ 2M Beta": {
98
- "class": DPMSolverMultistepScheduler,
99
- "config": {"algorithm_type": "dpmsolver++", "solver_order": 2, "use_beta_sigmas": True},
100
- "alias": "dpmpp_2m_beta"
101
- },
102
- "DPM++ 2M Exponential": {
103
- "class": DPMSolverMultistepScheduler,
104
- "config": {"algorithm_type": "dpmsolver++", "solver_order": 2, "use_exponential_sigmas": True},
105
- "alias": "dpmpp_2m_exp"
106
- },
107
  "Euler Karras": {
108
  "class": EulerDiscreteScheduler,
109
  "config": {"use_karras_sigmas": True},
110
  "alias": "euler_karras"
111
  },
112
-
113
- # === БЫСТРЫЕ (Для экспериментов) ===
114
- "UniPC": {
115
- "class": UniPCMultistepScheduler,
116
- "config": {},
117
- "alias": "unipc"
 
 
 
118
  }
119
  }
120
 
121
- DEFAULT_SCHEDULER = "DPM++ 2M Karras"
122
 
123
  # Для UI - группируем по категориям для удобства
124
  SCHEDULER_GROUPS = {
125
- "⭐ Рекомендуемые": [
126
- "DPM++ 2M Karras",
127
- "DPM++ SDE Karras",
128
- "DPM++ 3M SDE Karras",
129
- "Euler Ancestral",
130
- "Euler"
131
- ],
132
- "🧪 Экспериментальные": [
133
- "DPM++ 2M",
134
- "DPM++ 2M Beta",
135
- "DPM++ 2M Exponential",
136
- "Euler Karras"
137
  ],
138
- " Быстрые": [
139
- "UniPC"
 
 
 
140
  ]
141
  }
142
 
 
22
  QwenImageImg2ImgPipeline
23
  )
24
  from diffusers.schedulers import (
25
+ FlowMatchEulerDiscreteScheduler,
26
  EulerDiscreteScheduler,
27
+ FlowMatchHeunDiscreteScheduler
 
28
  )
29
  from huggingface_hub import hf_hub_download
30
 
 
58
  # =================================================================
59
 
60
  # Конфигурации для разных типов schedulers
61
+ # ⚠️ ВАЖНО: Qwen pipeline передает sigmas в set_timesteps()
62
+ # Поэтому работают ТОЛЬКО schedulers которые поддерживают sigmas параметр!
63
  SCHEDULER_CONFIGS = {
64
+ # === РЕКОМЕНДУЕМЫЕ (Совместимые с Qwen Flow Matching) ===
65
+ "Flow Match Euler": {
66
+ "class": FlowMatchEulerDiscreteScheduler,
67
+ "config": {},
68
+ "alias": "flow_euler"
 
 
 
 
 
 
 
 
 
 
69
  },
70
+ "Flow Match Heun": {
71
+ "class": FlowMatchHeunDiscreteScheduler,
72
  "config": {},
73
+ "alias": "flow_heun"
74
  },
75
  "Euler": {
76
  "class": EulerDiscreteScheduler,
77
  "config": {},
78
  "alias": "euler"
79
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  "Euler Karras": {
81
  "class": EulerDiscreteScheduler,
82
  "config": {"use_karras_sigmas": True},
83
  "alias": "euler_karras"
84
  },
85
+ "Euler Beta": {
86
+ "class": EulerDiscreteScheduler,
87
+ "config": {"use_beta_sigmas": True},
88
+ "alias": "euler_beta"
89
+ },
90
+ "Euler Exponential": {
91
+ "class": EulerDiscreteScheduler,
92
+ "config": {"use_exponential_sigmas": True},
93
+ "alias": "euler_exp"
94
  }
95
  }
96
 
97
+ DEFAULT_SCHEDULER = "Flow Match Euler"
98
 
99
  # Для UI - группируем по категориям для удобства
100
  SCHEDULER_GROUPS = {
101
+ "⭐ Flow Matching (Рекомендуемые)": [
102
+ "Flow Match Euler",
103
+ "Flow Match Heun"
 
 
 
 
 
 
 
 
 
104
  ],
105
+ "🔄 Euler Variants (Экспериментальные)": [
106
+ "Euler",
107
+ "Euler Karras",
108
+ "Euler Beta",
109
+ "Euler Exponential"
110
  ]
111
  }
112