Spaces:
Running
on
Zero
Running
on
Zero
#!/usr/bin/env python | |
from __future__ import annotations | |
import os | |
import gradio as gr | |
from model import Model | |
DESCRIPTION = '''# [TEXTure](https://github.com/TEXTurePaper/TEXTurePaper) | |
- This demo only accepts as input `.obj` files with less than 100,000 faces. | |
- Inference takes about 10 minutes on a T4 GPU. | |
''' | |
if (SPACE_ID := os.getenv('SPACE_ID')) is not None: | |
DESCRIPTION += f'\n<p>For faster inference without waiting in queue, you may duplicate the space and upgrade to GPU in settings. <a href="https://huggingface.co/spaces/{SPACE_ID}?duplicate=true"><img style="display: inline; margin-top: 0em; margin-bottom: 0em" src="https://bit.ly/3gLdBN6" alt="Duplicate Space" /></a></p>' | |
model = Model() | |
with gr.Blocks(css='style.css') as demo: | |
gr.Markdown(DESCRIPTION) | |
with gr.Row(): | |
with gr.Column(): | |
input_shape = gr.Model3D(label='Input 3D mesh') | |
text = gr.Text(label='Text') | |
seed = gr.Slider(label='Seed', | |
minimum=0, | |
maximum=100000, | |
value=3, | |
step=1) | |
guidance_scale = gr.Slider(label='Guidance scale', | |
minimum=0, | |
maximum=50, | |
value=7.5, | |
step=0.1) | |
run_button = gr.Button('Run') | |
with gr.Column(): | |
progress_text = gr.Text(label='Progress') | |
with gr.Tabs(): | |
with gr.TabItem(label='Images from each viewpoint'): | |
viewpoint_images = gr.Gallery(show_label=False).style( | |
columns=4, height='auto') | |
with gr.TabItem(label='Result 3D model'): | |
result_3d_model = gr.Model3D(show_label=False) | |
with gr.TabItem(label='Output mesh file'): | |
output_file = gr.File(show_label=False) | |
with gr.Row(): | |
examples = [ | |
['shapes/dragon1.obj', 'a photo of a dragon', 0, 7.5], | |
['shapes/dragon2.obj', 'a photo of a dragon', 0, 7.5], | |
['shapes/eagle.obj', 'a photo of an eagle', 0, 7.5], | |
['shapes/napoleon.obj', 'a photo of Napoleon Bonaparte', 3, 7.5], | |
['shapes/nascar.obj', 'A next gen nascar', 2, 10], | |
] | |
gr.Examples(examples=examples, | |
inputs=[ | |
input_shape, | |
text, | |
seed, | |
guidance_scale, | |
], | |
outputs=[ | |
result_3d_model, | |
output_file, | |
], | |
cache_examples=False) | |
run_button.click(fn=model.run, | |
inputs=[ | |
input_shape, | |
text, | |
seed, | |
guidance_scale, | |
], | |
outputs=[ | |
viewpoint_images, | |
result_3d_model, | |
output_file, | |
progress_text, | |
]) | |
demo.queue(max_size=5).launch(debug=True) | |