Classificador de Dor em Vídeo
Este modelo foi treinado para classificar vídeos de expressões faciais em três níveis de dor:
- High_Pain (Dor Intensa)
- Low_Pain (Dor Leve)
- No_Pain (Sem Dor)
Modelo
O modelo é baseado no VideoMAE (Video Masked Autoencoder) e foi refinado (fine-tuned) especificamente para detectar e classificar níveis de dor a partir de vídeos de expressões faciais.
Exemplo de uso
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
from transformers import VideoMAEImageProcessor, AutoModelForVideoClassification
import torch
import numpy as np
import av
def extract_frames(video_path, num_frames=16):
frames = []
try:
container = av.open(video_path)
stream = container.streams.video[0]
indices = np.linspace(0, stream.frames - 1, num=num_frames, dtype=int)
for i, frame in enumerate(container.decode(stream)):
if i in indices:
img = frame.to_ndarray(format="rgb24")
frames.append(img)
if len(frames) == num_frames:
break
container.close()
except Exception as e:
print(f"Erro ao processar o vídeo: {e}")
if len(frames) < num_frames:
pad_size = num_frames - len(frames)
if frames:
last_frame = frames[-1]
frames += [last_frame.copy() for _ in range(pad_size)]
else:
frames = [np.zeros((224, 224, 3), dtype=np.uint8)] * num_frames
return frames
processor = VideoMAEImageProcessor.from_pretrained("maike616/pain-classifier-video")
model = AutoModelForVideoClassification.from_pretrained("maike616/pain-classifier-video")
high = r'AI4Pain Dataset\Validation\video\high_pain\1_Pain_HIGH_20.mp4'
low = r'AI4Pain Dataset\Validation\video\low_pain\1_Pain_LOW_3.mp4'
no_pain = r'AI4Pain Dataset\Validation\video\no_pain\1_Rest_1.mp4'
video_frames = extract_frames(no_pain)
inputs = processor(video_frames, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=1)
predicted_class_idx = outputs.logits.argmax(-1).item()
predicted_class = model.config.id2label[predicted_class_idx]
print(f"Classe predita: {predicted_class}")
print(f"Probabilidades: {probs[0].tolist()}")
Detalhes do Treinamento
Dataset
O modelo foi treinado com um dataset de vídeos classificados em três categorias de intensidade de dor.
Hiperparâmetros
- Arquitetura base: VideoMAE
- Taxa de aprendizado: 3e-5
- Optimizer: AdamW com weight decay de 0.01
- Scheduler: OneCycleLR
- Batch size: 32
- Número de frames: 16
Técnicas aplicadas
- Mixed Precision Training
- Early Stopping baseado em F1-score
- Amostragem uniforme de frames
Métricas de Desempenho
O modelo foi selecionado com base no F1-score macro na validação. As métricas incluem:
- F1-score
- Precision e Recall por classe
- ROC AUC
- Matrizes de confusão
O monitoramento de métricas foi realizado usando Weights & Biases.
Limitações
- O modelo foi treinado para processar exatamente 16 frames por vídeo
- O desempenho pode ser afetado pela qualidade da imagem, iluminação, e posicionamento facial
- O modelo foi treinado com expressões faciais específicas e pode não generalizar bem para todos os tipos de expressão de dor
Casos de Uso
Este modelo é adequado para:
- Pesquisa em análise de dor
- Aplicações em saúde para monitoramento de pacientes
- Estudos sobre expressões faciais e dor
Créditos
Este modelo utiliza o VideoMAE como base, desenvolvido pela MCG-NJU. O treinamento e adaptação para classificação de dor foram realizados como parte do projeto de pesquisa desenvolvido na WP3-Ceteli.
- Downloads last month
- 90