Spaces:
Running
Running
Place examples for each step
Browse files
app.py
CHANGED
|
@@ -212,7 +212,7 @@ def update_slider(choice: str) -> dict:
|
|
| 212 |
'pixar': 121,
|
| 213 |
'slamdunk': 119,
|
| 214 |
}
|
| 215 |
-
return gr.Slider.update(maximum=max_vals[choice]
|
| 216 |
|
| 217 |
|
| 218 |
def update_style_image(style_name: str) -> dict:
|
|
@@ -220,14 +220,21 @@ def update_style_image(style_name: str) -> dict:
|
|
| 220 |
return gr.Markdown.update(value=text)
|
| 221 |
|
| 222 |
|
| 223 |
-
def
|
|
|
|
|
|
|
|
|
|
|
|
|
| 224 |
return [
|
| 225 |
-
gr.
|
| 226 |
-
gr.
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
|
| 230 |
-
|
|
|
|
|
|
|
|
|
|
| 231 |
]
|
| 232 |
|
| 233 |
|
|
@@ -262,7 +269,6 @@ This is an unofficial demo app for [https://github.com/williamyang1991/DualStyle
|
|
| 262 |
|
| 263 |
- Drop an image containing a near-frontal face to the **Input Image**.
|
| 264 |
- If there are multiple faces in the image, hit the Edit button in the upper right corner and crop the input image beforehand.
|
| 265 |
-
- You can also load example inputs from the **Examples** section at the bottom of this page.
|
| 266 |
- Hit the **Detect & Align Face** button.
|
| 267 |
- Hit the **Reconstruct Face** button.
|
| 268 |
- The final result will be based on this **Reconstructed Face**. So, if the reconstructed image is not satisfactory, you may want to change the input image.
|
|
@@ -285,6 +291,12 @@ This is an unofficial demo app for [https://github.com/williamyang1991/DualStyle
|
|
| 285 |
type='numpy')
|
| 286 |
instyle = gr.Variable()
|
| 287 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 288 |
with gr.Box():
|
| 289 |
gr.Markdown('''## Step 2 (Select Style Image)
|
| 290 |
|
|
@@ -303,6 +315,16 @@ This is an unofficial demo app for [https://github.com/williamyang1991/DualStyle
|
|
| 303 |
label='Style Image Index',
|
| 304 |
interactive=True)
|
| 305 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 306 |
with gr.Box():
|
| 307 |
gr.Markdown('''## Step 3 (Generate Style Transferred Image)
|
| 308 |
|
|
@@ -332,25 +354,20 @@ This is an unofficial demo app for [https://github.com/williamyang1991/DualStyle
|
|
| 332 |
with gr.Column():
|
| 333 |
output_image = gr.Image(label='Output Image')
|
| 334 |
|
| 335 |
-
|
| 336 |
-
|
| 337 |
-
|
| 338 |
-
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
|
| 342 |
-
|
| 343 |
-
|
| 344 |
-
],
|
| 345 |
-
samples=samples)
|
| 346 |
|
| 347 |
gr.Markdown(
|
| 348 |
'<center><img src="https://visitor-badge.glitch.me/badge?page_id=gradio-blocks.dualstylegan" alt="visitor badge"/></center>'
|
| 349 |
)
|
| 350 |
|
| 351 |
-
examples.click(fn=set_example,
|
| 352 |
-
inputs=examples,
|
| 353 |
-
outputs=examples.components)
|
| 354 |
detect_button.click(fn=app.detect_and_align_face,
|
| 355 |
inputs=input_image,
|
| 356 |
outputs=face_image)
|
|
@@ -373,6 +390,15 @@ This is an unofficial demo app for [https://github.com/williamyang1991/DualStyle
|
|
| 373 |
instyle,
|
| 374 |
],
|
| 375 |
outputs=output_image)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 376 |
|
| 377 |
demo.launch(
|
| 378 |
enable_queue=args.enable_queue,
|
|
|
|
| 212 |
'pixar': 121,
|
| 213 |
'slamdunk': 119,
|
| 214 |
}
|
| 215 |
+
return gr.Slider.update(maximum=max_vals[choice])
|
| 216 |
|
| 217 |
|
| 218 |
def update_style_image(style_name: str) -> dict:
|
|
|
|
| 220 |
return gr.Markdown.update(value=text)
|
| 221 |
|
| 222 |
|
| 223 |
+
def set_example_image(example: list) -> dict:
|
| 224 |
+
return gr.Image.update(value=example[0])
|
| 225 |
+
|
| 226 |
+
|
| 227 |
+
def set_example_styles(example: list) -> list[dict]:
|
| 228 |
return [
|
| 229 |
+
gr.Radio.update(value=example[0]),
|
| 230 |
+
gr.Slider.update(value=example[1]),
|
| 231 |
+
]
|
| 232 |
+
|
| 233 |
+
|
| 234 |
+
def set_example_weights(example: list) -> list[dict]:
|
| 235 |
+
return [
|
| 236 |
+
gr.Slider.update(value=example[0]),
|
| 237 |
+
gr.Slider.update(value=example[1]),
|
| 238 |
]
|
| 239 |
|
| 240 |
|
|
|
|
| 269 |
|
| 270 |
- Drop an image containing a near-frontal face to the **Input Image**.
|
| 271 |
- If there are multiple faces in the image, hit the Edit button in the upper right corner and crop the input image beforehand.
|
|
|
|
| 272 |
- Hit the **Detect & Align Face** button.
|
| 273 |
- Hit the **Reconstruct Face** button.
|
| 274 |
- The final result will be based on this **Reconstructed Face**. So, if the reconstructed image is not satisfactory, you may want to change the input image.
|
|
|
|
| 291 |
type='numpy')
|
| 292 |
instyle = gr.Variable()
|
| 293 |
|
| 294 |
+
with gr.Row():
|
| 295 |
+
paths = sorted(pathlib.Path('images').glob('*.jpg'))
|
| 296 |
+
example_images = gr.Dataset(components=[input_image],
|
| 297 |
+
samples=[[path.as_posix()]
|
| 298 |
+
for path in paths])
|
| 299 |
+
|
| 300 |
with gr.Box():
|
| 301 |
gr.Markdown('''## Step 2 (Select Style Image)
|
| 302 |
|
|
|
|
| 315 |
label='Style Image Index',
|
| 316 |
interactive=True)
|
| 317 |
|
| 318 |
+
with gr.Row():
|
| 319 |
+
example_styles = gr.Dataset(
|
| 320 |
+
components=[style_type, style_index],
|
| 321 |
+
samples=[
|
| 322 |
+
['cartoon', 26],
|
| 323 |
+
['caricature', 65],
|
| 324 |
+
['arcane', 63],
|
| 325 |
+
['pixar', 80],
|
| 326 |
+
])
|
| 327 |
+
|
| 328 |
with gr.Box():
|
| 329 |
gr.Markdown('''## Step 3 (Generate Style Transferred Image)
|
| 330 |
|
|
|
|
| 354 |
with gr.Column():
|
| 355 |
output_image = gr.Image(label='Output Image')
|
| 356 |
|
| 357 |
+
with gr.Row():
|
| 358 |
+
example_weights = gr.Dataset(
|
| 359 |
+
components=[structure_weight, color_weight],
|
| 360 |
+
samples=[
|
| 361 |
+
[0.6, 1.0],
|
| 362 |
+
[0.3, 1.0],
|
| 363 |
+
[0.0, 1.0],
|
| 364 |
+
[1.0, 0.0],
|
| 365 |
+
])
|
|
|
|
|
|
|
| 366 |
|
| 367 |
gr.Markdown(
|
| 368 |
'<center><img src="https://visitor-badge.glitch.me/badge?page_id=gradio-blocks.dualstylegan" alt="visitor badge"/></center>'
|
| 369 |
)
|
| 370 |
|
|
|
|
|
|
|
|
|
|
| 371 |
detect_button.click(fn=app.detect_and_align_face,
|
| 372 |
inputs=input_image,
|
| 373 |
outputs=face_image)
|
|
|
|
| 390 |
instyle,
|
| 391 |
],
|
| 392 |
outputs=output_image)
|
| 393 |
+
example_images.click(fn=set_example_image,
|
| 394 |
+
inputs=example_images,
|
| 395 |
+
outputs=example_images.components)
|
| 396 |
+
example_styles.click(fn=set_example_styles,
|
| 397 |
+
inputs=example_styles,
|
| 398 |
+
outputs=example_styles.components)
|
| 399 |
+
example_weights.click(fn=set_example_weights,
|
| 400 |
+
inputs=example_weights,
|
| 401 |
+
outputs=example_weights.components)
|
| 402 |
|
| 403 |
demo.launch(
|
| 404 |
enable_queue=args.enable_queue,
|