Aan de slagGa gratis aan de slag

Video-sentimentanalyse met CLIP CLAP

Nu ga je de emotie-analyse uitvoeren van de advertentie die je eerder hebt voorbereid met CLIP/CLAP. Voor een multi-modale classificatie van emotie combineer je de voorspellingen van deze modellen met het gemiddelde (ook wel late fusion genoemd).

De video (video) en de bijbehorende audio (audio_sample) die je eerder hebt gemaakt, zijn nog beschikbaar:

Frames from the Bounce TV commercial

Een lijst met emoties is geladen als emotions.

Deze oefening maakt deel uit van de cursus

Multi-modale modellen met Hugging Face

Cursus bekijken

Oefeninstructies

  • Maak een audioclassificatie-pijplijn voor zero-shot-audio-classification met het model laion/clap-htsat-unfused.
  • Maak een beeldclassificatie-pijplijn voor zero-shot-image-classification met het model openai/clip-vit-base-patch32 (een kleinere variant van wat we in de video gebruikten).
  • Gebruik de beeldclassificatie-pijplijn om voorspellingen te genereren voor elk beeld in de video.
  • Gebruik de audioclassificatie-pijplijn om voorspellingen te genereren voor de audio_sample.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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}")
Code bewerken en uitvoeren