|
import os |
|
import gradio as gr |
|
import numpy as np |
|
from PIL import Image |
|
|
|
|
|
def render(azimuth, elevation, theta, dist, category, unit): |
|
img_id = np.random.randint(0, 10000) |
|
|
|
os.system(f'python render.py --azimuth {azimuth} --elevation {elevation} --theta {theta} --dist {dist} --category {category} --unit {unit} --img_id {img_id}') |
|
|
|
img = Image.open(f'{img_id:05d}.png') |
|
os.system(f'rm {img_id:05d}.png') |
|
|
|
return np.array(img) |
|
|
|
os.system('sh setup.sh') |
|
|
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown('# Visualize object pose') |
|
gr.Markdown('This app runs on a free HuggingFace Space with no GPU support. Rendering an image generally takes a few seconds.') |
|
with gr.Row(): |
|
with gr.Column(scale=1): |
|
azimuth_box = gr.Textbox(label="Azimuth", value="45") |
|
elevation_box = gr.Textbox(label="Elevation", value="15") |
|
theta_box = gr.Textbox(label="Theta", value="0") |
|
dist_box = gr.Textbox(label="Distance", value="4") |
|
category_radio = gr.Radio(["Aeroplane", "Bicycle", "Boat", "Bottle", "Bus", "Car", "Chair", "Diningtable", "Motorbike", "Sofa", "Train", "Tvmonitor"], value="Aeroplane") |
|
unit_radio = gr.Radio(["Degree", "Radian"], value="Degree") |
|
render_btn = gr.Button("Render") |
|
with gr.Column(scale=1): |
|
output = gr.Image(shape=(256, 256)) |
|
render_btn.click(fn=render, inputs=[azimuth_box, elevation_box, theta_box, dist_box, category_radio, unit_radio], outputs=output) |
|
|
|
demo.launch() |
|
|