Spaces:
Sleeping
Sleeping
| import argparse | |
| import warnings | |
| warnings.filterwarnings("ignore", category=UserWarning) | |
| import torch | |
| import tqdm | |
| import numpy as np | |
| import time | |
| from uvd.decomp.decomp import embedding_decomp, DEFAULT_DECOMP_KWARGS | |
| from uvd.models import Preprocessor, get_preprocessor | |
| import uvd.utils as U | |
| from decord import VideoReader | |
| def one_run(video_file: str, preprocessor: Preprocessor): | |
| t = time.time() | |
| vr = VideoReader(U.f_expand(video_file), height=224, width=224) | |
| videos = vr[:].asnumpy() | |
| load_v_t = time.time() - t | |
| t = time.time() | |
| embeddings = preprocessor.process(videos, return_numpy=True) | |
| preprocess_t = time.time() - t | |
| t = time.time() | |
| _, decomp_meta = embedding_decomp( | |
| embeddings=embeddings, | |
| fill_embeddings=False, | |
| return_intermediate_curves=False, | |
| window_length=100, | |
| **DEFAULT_DECOMP_KWARGS["embed"], | |
| ) | |
| decomp_t = time.time() - t | |
| return load_v_t, preprocess_t, decomp_t | |
| if __name__ == "__main__": | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument("video_file") | |
| parser.add_argument("--preprocessor_name", default="vip") | |
| parser.add_argument("--n", type=int, default=100) | |
| args = parser.parse_args() | |
| use_gpu = torch.cuda.is_available() | |
| if not use_gpu: | |
| print("NO GPU FOUND") | |
| preprocessor = get_preprocessor( | |
| args.preprocessor_name, device="cuda" if use_gpu else None | |
| ) | |
| one_run(args.video_file, preprocessor) | |
| benchmark_times = dict(load=[], preprocess=[], decomp=[]) | |
| for _ in tqdm.trange(args.n): | |
| load_v_t, preprocess_t, decomp_t = one_run(args.video_file, preprocessor) | |
| benchmark_times["load"].append(load_v_t) | |
| benchmark_times["preprocess"].append(preprocess_t) | |
| benchmark_times["decomp"].append(decomp_t) | |
| print({k: (np.mean(v), np.std(v)) for k, v in benchmark_times.items()}) | |