Skip to content

Latest commit

 

History

History
179 lines (101 loc) · 11.4 KB

File metadata and controls

179 lines (101 loc) · 11.4 KB

Détection d'objets

Les modèles de classification d'images que nous avons abordés jusqu'à présent prenaient une image et produisaient un résultat catégorique, comme la classe 'nombre' dans un problème MNIST. Cependant, dans de nombreux cas, nous ne voulons pas seulement savoir qu'une image représente des objets - nous voulons pouvoir déterminer leur emplacement précis. C'est précisément l'objectif de la détection d'objets.

Détection d'objets

Image tirée du site web YOLO v2

Une approche naïve de la détection d'objets

Supposons que nous voulions trouver un chat sur une image. Une approche très naïve de la détection d'objets serait la suivante :

  1. Diviser l'image en plusieurs carreaux.
  2. Effectuer une classification d'image sur chaque carreau.
  3. Les carreaux qui produisent une activation suffisamment élevée peuvent être considérés comme contenant l'objet en question.

Détection naïve d'objets

Image tirée du cahier d'exercices

Cependant, cette approche est loin d'être idéale, car elle ne permet à l'algorithme de localiser la boîte englobante de l'objet que de manière très imprécise. Pour une localisation plus précise, nous devons effectuer une sorte de régression pour prédire les coordonnées des boîtes englobantes - et pour cela, nous avons besoin de jeux de données spécifiques.

Régression pour la détection d'objets

Cet article de blog offre une excellente introduction à la détection de formes.

Jeux de données pour la détection d'objets

Vous pourriez rencontrer les jeux de données suivants pour cette tâche :

  • PASCAL VOC - 20 classes
  • COCO - Common Objects in Context. 80 classes, boîtes englobantes et masques de segmentation

COCO

Métriques de détection d'objets

Intersection over Union

Alors que pour la classification d'images, il est facile de mesurer la performance de l'algorithme, pour la détection d'objets, nous devons mesurer à la fois la justesse de la classe et la précision de la localisation de la boîte englobante inférée. Pour cette dernière, nous utilisons ce qu'on appelle Intersection over Union (IoU), qui mesure à quel point deux boîtes (ou deux zones arbitraires) se chevauchent.

IoU

Figure 2 tirée de cet excellent article de blog sur IoU

L'idée est simple : nous divisons la zone d'intersection entre deux figures par la zone de leur union. Pour deux zones identiques, IoU serait égal à 1, tandis que pour des zones complètement disjointes, il serait égal à 0. Sinon, il variera de 0 à 1. Nous considérons généralement uniquement les boîtes englobantes pour lesquelles IoU dépasse une certaine valeur.

Précision moyenne

Supposons que nous souhaitons mesurer à quel point une classe d'objets donnée $C$ est bien reconnue. Pour cela, nous utilisons la métrique de précision moyenne, qui est calculée comme suit :

  1. Considérer la courbe Précision-Rappel qui montre la précision en fonction d'une valeur seuil de détection (de 0 à 1).
  2. En fonction du seuil, nous détecterons plus ou moins d'objets dans l'image, avec des valeurs de précision et de rappel différentes.
  3. La courbe ressemblera à ceci :

Image tirée de NeuroWorkshop

La précision moyenne pour une classe donnée $C$ est l'aire sous cette courbe. Plus précisément, l'axe du rappel est généralement divisé en 10 parties, et la précision est moyennée sur tous ces points :

$$ AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10}) $$

AP et IoU

Nous ne considérons que les détections pour lesquelles IoU dépasse une certaine valeur. Par exemple, dans le jeu de données PASCAL VOC, on suppose généralement que $\mbox{IoU Threshold} = 0.5$, tandis que dans COCO, AP est mesuré pour différentes valeurs de $\mbox{IoU Threshold}$.

Image tirée de NeuroWorkshop

Précision moyenne globale - mAP

La principale métrique pour la détection d'objets est appelée précision moyenne globale, ou mAP. Il s'agit de la valeur de la précision moyenne, moyennée sur toutes les classes d'objets, et parfois aussi sur $\mbox{IoU Threshold}$. Le processus de calcul de mAP est décrit en détail dans cet article de blog), ainsi que ici avec des exemples de code.

Différentes approches de détection d'objets

Il existe deux grandes catégories d'algorithmes de détection d'objets :

  • Réseaux de propositions de régions (R-CNN, Fast R-CNN, Faster R-CNN). L'idée principale est de générer des régions d'intérêt (ROI) et d'exécuter un CNN sur celles-ci, en recherchant une activation maximale. Cela ressemble un peu à l'approche naïve, à l'exception que les ROI sont générées de manière plus intelligente. L'un des principaux inconvénients de ces méthodes est qu'elles sont lentes, car nous avons besoin de nombreux passages du classificateur CNN sur l'image.
  • Méthodes en un seul passage (YOLO, SSD, RetinaNet). Dans ces architectures, nous concevons le réseau pour prédire à la fois les classes et les ROI en un seul passage.

R-CNN : CNN basé sur les régions

R-CNN utilise Selective Search pour générer une structure hiérarchique de régions ROI, qui sont ensuite passées par des extracteurs de caractéristiques CNN et des classificateurs SVM pour déterminer la classe de l'objet, et une régression linéaire pour déterminer les coordonnées de la boîte englobante. Article officiel

RCNN

Image tirée de van de Sande et al. ICCV’11

RCNN-1

Images tirées de cet article de blog

F-RCNN - Fast R-CNN

Cette approche est similaire à R-CNN, mais les régions sont définies après l'application des couches de convolution.

FRCNN

Image tirée de l'article officiel, arXiv, 2015

Faster R-CNN

L'idée principale de cette approche est d'utiliser un réseau neuronal pour prédire les ROI - le Réseau de propositions de régions. Article, 2016

FasterRCNN

Image tirée de l'article officiel

R-FCN : Réseau entièrement convolutionnel basé sur les régions

Cet algorithme est encore plus rapide que Faster R-CNN. L'idée principale est la suivante :

  1. Nous extrayons des caractéristiques à l'aide de ResNet-101.
  2. Les caractéristiques sont traitées par une carte de score sensible à la position. Chaque objet des $C$ classes est divisé en $k\times k$ régions, et nous entraînons le réseau à prédire des parties d'objets.
  3. Pour chaque partie des $k\times k$ régions, tous les réseaux votent pour les classes d'objets, et la classe d'objet avec le vote maximum est sélectionnée.

r-fcn image

Image tirée de l'article officiel

YOLO - You Only Look Once

YOLO est un algorithme en temps réel en un seul passage. L'idée principale est la suivante :

  • L'image est divisée en $S\times S$ régions.
  • Pour chaque région, CNN prédit $n$ objets possibles, les coordonnées de la boîte englobante et la confiance=probabilité * IoU.

YOLO

Image tirée de l'article officiel

Autres algorithmes

✍️ Exercices : Détection d'objets

Poursuivez votre apprentissage dans le cahier suivant :

ObjectDetection.ipynb

Conclusion

Dans cette leçon, vous avez exploré rapidement les différentes façons dont la détection d'objets peut être réalisée !

🚀 Défi

Lisez ces articles et cahiers sur YOLO et essayez-les par vous-même :

Révision et auto-apprentissage