Spaces:
Running
on
Zero
Running
on
Zero
Update app_v4.py
Browse files
app_v4.py
CHANGED
|
@@ -59,7 +59,11 @@ try:
|
|
| 59 |
dump_environment_info()
|
| 60 |
except Exception as e:
|
| 61 |
print(f"Failed to dump env info: {e}")
|
| 62 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 63 |
def resize_image_to_max_side(image: Image, max_side_length=1024) -> Image:
|
| 64 |
width, height = image.size
|
| 65 |
ratio = min(max_side_length / width, max_side_length / height)
|
|
@@ -81,7 +85,10 @@ def combine_caption_focus(caption, focus):
|
|
| 81 |
def generate_caption(control_image):
|
| 82 |
try:
|
| 83 |
if control_image is None:
|
| 84 |
-
return "Waiting for control image..."
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
# Resize the image to a maximum longest side of 1024 pixels
|
| 87 |
control_image = resize_image_to_max_side(control_image, max_side_length=1024)
|
|
@@ -91,17 +98,20 @@ def generate_caption(control_image):
|
|
| 91 |
detailed_caption = mcaption["caption"]
|
| 92 |
print(f"Detailed caption: {detailed_caption}")
|
| 93 |
|
| 94 |
-
return detailed_caption
|
| 95 |
except Exception as e:
|
| 96 |
print(f"Error generating caption: {e}")
|
| 97 |
-
return "A detailed photograph"
|
| 98 |
|
| 99 |
def generate_focus(control_image, focus_list):
|
| 100 |
try:
|
| 101 |
if control_image is None:
|
| 102 |
-
return None
|
| 103 |
if focus_list is None:
|
| 104 |
-
return ""
|
|
|
|
|
|
|
|
|
|
| 105 |
|
| 106 |
# Resize the image to a maximum longest side of 1024 pixels
|
| 107 |
control_image = resize_image_to_max_side(control_image, max_side_length=1024)
|
|
@@ -110,10 +120,10 @@ def generate_focus(control_image, focus_list):
|
|
| 110 |
focus_query = model.query(control_image, "Please provide a concise but illustrative description of the following area(s) of focus: " + focus_list)
|
| 111 |
focus_description = focus_query["answer"]
|
| 112 |
print(f"Areas of focus: {focus_description}")
|
| 113 |
-
return focus_description
|
| 114 |
except Exception as e:
|
| 115 |
print(f"Error generating focus: {e}")
|
| 116 |
-
return "highly detailed photo, raw photography."
|
| 117 |
|
| 118 |
@spaces.GPU(duration=6, progress=gr.Progress(track_tqdm=True))
|
| 119 |
@torch.no_grad()
|
|
@@ -149,7 +159,7 @@ def generate_image(prompt, scale, steps, control_image, controlnet_conditioning_
|
|
| 149 |
|
| 150 |
def process_image(control_image, user_prompt, system_prompt, scale, steps,
|
| 151 |
controlnet_conditioning_scale, guidance_scale, seed,
|
| 152 |
-
guidance_end, temperature,
|
| 153 |
# Initialize with empty caption
|
| 154 |
final_prompt = user_prompt.strip()
|
| 155 |
# If no user prompt provided, generate a caption first
|
|
@@ -210,6 +220,8 @@ with gr.Blocks(title="FLUX Turbo Upscaler", fill_height=True) as demo:
|
|
| 210 |
controlnet_conditioning_scale = gr.Slider(0, 1, value=0.6, label="ControlNet Scale")
|
| 211 |
guidance_scale = gr.Slider(1, 30, value=3.5, label="Guidance Scale")
|
| 212 |
guidance_end = gr.Slider(0, 1, value=1.0, label="Guidance End")
|
|
|
|
|
|
|
| 213 |
with gr.Row():
|
| 214 |
with gr.Accordion("Auto-Caption settings", open=False, visible=False):
|
| 215 |
system_prompt = gr.Textbox(
|
|
@@ -224,11 +236,6 @@ with gr.Blocks(title="FLUX Turbo Upscaler", fill_height=True) as demo:
|
|
| 224 |
info="Higher values make the output more random, lower values make it more deterministic.",
|
| 225 |
visible=False # Changed to visible
|
| 226 |
)
|
| 227 |
-
top_p_slider = gr.Slider(
|
| 228 |
-
minimum=0.0, maximum=1.0, value=0.9, step=0.01,
|
| 229 |
-
label="Top-p",
|
| 230 |
-
visible=False # Changed to visible
|
| 231 |
-
)
|
| 232 |
max_tokens_slider = gr.Slider(
|
| 233 |
minimum=1, maximum=2048, value=368, step=1,
|
| 234 |
label="Max New Tokens",
|
|
@@ -238,39 +245,19 @@ with gr.Blocks(title="FLUX Turbo Upscaler", fill_height=True) as demo:
|
|
| 238 |
log_prompt = gr.Checkbox(value=True, label="Log", visible=False) # Changed to visible
|
| 239 |
|
| 240 |
gr.Markdown("**Tips:** 8 steps is all you need! Incredibly powerful tool, usage instructions coming soon.")
|
| 241 |
-
with gr.Accordion("
|
| 242 |
msg1 = gr.Markdown()
|
| 243 |
try_btn = gr.LoginButton()
|
| 244 |
-
try:
|
| 245 |
-
x_ip_token = request.headers['x-ip-token']
|
| 246 |
-
client = Client("LPX55/zerogpu-experiments", hf_token=huggingface_token, headers={"x-ip-token": x_ip_token})
|
| 247 |
-
cresult = client.predict(
|
| 248 |
-
n=3,
|
| 249 |
-
api_name="/predict"
|
| 250 |
-
)
|
| 251 |
-
print(f"X TOKEN: {x_ip_token}")
|
| 252 |
-
print(cresult)
|
| 253 |
-
except:
|
| 254 |
-
print("Guess we're just going to have to pretend that Spaces have been broken for almost a year now..")
|
| 255 |
|
| 256 |
-
#
|
| 257 |
-
#
|
| 258 |
-
#
|
| 259 |
-
#
|
| 260 |
-
#
|
| 261 |
-
#
|
| 262 |
-
#
|
| 263 |
-
# custom_resize_percentage=50,
|
| 264 |
-
# prompt_input="Hello!!",
|
| 265 |
-
# alignment="Middle",
|
| 266 |
-
# overlap_left=True,
|
| 267 |
-
# overlap_right=True,
|
| 268 |
-
# overlap_top=True,
|
| 269 |
-
# overlap_bottom=True,
|
| 270 |
-
# x_offset=0,
|
| 271 |
-
# y_offset=0,
|
| 272 |
-
# api_name="/infer"
|
| 273 |
# )
|
|
|
|
| 274 |
caption_state = gr.State()
|
| 275 |
focus_state = gr.State()
|
| 276 |
log_state = gr.State()
|
|
@@ -279,7 +266,7 @@ with gr.Blocks(title="FLUX Turbo Upscaler", fill_height=True) as demo:
|
|
| 279 |
inputs=[
|
| 280 |
control_image, prompt, system_prompt, scale, steps,
|
| 281 |
controlnet_conditioning_scale, guidance_scale, seed,
|
| 282 |
-
guidance_end, temperature_slider,
|
| 283 |
],
|
| 284 |
outputs=[log_state, generated_image, prompt]
|
| 285 |
)
|
|
|
|
| 59 |
dump_environment_info()
|
| 60 |
except Exception as e:
|
| 61 |
print(f"Failed to dump env info: {e}")
|
| 62 |
+
|
| 63 |
+
def get_image_dimensions(image: Image) -> str:
|
| 64 |
+
width, height = image.size
|
| 65 |
+
return f"Original Image Dimensions: {width}x{height}"
|
| 66 |
+
|
| 67 |
def resize_image_to_max_side(image: Image, max_side_length=1024) -> Image:
|
| 68 |
width, height = image.size
|
| 69 |
ratio = min(max_side_length / width, max_side_length / height)
|
|
|
|
| 85 |
def generate_caption(control_image):
|
| 86 |
try:
|
| 87 |
if control_image is None:
|
| 88 |
+
return "Waiting for control image...", "Original Image Dimensions: N/A"
|
| 89 |
+
|
| 90 |
+
# Get original dimensions
|
| 91 |
+
original_dimensions = get_image_dimensions(control_image)
|
| 92 |
|
| 93 |
# Resize the image to a maximum longest side of 1024 pixels
|
| 94 |
control_image = resize_image_to_max_side(control_image, max_side_length=1024)
|
|
|
|
| 98 |
detailed_caption = mcaption["caption"]
|
| 99 |
print(f"Detailed caption: {detailed_caption}")
|
| 100 |
|
| 101 |
+
return detailed_caption, original_dimensions
|
| 102 |
except Exception as e:
|
| 103 |
print(f"Error generating caption: {e}")
|
| 104 |
+
return "A detailed photograph", "Original Image Dimensions: N/A"
|
| 105 |
|
| 106 |
def generate_focus(control_image, focus_list):
|
| 107 |
try:
|
| 108 |
if control_image is None:
|
| 109 |
+
return None, "Original Image Dimensions: N/A"
|
| 110 |
if focus_list is None:
|
| 111 |
+
return "", "Original Image Dimensions: N/A"
|
| 112 |
+
|
| 113 |
+
# Get original dimensions
|
| 114 |
+
original_dimensions = get_image_dimensions(control_image)
|
| 115 |
|
| 116 |
# Resize the image to a maximum longest side of 1024 pixels
|
| 117 |
control_image = resize_image_to_max_side(control_image, max_side_length=1024)
|
|
|
|
| 120 |
focus_query = model.query(control_image, "Please provide a concise but illustrative description of the following area(s) of focus: " + focus_list)
|
| 121 |
focus_description = focus_query["answer"]
|
| 122 |
print(f"Areas of focus: {focus_description}")
|
| 123 |
+
return focus_description, original_dimensions
|
| 124 |
except Exception as e:
|
| 125 |
print(f"Error generating focus: {e}")
|
| 126 |
+
return "highly detailed photo, raw photography.", "Original Image Dimensions: N/A"
|
| 127 |
|
| 128 |
@spaces.GPU(duration=6, progress=gr.Progress(track_tqdm=True))
|
| 129 |
@torch.no_grad()
|
|
|
|
| 159 |
|
| 160 |
def process_image(control_image, user_prompt, system_prompt, scale, steps,
|
| 161 |
controlnet_conditioning_scale, guidance_scale, seed,
|
| 162 |
+
guidance_end, temperature, max_new_tokens, log_prompt):
|
| 163 |
# Initialize with empty caption
|
| 164 |
final_prompt = user_prompt.strip()
|
| 165 |
# If no user prompt provided, generate a caption first
|
|
|
|
| 220 |
controlnet_conditioning_scale = gr.Slider(0, 1, value=0.6, label="ControlNet Scale")
|
| 221 |
guidance_scale = gr.Slider(1, 30, value=3.5, label="Guidance Scale")
|
| 222 |
guidance_end = gr.Slider(0, 1, value=1.0, label="Guidance End")
|
| 223 |
+
original_dimensions = gr.Markdown(value="Original Image Dimensions: N/A") # New output for dimensions
|
| 224 |
+
|
| 225 |
with gr.Row():
|
| 226 |
with gr.Accordion("Auto-Caption settings", open=False, visible=False):
|
| 227 |
system_prompt = gr.Textbox(
|
|
|
|
| 236 |
info="Higher values make the output more random, lower values make it more deterministic.",
|
| 237 |
visible=False # Changed to visible
|
| 238 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 239 |
max_tokens_slider = gr.Slider(
|
| 240 |
minimum=1, maximum=2048, value=368, step=1,
|
| 241 |
label="Max New Tokens",
|
|
|
|
| 245 |
log_prompt = gr.Checkbox(value=True, label="Log", visible=False) # Changed to visible
|
| 246 |
|
| 247 |
gr.Markdown("**Tips:** 8 steps is all you need! Incredibly powerful tool, usage instructions coming soon.")
|
| 248 |
+
with gr.Accordion("Auth for those Getting ZeroGPU errors.", open=False, elem_id="zgpu"):
|
| 249 |
msg1 = gr.Markdown()
|
| 250 |
try_btn = gr.LoginButton()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 251 |
|
| 252 |
+
# sus = ['x-zerogpu-token', 'x-zerogpu-uuid', 'x-proxied-host', 'x-proxied-path', 'x-proxied-replica', 'x-request-id', 'x-ip-token']
|
| 253 |
+
# x_ip_token = request.headers['X-IP-TOKEN']
|
| 254 |
+
# print(str(x_ip_token))
|
| 255 |
+
# client = Client("LPX55/zerogpu-experiments", hf_token=huggingface_token, headers={"x-ip-token": x_ip_token})
|
| 256 |
+
# cresult = client.predict(
|
| 257 |
+
# n=3,
|
| 258 |
+
# api_name="/predict"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 259 |
# )
|
| 260 |
+
|
| 261 |
caption_state = gr.State()
|
| 262 |
focus_state = gr.State()
|
| 263 |
log_state = gr.State()
|
|
|
|
| 266 |
inputs=[
|
| 267 |
control_image, prompt, system_prompt, scale, steps,
|
| 268 |
controlnet_conditioning_scale, guidance_scale, seed,
|
| 269 |
+
guidance_end, temperature_slider, max_tokens_slider, log_prompt
|
| 270 |
],
|
| 271 |
outputs=[log_state, generated_image, prompt]
|
| 272 |
)
|