liguang0115 commited on
Commit
8866f56
·
1 Parent(s): ab5ee38

Implement visualization directory management in app.py and navigation.py. Added clear_visualization_directory function to prevent users from seeing each other's generated images. Updated IMAGE_PATHS with new sample images and removed unused imports.

Browse files
Files changed (2) hide show
  1. app.py +36 -6
  2. navigation.py +7 -1
app.py CHANGED
@@ -7,7 +7,7 @@ subprocess.check_call([
7
  ])
8
 
9
  from typing import List, Literal
10
- from pathlib import Path
11
  from functools import partial
12
  import spaces
13
  import gradio as gr
@@ -16,12 +16,14 @@ import torch
16
  from omegaconf import OmegaConf
17
  from modeling.pipeline import VMemPipeline
18
  from diffusers.utils import export_to_video
19
- from scipy.spatial.transform import Rotation, Slerp
20
  from navigation import Navigator
21
- from PIL import Image
22
- from utils import tensor_to_pil, encode_vae_image, encode_image, get_default_intrinsics, load_img_and_K, transform_img_and_K
23
  import os
24
- import glob
 
 
25
 
26
 
27
 
@@ -46,6 +48,28 @@ IMAGE_PATHS = ['test_samples/oxford.jpg',
46
  'test_samples/jesus.jpg',]
47
 
48
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  # If no images found, create placeholders
50
  if not IMAGE_PATHS:
51
  def create_placeholder_images(num_samples=5, height=HEIGHT, width=WIDTH):
@@ -355,6 +379,9 @@ def render_demonstrate(
355
  gr.Warning("Please upload an image first")
356
  return "Selection", None, None, None
357
  try:
 
 
 
358
  # Load image and prepare for navigation
359
  result = load_image_for_navigation(image_path)
360
 
@@ -416,6 +443,9 @@ def render_demonstrate(
416
 
417
  def start_navigation(evt: gr.SelectData):
418
  try:
 
 
 
419
  # Get the selected image path
420
  selected_path = IMAGE_PATHS[evt.index]
421
 
@@ -824,7 +854,7 @@ with gr.Blocks(theme=gr.themes.Base(primary_hue="blue")) as demo:
824
  )
825
  gr.Button(
826
  value="Paper",
827
- link="https://arxiv.org/abs/2506.18903",
828
  icon="https://simpleicons.org/icons/arxiv.svg",
829
  elem_classes=["header-button"],
830
  size="md",
 
7
  ])
8
 
9
  from typing import List, Literal
10
+ # from pathlib import Path
11
  from functools import partial
12
  import spaces
13
  import gradio as gr
 
16
  from omegaconf import OmegaConf
17
  from modeling.pipeline import VMemPipeline
18
  from diffusers.utils import export_to_video
19
+ # from scipy.spatial.transform import Rotation, Slerp
20
  from navigation import Navigator
21
+ # from PIL import Image
22
+ from utils import tensor_to_pil, get_default_intrinsics, load_img_and_K, transform_img_and_K
23
  import os
24
+ # import glob
25
+ import shutil
26
+
27
 
28
 
29
 
 
48
  'test_samples/jesus.jpg',]
49
 
50
 
51
+ def clear_visualization_directory():
52
+ """
53
+ Clear all contents from the visualization directory to prevent users from seeing
54
+ each other's generated images.
55
+ """
56
+ viz_dir = "./visualization"
57
+ try:
58
+ if os.path.exists(viz_dir):
59
+ shutil.rmtree(viz_dir)
60
+ os.makedirs(viz_dir, exist_ok=True)
61
+ print(f"Cleared visualization directory: {viz_dir}")
62
+ except Exception as e:
63
+ print(f"Warning: Could not clear visualization directory: {e}")
64
+
65
+
66
+ IMAGE_PATHS = ['test_samples/oxford.jpg',
67
+ 'test_samples/open_door.jpg',
68
+ 'test_samples/living_room.jpg',
69
+ 'test_samples/arc_de_tromphe.jpeg',
70
+ 'test_samples/changi.jpg',
71
+ 'test_samples/jesus.jpg',]
72
+
73
  # If no images found, create placeholders
74
  if not IMAGE_PATHS:
75
  def create_placeholder_images(num_samples=5, height=HEIGHT, width=WIDTH):
 
379
  gr.Warning("Please upload an image first")
380
  return "Selection", None, None, None
381
  try:
382
+ # Clear visualization directory to prevent users from seeing each other's generated images
383
+ clear_visualization_directory()
384
+
385
  # Load image and prepare for navigation
386
  result = load_image_for_navigation(image_path)
387
 
 
443
 
444
  def start_navigation(evt: gr.SelectData):
445
  try:
446
+ # Clear visualization directory to prevent users from seeing each other's generated images
447
+ clear_visualization_directory()
448
+
449
  # Get the selected image path
450
  selected_path = IMAGE_PATHS[evt.index]
451
 
 
854
  )
855
  gr.Button(
856
  value="Paper",
857
+ link="http://arxiv.org/abs/2506.18903",
858
  icon="https://simpleicons.org/icons/arxiv.svg",
859
  elem_classes=["header-button"],
860
  size="md",
navigation.py CHANGED
@@ -7,7 +7,7 @@ import json
7
  from typing import List, Optional, Tuple
8
  import scipy.spatial.transform as spt
9
  from omegaconf import OmegaConf
10
-
11
 
12
  from modeling.pipeline import VMemPipeline
13
  from utils import load_img_and_K, transform_img_and_K, get_default_intrinsics
@@ -65,6 +65,11 @@ class Navigator:
65
  "transform_matrix": initial_pose.tolist() if isinstance(initial_pose, np.ndarray) else initial_pose
66
  })
67
 
 
 
 
 
 
68
  return initial_frame
69
 
70
  def initialize_pipeline(self, image_tensor, initial_pose, initial_K):
@@ -428,3 +433,4 @@ class Navigator:
428
 
429
 
430
 
 
 
7
  from typing import List, Optional, Tuple
8
  import scipy.spatial.transform as spt
9
  from omegaconf import OmegaConf
10
+ import shutil
11
 
12
  from modeling.pipeline import VMemPipeline
13
  from utils import load_img_and_K, transform_img_and_K, get_default_intrinsics
 
65
  "transform_matrix": initial_pose.tolist() if isinstance(initial_pose, np.ndarray) else initial_pose
66
  })
67
 
68
+ # clean the visualization folder
69
+ if os.path.exists("visualization"):
70
+ shutil.rmtree("visualization")
71
+ os.makedirs("visualization", exist_ok=True)
72
+
73
  return initial_frame
74
 
75
  def initialize_pipeline(self, image_tensor, initial_pose, initial_K):
 
433
 
434
 
435
 
436
+