in process.py [0:0]
def pipeline(self, params):
self.extract_frames(params)
print_banner("Downscaling frames (raw)")
self.video.downscale_frames("color_down", params.size, "raw")
print_banner("Downscaling frames (png)")
self.video.downscale_frames("color_down_png", params.size, "png")
print_banner("Downscaling frames (for flow)")
self.video.downscale_frames("color_flow", Flow.max_size(), "png", align=64)
frame_range = FrameRange(
frame_range=params.frame_range.set, num_frames=self.video.frame_count,
)
frames = frame_range.frames()
print_banner("Compute initial depth")
ft = DepthFineTuner(self.out_dir, frames, params)
initial_depth_dir = pjoin(self.path, f"depth_{params.model_type}")
if not self.video.check_frames(pjoin(initial_depth_dir, "depth"), "raw"):
ft.save_depth(initial_depth_dir)
valid_frames = calibrate_scale(self.video, self.out_dir, frame_range, params)
# frame range for finetuning:
ft_frame_range = frame_range.intersection(OptionalSet(set(valid_frames)))
print("Filtered out frames",
sorted(set(frame_range.frames()) - set(ft_frame_range.frames())))
print_banner("Compute flow")
frame_pairs = sample_pairs(ft_frame_range, params.flow_ops)
self.flow.compute_flow(frame_pairs, params.flow_checkpoint)
print_banner("Compute flow masks")
self.flow.mask_valid_correspondences()
flow_list_path = self.flow.check_good_flow_pairs(
frame_pairs, params.overlap_ratio
)
shutil.copyfile(flow_list_path, pjoin(self.path, "flow_list.json"))
print_banner("Visualize flow")
self.flow.visualize_flow(warp=True)
print_banner("Fine-tuning")
ft.fine_tune(writer=self.writer)
print_banner("Compute final depth")
if not self.video.check_frames(pjoin(ft.out_dir, "depth"), "raw", frames):
ft.save_depth(ft.out_dir, frames)
if params.make_video:
print_banner("Export visualization videos")
self.make_videos(params, ft.out_dir)
return initial_depth_dir, ft.out_dir, frame_range.frames()