Vous êtes sur la page 1sur 9

Vision appliquée pour la Robotique

Majeure ROBIA/ module IA Vision


2022/2023

TP
Classification d'images par
Deeplearning.

Prise en main de Tensorflow

Partie 2
Question 1

1.a Expliquer la différence entre la classification d’image, la détection d’image et la


segmentation d’images

- La classification d’images : Elle consiste à attribuer une étiquette ou une classe à toute une image.
On peut par exemple vouloir donner une liste d’images à une IA afin de lui demander de les
classifier en deux catégories, les images de villes et les images de campagne, ou encore de
montagne. Il faut que l’IA reconnaisse des motifs pour lui permettre d’apprendre les
caractéristiques discriminatives de chaque classe.

- La détection d’images : La détection d’images est la version « évoluée » de la classification d’images.


Celle-ci consiste à détecter certains objets dans une image, et à identifier ce que c’est, en notant sa
position. Cela va être très utile notamment dans la surveillance vidéo et la conduite autonome, car
elle va permettre de détecter des éléments inhabituels et les identifier pour y réagir. Là où la
classification permet de juste détecter ce qu’est l’image, la détection permet à la fois de le classifier
et d’identifier sa position.

- La segmentation : La segmentation d’images permet de découper une image en plusieurs segments


ou région homogène. On va par exemple distinguer le ciel des bâtiments et de la route visible au
premier plan. Une segmentation peut se faire au pixel près, et ainsi permettre une vraie
compréhension d’une image. On pourra ainsi détecter qu’il n’y a rien d’inhabituel si le ciel change
pour s’obscurcir à l’approche de la nuit.

1.b Quelles sont les grandes solutions de détection d’objets


(Voir par exemple https://developers.arcgis.com/python/guide/how-ssd-works/)

On peut distinguer plusieurs grandes solutions de détections d’objets à travers les réseaux de neurones
convolutifs :

- SSD (Single Shot Detector) : SSD est une solution de détection d'objets qui se distingue par sa
capacité à prédire des boîtes englobantes de différentes échelles et ratios directement à partir de
différentes couches du réseau. Cela permet à SSD de détecter des objets de différentes tailles dans
une seule passe (single shot), ce qui le rend rapide et précis.

- Faster R-CNN : C’est l'une des premières architectures de détection d'objets qui a introduit le
concept de régions d'intérêt (Region of Interest, ROI) et de propositions d'ancres. Il combine un
réseau de neurones convolutionnels pour l'extraction de caractéristiques avec une région de
proposition (Region Proposal Network, RPN) pour générer des propositions d'ancres. Ces
propositions sont ensuite utilisées pour prédire les boîtes englobantes et les classes des objets
détectés.

- RetinaNet : C’est une architecture de détection d'objets qui résout le problème du déséquilibre de
classe souvent rencontré dans la détection d'objets. Il introduit une nouvelle fonction de perte
appelée Focal Loss, qui donne plus de poids aux exemples difficiles (objets moins fréquents ou mal
classifiés avant). Cela permet de traiter efficacement les classes d'objets rares et d'améliorer la
détection des petits objets.

Question 2
On s’intéresse à l’exemple suivant

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/hub/tutorials/tf2_object_
detection.ipynb

(Attention pour une raison curieuse si le code ne marche pas une solution peut être d’utiliser une autre
version de object_detection, en ajoutant par exemple une cellule avant le moment qui pose problème : !pip
install object_detection==0.0.3)

2.a Quelles sont les classes reconnues par le réseau ?


Le réseau reconnait les plages, les chiens, les scarabées, les téléphones et les oiseaux, ou encore les
différents éléments trouvables sur la terrasse d’un restaurant à Naxos, en Grèce.

2.b Quelle partie du code correspond au chargement du modèle de réseau. Quels


sont les modèles proposés
C’est la partie « Loading the selected model from TensorFlow Hub », dans laquelle on a une box de sélection
d’un modèle de réseau, qui est ensuite importé grâce à TensorFlow Hub.
2.c Quelles sont les structures des modèles de réseaux sous-jacents ?
- CenterNet :

o Backbone : Couches convolutionnelles (comme ResNet ou Hourglass Network) pour


l'extraction des caractéristiques.

o Tête de détection : Couches de convolutions pour prédire les points clés des objets
(centres), ainsi que les largeurs et hauteurs des boîtes englobantes.

- EfficientDet :

o Backbone EfficientNet : EfficientDet utilise une version d'EfficientNet comme backbone


pour extraire des caractéristiques à partir de l'image d'entrée. Le backbone est
généralement pré-entraîné sur des tâches de classification d'images

o Branche du réseau bi-directionnel (BiFPN) : EfficientDet utilise une structure appelée BiFPN
(Bidirectional Feature Pyramid Network) pour agréger et fusionner les caractéristiques
extraites à différentes échelles spatiales. Cela aide à créer une pyramide de caractéristiques
(feature pyramid) qui est utilisée pour la détection d'objets à différentes tailles.

o Têtes de régression et de classification : Le modèle a des têtes de régression et de


classification qui sont attachées à la pyramide de caractéristiques. Ces têtes sont
responsables de prédire les boîtes englobantes (régression) et les classes d'objets
(classification) pour chaque région d'intérêt dans l'image.

o Ancres et génération de propositions : EfficientDet utilise des ancres (anchors) à


différentes échelles et ratios pour générer des propositions de régions d'intérêt. Ces
propositions sont ensuite filtrées et ajustées par les têtes de régression pour obtenir les
boîtes englobantes finales.

o Fonction d'activation et seuils de confiance : Des fonctions d'activation telles que la


fonction d'activation softmax sont utilisées pour calculer les scores de confiance pour
chaque classe d'objet. Un seuil de confiance est généralement appliqué pour filtrer les
détections avec des scores de confiance inférieurs à un certain seuil.

- SSD (Single Shot MultiBox Detector) :

o Backbone : Couches convolutionnelles (par exemple, VGG, ResNet) pour l'extraction des
caractéristiques.

o Couches de détection : Plusieurs couches de convolutions à différentes échelles pour


prédire les classes d'objets et les boîtes englobantes.

- Faster R-CNN :

o Backbone : Couches convolutionnelles (comme VGG, ResNet) pour l'extraction des


caractéristiques.

o RPN (Region Proposal Network) : Couches de convolutions pour générer des propositions
de régions (boîtes englobantes).

o RoI (Region of Interest) Pooling : Opération de RoI Pooling pour extraire des
caractéristiques de régions d'intérêt.

o Têtes de classification et de régression : Couches de convolutions pour prédire les classes


d'objets et les ajustements de boîtes englobantes.

- Mask R-CNN :
o Backbone : Couches convolutionnelles (comme ResNet) pour l'extraction des
caractéristiques.

o RPN (Region Proposal Network) : Couches de convolutions pour générer des propositions
de régions.

o RoI Align : Opération de RoI Align pour extraire des caractéristiques de régions d'intérêt
sans perte de précision.

o Têtes de classification, de régression et de segmentation : Couches de convolutions pour


prédire les classes d'objets, les ajustements de boîtes englobantes et les masques binaires
pour la segmentation d'instance.

2.d Tester sur une douzaine d’images de votre choix (Essayer sur des images
contenant le plus de classes possibles reconnus) et faites un tableau comparatif
Faster Mask
CenterNe EfficientDe
Images/Model SSD R- R-
t t
CNN CNN

9 (1
8 8 8 faux 8
positif)

29 (3 20 (2
22 (1
faux faux
26 17 faux
positifs positifs
positif)
) )
4 (1
4 (1 faux
3 3 3 faux
positif)
positif)

14 (8
16 (10 14 ( 5
12 (6 faux 6 (1 faux faux
faux faux
positifs) positif) positifs
positif) positif)
)

9 (5
13 (9 14 (9
7 (5 faux 4 (2 faux faux
faux faux
positifs) positifs) positifs
positif) positif)
)

8 (3
9 (4 8 (4
6 (2 faux 5 (1 faux faux
faux faux
positifs) positif) positifs
positif) positif)
)
6 (4
4 (1
7 (2 faux 5 (1 faux faux
faux 5
positifs) positif) positifs
positif)
)

11 (3 28 (3
faux 11 (6 faux
32 4 faux
positifs positifs
) positifs )
)

Question 3

3.a A quoi sert Tensorflow Hub, et y a-t-il des solutions équivalentes ?


Tensorflow Hub est une bibliothèque open-source permettant de partager et d’utiliser des modules de
machines learning pré-entrainés, que l’on pourra importer aisément dans nos projets sans avoir à entrainer
le modèle. Il y a plusieurs solutions plus ou moins équivalentes :

- Hugging Face Transformers : Une bibliothèque appelée "Transformers" qui met à disposition des
modèles de traitement du langage naturel (NLP) pré-entraînés. Ces modèles peuvent être utilisés
pour des tâches telles que la classification de texte, la traduction, la génération de texte, etc. La
bibliothèque est très populaire dans la communauté de la recherche en NLP.

- PyTorch Hub : C’est l'équivalent de TensorFlow Hub pour PyTorch, un autre framework de machine
learning. Il offre un moyen simple de partager et de réutiliser des modèles pré-entraînés dans
l'écosystème PyTorch.

- ONNX Model Zoo : L'Open Neural Network Exchange (ONNX) est un format open-source pour
représenter des modèles de machine learning. Le ONNX Model Zoo est un référentiel de modèles
ONNX pré-entraînés, qui peuvent être utilisés avec différents frameworks de machine learning
prenant en charge le format ONNX.

- Apache MXNet Model Zoo : C’est aussi un zoo de modèles qui inclut des modèles pré-entraînés
pour diverses tâches telles que la classification d'images, la détection d'objets, etc.

3.b Combien trouve t-on sur Tensorflow Hub de réseaux de détection d’objets ?
On trouve 101 réseaux de neurones différents.
3.c Quelles sont les architectures de ces réseaux ?
On retrouve de nombreuses architectures de réseau de détection d’objets :

- CenterNet

- EfficientDet

- FastDepth

- Faster R-CNN

- Mask R-CNN

- MobileNet V2

- Multiple

- RetinaNet

- RNN

- SSD

- SSD Mobilenet V1

- SSD Mobilenet V2

- SSD Mobilenet V2 FPN

- SSD Spaghettinet

- YOLOv5

- Tridentnet

- FCOS

- FSAF

- RegNetX

- YOLO

3.d Quelles sont les classes reconnues ?


On retrouve les 91 classes de COCO 2017, les 600 classes d’OpenImage v4, les 5 classes de CPPE-5 et les
classes de NYU Depth V2.
3.e Y a-t-il des exemples pour gérer une phase d’apprentissage ?
On peut en effet trouver des exemples de code et des tutoriels pour gérer une phase d’apprentissage
facilement à partir de modèles pré-entrainés, en se basant sur des modèles Keras trouvables sur Tensorflow
Hub.

https://www.tensorflow.org/hub/tutorials/tf2_image_retraining?hl=en

Vous aimerez peut-être aussi