Mask R-CNN
Le Mask R-CNN est une extension du modèle Faster R-CNN conçu pour la détection d’objets, mais avec une fonctionnalité supplémentaire pour la segmentation d’instances. Ce modèle peut non seulement détecter et localiser des objets dans une image, mais aussi générer un masque de segmentation pour chaque instance d’objet détectée.
Dans cette section, nous allons utiliser TensorFlow/Keras pour charger un modèle Mask R-CNN pré-entraîné et l’utiliser pour effectuer la segmentation d’instances sur des images.
1. Concepts clés de Mask R-CNN
- Segmentation d’instances : Contrairement à la segmentation sémantique, où chaque pixel est classé dans une catégorie, la segmentation d’instances vise à détecter et à segmenter chaque instance individuelle d’une classe (par exemple, détecter et segmenter chaque voiture dans une image).
- Masque de segmentation : En plus des boîtes englobantes (bounding boxes) fournies par Faster R-CNN, Mask R-CNN génère également un masque binaire pour chaque objet détecté. Ce masque montre la forme précise de l’objet à l’intérieur de la boîte englobante.
2. Chargement d’un modèle Mask R-CNN avec TensorFlow
Nous allons utiliser un modèle pré-entraîné de Mask R-CNN disponible via le module TensorFlow Object Detection API
.
Étape 1 : Installation des dépendances
Si vous n’avez pas encore installé les bibliothèques nécessaires pour travailler avec Mask R-CNN et l’API de détection d’objets de TensorFlow, commencez par les installer :
Étape 2 : Téléchargement d’un modèle pré-entraîné Mask R-CNN
Les modèles Mask R-CNN pré-entraînés sont disponibles via le TensorFlow Model Zoo
. Vous pouvez choisir un modèle pré-entraîné sur le jeu de données COCO. Voici un exemple de téléchargement d’un modèle pré-entraîné.
Étape 3 : Utilisation de l’API TensorFlow Object Detection
L’API de détection d’objets de TensorFlow offre une interface simple pour charger et utiliser des modèles comme Mask R-CNN.
Étape 4 : Visualisation des boîtes englobantes et des masques
Une fois que vous avez les prédictions du modèle Mask R-CNN, vous pouvez dessiner les boîtes englobantes et appliquer les masques générés sur l’image d’entrée.
3. Explication étape par étape du processus
- Chargement du modèle Mask R-CNN : Nous chargeons un modèle pré-entraîné sur COCO pour la segmentation d’instances. Ce modèle est capable de détecter et de segmenter 80 objets différents.
- Prétraitement de l’image : L’image d’entrée est convertie en un tableau NumPy pour pouvoir être utilisée avec le modèle. Le modèle attend une entrée avec une forme
batch_size, height, width, channels
. - Prédictions : Le modèle génère plusieurs prédictions, dont les boîtes englobantes, les scores de confiance, les masques de segmentation, et les classes des objets détectés.
- Affichage des masques et boîtes englobantes : Nous appliquons les masques de segmentation et dessinons les boîtes englobantes sur l’image originale, avec des couleurs différentes pour chaque instance d’objet.
4. Conclusion
Le Mask R-CNN est un modèle performant pour la segmentation d’instances. En plus de la détection d’objets standard (comme le fait Faster R-CNN), il est capable de générer des masques précis pour chaque instance détectée. Cela permet de réaliser des tâches de segmentation où chaque objet est identifié individuellement, ce qui est utile pour des applications comme l’imagerie médicale, la robotique ou la vision par ordinateur avancée.