diff --git a/.gitignore b/.gitignore index 224c52ace855afc9cd961595a0514b0a1b0e88fd..d611b699f4192c614e5d105aaf4dc687de0a25bb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ .idea output -SuperSloMo.ckpt +#SuperSloMo.ckpt Test.mp4 Result_Test interpolated_frames @@ -14,4 +14,11 @@ result2.mp4 result3.mp4 result4.mp4 result5.mp4 -result6.mp4 \ No newline at end of file +result6.mp4 + + +**/__pycache__/ +.ropeproject/ +.gitattributes + +.venv diff --git a/main.py b/main.py index 2d82beadce83f96001ea8c8904a543556989f183..cefdb15fca7ab6b1144453357d31321543208709 100644 --- a/main.py +++ b/main.py @@ -1,82 +1,108 @@ -import cv2 -import torch -from model import UNet -from PIL import Image from torchvision.transforms import transforms, ToTensor -import torch.nn.functional as F +from torchvision.transforms import Resize from torch.cuda.amp import autocast -import os +import torch.nn.functional as F +from PIL import Image +import gradio as gr import subprocess -from torchvision.transforms import Resize +import os +import torch +import cv2 + +from model import UNet +from frames import extract_frames + + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + def save_frames(tensor, out_path) -> None: image = normalize_frames(tensor) image = Image.fromarray(image) image.save(out_path) + def normalize_frames(tensor): tensor = tensor.squeeze(0).detach().cpu() tensor = torch.clamp(tensor, 0.0, 1.0) # Ensure values are in [0, 1] tensor = (tensor * 255).byte() # Scale to [0, 255] - tensor = tensor.permute(1, 2, 0).numpy() # Convert to [H, W, C] height width channels + tensor = tensor.permute( + 1, 2, 0 + ).numpy() # Convert to [H, W, C] height width channels return tensor + + def laod_allframes(frame_dir): frames_path = sorted( - [os.path.join(frame_dir, f) for f in os.listdir(frame_dir) if f.endswith('.png')], - key=lambda x: int(os.path.splitext(os.path.basename(x))[0].split('_')[-1]) + [ + os.path.join(frame_dir, f) + for f in os.listdir(frame_dir) + if f.endswith(".png") + ], + key=lambda x: int(os.path.splitext(os.path.basename(x))[0].split("_")[-1]), ) print(frames_path) for frame_path in frames_path: yield load_frames(frame_path) -def load_frames(image_path)->torch.Tensor: - ''' + + +def load_frames(image_path) -> torch.Tensor: + """ Converts the PIL image(RGB) to a pytorch Tensor and loads into GPU :params image_path :return: pytorch tensor - ''' - transform = transforms.Compose([ - Resize((720,1280)), - ToTensor() - ]) + """ + transform = transforms.Compose([Resize((720, 1280)), ToTensor()]) img = Image.open(image_path).convert("RGB") tensor = transform(img).unsqueeze(0).to(device) return tensor + def time_steps(input_fps, output_fps) -> list[float]: - ''' + """ Generates Time intervals to interpolate between frames A and B :param input_fps: Video FPS(Original) :param output_fps: Target FPS(Output) :return: List of intermediate FPS required between 2 Frames A and B - ''' + """ if output_fps <= input_fps: return [] k = output_fps // input_fps n = k - 1 return [i / (n + 1) for i in range(1, n + 1)] -def interpolate_video(frames_dir,model_fc,input_fps,ouput_fps,output_dir): + + +def interpolate_video(frames_dir, model_fc, input_fps, ouput_fps, output_dir): os.makedirs(output_dir, exist_ok=True) - count=0 - iterator=laod_allframes(frames_dir) + count = 0 + iterator = laod_allframes(frames_dir) try: - prev_frame=next(iterator) + prev_frame = next(iterator) for curr_frame in iterator: - interpolated_frames=interpolate(model_fc,prev_frame,curr_frame,input_fps,ouput_fps) - save_frames(prev_frame,os.path.join(output_dir,"frame_{}.png".format(count))) - count+=1 + interpolated_frames = interpolate( + model_fc, prev_frame, curr_frame, input_fps, ouput_fps + ) + save_frames( + prev_frame, os.path.join(output_dir, "frame_{}.png".format(count)) + ) + count += 1 for frame in interpolated_frames: - save_frames(frame[:,:3,:,:],os.path.join(output_dir,"frame_{}.png".format(count))) - count+=1 - prev_frame=curr_frame - save_frames(prev_frame,os.path.join(output_dir,"frame_{}.png".format(count))) + save_frames( + frame[:, :3, :, :], + os.path.join(output_dir, "frame_{}.png".format(count)), + ) + count += 1 + prev_frame = curr_frame + save_frames(prev_frame, os.path.join(output_dir, "frame_{}.png".format(count))) except StopIteration: print("no more Frames") -def interpolate(model_FC, A, B, input_fps, output_fps)-> list[torch.Tensor]: +def interpolate(model_FC, A, B, input_fps, output_fps) -> list[torch.Tensor]: interval = time_steps(input_fps, output_fps) - input_tensor = torch.cat((A, B), dim=1) # Concatenate Frame A and B to Compare difference + input_tensor = torch.cat( + (A, B), dim=1 + ) # Concatenate Frame A and B to Compare difference with torch.no_grad(): flow_output = model_FC(input_tensor) flow_forward = flow_output[:, :2, :, :] # Forward flow @@ -84,7 +110,9 @@ def interpolate(model_FC, A, B, input_fps, output_fps)-> list[torch.Tensor]: generated_frames = [] with torch.no_grad(): for t in interval: - t_tensor = torch.tensor([t], dtype=torch.float32).view(1, 1, 1, 1).to(device) + t_tensor = ( + torch.tensor([t], dtype=torch.float32).view(1, 1, 1, 1).to(device) + ) with autocast(): warped_A = warp_frames(A, flow_forward * t_tensor) warped_B = warp_frames(B, flow_backward * (1 - t_tensor)) @@ -92,12 +120,17 @@ def interpolate(model_FC, A, B, input_fps, output_fps)-> list[torch.Tensor]: generated_frames.append(interpolated_frame) return generated_frames + def warp_frames(frame, flow): b, c, h, w = frame.size() - i,j,flow_h, flow_w = flow.size() + i, j, flow_h, flow_w = flow.size() if h != flow_h or w != flow_w: - frame = F.interpolate(frame, size=(flow_h, flow_w), mode='bilinear', align_corners=True) - grid_y, grid_x = torch.meshgrid(torch.arange(0, flow_h), torch.arange(0, flow_w), indexing="ij") + frame = F.interpolate( + frame, size=(flow_h, flow_w), mode="bilinear", align_corners=True + ) + grid_y, grid_x = torch.meshgrid( + torch.arange(0, flow_h), torch.arange(0, flow_w), indexing="ij" + ) grid_x = grid_x.float().to(device) grid_y = grid_y.float().to(device) flow_x = flow[:, 0, :, :] @@ -108,39 +141,99 @@ def warp_frames(frame, flow): y = 2.0 * y / (flow_h - 1) - 1.0 grid = torch.stack((x, y), dim=-1) - warped_frame = F.grid_sample(frame, grid, align_corners=True,mode='bilinear', padding_mode='border') + warped_frame = F.grid_sample( + frame, grid, align_corners=True, mode="bilinear", padding_mode="border" + ) return warped_frame -def frames_to_video(frame_dir,output_video,fps): + + +def frames_to_video(frame_dir, output_video, fps): frame_files = sorted( - [f for f in os.listdir(frame_dir) if f.endswith('.png')], - key=lambda x: int(os.path.splitext(x)[0].split('_')[-1]) + [f for f in os.listdir(frame_dir) if f.endswith(".png")], + key=lambda x: int(os.path.splitext(x)[0].split("_")[-1]), ) print(frame_files) for i, frame in enumerate(frame_files): - os.rename(os.path.join(frame_dir, frame), os.path.join(frame_dir, f"frame_{i}.png")) + os.rename( + os.path.join(frame_dir, frame), os.path.join(frame_dir, f"frame_{i}.png") + ) frame_pattern = os.path.join(frame_dir, "frame_%d.png") - subprocess.run([ # run shell command - "ffmpeg", "-framerate", str(fps), "-i", frame_pattern, - "-c:v", "libx264", "-pix_fmt", "yuv420p", output_video - ],check=True) -def solve(): - checkpoint = torch.load("SuperSloMo.ckpt") - model_FC = UNet(6, 4).to(device) # Initialize flow computation model - model_FC.load_state_dict(checkpoint["state_dictFC"]) # Load weights + subprocess.run( + [ # run shell command + "ffmpeg", + "-framerate", + str(fps), + "-i", + frame_pattern, + "-c:v", + "libx264", + "-pix_fmt", + "yuv420p", + output_video, + ], + check=True, + ) + + +# def solve(): +# checkpoint = torch.load("SuperSloMo.ckpt") +# model_FC = UNet(6, 4).to(device) # Initialize flow computation model +# model_FC.load_state_dict(checkpoint["state_dictFC"]) # Load weights +# model_FC.eval() +# model_AT = UNet(20, 5).to(device) # Initialize auxiliary task model +# model_AT.load_state_dict(checkpoint["state_dictAT"], strict=False) # Load weights +# model_AT.eval() +# frames_dir = "output" +# input_fps = 59 +# output_fps = 120 +# output_dir = "interpolated_frames2" +# interpolate_video(frames_dir, model_FC, input_fps, output_fps, output_dir) +# final_video = "result6.mp4" +# frames_to_video(output_dir, final_video, output_fps) + + +# def main(): +# solve() + + +# if __name__ == "__main__": +# main() + + +def process_video(video_path, output_fps): + # Ensure the output directory for frames exists + input_fps = extract_frames(video_path, "output_frames") + + # Load model + model_FC = UNet(6, 4).to(device) + checkpoint = torch.load("SuperSloMo.ckpt", map_location=device) + model_FC.load_state_dict(checkpoint["state_dictFC"]) model_FC.eval() - model_AT = UNet(20, 5).to(device) # Initialize auxiliary task model - model_AT.load_state_dict(checkpoint["state_dictAT"], strict=False) # Load weights - model_AT.eval() - frames_dir="output" - input_fps=59 - output_fps=120 - output_dir="interpolated_frames2" - interpolate_video(frames_dir,model_FC,input_fps,output_fps,output_dir) - final_video="result6.mp4" - frames_to_video(output_dir,final_video,output_fps) - -def main(): - solve() + + # Interpolate video + output_dir = "interpolated_frames" + interpolate_video("output_frames", model_FC, input_fps, output_fps, output_dir) + + # Generate output video + final_video_path = "result.mp4" + frames_to_video(output_dir, final_video_path, output_fps) + + return final_video_path # Return the output video file path + + +interface = gr.Interface( + fn=process_video, + inputs=[ + gr.Video(label="Upload Input Video"), # No 'type' argument required + gr.Slider( + minimum=30, maximum=120, step=1, value=60, label="Desired Output FPS" + ), + ], + outputs=gr.Video(label="Output Interpolated Video"), + title="Video Frame Interpolation with SuperSloMo", + description="This application allows you to input a video and increase its frame rate by interpolation using a deep learning model.", +) + if __name__ == "__main__": - main() + interface.launch() # Starts the Gradio interface diff --git a/output_frames/frame_0.png b/output_frames/frame_0.png new file mode 100644 index 0000000000000000000000000000000000000000..203c7a395ac673429630c5156bfea7c13e2bc4a5 Binary files /dev/null and b/output_frames/frame_0.png differ diff --git a/output_frames/frame_1.png b/output_frames/frame_1.png new file mode 100644 index 0000000000000000000000000000000000000000..19e1827243df8a6f3e35aa1a73aab4cda78e5505 Binary files /dev/null and b/output_frames/frame_1.png differ diff --git a/output_frames/frame_10.png b/output_frames/frame_10.png new file mode 100644 index 0000000000000000000000000000000000000000..aaafb57d218ba65de014587bb3755ce954dff5d5 Binary files /dev/null and b/output_frames/frame_10.png differ diff --git a/output_frames/frame_100.png b/output_frames/frame_100.png new file mode 100644 index 0000000000000000000000000000000000000000..905a15d2562281c60f61447fa6a00ebe959b0559 Binary files /dev/null and b/output_frames/frame_100.png differ diff --git a/output_frames/frame_101.png b/output_frames/frame_101.png new file mode 100644 index 0000000000000000000000000000000000000000..5f10223d2892c7bcb198e99115945650c466d23e Binary files /dev/null and b/output_frames/frame_101.png differ diff --git a/output_frames/frame_102.png b/output_frames/frame_102.png new file mode 100644 index 0000000000000000000000000000000000000000..e40655a6ef4e410bf1cc854e257218c419b28e61 Binary files /dev/null and b/output_frames/frame_102.png differ diff --git a/output_frames/frame_103.png b/output_frames/frame_103.png new file mode 100644 index 0000000000000000000000000000000000000000..de2bf6e3f4dd975525a285d01e86edb8aedfa5d1 Binary files /dev/null and b/output_frames/frame_103.png differ diff --git a/output_frames/frame_104.png b/output_frames/frame_104.png new file mode 100644 index 0000000000000000000000000000000000000000..06b477a76a98ba0b5087138a86b2973ed030e6a3 Binary files /dev/null and b/output_frames/frame_104.png differ diff --git a/output_frames/frame_105.png b/output_frames/frame_105.png new file mode 100644 index 0000000000000000000000000000000000000000..1a11bafd60158a7c19a256db31c28d66a5f2038f Binary files /dev/null and b/output_frames/frame_105.png differ diff --git a/output_frames/frame_106.png b/output_frames/frame_106.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e0e8bae5ac0102935f00324387eab1f6743bfd Binary files /dev/null and b/output_frames/frame_106.png differ diff --git a/output_frames/frame_107.png b/output_frames/frame_107.png new file mode 100644 index 0000000000000000000000000000000000000000..e6f02adccf1bb6218b2c98c5a1e26854851c546d Binary files /dev/null and b/output_frames/frame_107.png differ diff --git a/output_frames/frame_108.png b/output_frames/frame_108.png new file mode 100644 index 0000000000000000000000000000000000000000..a2012f1f434f01645b5a948c50102c461617707a Binary files /dev/null and b/output_frames/frame_108.png differ diff --git a/output_frames/frame_109.png b/output_frames/frame_109.png new file mode 100644 index 0000000000000000000000000000000000000000..1952cd4fbe5ac8d58e34af4bb532fec7b816c93f Binary files /dev/null and b/output_frames/frame_109.png differ diff --git a/output_frames/frame_11.png b/output_frames/frame_11.png new file mode 100644 index 0000000000000000000000000000000000000000..abc38f022265172a47abcce06a82d9c27cff72e7 Binary files /dev/null and b/output_frames/frame_11.png differ diff --git a/output_frames/frame_110.png b/output_frames/frame_110.png new file mode 100644 index 0000000000000000000000000000000000000000..475c9a0ed13a61702141afa7a1a719470c624d55 Binary files /dev/null and b/output_frames/frame_110.png differ diff --git a/output_frames/frame_111.png b/output_frames/frame_111.png new file mode 100644 index 0000000000000000000000000000000000000000..9c79f9ee202a3354c05b3d96d84419f821b2707c Binary files /dev/null and b/output_frames/frame_111.png differ diff --git a/output_frames/frame_112.png b/output_frames/frame_112.png new file mode 100644 index 0000000000000000000000000000000000000000..16e3ed599d4f5bc0727bef3d044cb2e149d548d2 Binary files /dev/null and b/output_frames/frame_112.png differ diff --git a/output_frames/frame_113.png b/output_frames/frame_113.png new file mode 100644 index 0000000000000000000000000000000000000000..6f87cac3f666540c12bce9a835394864f65ce8c1 Binary files /dev/null and b/output_frames/frame_113.png differ diff --git a/output_frames/frame_114.png b/output_frames/frame_114.png new file mode 100644 index 0000000000000000000000000000000000000000..2fe08330a9fd925fde08bd25ecc6c6cdd68b93c1 Binary files /dev/null and b/output_frames/frame_114.png differ diff --git a/output_frames/frame_115.png b/output_frames/frame_115.png new file mode 100644 index 0000000000000000000000000000000000000000..11b5af587d521bd20304c5b6e165d13d47cab440 Binary files /dev/null and b/output_frames/frame_115.png differ diff --git a/output_frames/frame_116.png b/output_frames/frame_116.png new file mode 100644 index 0000000000000000000000000000000000000000..444dd63b8b718e771951c1f825a8fc8428663d47 Binary files /dev/null and b/output_frames/frame_116.png differ diff --git a/output_frames/frame_117.png b/output_frames/frame_117.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b3e3bc21f8ace655bceca5b23b9d2299533f9b Binary files /dev/null and b/output_frames/frame_117.png differ diff --git a/output_frames/frame_118.png b/output_frames/frame_118.png new file mode 100644 index 0000000000000000000000000000000000000000..ba572db6f96b566a70eb26c1741115aaf133541c Binary files /dev/null and b/output_frames/frame_118.png differ diff --git a/output_frames/frame_119.png b/output_frames/frame_119.png new file mode 100644 index 0000000000000000000000000000000000000000..e8fce007525c6d84569ecc12ea79c6e344112108 Binary files /dev/null and b/output_frames/frame_119.png differ diff --git a/output_frames/frame_12.png b/output_frames/frame_12.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe7c9332c8da9b0e60e3ba75bef08bb4befa642 Binary files /dev/null and b/output_frames/frame_12.png differ diff --git a/output_frames/frame_120.png b/output_frames/frame_120.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5b984fc960037902e1d4fec17e33326bb24130 Binary files /dev/null and b/output_frames/frame_120.png differ diff --git a/output_frames/frame_13.png b/output_frames/frame_13.png new file mode 100644 index 0000000000000000000000000000000000000000..a0df234956869bebce6f52e04484ca2120cb7a28 Binary files /dev/null and b/output_frames/frame_13.png differ diff --git a/output_frames/frame_14.png b/output_frames/frame_14.png new file mode 100644 index 0000000000000000000000000000000000000000..f088e6e9a6c96f564abb46411ae6f5db4bccb10a Binary files /dev/null and b/output_frames/frame_14.png differ diff --git a/output_frames/frame_15.png b/output_frames/frame_15.png new file mode 100644 index 0000000000000000000000000000000000000000..c93a26f87b85d1c29556663c8ec8b8ff9a792609 Binary files /dev/null and b/output_frames/frame_15.png differ diff --git a/output_frames/frame_16.png b/output_frames/frame_16.png new file mode 100644 index 0000000000000000000000000000000000000000..58adf8d1d52fb11a0b7c76d0915f2067e87fe266 Binary files /dev/null and b/output_frames/frame_16.png differ diff --git a/output_frames/frame_17.png b/output_frames/frame_17.png new file mode 100644 index 0000000000000000000000000000000000000000..414b0f14416d5de4b1a9a31be28dbb55d7bad48c Binary files /dev/null and b/output_frames/frame_17.png differ diff --git a/output_frames/frame_18.png b/output_frames/frame_18.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4546bf1cff2bea98c4d59f8c2ab99fc394ba03 Binary files /dev/null and b/output_frames/frame_18.png differ diff --git a/output_frames/frame_19.png b/output_frames/frame_19.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ef308632e8a4d2267540a1702d711378528d1d Binary files /dev/null and b/output_frames/frame_19.png differ diff --git a/output_frames/frame_2.png b/output_frames/frame_2.png new file mode 100644 index 0000000000000000000000000000000000000000..040a27b40272ed00c7c9e1d2f0325455b510bc39 Binary files /dev/null and b/output_frames/frame_2.png differ diff --git a/output_frames/frame_20.png b/output_frames/frame_20.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d339f3d9c39d48997a95f287858a6479368db7 Binary files /dev/null and b/output_frames/frame_20.png differ diff --git a/output_frames/frame_21.png b/output_frames/frame_21.png new file mode 100644 index 0000000000000000000000000000000000000000..a954209fb7f329fbc405de902e713ddf13cd7d68 Binary files /dev/null and b/output_frames/frame_21.png differ diff --git a/output_frames/frame_22.png b/output_frames/frame_22.png new file mode 100644 index 0000000000000000000000000000000000000000..340b92dccf567d6ca7a31242527ea4c0e48a4727 Binary files /dev/null and b/output_frames/frame_22.png differ diff --git a/output_frames/frame_23.png b/output_frames/frame_23.png new file mode 100644 index 0000000000000000000000000000000000000000..851a485b56b71d468fd4fb150810c15f4fc0996f Binary files /dev/null and b/output_frames/frame_23.png differ diff --git a/output_frames/frame_24.png b/output_frames/frame_24.png new file mode 100644 index 0000000000000000000000000000000000000000..3afaf392213d545daaae044849b7f2e3689700fd Binary files /dev/null and b/output_frames/frame_24.png differ diff --git a/output_frames/frame_25.png b/output_frames/frame_25.png new file mode 100644 index 0000000000000000000000000000000000000000..b46a1419c5cab5fc8ca27311e387a8847e6f6459 Binary files /dev/null and b/output_frames/frame_25.png differ diff --git a/output_frames/frame_26.png b/output_frames/frame_26.png new file mode 100644 index 0000000000000000000000000000000000000000..c1957c6432529692e087bc66d13eec0475dae000 Binary files /dev/null and b/output_frames/frame_26.png differ diff --git a/output_frames/frame_27.png b/output_frames/frame_27.png new file mode 100644 index 0000000000000000000000000000000000000000..11b003dd84bddfb895e7baa902eda0e21433a7f6 Binary files /dev/null and b/output_frames/frame_27.png differ diff --git a/output_frames/frame_28.png b/output_frames/frame_28.png new file mode 100644 index 0000000000000000000000000000000000000000..013600506f46d8e57f8ccc25b79cba83e1eeb8e6 Binary files /dev/null and b/output_frames/frame_28.png differ diff --git a/output_frames/frame_29.png b/output_frames/frame_29.png new file mode 100644 index 0000000000000000000000000000000000000000..80237630803dadd671f94aade2c5b8971941fb30 Binary files /dev/null and b/output_frames/frame_29.png differ diff --git a/output_frames/frame_3.png b/output_frames/frame_3.png new file mode 100644 index 0000000000000000000000000000000000000000..213c2136e7895c9d2c72d556f5f7612fe825109f Binary files /dev/null and b/output_frames/frame_3.png differ diff --git a/output_frames/frame_30.png b/output_frames/frame_30.png new file mode 100644 index 0000000000000000000000000000000000000000..06d9e9f5a569bfa91bd7fb2da6e2371197d9a7e6 Binary files /dev/null and b/output_frames/frame_30.png differ diff --git a/output_frames/frame_31.png b/output_frames/frame_31.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2214b3148309bec4480364b08b50674fbeb0af Binary files /dev/null and b/output_frames/frame_31.png differ diff --git a/output_frames/frame_32.png b/output_frames/frame_32.png new file mode 100644 index 0000000000000000000000000000000000000000..f2146b1904a572cd77a49b91e3db0663b14ad9f2 Binary files /dev/null and b/output_frames/frame_32.png differ diff --git a/output_frames/frame_33.png b/output_frames/frame_33.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4afc907c8ce85d2af0a119402e63619e7742c4 Binary files /dev/null and b/output_frames/frame_33.png differ diff --git a/output_frames/frame_34.png b/output_frames/frame_34.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0d41cf9b6dd126c7ca004835b45a24c7a84760 Binary files /dev/null and b/output_frames/frame_34.png differ diff --git a/output_frames/frame_35.png b/output_frames/frame_35.png new file mode 100644 index 0000000000000000000000000000000000000000..db61127ba9bcf477e41cd8ce23c9b6f4ec7ffe16 Binary files /dev/null and b/output_frames/frame_35.png differ diff --git a/output_frames/frame_36.png b/output_frames/frame_36.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa8d95ef5f3653fc9bb64e8bdfb592d68876d8d Binary files /dev/null and b/output_frames/frame_36.png differ diff --git a/output_frames/frame_37.png b/output_frames/frame_37.png new file mode 100644 index 0000000000000000000000000000000000000000..6b9bd114da105bcf952a7be575b168b00796fc9f Binary files /dev/null and b/output_frames/frame_37.png differ diff --git a/output_frames/frame_38.png b/output_frames/frame_38.png new file mode 100644 index 0000000000000000000000000000000000000000..663ed62877ba31bef862675cf25960b27397dbf5 Binary files /dev/null and b/output_frames/frame_38.png differ diff --git a/output_frames/frame_39.png b/output_frames/frame_39.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9989677f0dc96bbc33d3e5183178c8082d0ecc Binary files /dev/null and b/output_frames/frame_39.png differ diff --git a/output_frames/frame_4.png b/output_frames/frame_4.png new file mode 100644 index 0000000000000000000000000000000000000000..08fc829bd3fd7af7e07a0ef56cb123fcbf4d80cc Binary files /dev/null and b/output_frames/frame_4.png differ diff --git a/output_frames/frame_40.png b/output_frames/frame_40.png new file mode 100644 index 0000000000000000000000000000000000000000..68955f3fd88c4760ad1f2bcc304143a78483ec98 Binary files /dev/null and b/output_frames/frame_40.png differ diff --git a/output_frames/frame_41.png b/output_frames/frame_41.png new file mode 100644 index 0000000000000000000000000000000000000000..a58044221e5a13897f988ca8dffa2c74c17905fc Binary files /dev/null and b/output_frames/frame_41.png differ diff --git a/output_frames/frame_42.png b/output_frames/frame_42.png new file mode 100644 index 0000000000000000000000000000000000000000..7153b21d4b68fd3f8890530880722ae3e8c619d7 Binary files /dev/null and b/output_frames/frame_42.png differ diff --git a/output_frames/frame_43.png b/output_frames/frame_43.png new file mode 100644 index 0000000000000000000000000000000000000000..0ebbc8072a56c038233d6a4153823b1ee725acf1 Binary files /dev/null and b/output_frames/frame_43.png differ diff --git a/output_frames/frame_44.png b/output_frames/frame_44.png new file mode 100644 index 0000000000000000000000000000000000000000..5887625f6eae62d7e0a1c11351ace55da6a9421d Binary files /dev/null and b/output_frames/frame_44.png differ diff --git a/output_frames/frame_45.png b/output_frames/frame_45.png new file mode 100644 index 0000000000000000000000000000000000000000..32fb6b7f92a0ac09d4be95e7d8da28154aabe4dd Binary files /dev/null and b/output_frames/frame_45.png differ diff --git a/output_frames/frame_46.png b/output_frames/frame_46.png new file mode 100644 index 0000000000000000000000000000000000000000..4f2566e9f5a36be94f2a6dea4c522602a10bd5e2 Binary files /dev/null and b/output_frames/frame_46.png differ diff --git a/output_frames/frame_47.png b/output_frames/frame_47.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6fe4da2f40aa66f14c36f1d89cf111b1fce22a Binary files /dev/null and b/output_frames/frame_47.png differ diff --git a/output_frames/frame_48.png b/output_frames/frame_48.png new file mode 100644 index 0000000000000000000000000000000000000000..f2bb6803c7ddce7420e5e882762cebc50d4ea3da Binary files /dev/null and b/output_frames/frame_48.png differ diff --git a/output_frames/frame_49.png b/output_frames/frame_49.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea0afcf10e100b51501e34defe0778518023cd4 Binary files /dev/null and b/output_frames/frame_49.png differ diff --git a/output_frames/frame_5.png b/output_frames/frame_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a1539cd0b5d6e854cf166e157e9d59b365aaa632 Binary files /dev/null and b/output_frames/frame_5.png differ diff --git a/output_frames/frame_50.png b/output_frames/frame_50.png new file mode 100644 index 0000000000000000000000000000000000000000..80e22863500ed5ab129a27391b91061b3f2cec7e Binary files /dev/null and b/output_frames/frame_50.png differ diff --git a/output_frames/frame_51.png b/output_frames/frame_51.png new file mode 100644 index 0000000000000000000000000000000000000000..6ba2731e1709a90c2092ace32a647d9dc67bbc33 Binary files /dev/null and b/output_frames/frame_51.png differ diff --git a/output_frames/frame_52.png b/output_frames/frame_52.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e3137e4636ac8b64ef326929c3571fb96cda42 Binary files /dev/null and b/output_frames/frame_52.png differ diff --git a/output_frames/frame_53.png b/output_frames/frame_53.png new file mode 100644 index 0000000000000000000000000000000000000000..a3534c76fc74f811b39f316483e51eb2595a8254 Binary files /dev/null and b/output_frames/frame_53.png differ diff --git a/output_frames/frame_54.png b/output_frames/frame_54.png new file mode 100644 index 0000000000000000000000000000000000000000..a16a852a24f4d01ff4b895fb2c4df97f54f8ccf9 Binary files /dev/null and b/output_frames/frame_54.png differ diff --git a/output_frames/frame_55.png b/output_frames/frame_55.png new file mode 100644 index 0000000000000000000000000000000000000000..2a649e02b2a9c75bc3ef7716a37c044af3bca58f Binary files /dev/null and b/output_frames/frame_55.png differ diff --git a/output_frames/frame_56.png b/output_frames/frame_56.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd55b16445becd932fd9a093a0e767f9117a3ee Binary files /dev/null and b/output_frames/frame_56.png differ diff --git a/output_frames/frame_57.png b/output_frames/frame_57.png new file mode 100644 index 0000000000000000000000000000000000000000..ce28e9277979fe93cb05fc6b265335341fbb61dc Binary files /dev/null and b/output_frames/frame_57.png differ diff --git a/output_frames/frame_58.png b/output_frames/frame_58.png new file mode 100644 index 0000000000000000000000000000000000000000..f29f0cc9ec4c39e93f76d4cabcea92c9945798d6 Binary files /dev/null and b/output_frames/frame_58.png differ diff --git a/output_frames/frame_59.png b/output_frames/frame_59.png new file mode 100644 index 0000000000000000000000000000000000000000..b6455c28bb73fb30fa3ceef8486fed4f361a4282 Binary files /dev/null and b/output_frames/frame_59.png differ diff --git a/output_frames/frame_6.png b/output_frames/frame_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a775044c8b89d922f7a0fc3821f23cbc5e958191 Binary files /dev/null and b/output_frames/frame_6.png differ diff --git a/output_frames/frame_60.png b/output_frames/frame_60.png new file mode 100644 index 0000000000000000000000000000000000000000..fea598fa252f382197311b592a9082238da0db49 Binary files /dev/null and b/output_frames/frame_60.png differ diff --git a/output_frames/frame_61.png b/output_frames/frame_61.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc9e6ea0b02fc1fad1643f6c78b39bf1a658f08 Binary files /dev/null and b/output_frames/frame_61.png differ diff --git a/output_frames/frame_62.png b/output_frames/frame_62.png new file mode 100644 index 0000000000000000000000000000000000000000..56f41428597c6c0de96a99a8d707b360b93360bc Binary files /dev/null and b/output_frames/frame_62.png differ diff --git a/output_frames/frame_63.png b/output_frames/frame_63.png new file mode 100644 index 0000000000000000000000000000000000000000..7204f2b28fccbc478db24c6cff954acaefc7a038 Binary files /dev/null and b/output_frames/frame_63.png differ diff --git a/output_frames/frame_64.png b/output_frames/frame_64.png new file mode 100644 index 0000000000000000000000000000000000000000..168de3c28d7fe60a9f38f29e9bf7526dac13469a Binary files /dev/null and b/output_frames/frame_64.png differ diff --git a/output_frames/frame_65.png b/output_frames/frame_65.png new file mode 100644 index 0000000000000000000000000000000000000000..51c52844d9208f59989e98434e63d2d66fd7ace5 Binary files /dev/null and b/output_frames/frame_65.png differ diff --git a/output_frames/frame_66.png b/output_frames/frame_66.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ef7f3a907e81c9c2af73245ba5723c8166d661 Binary files /dev/null and b/output_frames/frame_66.png differ diff --git a/output_frames/frame_67.png b/output_frames/frame_67.png new file mode 100644 index 0000000000000000000000000000000000000000..cc6c881670d527bfc6983b6d34a61577c9e020df Binary files /dev/null and b/output_frames/frame_67.png differ diff --git a/output_frames/frame_68.png b/output_frames/frame_68.png new file mode 100644 index 0000000000000000000000000000000000000000..73d0dea99b63951611f750cf3a44648346e928fe Binary files /dev/null and b/output_frames/frame_68.png differ diff --git a/output_frames/frame_69.png b/output_frames/frame_69.png new file mode 100644 index 0000000000000000000000000000000000000000..0fee3f27c0ad1f469154a965bde71a109c1e64fc Binary files /dev/null and b/output_frames/frame_69.png differ diff --git a/output_frames/frame_7.png b/output_frames/frame_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0eec5ded30765784c355fdd5335069e47a1c42 Binary files /dev/null and b/output_frames/frame_7.png differ diff --git a/output_frames/frame_70.png b/output_frames/frame_70.png new file mode 100644 index 0000000000000000000000000000000000000000..7089ea80265baa04fc5e3e2967e9f0dc2629c117 Binary files /dev/null and b/output_frames/frame_70.png differ diff --git a/output_frames/frame_71.png b/output_frames/frame_71.png new file mode 100644 index 0000000000000000000000000000000000000000..3597ab36e76a7186277497388f1342baf39258cd Binary files /dev/null and b/output_frames/frame_71.png differ diff --git a/output_frames/frame_72.png b/output_frames/frame_72.png new file mode 100644 index 0000000000000000000000000000000000000000..fdded56bf0e574e12500bcb0992413402cf877d5 Binary files /dev/null and b/output_frames/frame_72.png differ diff --git a/output_frames/frame_73.png b/output_frames/frame_73.png new file mode 100644 index 0000000000000000000000000000000000000000..5b1bd0226faf8bdf03de77259a31e9b701fe3aaa Binary files /dev/null and b/output_frames/frame_73.png differ diff --git a/output_frames/frame_74.png b/output_frames/frame_74.png new file mode 100644 index 0000000000000000000000000000000000000000..12befbde5159b3ef5cea88c7fdf4179ee6d667a2 Binary files /dev/null and b/output_frames/frame_74.png differ diff --git a/output_frames/frame_75.png b/output_frames/frame_75.png new file mode 100644 index 0000000000000000000000000000000000000000..19bca2e0636580ae552827f7e599bd5a708dc33e Binary files /dev/null and b/output_frames/frame_75.png differ diff --git a/output_frames/frame_76.png b/output_frames/frame_76.png new file mode 100644 index 0000000000000000000000000000000000000000..37655584e1d8a81f5308b054db686b90d609cd64 Binary files /dev/null and b/output_frames/frame_76.png differ diff --git a/output_frames/frame_77.png b/output_frames/frame_77.png new file mode 100644 index 0000000000000000000000000000000000000000..553da6691950faa53764f5c279135544090ff93e Binary files /dev/null and b/output_frames/frame_77.png differ diff --git a/output_frames/frame_78.png b/output_frames/frame_78.png new file mode 100644 index 0000000000000000000000000000000000000000..559c8e3f1508bb380b32773a84765ec9dbb111cb Binary files /dev/null and b/output_frames/frame_78.png differ diff --git a/output_frames/frame_79.png b/output_frames/frame_79.png new file mode 100644 index 0000000000000000000000000000000000000000..4536bfc6ff52ebd39e994b8227aa14ae9f87b039 Binary files /dev/null and b/output_frames/frame_79.png differ diff --git a/output_frames/frame_8.png b/output_frames/frame_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2db99095d8ac1d77b13e494cdbc035543adc9f05 Binary files /dev/null and b/output_frames/frame_8.png differ diff --git a/output_frames/frame_80.png b/output_frames/frame_80.png new file mode 100644 index 0000000000000000000000000000000000000000..6e114c92c1745e7cbfbc18584b50fe32c42509a5 Binary files /dev/null and b/output_frames/frame_80.png differ diff --git a/output_frames/frame_81.png b/output_frames/frame_81.png new file mode 100644 index 0000000000000000000000000000000000000000..de3fd6813ab15ebd61322f42ece7aff85e29534f Binary files /dev/null and b/output_frames/frame_81.png differ diff --git a/output_frames/frame_82.png b/output_frames/frame_82.png new file mode 100644 index 0000000000000000000000000000000000000000..050c0bbb32113424027a37f63cc2536281421fb5 Binary files /dev/null and b/output_frames/frame_82.png differ diff --git a/output_frames/frame_83.png b/output_frames/frame_83.png new file mode 100644 index 0000000000000000000000000000000000000000..227d6b67ed95c465314a6fa921f184401a7a4d49 Binary files /dev/null and b/output_frames/frame_83.png differ diff --git a/output_frames/frame_84.png b/output_frames/frame_84.png new file mode 100644 index 0000000000000000000000000000000000000000..aac9164b30f37a76424404d37358c290962574ef Binary files /dev/null and b/output_frames/frame_84.png differ diff --git a/output_frames/frame_85.png b/output_frames/frame_85.png new file mode 100644 index 0000000000000000000000000000000000000000..56ad1f9cdbbb7a3a1c2c346fe4e940f6ec562e0d Binary files /dev/null and b/output_frames/frame_85.png differ diff --git a/output_frames/frame_86.png b/output_frames/frame_86.png new file mode 100644 index 0000000000000000000000000000000000000000..4dac024b8edc837c4c2b860fdf549db188288d41 Binary files /dev/null and b/output_frames/frame_86.png differ diff --git a/output_frames/frame_87.png b/output_frames/frame_87.png new file mode 100644 index 0000000000000000000000000000000000000000..7acc240a519d966f89d682c99a02494dc5f616a7 Binary files /dev/null and b/output_frames/frame_87.png differ diff --git a/output_frames/frame_88.png b/output_frames/frame_88.png new file mode 100644 index 0000000000000000000000000000000000000000..78282c02065cca6752591589b37cccedd5ca57c8 Binary files /dev/null and b/output_frames/frame_88.png differ diff --git a/output_frames/frame_89.png b/output_frames/frame_89.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b7ed4a1470a855159337a806daf4c9ecf4c565 Binary files /dev/null and b/output_frames/frame_89.png differ diff --git a/output_frames/frame_9.png b/output_frames/frame_9.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3daad18cf80d105342130b4b35e227cc31616e Binary files /dev/null and b/output_frames/frame_9.png differ diff --git a/output_frames/frame_90.png b/output_frames/frame_90.png new file mode 100644 index 0000000000000000000000000000000000000000..fa5eb0fc75b007908e3e36e7a188789b93d31c7c Binary files /dev/null and b/output_frames/frame_90.png differ diff --git a/output_frames/frame_91.png b/output_frames/frame_91.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c9532dd720d850e16cc81585e00a86ad1039be Binary files /dev/null and b/output_frames/frame_91.png differ diff --git a/output_frames/frame_92.png b/output_frames/frame_92.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e91aa15e49e2df1187eee46ad6fad867dc6220 Binary files /dev/null and b/output_frames/frame_92.png differ diff --git a/output_frames/frame_93.png b/output_frames/frame_93.png new file mode 100644 index 0000000000000000000000000000000000000000..5bacb32213afb5cfffa9ef2495902b1e12a67a66 Binary files /dev/null and b/output_frames/frame_93.png differ diff --git a/output_frames/frame_94.png b/output_frames/frame_94.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe05a235f8f9812ec4892d79fa102ffac8ffef3 Binary files /dev/null and b/output_frames/frame_94.png differ diff --git a/output_frames/frame_95.png b/output_frames/frame_95.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef2911fe78b468187697862aa93b3632db815b6 Binary files /dev/null and b/output_frames/frame_95.png differ diff --git a/output_frames/frame_96.png b/output_frames/frame_96.png new file mode 100644 index 0000000000000000000000000000000000000000..c09675a67c484e1a4c9d9d069209f6679fcee4fc Binary files /dev/null and b/output_frames/frame_96.png differ diff --git a/output_frames/frame_97.png b/output_frames/frame_97.png new file mode 100644 index 0000000000000000000000000000000000000000..9140c26868777ba3c20d517ef7e34d8c2c15b155 Binary files /dev/null and b/output_frames/frame_97.png differ diff --git a/output_frames/frame_98.png b/output_frames/frame_98.png new file mode 100644 index 0000000000000000000000000000000000000000..4c63d78c03a27606d1f9fe07a5f91dedb50296d0 Binary files /dev/null and b/output_frames/frame_98.png differ diff --git a/output_frames/frame_99.png b/output_frames/frame_99.png new file mode 100644 index 0000000000000000000000000000000000000000..7cafa6f9144655309f41386a64f36978067a02da Binary files /dev/null and b/output_frames/frame_99.png differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..2bd591a1c151ba4707b6e3b3280025b363cb3cb2 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,71 @@ +aiofiles==23.2.1 +annotated-types==0.7.0 +anyio==4.7.0 +certifi==2024.8.30 +charset-normalizer==3.4.0 +click==8.1.7 +fastapi==0.115.6 +ffmpy==0.4.0 +filelock==3.16.1 +fsspec==2024.10.0 +gradio==5.8.0 +gradio-client==1.5.1 +h11==0.14.0 +httpcore==1.0.7 +httpx==0.28.0 +huggingface-hub==0.26.3 +idna==3.10 +jinja2==3.1.4 +markdown-it-py==3.0.0 +markupsafe==2.1.5 +mdurl==0.1.2 +mpmath==1.3.0 +networkx==3.4.2 +numpy==2.1.3 +nvidia-cublas-cu12==12.4.5.8 +nvidia-cuda-cupti-cu12==12.4.127 +nvidia-cuda-nvrtc-cu12==12.4.127 +nvidia-cuda-runtime-cu12==12.4.127 +nvidia-cudnn-cu12==9.1.0.70 +nvidia-cufft-cu12==11.2.1.3 +nvidia-curand-cu12==10.3.5.147 +nvidia-cusolver-cu12==11.6.1.9 +nvidia-cusparse-cu12==12.3.1.170 +nvidia-nccl-cu12==2.21.5 +nvidia-nvjitlink-cu12==12.4.127 +nvidia-nvtx-cu12==12.4.127 +opencv-python==4.10.0.84 +orjson==3.10.12 +packaging==24.2 +pandas==2.2.3 +pillow==11.0.0 +pydantic==2.10.3 +pydantic-core==2.27.1 +pydub==0.25.1 +pygments==2.18.0 +python-dateutil==2.9.0.post0 +python-multipart==0.0.19 +pytz==2024.2 +pyyaml==6.0.2 +requests==2.32.3 +rich==13.9.4 +ruff==0.8.2 +safehttpx==0.1.6 +semantic-version==2.10.0 +setuptools==75.6.0 +shellingham==1.5.4 +six==1.17.0 +sniffio==1.3.1 +starlette==0.41.3 +sympy==1.13.1 +tomlkit==0.13.2 +torch==2.5.1 +torchvision==0.20.1 +tqdm==4.67.1 +triton==3.1.0 +typer==0.15.1 +typing-extensions==4.12.2 +tzdata==2024.2 +urllib3==2.2.3 +uvicorn==0.32.1 +websockets==14.1