• 15 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 18/12/2019

Entraînez-vous à réaliser un détecteur de slides grâce à de l'analyse d'image

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

À vous de jouer

Exécutez le code donné. 4 lignes de code ont été remplacées par  ###[...]###  . Il vous faudra les remplacer par le bon code. Vous ne serez évalué que sur ces 4 lignes.

Téléchargez :

Nous allons utiliser l'ACP et le clustering pour traiter une vidéo ! Vous la trouverez ici (Il n'est pas nécessaire de la télécharger).

Nous allons programmer un "détecteur de slides". La vidéo que nous utilisons est celle d'un cours magistral donné en amphithéâtre, dans laquelle le professeur appuie son propos grâce à un diaporama, composé de plusieurs slides. 
Notre objectif sera d'extraire les différentes slides de la présentation, grâce à une analyse d'image.

Une vidéo est un enchaînement rapide d'images fixes. Quand une slide est affichée à l'écran durant 20 secondes, alors toutes les images contenues dans ces 20 secondes sont semblables (même si le professeur bouge un peu). On a donc des images similaires (dues aux slides immobiles), même si un peu différentes (dues au mouvement du professeur).

On va donc détecter les images similaires pour en extraire les différentes slides de la présentation ! Pour détecter les images similaires, nous utiliserons du clustering.

Mais nous serons également obligés de réduire les dimensions de nos données : nous ferons ceci grâce à l'ACP.

Les données

Pour en réduire la taille, nous ne sélectionnons qu'une image sur 90 (une toutes les 3 secondes). Ensuite, on réduit la taille des images à 72 pixels de hauteur et 128 de largeur. Nous réduisons également la palette des couleurs possibles : originellement, les niveaux des 3 couleurs (RGB) sont encodés sur une échelle de 0 à 256 : nous réduirons cette échelle à une échelle de 0 à 64.

On obtient donc un tableau où chaque ligne (chaque individu) correspond à 1 image. Il y a 1 934 images. Chaque image est caractérisée par 72*128*3 = 27 648 unités d'information, donc autant de colonnes. On ajoute en plus une colonne qui indique la position de l'image dans le temps (par exemple, "cette image s'affiche à la150e seconde").

Chargement des données

Nous importons le CSV et stockons la matrice dans un array numpy appelé X. Cette opération peut prendre quelques secondes. Ensuite, nous affichons l'image de la 150e seconde.

https://youtu.be/uV5hmpzmWsU?t=150s

 ACP et réduction de dimensions

Comme il y a beaucoup de colonnes, nous réduisons les données grâce à une ACP après centrage-réduction des données.

Après compression de la vidéo, on a forcément perdu en qualité. Affichons l'image de la 150e seconde pour voir cette perte de qualité :

En affichant les individus projetés sur les premiers plans factoriels, on voit déjà quelques groupes d'images similaires.
Pour les visionner, rendez-vous à cette URL, https://www.youtube.com/watch?v=uV5hmpzmWsU?t=[...]s, en remplaçant le [...] par l'identifiant du point à visualiser. Cet identifiant correspond à la position de l'image dans la vidéo ; il est donné en secondes. Vous pouvez vérifier si deux points proches correspondent à deux images qui se ressemblent.

Clustering

Nous allons donc effectuer une classification hiérarchique et afficher le dendrogramme pour choisir le nombre de classes.

Cependant, il y a trop d'individus (trop d'images) pour effectuer une C.H. rapidement. Nous allons donc d'abord effectuer un clustering avec k-means afin de trouver 300 clusters, en espérant que le professeur n'ait pas plus de 300 slides. Il est fort probable qu'après l'application du k-means, plusieurs clusters correspondent à une même slide : c'est là que la classification hiérarchique sera utile afin de regrouper les clusters correspondant à une même slide.

Nous allons ensuite effectuer la classification hiérarchique sur les 300 clusters. Le professeur a environ 40 slides différentes. Coupons donc l'arbre en 40 clusters.

Résultat

On affiche aussi l'image moyenne de chaque cluster. Elle représente une "image moyenne" composée de plusieurs images. Sur celles-ci, les objets fixes seront nets, et les objets mobiles seront flous. Les slides seront donc nettement visibles !

Vérifiez votre travail

Exemple de certificat de réussite
Exemple de certificat de réussite