Spaces:
Sleeping
Sleeping
SceneDiffuser
commited on
Commit
•
4e60da3
1
Parent(s):
056ce25
Upload 2 files
Browse files- .gitattributes +1 -0
- app.py +79 -0
- figures/teaser.png +3 -0
.gitattributes
CHANGED
@@ -32,3 +32,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
34 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
32 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
33 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
34 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
35 |
+
figures/teaser.png filter=lfs diff=lfs merge=lfs -text
|
app.py
ADDED
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
import gradio as gr
|
3 |
+
import random
|
4 |
+
import pickle
|
5 |
+
import numpy as np
|
6 |
+
from PIL import Image
|
7 |
+
from huggingface_hub import hf_hub_download
|
8 |
+
|
9 |
+
def pose_generation(scene, count):
|
10 |
+
assert isinstance(scene, str)
|
11 |
+
results_path = hf_hub_download('SceneDiffuser/SceneDiffuser', 'results/pose_generation/results.pkl')
|
12 |
+
with open(results_path, 'rb') as f:
|
13 |
+
results = pickle.load(f)
|
14 |
+
|
15 |
+
images = [Image.fromarray(results[scene][random.randint(0, 19)]) for i in range(count)]
|
16 |
+
return images
|
17 |
+
|
18 |
+
def path_planning(case_id):
|
19 |
+
assert isinstance(case_id, str)
|
20 |
+
results_path = hf_hub_download('SceneDiffuser/SceneDiffuser', 'results/path_planning/results.pkl')
|
21 |
+
with open(results_path, 'rb') as f:
|
22 |
+
results = pickle.load(f)
|
23 |
+
|
24 |
+
case = results[case_id]
|
25 |
+
steps = case['step']
|
26 |
+
image = Image.fromarray(case['image'])
|
27 |
+
return image, steps
|
28 |
+
|
29 |
+
with gr.Blocks() as demo:
|
30 |
+
gr.Markdown("# **<p align='center'>Diffusion-based Generation, Optimization, and Planning in 3D Scenes</p>**")
|
31 |
+
gr.HTML(value="<img src='file/figures/teaser.png' alt='Teaser' width='710px' height='284px' style='display: block; margin: auto;'>")
|
32 |
+
gr.HTML(value="<p align='center' style='font-size: 1.25em; color: #485fc7;'><a href='' target='_blank'>Paper</a> | <a href='' target='_blank'>Project Page</a> | <a href='' target='_blank'>Github</a></p>")
|
33 |
+
gr.Markdown("<p align='center'><i>\"SceneDiffuser provides a unified model for solving scene-conditioned generation, optimization, and planning.\"</i></p>")
|
34 |
+
|
35 |
+
## five task
|
36 |
+
## pose generation
|
37 |
+
with gr.Tab("Pose Generation"):
|
38 |
+
with gr.Row():
|
39 |
+
with gr.Column():
|
40 |
+
input1 = [
|
41 |
+
gr.Dropdown(choices=['MPH16', 'MPH1Library', 'N0SittingBooth', 'N3OpenArea'], label='Scenes'),
|
42 |
+
gr.Slider(minimum=1, maximum=4, step=1, label='Count', interactive=True)
|
43 |
+
]
|
44 |
+
button1 = gr.Button("Generate")
|
45 |
+
with gr.Column():
|
46 |
+
output1 = [
|
47 |
+
gr.Gallery(label="Result").style(grid=[1], height="auto")
|
48 |
+
]
|
49 |
+
button1.click(pose_generation, inputs=input1, outputs=output1)
|
50 |
+
|
51 |
+
## motion generation
|
52 |
+
with gr.Tab("Motion Generation"):
|
53 |
+
gr.Markdown('Coming soon!')
|
54 |
+
|
55 |
+
## grasp generation
|
56 |
+
with gr.Tab("Grasp Generation"):
|
57 |
+
gr.Markdown('Coming soon!')
|
58 |
+
|
59 |
+
## path planning
|
60 |
+
with gr.Tab("Path Planing"):
|
61 |
+
with gr.Row():
|
62 |
+
with gr.Column():
|
63 |
+
input4 = [
|
64 |
+
gr.Dropdown(choices=['scene0603_00_N0pT', 'scene0621_00_cJ4H', 'scene0634_00_48Y3', 'scene0634_00_gIRH', 'scene0637_00_YgjR', 'scene0640_00_BO94', 'scene0641_00_3K6J', 'scene0641_00_KBKx', 'scene0641_00_cb7l', 'scene0645_00_35Hy', 'scene0645_00_47D1', 'scene0645_00_XfLE', 'scene0667_00_DK4F', 'scene0667_00_o7XB', 'scene0667_00_rUMp', 'scene0672_00_U250', 'scene0673_00_Jyw8', 'scene0673_00_u1lJ', 'scene0678_00_QbNL', 'scene0678_00_RrY0', 'scene0678_00_aE1p', 'scene0678_00_hnXu', 'scene0694_00_DgAL', 'scene0694_00_etF5', 'scene0698_00_tT3Q'], label='Scenes'),
|
65 |
+
]
|
66 |
+
button4 = gr.Button("Run")
|
67 |
+
with gr.Column():
|
68 |
+
# output4 = gr.Gallery(label="Result").style(grid=[1], height="auto")
|
69 |
+
output4 = [
|
70 |
+
gr.Image(label="Result"),
|
71 |
+
gr.Number(label="Steps", precision=0)
|
72 |
+
]
|
73 |
+
button4.click(path_planning, inputs=input4, outputs=output4)
|
74 |
+
|
75 |
+
## arm motion planning
|
76 |
+
with gr.Tab("Arm Motion Planning"):
|
77 |
+
gr.Markdown('Coming soon!')
|
78 |
+
|
79 |
+
demo.launch()
|
figures/teaser.png
ADDED
Git LFS Details
|