Vincent-Tann commited on
Commit
a780b40
1 Parent(s): f27a827

Add 5 types of scene. Use [git lfs] to track glb and ply.

Browse files
.gitattributes CHANGED
@@ -35,3 +35,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  scenes/scene0132_00_vh_clean_2_aligned.glb filter=lfs diff=lfs merge=lfs -text
37
  scenes/scene0132_00_vh_clean_2_aligned.ply filter=lfs diff=lfs merge=lfs -text
 
 
 
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
  scenes/scene0132_00_vh_clean_2_aligned.glb filter=lfs diff=lfs merge=lfs -text
37
  scenes/scene0132_00_vh_clean_2_aligned.ply filter=lfs diff=lfs merge=lfs -text
38
+ *.ply filter=lfs diff=lfs merge=lfs -text
39
+ *.glb filter=lfs diff=lfs merge=lfs -text
2glb.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ from display_model import ply_to_glb
2
+
3
+
4
+ if __name__ == '__main__':
5
+ for name in ['scene0014_00', 'scene0024_00', 'scene0051_00', 'scene0114_00','scene0335_01']:
6
+ ply_to_glb(ply_file=f"scenes/{name}_vh_clean_2_aligned.ply", glb_file=f"scenes/{name}_vh_clean_2_aligned.glb")
7
+ print(f"{name} finish")
appyibu.py → _appyibu.py RENAMED
File without changes
app.py CHANGED
@@ -3,12 +3,26 @@ import gradio as gr
3
 
4
  from display_model import *
5
 
6
- scan_id = "scene0132_00"
7
- ply_file = os.path.join("scenes", f"{scan_id}_vh_clean_2_aligned.ply")
8
- glb_file = os.path.join("scenes", f"{scan_id}_vh_clean_2_aligned.glb")
9
- new_ply_file = os.path.join("scenes", f"{scan_id}_vh_clean_2_aligned_AddBox.ply")
10
- new_glb_file = os.path.join("scenes", f"{scan_id}_vh_clean_2_aligned_AddBox.glb")
11
- objects_info_file = os.path.join("objects_info", f"objects_info_{scan_id}.npy")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
  def insert_user_none_between_assistant(messages):
14
  # 初始化结果列表
@@ -89,9 +103,10 @@ def process_instruction_callback(inp_api_key, instruction, llm_name):
89
  gradio_messages.append(gradio_message)
90
 
91
  # return gradio_messages
92
- return new_glb_file, gradio_messages
93
 
94
  def generate_answer_glb(answer_content):
 
95
  from transcrib3d_main import extract_answer_id_from_last_line
96
  last_line = answer_content.splitlines()[-1] if len(answer_content) > 0 else ''
97
  answer_id, _ = extract_answer_id_from_last_line(last_line)
@@ -112,53 +127,75 @@ def llm_dropdown_callback(llm_name):
112
  print("llm_name in callback:",llm_name)
113
  return llm_name
114
 
 
 
 
 
 
 
 
115
  with gr.Blocks() as demo:
116
  gr.Markdown("## Transcrib3D-Demo")
117
  with gr.Row():
118
  with gr.Column():
 
 
 
 
 
 
 
 
 
 
119
  model3d = gr.Model3D(
120
- value="scenes/scene0132_00_vh_clean_2_aligned.glb",
121
- label="ScanNet-scene0132_00",
 
122
  camera_position=(90,120,8),
123
  zoom_speed=0.25,
124
  # height=635,
125
  height=725
126
  )
127
- # print("Type1:",type(model3d))
128
-
129
  # gr.Markdown("🖱️:arrow_up::arrow_down:: SCROLL to zoom in/out.\t🖱️🔁 DRAG to rotate.\tCTRL+🖱️🔁 Press CTRL and DRAG to pan.")
130
  html_content = """
131
  <div style='text-align: center;'>
132
  🖱️🔼🔽: SCROLL to zoom in/out.&nbsp;&nbsp;&nbsp;🖱️🔁: DRAG to rotate.&nbsp;&nbsp;&nbsp;[CTRL]+🖱️🔁: Press CTRL and DRAG to pan.
 
133
  </div>
134
  """
135
  gr.HTML(value=html_content)
136
 
137
  with gr.Column():
138
-
139
- inp_api_key = gr.Textbox(label='OpenAI API Key (this is not stored anywhere)', lines=1)
140
-
 
 
 
141
  llm_dropdown = gr.Dropdown(
142
  # choices=['gpt-4-turbo','gpt-4','gpt-3.5-turbo'],
143
- choices=['gpt-4-0125-preview', 'gpt-4-1106-preview', 'gpt-3.5-turbo-0125'],
144
  label="LLM Selection",
145
- type='value'
 
146
  )
147
- # llm_name = "gpt-4-turbo"
148
- llm_name_text = gr.Text(visible=False)
149
- llm_dropdown.select(fn=llm_dropdown_callback, inputs=llm_dropdown, outputs=llm_name_text)
150
-
151
 
 
152
  user_instruction_textbox = gr.Textbox(
153
  label="Instruction",
154
  placeholder="Describe an object in the scene with its attributes and its relation with other objects, e.g. 'The largest table in the scene.",
155
  # scale=4
156
  )
 
157
  bt = gr.Button(
158
  value="Submit",
159
  # scale=1
160
  )
161
-
162
  dialogue = gr.Chatbot(
163
  height=470
164
  # value = [["1","2"], [None, '3']]
@@ -171,6 +208,9 @@ with gr.Blocks() as demo:
171
  bt.click(fn=process_instruction_callback, inputs=[inp_api_key, user_instruction_textbox,llm_name_text], outputs=[model3d,dialogue])
172
  user_instruction_textbox.submit(fn=process_instruction_callback, inputs=[inp_api_key, user_instruction_textbox, llm_name_text], outputs=[model3d,dialogue])
173
 
 
 
 
174
  # 直接用lambda函数定义一个映射
175
  # type(user_instruction_textbox.value)
176
  # user_instruction_textbox.
 
3
 
4
  from display_model import *
5
 
6
+ default_llm = 'gpt-3.5-turbo-0125'
7
+ # scan_id = "scene0132_00"
8
+ scan_id_mapper={
9
+ 'Living Room':'scene0024_00',
10
+ 'Bedroom':'scene0051_00', #144
11
+ 'Kitchen':'scene0335_01', #164 197
12
+ 'Bathroom':'scene0014_00', #14 26
13
+ 'Office':'scene0114_00'
14
+ # gym 428
15
+ }
16
+ defualt_scene_type = 'Living Room'
17
+ scan_id = scan_id_mapper[defualt_scene_type]
18
+
19
+ def get_path(scan_id):
20
+ ply_file = os.path.join("scenes", f"{scan_id}_vh_clean_2_aligned.ply")
21
+ glb_file = os.path.join("scenes", f"{scan_id}_vh_clean_2_aligned.glb")
22
+ new_ply_file = os.path.join("scenes", f"{scan_id}_vh_clean_2_aligned_AddBox.ply")
23
+ new_glb_file = os.path.join("scenes", f"{scan_id}_vh_clean_2_aligned_AddBox.glb")
24
+ objects_info_file = os.path.join("objects_info", f"objects_info_{scan_id}.npy")
25
+ return {"ply_file":ply_file, "glb_file":glb_file, "new_ply_file":new_ply_file, "new_glb_file":new_glb_file, "objects_info_file":objects_info_file}
26
 
27
  def insert_user_none_between_assistant(messages):
28
  # 初始化结果列表
 
103
  gradio_messages.append(gradio_message)
104
 
105
  # return gradio_messages
106
+ return get_path(scan_id)['new_glb_file'], gradio_messages
107
 
108
  def generate_answer_glb(answer_content):
109
+ ply_file, glb_file, new_ply_file, new_glb_file, objects_info_file = get_path(scan_id).values()
110
  from transcrib3d_main import extract_answer_id_from_last_line
111
  last_line = answer_content.splitlines()[-1] if len(answer_content) > 0 else ''
112
  answer_id, _ = extract_answer_id_from_last_line(last_line)
 
127
  print("llm_name in callback:",llm_name)
128
  return llm_name
129
 
130
+ def scene_type_dropdown_callback(scene_type):
131
+ # update scan_id as a global vairable
132
+ global scan_id
133
+ scan_id = scan_id_mapper[scene_type]
134
+ print("scan_id inside scene_type_dropdown_callback:",scan_id)
135
+ return get_path(scan_id)['glb_file']
136
+
137
  with gr.Blocks() as demo:
138
  gr.Markdown("## Transcrib3D-Demo")
139
  with gr.Row():
140
  with gr.Column():
141
+ # Left-1: Scene Type Selection
142
+ scene_type_dropdown = gr.Dropdown(
143
+ choices=['Living Room', 'Bedroom', 'Kitchen', 'Bathroom', 'Office'],
144
+ label='Scene Type',
145
+ type='value',
146
+ value=defualt_scene_type
147
+ )
148
+ scan_id_text = gr.Text(visible=False)
149
+
150
+ # Left-2: 3D Scene
151
  model3d = gr.Model3D(
152
+ value=f"scenes/{scan_id}_vh_clean_2_aligned.glb",
153
+ # label=f"ScanNet {scan_id}", #how to update this label????
154
+ label="3D Scene from ScanNet Dataset",
155
  camera_position=(90,120,8),
156
  zoom_speed=0.25,
157
  # height=635,
158
  height=725
159
  )
160
+ # Left-3: Tips
 
161
  # gr.Markdown("🖱️:arrow_up::arrow_down:: SCROLL to zoom in/out.\t🖱️🔁 DRAG to rotate.\tCTRL+🖱️🔁 Press CTRL and DRAG to pan.")
162
  html_content = """
163
  <div style='text-align: center;'>
164
  🖱️🔼🔽: SCROLL to zoom in/out.&nbsp;&nbsp;&nbsp;🖱️🔁: DRAG to rotate.&nbsp;&nbsp;&nbsp;[CTRL]+🖱️🔁: Press CTRL and DRAG to pan.
165
+ <br>It may takes ~10 seconds to load the 3D scene.
166
  </div>
167
  """
168
  gr.HTML(value=html_content)
169
 
170
  with gr.Column():
171
+ # Right-1: Openai Api Key Input
172
+ inp_api_key = gr.Textbox(
173
+ label='OpenAI API Key (this is not stored anywhere)',
174
+ placeholder='You can generate key at https://platform.openai.com/api-keys',
175
+ lines=1)
176
+ # Right-2: LLM Selection
177
  llm_dropdown = gr.Dropdown(
178
  # choices=['gpt-4-turbo','gpt-4','gpt-3.5-turbo'],
179
+ choices=['gpt-4', 'gpt-4-0125-preview', 'gpt-4-1106-preview', 'gpt-3.5-turbo-0125'],
180
  label="LLM Selection",
181
+ type='value',
182
+ value=default_llm
183
  )
184
+ llm_name_text = gr.Text(value=default_llm, visible=False)
185
+
 
 
186
 
187
+ # Right-3: User Instruction Input
188
  user_instruction_textbox = gr.Textbox(
189
  label="Instruction",
190
  placeholder="Describe an object in the scene with its attributes and its relation with other objects, e.g. 'The largest table in the scene.",
191
  # scale=4
192
  )
193
+ # Right-4: Submit Button
194
  bt = gr.Button(
195
  value="Submit",
196
  # scale=1
197
  )
198
+ # Right-5: Dialogue
199
  dialogue = gr.Chatbot(
200
  height=470
201
  # value = [["1","2"], [None, '3']]
 
208
  bt.click(fn=process_instruction_callback, inputs=[inp_api_key, user_instruction_textbox,llm_name_text], outputs=[model3d,dialogue])
209
  user_instruction_textbox.submit(fn=process_instruction_callback, inputs=[inp_api_key, user_instruction_textbox, llm_name_text], outputs=[model3d,dialogue])
210
 
211
+ scene_type_dropdown.select(fn=scene_type_dropdown_callback, inputs=scene_type_dropdown, outputs=model3d)
212
+ llm_dropdown.select(fn=llm_dropdown_callback, inputs=llm_dropdown, outputs=llm_name_text)
213
+
214
  # 直接用lambda函数定义一个映射
215
  # type(user_instruction_textbox.value)
216
  # user_instruction_textbox.
objects_info/objects_info_scene0014_00.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:98e3a5c5e11ecaa11c3569b2c9c051bca997b0089d523fecbb9ee038a602176c
3
+ size 19477
objects_info/objects_info_scene0024_00.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:eac6b438ffa9c8b88a741410507563ccf0d6ac94650b66924ee649315b84628a
3
+ size 38887
objects_info/objects_info_scene0051_00.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bf6a9fa7b7ed75d0eb1189a88c742813c56ff1968097cbb656790704e3ef4988
3
+ size 30011
objects_info/objects_info_scene0114_00.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2e8b329206fa085dbdf66948dab3193196424cd53413ff719cd9771f767c6db6
3
+ size 17584
objects_info/objects_info_scene0335_01.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c4ed178d800636f943c9660e9bd1c14dd0cd58c9e750867886459a342ff05a0c
3
+ size 36433
scenes/scene0014_00_vh_clean_2_aligned.glb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:05e13ed5485a96bf0460dce00407c754a3b4c69d586e303261f6daa058438e56
3
+ size 3779956
scenes/scene0014_00_vh_clean_2_aligned.ply ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:56164fd1202ea66a3675d934e3ec6218fc7bc255a3659d822f6427315cd250d0
3
+ size 3964386
scenes/scene0024_00_vh_clean_2_aligned.glb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e0f3b3ea5ef0a4cc517d5d542b85700a66c73827cda7280d1f68db65a822ae6c
3
+ size 10566164
scenes/scene0024_00_vh_clean_2_aligned.ply ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1b062560cc2e4758115437f546bf4b240dcdd5526ea3cfd40ab8e84c85ee74b5
3
+ size 11080892
scenes/scene0051_00_vh_clean_2_aligned.glb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:deb4e2ba8e2341361dbfe8374a09f60aa54505b76b91b88d2b32d6e09424df53
3
+ size 8726472
scenes/scene0051_00_vh_clean_2_aligned.ply ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:edf032cc01a92402c7709f254ab79b6b510adf1a659d9894bb06ecc167e2d4db
3
+ size 9152338
scenes/scene0114_00_vh_clean_2_aligned.glb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dc2edd57267729ce1fda22e7e9e26080c17629d5e7f9a51798d1fe1f6efaa634
3
+ size 6832076
scenes/scene0114_00_vh_clean_2_aligned.ply ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9de606b26a5873e819f5f97685a3cc038ca55852c2f12226a9f537a49ef636c4
3
+ size 7164602
scenes/scene0335_01_vh_clean_2_aligned.glb ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:edb7fce2b83a44eaa11edc311faa46131ef863561998c063207647d46a34fdaf
3
+ size 7261404
scenes/scene0335_01_vh_clean_2_aligned.ply ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:dfe80b74708cbacfd499d282edc549ef6276192fc38e80469346c110f755dc7b
3
+ size 7614742