Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -22,8 +22,8 @@ SINGLE_MODAL_VITAL_LAYERS = list(np.array([28, 53, 54, 56, 25]) - 19)
|
|
22 |
pipe = DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-dev",
|
23 |
|
24 |
torch_dtype=torch.bfloat16)
|
25 |
-
pipe.load_lora_weights(hf_hub_download("ByteDance/Hyper-SD", "Hyper-FLUX.1-dev-8steps-lora.safetensors"), lora_scale=0.125)
|
26 |
-
pipe.fuse_lora(lora_scale=0.125)
|
27 |
|
28 |
#pipe.enable_lora()
|
29 |
pipe.to("cuda")
|
@@ -83,10 +83,15 @@ def check_hyper_flux_lora(enable_hyper_flux):
|
|
83 |
pipe.unfuse_lora()
|
84 |
return 28, 28
|
85 |
|
|
|
|
|
|
|
86 |
@spaces.GPU(duration=150)
|
87 |
def invert_and_edit(image,
|
88 |
source_prompt,
|
89 |
-
edit_prompt,
|
|
|
|
|
90 |
num_inversion_steps,
|
91 |
num_inference_steps,
|
92 |
seed,
|
@@ -115,6 +120,13 @@ def invert_and_edit(image,
|
|
115 |
else:
|
116 |
# move to gpu because of zero and gr.states
|
117 |
inverted_latent_list = [tensor.to(DEVICE) for tensor in inverted_latent_list]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
output = pipe(
|
119 |
[source_prompt, edit_prompt],
|
120 |
height=1024,
|
@@ -125,8 +137,8 @@ def invert_and_edit(image,
|
|
125 |
max_sequence_length=512,
|
126 |
latents=inverted_latent_list[-1].tile(2, 1, 1),
|
127 |
inverted_latent_list=inverted_latent_list,
|
128 |
-
mm_copy_blocks=
|
129 |
-
single_copy_blocks=
|
130 |
).images[1]
|
131 |
|
132 |
# move back to cpu because of zero and gr.states
|
@@ -171,6 +183,19 @@ following the algorithm proposed in [*Stable Flow: Vital Layers for Training-Fre
|
|
171 |
max_lines=1,
|
172 |
placeholder="describe the edited output",
|
173 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
with gr.Row():
|
175 |
enable_hyper_flux = gr.Checkbox(label="8-step LoRA", value=False, info="may reduce edit quality", visible=False)
|
176 |
|
@@ -237,6 +262,8 @@ following the algorithm proposed in [*Stable Flow: Vital Layers for Training-Fre
|
|
237 |
input_image,
|
238 |
source_prompt,
|
239 |
edit_prompt,
|
|
|
|
|
240 |
num_inversion_steps,
|
241 |
num_inference_steps,
|
242 |
seed,
|
|
|
22 |
pipe = DiffusionPipeline.from_pretrained("black-forest-labs/FLUX.1-dev",
|
23 |
|
24 |
torch_dtype=torch.bfloat16)
|
25 |
+
# pipe.load_lora_weights(hf_hub_download("ByteDance/Hyper-SD", "Hyper-FLUX.1-dev-8steps-lora.safetensors"), lora_scale=0.125)
|
26 |
+
# pipe.fuse_lora(lora_scale=0.125)
|
27 |
|
28 |
#pipe.enable_lora()
|
29 |
pipe.to("cuda")
|
|
|
83 |
pipe.unfuse_lora()
|
84 |
return 28, 28
|
85 |
|
86 |
+
def convert_string_to_list(s):
|
87 |
+
return [int(x) for x in s.split(',') if x]
|
88 |
+
|
89 |
@spaces.GPU(duration=150)
|
90 |
def invert_and_edit(image,
|
91 |
source_prompt,
|
92 |
+
edit_prompt,
|
93 |
+
multimodal_layers,
|
94 |
+
single_layers,
|
95 |
num_inversion_steps,
|
96 |
num_inference_steps,
|
97 |
seed,
|
|
|
120 |
else:
|
121 |
# move to gpu because of zero and gr.states
|
122 |
inverted_latent_list = [tensor.to(DEVICE) for tensor in inverted_latent_list]
|
123 |
+
|
124 |
+
try:
|
125 |
+
multimodal_layers = convert_string_to_list(multimodal_layers)
|
126 |
+
single_layers = convert_string_to_list(single_layers)
|
127 |
+
except:
|
128 |
+
multimodal_layers = MULTIMODAL_VITAL_LAYERS
|
129 |
+
single_layers = SINGLE_MODAL_VITAL_LAYERS
|
130 |
output = pipe(
|
131 |
[source_prompt, edit_prompt],
|
132 |
height=1024,
|
|
|
137 |
max_sequence_length=512,
|
138 |
latents=inverted_latent_list[-1].tile(2, 1, 1),
|
139 |
inverted_latent_list=inverted_latent_list,
|
140 |
+
mm_copy_blocks=multimodal_layers,
|
141 |
+
single_copy_blocks=single_layers,
|
142 |
).images[1]
|
143 |
|
144 |
# move back to cpu because of zero and gr.states
|
|
|
183 |
max_lines=1,
|
184 |
placeholder="describe the edited output",
|
185 |
)
|
186 |
+
with gr.Row():
|
187 |
+
multimodal_layers = gr.Text(
|
188 |
+
info = "the attention layers used for injection",
|
189 |
+
label="vital multimodal layers",
|
190 |
+
max_lines=1,
|
191 |
+
placeholder="0, 1, 17, 18",
|
192 |
+
)
|
193 |
+
single_layers = gr.Text(
|
194 |
+
info = "the attention layers used for injection",
|
195 |
+
label="vital single layers",
|
196 |
+
max_lines=1,
|
197 |
+
placeholder="9, 34, 35, 37, 6",
|
198 |
+
)
|
199 |
with gr.Row():
|
200 |
enable_hyper_flux = gr.Checkbox(label="8-step LoRA", value=False, info="may reduce edit quality", visible=False)
|
201 |
|
|
|
262 |
input_image,
|
263 |
source_prompt,
|
264 |
edit_prompt,
|
265 |
+
multimodal_layers,
|
266 |
+
single_layers,
|
267 |
num_inversion_steps,
|
268 |
num_inference_steps,
|
269 |
seed,
|