Spaces:
Configuration error
Configuration error
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
|