Zacznij terazZacznij za darmo

Analiza sentymentu wideo z CLIP i CLAP

Teraz przeprowadzisz analizę emocji w reklamie, którą wcześniej przygotowano, korzystając z modeli CLIP/CLAP. Aby dokonać wielomodalnej klasyfikacji emocji, połączysz predykcje tych modeli za pomocą średniej (znane jako late fusion).

Wideo (video) oraz odpowiadająca mu próbka audio (audio_sample), utworzone wcześniej, są nadal dostępne:

Klatki z reklamy telewizyjnej Bounce

Lista emocji została załadowana jako emotions.

To ćwiczenie jest częścią kursu

Modele multimodalne z Hugging Face

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz potok klasyfikatora audio dla zadania zero-shot-audio-classification, używając modelu laion/clap-htsat-unfused.
  • Utwórz potok klasyfikatora obrazów dla zadania zero-shot-image-classification, używając modelu openai/clip-vit-base-patch32 (mniejszy wariant od tego, którego użyto w przypadku wideo).
  • Użyj potoku klasyfikatora obrazów, aby wygenerować predykcje dla każdego obrazu w wideo.
  • Użyj potoku klasyfikatora audio, aby wygenerować predykcje dla próbki audio_sample.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# Make an audio classifier pipeline
audio_classifier = ____(model="____", task="____")

# Make an image classifier pipeline
image_classifier = ____(model="____", task="____")

# Create emotion scores for each video frame
predictions = image_classifier(video, candidate_labels=emotions)
scores = [
    {l['label']: l['score'] for l in prediction}
    for prediction in predictions
]

avg_image_scores = {emotion: sum([s[emotion] for s in scores])/len(scores) for emotion in emotions}

# Make audio scores
audio_scores = ____(____, candidate_labels=____)

audio_scores = {l['label']: l['score'] for l in audio_scores}
multimodal_scores = {emotion: (avg_image_scores[emotion] + audio_scores[emotion])/2 for emotion in emotions}
print(f"Multimodal scores: {multimodal_scores}")
Edytuj i uruchom kod