Analyse des sentiments dans les vidéos avec CLIP CLAP
Vous allez maintenant analyser les émotions suscitées par la publicité que vous avez préparée précédemment à l'aide de CLIP/CLAP. Afin de réaliser une classification multimodale des émotions, vous combinerez les prédictions de ces modèles en utilisant la moyenne (méthode dite de fusion tardive).
La vidéo (video
) et l'audio correspondant (audio_sample
) que vous avez créés précédemment sont toujours disponibles :
Une liste d'émotions a été chargée sous le nom emotions
.
Cet exercice fait partie du cours
Modèles multimodaux avec Hugging Face
Instructions
- Créez un pipeline de classification audio pour l'
zero-shot-audio-classification
à l'aide du modèlelaion/clap-htsat-unfused
. - Créez un pipeline de classification d'images pour l'
zero-shot-image-classification
, en utilisant le modèleopenai/clip-vit-base-patch32
(une variante plus petite de celui que nous avons utilisé dans la vidéo). - Utilisez le pipeline de classification d'images pour générer des prédictions pour chaque image de la vidéo.
- Veuillez utiliser le pipeline de classification audio pour générer des prédictions pour l'
audio_sample
.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# 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}")