Spaces:
Configuration error
Configuration error
#!/usr/bin/env python | |
from __future__ import annotations | |
import os | |
import datetime | |
import gradio as gr | |
import spaces | |
def run_on_gpu(input_shape, text, seed, guidance_scale): | |
print('Starting inference at {}'.format(datetime.datetime.now())) | |
from model import Model | |
model = Model() | |
res_generator = model.run(shape_path=input_shape, text=text, seed=seed, guidance_scale=guidance_scale) | |
print('Finished inference at {}'.format(datetime.datetime.now())) | |
return list(res_generator) | |
def main(): | |
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, ' | |
f'you may duplicate the space and upgrade to GPU in settings. ' | |
f'<a href="https://huggingface.co/spaces/{SPACE_ID}?duplicate=true">' | |
f'<img style="display: inline; margin-top: 0em; margin-bottom: 0em" ' | |
f'src="https://bit.ly/3gLdBN6" alt="Duplicate Space" /></a></p>') | |
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, columns=4) | |
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=run_on_gpu, | |
inputs=[ | |
input_shape, | |
text, | |
seed, | |
guidance_scale, | |
], | |
outputs=[ | |
viewpoint_images, | |
result_3d_model, | |
output_file, | |
progress_text, | |
]) | |
demo.queue(max_size=5) | |
demo.launch(debug=True) | |
if __name__ == '__main__': | |
main() | |