Télécharger un réseau pré-entraîné à la détection d'objets des des images
Acquis d'apprentissage visés :
- Connaître les principaux avantages/inconvénients des réseaux R-CNN et SSD.
- Savoir installer dans l'arborescence de travail un réseau pré-entrainé téléchargé depuis le site "TensorFlow2 Detection Model Zoo".
Durée approximative : 10 minutes (dépend du débit internet)
Les réseaux tensorflow pré-entraînés à la détection d’objets
Plusieurs familles de réseaux pré-entrainés dédiés à la détection d’objets sont proposés sur le site TensorFlow 2 Detection Model Zoo, parmi lesquelles :
-
Les réseaux R-CNN (Region-based Convolutional Neural Network) : basés sur le concept de recherche ciblée (selective search, voir lectures [1]).
(source image : https://arxiv.org/pdf/1311.2524.pdf)
Au lieu d’appliquer la sous-fenêtre d’analyse à toutes les positions possibles dans l’image, l’algorithme de recherche ciblée génère 2000 propositions de régions d’intérêts où il est le plus probable de trouver des objets à détecter. Cet algorithme se base sur des éléments tels que la texture, l’intensité et la couleur des objets qu’il a appris à détecter pour proposer des régions d’intérêt. Une fois les 2000 régions choisies, la dernière partie du réseau calcule la probabilité que l’objet dans la région appartienne à chaque classe. Les versions Fast R-CNN et Faster R-CNN rendent l’entraînement plus efficace et plus rapide. -
Les réseaux SSD (Single Shot Detector, voir lectures [2] et [3]) : font partie des détecteurs considérant la détection d’objets comme un problème de régression. L’algorithme SSD utilise d’abord un réseau de neurones convolutif pour produire une carte des points clés dans l’image puis, comme Faster R-CNN, utilise des cadres de différentes tailles pour traiter les échelles et les ratios d’aspect.
La différence entre ces deux familles de réseaux est qu’un réseau R-CNN réalise une classification sur chacune des 2000 fenêtres générées par l’algorithme de recherche ciblée, alors qu’un réseau SSD cherche à prédire la classe ET la fenêtre de l’objet en même temps. Cela rend les réseaux SSD plus rapides que les réseaux Faster R-CNN, mais également moins précis.
Télécharger un réseau R-CNN pré-entraîné et l’installer dans l’arborescence de travail
Dans le tableau du site TensorFlow 2 Detection Model Zoo, les performances des différents réseaux sont exprimées en COCO mAP (Mean Average Precision), métrique couramment utilisée pour mesurer la précision d’un modèle de détection d’objets. Elle consiste à mesurer la proportion de détections réussies sur des images déjà annotées du dataset COCO (Common Object in CONtext) qui contient 200 000 images annotées avec 80 objets différents. Cette mesure sert de référence pour comparer la précision de différentes architectures de détection d’objets (cf Lectures complémentaires [2] en fin de page).
📥 Pour la suite du travail, tu peux utiliser le Faster R-CNN ResNet50 V1 640x640
téléchargeable sur le site TensorFlow 2 Detection Model Zoo (~203 Mo).
Télecharge puis extrait l’archive TGZ au bon endroit dans l’arborescence de travail :
# From within tod_tf2/
(tf2) jlc@pikatchou $ wget http://download.tensorflow.org/models/object_detection/tf2/20200711/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz -P /tmp
(tf2) jlc@pikatchou $ tar xvzf /tmp/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz -C pre-trained
(tf2) jlc@pikatchou $ rm /tmp/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.gz
puis créé le dossier correspondant faster_rcnn_resnet50_v1_640x640_coco17_tpu-8
dans le dossier <project>/training
.
Exemple : projet de reconaissance de chiffres écrits sur des cubes
Avec le projet faces_cubes :
# From within tod_tf2/
(tf2) jlc@pikatchou $ mkdir faces_cubes/training/faster_rcnn_resnet50_v1_640x640_coco17_tpu-8
Vérifie avec la commande tree
:
# From within tod_tf2/
(tf2) jlc@pikatchou $ tree -d . -I models
.
├── faces_cubes
│ ├── images
│ │ ├── test
│ │ └── train
│ └── training
│ └── faster_rcnn_resnet50_v1_640x640_coco17_tpu-8
├── pre-trained
│ └── faster_rcnn_resnet50_v1_640x640_coco17_tpu-8
│ ├── checkpoint
│ └── saved_model
│ └── variables
└── tod_tf2_tools