Spaces:
Sleeping
Sleeping
File size: 1,881 Bytes
c456c14 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 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()})
|