videomae-base-finetuned-kinetics-movieshots-scale

gullalc
Clasificación de video

El modelo videomae-base ha sido ajustado para clasificar el tipo de escala de plano en vídeos en cinco clases: ECS (plano muy cercano), CS (plano cercano), MS (plano medio), FS (plano completo), LS (plano general). El dataset Movienet se utilizó para ajustar el modelo durante 5 épocas. v1_split_trailer.json proporciona las divisiones de datos para entrenamiento, validación y prueba.

Como usar

Este es el modo de prueba del modelo en un clip de vídeo. El mismo código se utiliza para procesar, transformar y evaluar en el set de prueba de Movienet.

from transformers import VideoMAEImageProcessor, VideoMAEForVideoClassification
from pytorchvideo.transforms import ApplyTransformToKey
from torchvision.transforms import v2
from decord import VideoReader, cpu

## Transformación de evaluación
transform = v2.Compose(
[
ApplyTransformToKey(
key="video",
transform=v2.Compose(
[
v2.Lambda(lambda x: x.permute(0, 3, 1, 2)), # T, H, W, C -> T, C, H, W
v2.UniformTemporalSubsample(16),
v2.Resize(resize_to),
v2.Lambda(lambda x: x / 255.0),
v2.Normalize(img_mean, img_std)
]
),
),
]
)

## Carga del preprocesador y el modelo
image_processor = VideoMAEImageProcessor.from_pretrained("gullalc/videomae-base-finetuned-kinetics-movieshots-scale")
model = VideoMAEForVideoClassification.from_pretrained("gullalc/videomae-base-finetuned-kinetics-movieshots-scale")

img_mean = image_processor.image_mean
img_std = image_processor.image_std
height = width = image_processor.size["shortest_edge"]
resize_to = (height, width)

## Cargar vídeo/clip y predecir
video_path = "random_clip.mp4"
vr = VideoReader(video_path, width=480, height=270, ctx=cpu(0))
frames_tensor = torch.stack([torch.tensor(vr[i].asnumpy()) for i in range(len(vr))]) ## Forma: (T, H, W, C)

frames_tensor = transform({"video": frames_tensor})["video"]

output = model(pixel_values=frames_tensor)
pred = torch.argmax(outputs.logits, axis=1).cpu().numpy()

print(model.config.id2label[pred[0]])

Funcionalidades

Clasificación de tipo de plano en vídeos
Soporte para cinco clases: ECS, CS, MS, FS, LS
Precisión del modelo: 88.93%
Macro-F1 del modelo: 89.19%
Precisión por clase: ECS - 91.16%, CS - 83.65%, MS - 86.2%, FS - 90.74%, LS - 94.55%

Casos de uso

Clasificación de escala de planos en fragmentos de vídeo
Análisis de tipo de planos en películas y series
Optimización del proceso de edición de vídeos