Vous êtes sur la version 2022-2023 du TP. Je la laisse en guise d’archive, pour garder trace de l’Histoire, c’est important. Le détecteur de vos prédécesseurs ne sera ainsi jamais oublié ❤️.

Objectifs pédagogiques

L’objectif de ces séances de travaux pratiques est de toucher à toutes les étapes de l’ingénierie du deep learning, à savoir :

  • l’acquisition et l’annotation de données,
  • l’apprentissage de réseaux de convolution,
  • l’évaluation des performances de la tâche apprise,
  • la visualisation des résultats obtenus.

Pour cela, notre point de départ sera le détecteur d’objets très largement connu et utilisé par les communautés scientifique mais aussi industrielle : YOLO (You Only Look Once). Nous travaillerons avec la version 5 sortie en 2020.

A la fin des TPs, vous saurez comment utiliser YOLOv5, comment l’entrainer sur vos propres données, et comment l’évaluer.

Déroulement des séances

Un·e pour tou·te·s, tou·te·s pour un·e !

Parce que l’union fait la force, que la joie et la bonne humeur facilitent l’apprentissage – des humains –, les séances de travaux pratiques se dérouleront dans un contexte à la fois collectif et individuel, pas toujours sur les postes de travail, et toujours dans l’intérêt de la compréhension. Nous aurons tou·te·s un rôle à jouer, à chacune des étapes.

Nous allons entrainer YOLOv5 à détecter plusieurs classes d’objets, à raison d’une classe d’objet par binôme. Le dataset que nous allons construire pour cela sera commun aux deux groupes de TPs qui se déroulent en parallèle (e.g., groupes A1 & A2, groupes B1 & B2).

Pour cela, nous passerons par plusieurs étapes :

  • 🔥 étape 1 - acquisition : chaque binôme prendra plusieurs séquences vidéo de la classe d’objets qu’il aura choisie parmi une liste proposée, et la mettra sur un serveur de données commun aux groupes A1/A2 et B1/B2 ;
  • 🔥 étape 2 - annotation : avec l’outil CVAT, chaque binôme annotera ses propres séquences d’images avec la classe d’objet choisie, de sorte qu’à la fin de la phase d’annotation, le groupe entier de TP aura collectivement construit un dataset multi-classes dont tout le monde bénéficiera pour faire ses apprentissages ;
  • 🔥 étape 3 - prise en main du code de YOLOv5 : à la fin de cette étape, vous saurez appliquer sur vos propres images un modèle YOLOv5-S pré-entrainé sur COCO, entrer dans l’architecture du réseau et identifier ses différentes couches et leurs dimensions, visualiser la sortie de détection obtenue, etc. Pour parvenir à cette prise en main, un jeu de “où est Charlie ?” vous sera proposé et vous poussera à décortiquer l’exécution du code pas à pas. Vous devrez par exemple répondre à des questions comme “quelle est la taille du tenseur en sortie de la couche 17 pour une image d’entrée de 512x512x3 ?” ;
  • 🔥 étape 4 - apprentissage de YOLOv5 sur notre dataset : l’idéal pour analyser les performances d’un jeu de paramètres donné (résolution des images d’entrée, taille du réseau, taille de batch, etc.) est de lancer autant d’apprentissages que de configurations possibles et de les comparer ensuite pour sélectionner celle qui est la meilleure. On peut ensuite afficher sur un même graphe différentes tailles de modèles, pour différentes résolutions, et comparer leur rapidité d’exécution à la mean average precision qu’ils réalisent sur un dataset donné, par exemple :

Comparaison des performances de YOLOv5 sur COCO Source : https://github.com/ultralytics/yolov5

Un apprentissage dure plusieurs heures. Pour pouvoir comparer toutes ces configurations, il faut soit disposer de plusieurs serveurs GPU puissants qui peuvent faire tourner en parallèle plusieurs configurations, soit disposer de beaucoup de temps et être patient…

Et puis, un apprentissage, ça consomme de l’énergie.

Il n’est donc pas envisageable que chaque binôme lance un apprentissage pour chaque jeu de paramètres puis fasse une analyse comparative des résultats.

MAIS !, l’union fait la force, une fois de plus.

Chaque binôme se positionnera donc sur une configuration donnée et lancera l’apprentissage associé sur le dataset du groupe de TP.

  • 🔥 étape 5 - analyse des performances : une fois tous les apprentissages faits, chaque binôme pourra évaluer les performances de sa propre configuration, analyser les résultats de manière quantitative, i.e., avec des chiffres, et de manière qualitative, i.e., avec une visualisation “à l’oeil” des cas d’erreur et des cas qui fonctionnent. Une évaluation comparative sera également réalisable, puisque tout le monde aura accès aux résultats obtenus par les autres binômes, au travers d’un leaderboard commun au groupe.

Modalités d’évaluation

La deadline est fixée au 12 janvier 2023 à 20h. Vous devez déposer sur Moodle :

  • votre capsule vidéo au format .mp4 ;
  • un fichier .pdf avec vos réponses aux quêtes annexes.

Les deux fichiers additionnés ne doivent pas dépasser 256Mo.

Capsule vidéo

Chaque binôme produira une capsule vidéo (c’est-à-dire une séquence vidéo) d’environ 10 minutes. Bien sûr, la pertinence du contenu importe plus que la longueur de la capsule, même si la consigne de temps est à respecter.

Si les 256 Mo sont trop difficiles à atteindre, donnez-nous un lien Youtube vers votre vidéo par exemple. Ou Drive. Ou autre. On est à l’ère du numérique, on trouvera une solution.

Le tableau d’analyse ci-dessous peut vous aider à structurer votre analyse et vous donne une idée des points qui seront évalués :

Tableau d’analyse

Globalement, on aura :

  • les trois grandes thématiques vues en cours et en TP peuvent donner lieu à analyse :
    • le dataset (acquisition, annotation),
    • l’apprentissage,
    • et l’inférence (= la détection appliquée à des données inconnues ou de test avec le modèle entrainé) ;
  • trois types d’analyse possibles :
    • l’analyse quantitative qui consiste à analyser la répartition des classes, le nombre d’instances annotées, présenter des chiffres, interpréter des courbes de résultats, des temps d’exécution du réseau en fonction de sa taille, de la résolution image, commenter les métriques de performance en fonction du split, de la classe, etc.,
    • l’analyse qualitative qui consiste à analyser visuellement les performances d’une configuration de réseau donnée, par exemple se rendre compte que les petits réseaux ont plus de mal à détecter les petits objets, que la classe velo est mieux détectée quand le vélo prend toute l’image (faire le lien avec l’annotation qui a été faite), ou que les petits objets circulaires et orangés sont souvent détectés comme des lentilles (exemple : l’oeil du pigeon…),
    • le retour d’expérience : je vous demande votre avis ! Comment vous êtes-vous réparti l’annotation dans le binôme ? Entre différents binômes qui ont annoté la même classe ? Quelles difficultés avez-vous rencontrées ? Quelles questions vous êtes-vous posées au moment de l’acquisition ? Que feriez-vous différemment ? Quelle a été votre stratégie pour choisir vos exemples d’inférence ? Comment avez-vous décidé de la répartition entre les différents splits de train, val et test ?
  • deux niveaux d’analyse :
    • micro : vous pouvez analyser votre classe d’annotation (métriques de performance sur train/val/test, quantité annotée, type d’annotation, nombre d’instances par image, stratégie d’annotation, etc.), les performances fines de votre configuration de réseau* (temps d’exécution, taille du réseau, place mémoire, nombre de couches, de paramètres, analyse des courbes F1, PR, etc.),
    • macro : vous vs. la promo entière et les autres configurations. Par exemple, une analyse plus globale qui compare les différentes courbes F1 des différents apprentissages – quelle est l’influence de la taille du réseau ? Quelle configuration converge le mieux ? Le plus rapidement ? Laquelle gère mieux les petits objets ? Quelle classe se distingue des autres et pourquoi ? Quelle a été la dynamique de groupe globalement ? Quelles discussions avez-vous eues avec les autres binômes pour vous accorder sur une stratégie d’annotation ?

*celle tirée au sort en TP – si elle était trop mauvaise, prenez-en une autre, pas grave, il faut pouvoir en dire quelque chose d’autre que “c’est nul et ça marche pas”…

Il y a des millions de choses à dire et tout n’est pas applicable à toutes les classes d’objets, toutes les configurations ni tous les binômes. Etre exhaustif vous demanderait une analyse de 45 minutes à 2 jours (rien que ça). Soyez synthétiques et pertinents. Ce n’est pas une tâche simple, mais il y a de la matière à votre disposition.

Pas de contrainte sur le format : une vidéo d’un PPT qui défile, une superproduction full 3D pour concurrencer Avatar 2… l’important est d’avoir un contenu pertinent, et que ça ne soit pas la corvée du siècle pour vous. Amusez-vous comme on s’est amusés en cours et en TP, mais vendez-nous une analyse de rêve ;)

Quêtes annexes

Le plus pratique pour répondre à ces quêtes annexes est de noter vos réponses dans un rapport, d’où la contrainte donnée plus haut d’un .pdf déposé sur Moodle.

Je vous laisse aller voir ici pour le contenu des quêtes annexes.

Les quêtes annexes sont annexes, mais elles vous apporteront du bonus si vous les faites. Rappelez-vous : Far Cry, Assassin’s Creed, tout ça tout ça.

Planning des séances

GroupeDatesSallesIntervenant·e
A130/11/2022 \ 12h30 - 15h15
07/12/2022 \ 09h30 - 12h15
14/12/2022 \ 15h30 - 18h15
GEI-111-A
GEI-109-A
GEI-111-A
Claire LABIT-BONIS
A230/11/2022 \ 12h30 - 15h15
07/12/2022 \ 09h30 - 12h15
14/12/2022 \ 15h30 - 18h15
GEI-111-B
GEI-109-B
GEI-111-B
Smail AIT BOUHSAIN
B130/11/2022 \ 15h30 - 18h15
07/12/2022 \ 15h30 - 18h15
14/12/2022 \ 09h30 - 12h15
GEI-111-A
GEI-111-A
GEI-109-A
Claire LABIT-BONIS
B230/11/2022 \ 15h30 - 18h15
07/12/2022 \ 15h30 - 18h15
14/12/2022 \ 09h30 - 12h15
GEI-111-B
GEI-111-B
GEI-109-B
Pierre MARIGO