12 KiB
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, tel que 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 exactement le but de la détection d'objets.
Quiz pré-conférence
Image provenant du site web de YOLO v2
Une Approche Naïve à 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 :
- Diviser l'image en un certain nombre de tuiles
- Exécuter la classification d'images sur chaque tuile.
- Les tuiles qui résultent en une activation suffisamment élevée peuvent être considérées comme contenant l'objet en question.
Image provenant 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 exécuter 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
Ce billet de blog propose une excellente introduction douce à 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 - Objets Communs dans le Contexte. 80 classes, boîtes englobantes et masques de segmentation
Métriques de Détection d'Objets
Intersection sur 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, ainsi que la précision de la localisation de la boîte englobante inférée. Pour cette dernière, nous utilisons ce qu'on appelle l'Intersection sur Union (IoU), qui mesure à quel point deux boîtes (ou deux zones arbitraires) se chevauchent.
Figure 2 provenant de ce billet de blog excellent sur l'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, l'IoU serait de 1, tandis que pour des zones complètement disjointes, il sera de 0. Sinon, il variera de 0 à 1. Nous considérons généralement uniquement les boîtes englobantes pour lesquelles l'IoU dépasse une certaine valeur.
Précision Moyenne
Supposons que nous voulions mesurer à quel point une classe d'objets donnée C est reconnue. Pour le mesurer, nous utilisons les métriques de Précision Moyenne, qui se calculent comme suit :
- Considérer que la courbe Précision-Rappel montre l'exactitude en fonction d'une valeur de seuil de détection (de 0 à 1).
- En fonction du seuil, nous obtiendrons plus ou moins d'objets détectés dans l'image, et différentes valeurs de précision et de rappel.
- La courbe ressemblera à ceci :
Image provenant du NeuroWorkshop
La précision moyenne pour une classe donnée C est la surface 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{Précision}(\mbox{Rappel}={i\over10})
AP et IoU
Nous ne considérerons que les détections pour lesquelles l'IoU est au-dessus d'une certaine valeur. Par exemple, dans le jeu de données PASCAL VOC, on suppose généralement que le \mbox{Seuil IoU} = 0.5, tandis que dans COCO, l'AP est mesurée pour différentes valeurs de \mbox{Seuil IoU}.
Image provenant du NeuroWorkshop
Précision Moyenne - mAP
La principale métrique pour la Détection d'Objets est appelée Précision Moyenne, ou mAP. C'est la valeur de la Précision Moyenne, moyennée sur toutes les classes d'objets, et parfois aussi sur le \mbox{Seuil IoU}. En détail, le processus de calcul de la mAP est décrit
dans ce billet de blog), et aussi ici avec des exemples de code.
Différentes Approches de Détection d'Objets
Il existe deux grandes classes d'algorithmes de détection d'objets :
- Réseaux de Proposition 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, à la recherche de l'activation maximale. C'est un peu similaire à l'approche naïve, à l'exception que les ROI sont générées de manière plus intelligente. 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 à un 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 des régions ROI, qui sont ensuite passées à travers 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
Image provenant de van de Sande et al. ICCV’11
Images provenant de ce blog
F-RCNN - Fast R-CNN
Cette approche est similaire à R-CNN, mais les régions sont définies après que les couches de convolution aient été appliquées.
Image provenant de l'Article Officiel, arXiv, 2015
Faster R-CNN
L'idée principale de cette approche est d'utiliser un réseau de neurones pour prédire les ROI - le soi-disant Réseau de Proposition de Régions. Article, 2016
Image provenant de l'article officiel
R-FCN : Réseau Convolutif Entièrement Basé sur les Régions
Cet algorithme est encore plus rapide que Faster R-CNN. L'idée principale est la suivante :
- Nous extrayons des caractéristiques en utilisant ResNet-101
- Les caractéristiques sont traitées par une Carte de Scores Sensible à la Position. Chaque objet des
Cclasses est divisé en régions dek\times k, et nous formons pour prédire des parties d'objets. - Pour chaque partie des régions de
k\times k, tous les réseaux votent pour les classes d'objets, et la classe d'objet avec le maximum de votes est sélectionnée.
Image provenant de l'article officiel
YOLO - You Only Look Once
YOLO est un algorithme en temps réel à un passage. L'idée principale est la suivante :
- L'image est divisée en régions de
S\times S - Pour chaque région, le CNN prédit
nobjets possibles, les coordonnées de la boîte englobante et la confiance=probabilité * IoU.
Image provenant du document officiel
Autres Algorithmes
- RetinaNet : document officiel
- Implémentation PyTorch dans Torchvision
- Implémentation Keras
- Détection d'objets avec RetinaNet dans les échantillons Keras
- SSD (Single Shot Detector) : document officiel
✍️ Exercices : Détection d'Objets
Poursuivez votre apprentissage dans le notebook suivant :
Conclusion
Dans cette leçon, vous avez fait un tour d'horizon des différentes manières dont la détection d'objets peut être réalisée !
🚀 Défi
Lisez ces articles et notebooks sur YOLO et essayez-les par vous-même
- Bon article de blog décrivant YOLO
- Site officiel
- Yolo : implémentation Keras, notebook étape par étape
- Yolo v2 : implémentation Keras, notebook étape par étape
Quiz post-conférence
Revue & Auto-apprentissage
- Détection d'objets par Nikhil Sardana
- Une bonne comparaison des algorithmes de détection d'objets
- Revue des algorithmes d'apprentissage profond pour la détection d'objets
- Une introduction étape par étape aux algorithmes de détection d'objets de base
- Implémentation de Faster R-CNN en Python pour la détection d'objets
Devoir : Détection d'Objets
Avertissement :
Ce document a été traduit à l'aide de services de traduction automatique basés sur l'IA. Bien que nous visons à garantir l'exactitude, veuillez noter que les traductions automatiques peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue native doit être considéré comme la source faisant autorité. Pour des informations critiques, une traduction professionnelle effectuée par un humain est recommandée. Nous ne sommes pas responsables des malentendus ou des interprétations erronées résultant de l'utilisation de cette traduction.









