Spaces:
Running
on
Zero
Running
on
Zero
update
Browse files- __pycache__/viewcrafter.cpython-39.pyc +0 -0
- app.py +3 -4
- viewcrafter.py +15 -6
__pycache__/viewcrafter.cpython-39.pyc
CHANGED
Binary files a/__pycache__/viewcrafter.cpython-39.pyc and b/__pycache__/viewcrafter.cpython-39.pyc differ
|
|
app.py
CHANGED
@@ -102,7 +102,7 @@ def viewcrafter_demo(opts):
|
|
102 |
)
|
103 |
# step 2 - camera trajectory generation
|
104 |
gr.Markdown("---\n## Step 2: Input camera trajectory", show_label=False, visible=True)
|
105 |
-
gr.Markdown("<div align='left' style='font-size:18px;color: #000000'> Input a d_phi sequence, a d_theta sequence, and a d_r sequence to generate a camera trajectory. In the sequences, a positive d_phi moves the camera to the right, a negative d_theta moves the camera up, and a negative d_r moves the camera forward. Ensure that each sequence starts with 0 and contains at least two elements (a start and an end). </div>")
|
106 |
with gr.Row():
|
107 |
with gr.Column():
|
108 |
# camera_mode = gr.Radio(choices=CAMERA_MOTION_MODE, value=CAMERA_MOTION_MODE[0], label="Camera Motion Control Mode", interactive=True, visible=False)
|
@@ -113,7 +113,6 @@ def viewcrafter_demo(opts):
|
|
113 |
# camera_info = gr.Button(value="Proceed", visible=False)
|
114 |
with gr.Column():
|
115 |
i2v_traj_video = gr.Video(label="Camera Trajectory",elem_id="traj_vid",autoplay=True,show_share_button=True)
|
116 |
-
|
117 |
gr.Examples(examples=traj_examples,
|
118 |
inputs=[i2v_d_phi, i2v_d_theta, i2v_d_r],
|
119 |
)
|
@@ -135,7 +134,7 @@ def viewcrafter_demo(opts):
|
|
135 |
i2v_start_btn.click(inputs=[i2v_input_image, i2v_elevation, i2v_center_scale, i2v_d_phi, i2v_d_theta, i2v_d_r],
|
136 |
outputs=[i2v_traj_video],
|
137 |
fn = image2video.run_traj
|
138 |
-
)
|
139 |
|
140 |
i2v_end_btn.click(inputs=[i2v_steps, i2v_seed],
|
141 |
outputs=[i2v_output_video],
|
@@ -148,5 +147,5 @@ def viewcrafter_demo(opts):
|
|
148 |
viewcrafter_iface = viewcrafter_demo(opts)
|
149 |
viewcrafter_iface.queue(max_size=10)
|
150 |
viewcrafter_iface.launch() #fixme
|
151 |
-
# viewcrafter_iface.launch(server_name='11.220.92.96', server_port=80, max_threads=
|
152 |
|
|
|
102 |
)
|
103 |
# step 2 - camera trajectory generation
|
104 |
gr.Markdown("---\n## Step 2: Input camera trajectory", show_label=False, visible=True)
|
105 |
+
gr.Markdown("<div align='left' style='font-size:18px;color: #000000'> Input a d_phi sequence, a d_theta sequence, and a d_r sequence to generate a camera trajectory. In the sequences, a positive d_phi moves the camera to the right, a negative d_theta moves the camera up, and a negative d_r moves the camera forward. Ensure that each sequence starts with 0 and contains at least two elements (a start and an end). If you upload a new image, remember to conduct this step again. </div>")
|
106 |
with gr.Row():
|
107 |
with gr.Column():
|
108 |
# camera_mode = gr.Radio(choices=CAMERA_MOTION_MODE, value=CAMERA_MOTION_MODE[0], label="Camera Motion Control Mode", interactive=True, visible=False)
|
|
|
113 |
# camera_info = gr.Button(value="Proceed", visible=False)
|
114 |
with gr.Column():
|
115 |
i2v_traj_video = gr.Video(label="Camera Trajectory",elem_id="traj_vid",autoplay=True,show_share_button=True)
|
|
|
116 |
gr.Examples(examples=traj_examples,
|
117 |
inputs=[i2v_d_phi, i2v_d_theta, i2v_d_r],
|
118 |
)
|
|
|
134 |
i2v_start_btn.click(inputs=[i2v_input_image, i2v_elevation, i2v_center_scale, i2v_d_phi, i2v_d_theta, i2v_d_r],
|
135 |
outputs=[i2v_traj_video],
|
136 |
fn = image2video.run_traj
|
137 |
+
)
|
138 |
|
139 |
i2v_end_btn.click(inputs=[i2v_steps, i2v_seed],
|
140 |
outputs=[i2v_output_video],
|
|
|
147 |
viewcrafter_iface = viewcrafter_demo(opts)
|
148 |
viewcrafter_iface.queue(max_size=10)
|
149 |
viewcrafter_iface.launch() #fixme
|
150 |
+
# viewcrafter_iface.launch(server_name='11.220.92.96', server_port=80, max_threads=10,debug=False)
|
151 |
|
viewcrafter.py
CHANGED
@@ -158,14 +158,12 @@ class ViewCrafter:
|
|
158 |
if self.opts.mode == 'single_view_txt':
|
159 |
if phi[-1]==0. and theta[-1]==0. and r[-1]==0.:
|
160 |
render_results[-1] = self.img_ori
|
161 |
-
|
162 |
-
save_video(render_results, os.path.join(self.opts.save_dir, 'render0.mp4'))
|
163 |
-
self.render_results = render_results
|
164 |
# save_pointcloud_with_normals([imgs[-1]], [pcd[-1]], msk=None, save_path=os.path.join(self.opts.save_dir,'pcd0.ply') , mask_pc=False, reduce_pc=False)
|
165 |
# diffusion_results = self.run_diffusion(render_results)
|
166 |
# save_video((diffusion_results + 1.0) / 2.0, os.path.join(self.opts.save_dir, 'diffusion0.mp4'))
|
167 |
|
168 |
-
return
|
169 |
|
170 |
def nvs_sparse_view(self,iter):
|
171 |
|
@@ -373,14 +371,25 @@ class ViewCrafter:
|
|
373 |
# self.img_ori: torch.Size([576, 1024, 3]), [0,1]
|
374 |
# self.images, self.img_ori = self.load_initial_images(image_dir=i2v_input_image)
|
375 |
self.run_dust3r(input_images=self.images)
|
376 |
-
self.nvs_single_view(gradio=True)
|
|
|
377 |
traj_dir = os.path.join(self.opts.save_dir, "viz_traj.mp4")
|
378 |
return traj_dir
|
379 |
|
380 |
def run_gen(self,i2v_steps, i2v_seed):
|
381 |
self.opts.ddim_steps = i2v_steps
|
382 |
seed_everything(i2v_seed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
383 |
gen_dir = os.path.join(self.opts.save_dir, "diffusion0.mp4")
|
384 |
-
diffusion_results = self.run_diffusion(
|
385 |
save_video((diffusion_results + 1.0) / 2.0, os.path.join(self.opts.save_dir, 'diffusion0.mp4'))
|
386 |
return gen_dir
|
|
|
158 |
if self.opts.mode == 'single_view_txt':
|
159 |
if phi[-1]==0. and theta[-1]==0. and r[-1]==0.:
|
160 |
render_results[-1] = self.img_ori
|
161 |
+
# torch.Size([25, 576, 1024, 3]), [0,1]
|
|
|
|
|
162 |
# save_pointcloud_with_normals([imgs[-1]], [pcd[-1]], msk=None, save_path=os.path.join(self.opts.save_dir,'pcd0.ply') , mask_pc=False, reduce_pc=False)
|
163 |
# diffusion_results = self.run_diffusion(render_results)
|
164 |
# save_video((diffusion_results + 1.0) / 2.0, os.path.join(self.opts.save_dir, 'diffusion0.mp4'))
|
165 |
|
166 |
+
return render_results
|
167 |
|
168 |
def nvs_sparse_view(self,iter):
|
169 |
|
|
|
371 |
# self.img_ori: torch.Size([576, 1024, 3]), [0,1]
|
372 |
# self.images, self.img_ori = self.load_initial_images(image_dir=i2v_input_image)
|
373 |
self.run_dust3r(input_images=self.images)
|
374 |
+
render_results = self.nvs_single_view(gradio=True)
|
375 |
+
save_video(render_results, os.path.join(self.opts.save_dir, 'render0.mp4'))
|
376 |
traj_dir = os.path.join(self.opts.save_dir, "viz_traj.mp4")
|
377 |
return traj_dir
|
378 |
|
379 |
def run_gen(self,i2v_steps, i2v_seed):
|
380 |
self.opts.ddim_steps = i2v_steps
|
381 |
seed_everything(i2v_seed)
|
382 |
+
render_dir = os.path.join(self.opts.save_dir, 'render0.mp4')
|
383 |
+
video = imageio.get_reader(render_dir, 'ffmpeg')
|
384 |
+
frames = []
|
385 |
+
for frame in video:
|
386 |
+
frame = frame / 255.0
|
387 |
+
frames.append(frame)
|
388 |
+
frames = np.array(frames)
|
389 |
+
##torch.Size([25, 576, 1024, 3])
|
390 |
+
render_results = torch.from_numpy(frames).to(self.device).half()
|
391 |
+
|
392 |
gen_dir = os.path.join(self.opts.save_dir, "diffusion0.mp4")
|
393 |
+
diffusion_results = self.run_diffusion(render_results)
|
394 |
save_video((diffusion_results + 1.0) / 2.0, os.path.join(self.opts.save_dir, 'diffusion0.mp4'))
|
395 |
return gen_dir
|