videomae-base-finetuned-ucf101

nateraw
Clasificación de video

Modelo VideoMAE Base afinado en UCF101, desarrollado por @nateraw. Este modelo está diseñado para el reconocimiento de acciones en videos. Utiliza PyTorch y Transformers y está licenciado bajo MIT.

Como usar

from decord import VideoReader, cpu
import torch
import numpy as np

from transformers import VideoMAEFeatureExtractor, VideoMAEForVideoClassification
from huggingface_hub import hf_hub_download

np.random.seed(0)

def sample_frame_indices(clip_len, frame_sample_rate, seg_len):
    converted_len = int(clip_len * frame_sample_rate)
    end_idx = np.random.randint(converted_len, seg_len)
    start_idx = end_idx - converted_len
    indices = np.linspace(start_idx, end_idx, num=clip_len)
    indices = np.clip(indices, start_idx, end_idx - 1).astype(np.int64)
    return indices

# el clip de video consta de 300 fotogramas (10 segundos a 30 FPS)
file_path = hf_hub_download(
    repo_id='nateraw/dino-clips', filename='archery.mp4', repo_type='space')
videoreader = VideoReader(file_path, num_threads=1, ctx=cpu(0))

# muestra 16 fotogramas
videoreader.seek(0)
indices = sample_frame_indices(clip_len=16, frame_sample_rate=4, seg_len=len(videoreader))
video = videoreader.get_batch(indices).asnumpy()

feature_extractor = VideoMAEFeatureExtractor.from_pretrained('nateraw/videomae-base-finetuned-ucf101')
model = VideoMAEForVideoClassification.from_pretrained('nateraw/videomae-base-finetuned-ucf101')

inputs = feature_extractor(list(video), return_tensors='pt')

with torch.no_grad():
    outputs = model(**inputs)
    logits = outputs.logits

# el modelo predice una de las 101 clases UCF101
predicted_label = logits.argmax(-1).item()
print(model.config.id2label[predicted_label])

Funcionalidades

Clasificación de Video
Transformers
PyTorch
Reconocimiento de Acciones en Video

Casos de uso

Reconocimiento de acciones en videos