Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
|
@@ -144,13 +144,8 @@ css = '''#col-container { max-width: 800px; margin: 0 auto; }
|
|
| 144 |
.dark .progress-text{color: white !important}
|
| 145 |
#examples{max-width: 800px; margin: 0 auto; }'''
|
| 146 |
|
| 147 |
-
is_reset = gr.State(value=False)
|
| 148 |
-
|
| 149 |
def reset_all():
|
| 150 |
-
return [0, 0, 0, 0
|
| 151 |
-
|
| 152 |
-
def end_reset():
|
| 153 |
-
return False
|
| 154 |
|
| 155 |
def update_dimensions_on_upload(image):
|
| 156 |
if image is None:
|
|
@@ -193,7 +188,7 @@ with gr.Blocks(theme=gr.themes.Citrus(), css=css) as demo:
|
|
| 193 |
rotate_deg = gr.Slider(label="Rotate Left–Right (degrees °)", minimum=-90, maximum=90, step=45, value=0)
|
| 194 |
move_forward = gr.Slider(label="Move Forward → Close-Up", minimum=0, maximum=10, step=5, value=0)
|
| 195 |
vertical_tilt = gr.Slider(label="Vertical Angle (Bird ↔ Worm)", minimum=-1, maximum=1, step=1, value=0)
|
| 196 |
-
wideangle = gr.
|
| 197 |
with gr.Row():
|
| 198 |
reset_btn = gr.Button("Reset")
|
| 199 |
run_btn = gr.Button("Generate", variant="primary")
|
|
@@ -225,9 +220,9 @@ with gr.Blocks(theme=gr.themes.Citrus(), css=css) as demo:
|
|
| 225 |
reset_btn.click(
|
| 226 |
fn=reset_all,
|
| 227 |
inputs=None,
|
| 228 |
-
outputs=[rotate_deg, move_forward, vertical_tilt, wideangle
|
| 229 |
queue=False
|
| 230 |
-
)
|
| 231 |
|
| 232 |
# Manual generation
|
| 233 |
run_event = run_btn.click(fn=infer_camera_edit, inputs=inputs, outputs=outputs)
|
|
@@ -258,34 +253,21 @@ with gr.Blocks(theme=gr.themes.Citrus(), css=css) as demo:
|
|
| 258 |
).then(
|
| 259 |
fn=reset_all,
|
| 260 |
inputs=None,
|
| 261 |
-
outputs=[rotate_deg, move_forward, vertical_tilt, wideangle
|
| 262 |
-
queue=False
|
| 263 |
-
).then(
|
| 264 |
-
fn=end_reset,
|
| 265 |
-
inputs=None,
|
| 266 |
-
outputs=[is_reset],
|
| 267 |
queue=False
|
| 268 |
)
|
| 269 |
|
| 270 |
|
| 271 |
# Live updates
|
| 272 |
-
def maybe_infer(is_reset, progress=gr.Progress(track_tqdm=True), *args):
|
| 273 |
-
if is_reset:
|
| 274 |
-
return gr.update(), gr.update(), gr.update()
|
| 275 |
-
else:
|
| 276 |
-
return infer_camera_edit(*args)
|
| 277 |
-
|
| 278 |
control_inputs = [
|
| 279 |
image, rotate_deg, move_forward,
|
| 280 |
vertical_tilt, wideangle,
|
| 281 |
seed, randomize_seed, true_guidance_scale, num_inference_steps, height, width, prev_output
|
| 282 |
]
|
| 283 |
-
control_inputs_with_flag = [is_reset] + control_inputs
|
| 284 |
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
|
| 288 |
-
wideangle.change(fn=maybe_infer, inputs=control_inputs_with_flag, outputs=outputs)
|
| 289 |
|
| 290 |
run_event.then(lambda img, *_: img, inputs=[result], outputs=[prev_output])
|
| 291 |
|
|
|
|
| 144 |
.dark .progress-text{color: white !important}
|
| 145 |
#examples{max-width: 800px; margin: 0 auto; }'''
|
| 146 |
|
|
|
|
|
|
|
| 147 |
def reset_all():
|
| 148 |
+
return [0, 0, 0, 0]
|
|
|
|
|
|
|
|
|
|
| 149 |
|
| 150 |
def update_dimensions_on_upload(image):
|
| 151 |
if image is None:
|
|
|
|
| 188 |
rotate_deg = gr.Slider(label="Rotate Left–Right (degrees °)", minimum=-90, maximum=90, step=45, value=0)
|
| 189 |
move_forward = gr.Slider(label="Move Forward → Close-Up", minimum=0, maximum=10, step=5, value=0)
|
| 190 |
vertical_tilt = gr.Slider(label="Vertical Angle (Bird ↔ Worm)", minimum=-1, maximum=1, step=1, value=0)
|
| 191 |
+
wideangle = gr.Slider(label="Wide-Angle Lens", minimum=0, maximum=1, step=1, value=0)
|
| 192 |
with gr.Row():
|
| 193 |
reset_btn = gr.Button("Reset")
|
| 194 |
run_btn = gr.Button("Generate", variant="primary")
|
|
|
|
| 220 |
reset_btn.click(
|
| 221 |
fn=reset_all,
|
| 222 |
inputs=None,
|
| 223 |
+
outputs=[rotate_deg, move_forward, vertical_tilt, wideangle],
|
| 224 |
queue=False
|
| 225 |
+
)
|
| 226 |
|
| 227 |
# Manual generation
|
| 228 |
run_event = run_btn.click(fn=infer_camera_edit, inputs=inputs, outputs=outputs)
|
|
|
|
| 253 |
).then(
|
| 254 |
fn=reset_all,
|
| 255 |
inputs=None,
|
| 256 |
+
outputs=[rotate_deg, move_forward, vertical_tilt, wideangle],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 257 |
queue=False
|
| 258 |
)
|
| 259 |
|
| 260 |
|
| 261 |
# Live updates
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 262 |
control_inputs = [
|
| 263 |
image, rotate_deg, move_forward,
|
| 264 |
vertical_tilt, wideangle,
|
| 265 |
seed, randomize_seed, true_guidance_scale, num_inference_steps, height, width, prev_output
|
| 266 |
]
|
|
|
|
| 267 |
|
| 268 |
+
# All sliders use .release() to avoid triggering during reset
|
| 269 |
+
for control in [rotate_deg, move_forward, vertical_tilt, wideangle]:
|
| 270 |
+
control.release(fn=infer_camera_edit, inputs=control_inputs, outputs=outputs)
|
|
|
|
| 271 |
|
| 272 |
run_event.then(lambda img, *_: img, inputs=[result], outputs=[prev_output])
|
| 273 |
|