Spaces:
Runtime error
Runtime error
import tensorflow as tf | |
import numpy as np | |
from einops import rearrange | |
from decord import VideoReader | |
num_frames = 8 | |
input_size = 224 | |
patch_size = (16, 16) | |
IMAGENET_MEAN = np.array([0.45, 0.45, 0.45]) | |
IMAGENET_STD = np.array([0.225, 0.225, 0.225]) | |
def format_frames(frame, output_size): | |
frame = tf.image.convert_image_dtype(frame, tf.uint8) | |
frame = tf.image.resize(frame, size=output_size) | |
frame = frame / 255. | |
frame = frame - IMAGENET_MEAN | |
frame = frame / IMAGENET_STD | |
return frame | |
def read_video(file_path): | |
container = VideoReader(file_path) | |
return container | |
def frame_sampling(container, num_frames): | |
interval = len(container) // num_frames | |
bids = np.arange(num_frames) * interval | |
offset = np.random.randint(interval, size=bids.shape) | |
frame_index = bids + offset | |
frames = container.get_batch(frame_index).asnumpy() | |
frames = np.stack(frames) | |
frames = format_frames(frames, [input_size] * 2) | |
return frames | |
def denormalize(image): | |
image = image.numpy() if not isinstance(image, np.ndarray) else image | |
image = image * IMAGENET_STD + IMAGENET_MEAN | |
image = (image * 255).clip(0, 255).astype('uint8') | |
return image |