Drexubery commited on
Commit
0f4ab2b
·
1 Parent(s): 58423c5
__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=1,debug=False)
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 None
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(self.render_results)
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