|
|
||
|---|---|---|
| .. | ||
| lab | ||
| ObjectDetection.ipynb | ||
| README.md | ||
README.md
Détection d'Objets
Les modèles de classification d'images que nous avons étudiés jusqu'à présent prenaient une image et produisaient un résultat catégoriel, 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 également pouvoir déterminer leur emplacement précis. C'est précisément l'objectif de la détection d'objets.
Quiz avant le cours
Image tirée du site web YOLO v2
Une Approche Naïve pour la Détection d'Objets
Supposons que nous voulions trouver un chat sur une image. Une approche très naïve pour la détection d'objets serait la suivante :
- Diviser l'image en un certain nombre de tuiles.
- Appliquer une classification d'images sur chaque tuile.
- Les tuiles qui produisent une activation suffisamment élevée peuvent être considérées comme contenant l'objet en question.
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 utiliser une forme 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
Métriques pour la Détection d'Objets
Intersection sur Union
Alors que pour la classification d'images, il est facile de mesurer les performances 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 déduite. Pour cette dernière, nous utilisons ce que l'on appelle l'Intersection sur Union (IoU), qui mesure à quel point deux boîtes (ou deux zones arbitraires) se chevauchent.
Figure 2 tirée de cet excellent article de blog 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 entre 0 et 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 bien reconnue. Pour cela, nous utilisons la métrique de Précision Moyenne, qui est calculée comme suit :
- Considérer la courbe Précision-Rappel qui montre la précision en fonction d'une valeur seuil de détection (de 0 à 1).
- En fonction du seuil, nous détecterons plus ou moins d'objets dans l'image, avec des valeurs différentes de précision et de rappel.
- 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érerons que les détections pour lesquelles l'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, l'AP est mesuré pour différentes valeurs de \mbox{IoU Threshold}.
Image tirée de NeuroWorkshop
Précision Moyenne Pondérée - mAP
La principale métrique pour la Détection d'Objets est appelée Précision Moyenne Pondérée, 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 la mAP est décrit en détail
dans cet article de blog), ainsi que ici avec des exemples de code.
Différentes Approches pour la 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, à la différence 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 à 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 tirée de van de Sande et al. ICCV’11
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 que les couches de convolution ont été appliquées.
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
Image tirée de l'article officiel
R-FCN : Réseau Complètement Convolutif 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 à l'aide de ResNet-101.
- Les caractéristiques sont traitées par une Carte de Scores Sensibles à la Position. Chaque objet parmi les
Cclasses est divisé enk\times krégions, et nous entraînons le réseau à prédire des parties d'objets. - Pour chaque partie des
k\times krégions, 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 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 Srégions. - Pour chaque région, le CNN prédit
nobjets possibles, les coordonnées des boîtes englobantes et la confiance = probabilité * IoU.
Image tirée de l'article officiel
Autres Algorithmes
- RetinaNet : article officiel
- Implémentation PyTorch dans Torchvision
- Implémentation Keras
- Détection d'Objets avec RetinaNet dans les exemples Keras
- SSD (Single Shot Detector) : article officiel
✍️ Exercices : Détection d'Objets
Poursuivez votre apprentissage dans le cahier suivant :
Conclusion
Dans cette leçon, vous avez exploré un aperçu des 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 :
- Bon article de blog décrivant YOLO
- Site officiel
- YOLO : Implémentation Keras, cahier étape par étape
- YOLO v2 : Implémentation Keras, cahier étape par étape
Quiz après le cours
Révision & Étude Personnelle
- Détection d'Objets par Nikhil Sardana
- Une bonne comparaison des algorithmes de détection d'objets
- Revue des Algorithmes de Deep Learning pour la Détection d'Objets
- 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 du service de traduction automatique Co-op Translator. Bien que nous nous efforcions d'assurer l'exactitude, veuillez noter que les traductions automatisées peuvent contenir des erreurs ou des inexactitudes. Le document original dans sa langue d'origine doit être considéré comme la source faisant autorité. Pour des informations critiques, il est recommandé de recourir à une traduction humaine professionnelle. Nous déclinons toute responsabilité en cas de malentendus ou d'interprétations erronées résultant de l'utilisation de cette traduction.









