Qu'est-ce que la détection d'objections avec Tensorflow ? et comment ça marche [Exemples]

Publié: 2021-06-18

Table des matières

Détection d'objets - Qu'est-ce que cela signifie ?

La détection d'objet est un processus par lequel un objet peut être identifié ou localisé dans une image ou une vidéo à l'aide de la vision par ordinateur. Si nous avons une image avec un chat et une personne et que nous devons classer les objets dans une image, alors la technique de détection d'objets, c'est-à-dire la détection d'objets, peut être appliquée et les objets requis, c'est-à-dire le chat et la personne, peuvent être localisés. Ceci peut être réalisé grâce à des cadres de délimitation dessinés autour des objets détectés. Par conséquent, l'emplacement des objets souhaités est connu.

La plupart des gens sont encore confus avec la reconnaissance d'objets et la reconnaissance d'images. La différence entre les deux réside dans le fait que dans le cas de la reconnaissance d'image, une image entière est étiquetée alors que dans la reconnaissance d'objet, les objets de l'image sont étiquetés.

La classe de l'objet telle qu'une personne, une table, etc., et les coordonnées de l'emplacement des objets dans une image donnée peuvent être identifiées grâce à la technique de détection d'objets. La performance d'un algorithme de détection d'objet dépend de sa capacité à localiser des objets dans une image. Un tel exemple de détection d'objets est la détection de visage.

Pourquoi la détection d'objets ?

En raison des capacités uniques appartenant à la détection d'objets, le processus peut être appliqué dans de nombreuses tâches importantes, telles que :

  • Comptage des personnes dans une foule.
  • Conduite dans le cas des voitures autonomes.
  • Vidéosurveillance.
  • Détection du visage.
  • Détection d'une anomalie

Approches de détection d'objets

Les algorithmes utilisés pour la méthode de détection d'objets peuvent être formés avant son utilisation ou non supervisés.

Deux approches, à savoir les approches basées sur l'apprentissage automatique et les approches basées sur l'apprentissage profond, sont utilisées pour la détection d'objets.

  • Diverses caractéristiques d'une image telles que l'histogramme de couleur ou les bords, etc. sont examinées par les approches basées sur ML. Des modèles de régression basés sur ces caractéristiques sont ensuite générés et l'emplacement de l'objet est prédit.
  • Les réseaux de neurones convolutifs (CNN) sont utilisés dans le cas d'approches basées sur l'apprentissage profond pour détecter un objet par des méthodes non supervisées.

Fonctionnement d'une méthode de détection d'objets

La tâche de détection d'objet peut être effectuée en suivant les étapes suivantes :

  • L'image d'entrée est divisée en plusieurs petits segments. Des ensembles de boîtes liées ensemble sont créés couvrant toute l'image.
  • Chaque zone segmentée est soumise au processus d'extraction de caractéristiques. Il prédit alors la présence d'objets valides dans la boîte. Le processus détermine s'il y a des caractéristiques visuelles présentes dans la boîte.
  • Une seule boîte est construite pour les boîtes qui se chevauchent.

Détection d'objets à l'aide de TensorFlow

TensorFlow peut être défini comme une bibliothèque open source pour l'apprentissage automatique et a été largement utilisée dans plusieurs applications telles que la reconnaissance d'images, la recherche vocale, la reconnaissance d'objets, etc. Les API Python et C++ sont fournies par TensorFlow.

  • Des algorithmes d'apprentissage en profondeur et des algorithmes d'apprentissage automatique sont présents dans TensorFlow.
  • Python est utilisé comme langage frontal et fonctionne également efficacement en C++.
  • Un graphe de calcul est créé par les développeurs à l'aide de TensorFlow.
  • Les opérations mathématiques sont représentées par des nœuds dans un graphique et les données sont représentées par les connexions.

TensorFlow a été développé pour mener des recherches sur l'apprentissage automatique et les réseaux de neurones profonds par l'équipe Google Brain au sein de l'organisation Machine Intelligence Research de Google.

Une API (Application Programming Interface) empêche les développeurs d'écrire des codes à partir de zéro grâce à la fourniture d'un ensemble d'opérations communes. L'API de détection d'objets TensorFlow est appliquée pour former les modèles à la détection d'objets. Le cadre est construit sur le TensorFlow. Les fonctionnalités appartenant à la détection d'objets TensorFlow sont :

  • Les modèles qui sont déjà entraînés sont appelés le "Model Zoo" et sont disponibles dans le framework.
  • Les ensembles de données utilisés pour former les différents modèles formés sont :
  • Jeu de données COCO.
  • Jeu de données KITTI.
  • Ensemble de données d'images ouvertes

Le cadre de détection d'objets TensorFlow se compose de divers modèles ayant une architecture variée et donc différentes précisions de prédiction. Les types d'architecture des modèles déjà entraînés sont :

1. MobileNet-SSD

Un réseau de convolution unique identifie l'emplacement de la boîte englobante en un seul passage. L'architecture se compose d'une couche de base (MobileNet) avec plusieurs couches de convolution. Les emplacements des boîtes englobantes sont prédits par l'opération sur les cartes d'entités. Les informations présentes avec chaque boîte englobante sont répertoriées ci-dessous :

  • Emplacements décalés de la boîte englobante dans les quatre coins (cx, cy, w, h).
  • Probabilités de classe C (c1, c2, …cp)

La forme de la boîte n'est pas prédite par SSD, mais plutôt les emplacements de la boîte sont prédits. Le nombre K de boîtes englobantes est déterminé pour chaque emplacement de carte d'entités. La forme de la boîte englobante k est déjà définie avant la formation proprement dite.

L'équation suivante calcule la perte.

L=1/N (classe L + boîte L)

Où, N : nombre de cases appariées, L classe : perte softmax, L box : erreur associée aux cases appariées.

2. MobileNet

Une convolution standardisée est factorisée en une convolution et une convolution ponctuelle soit 1*1 convolutions. Le calcul est réduit avec la réduction de la taille du modèle grâce à la factorisation.

3. Inception-SSD

Inception-SSD a la même architecture que MobileNet-SSD, cependant, la base de l'architecture dans le cas de MobileNet-SSD était MobileNet, et ici c'est le modèle Inception.

4. RCNN plus rapide

La prédiction de l'emplacement de l'objet est basée sur des algorithmes de proposition de région. Les réseaux de détection ont réduit leur temps de fonctionnement grâce à l'avancement de SSPnet et Fast R-CNN. Une carte de caractéristiques convolutionnelles est générée lorsqu'une image d'entrée est introduite dans le réseau neuronal dans le cas de Faster RCNN.

La proposition de région est ensuite identifiée à travers la carte des caractéristiques convolutionnelles et déformée en carrés. Les carrés sont ensuite remodelés en une taille qui est fixée par une couche de regroupement ROL (Region Of Interest Layer). Il est ensuite utilisé comme entrée d'une couche entièrement connectée.

La couche softmax est utilisée pour prédire la classe de proposition de région à partir du vecteur de caractéristiques ROL. Les valeurs de décalage de la boîte englobante sont également prédites.

Sélection du modèle TensorFlow de détection d'objets

Le bon modèle TensorFlow de détection d'objets peut être choisi à partir de l'API TensorFlow en fonction des besoins spécifiques de l'utilisateur. Le réseau de détection monocoup, c'est-à-dire le réseau SSD peut être utilisé si l'utilisateur a besoin d'un modèle à haut débit. Le modèle est assez rapide et peut détecter le flux vidéo à un fps élevé.

Cependant, si plus de précision est requise, le FasterRCNN pourrait être un meilleur choix car la précision du modèle est élevée mais a une vitesse comparativement plus lente. Par conséquent, l'utilisateur peut explorer les différentes opportunités disponibles selon ses besoins.

Un exemple de TensorFlow pour la détection d'objets

L'utilisation de l'API TensorFlow pour la détection d'objets ne nécessite aucune connaissance préalable de l'apprentissage automatique ou des réseaux de neurones. Les fichiers fournis par l'API seront principalement utilisés. La seule exigence est de connaître les bases de python.

1. Téléchargement de TensorFlow

  • TensorFlow peut être téléchargé via le git ou téléchargé manuellement.
  • Le téléchargement de TensorFlow via git est l'un des moyens les plus simples de téléchargement. Pour le téléchargement via git, le système doit déjà avoir git pré-installé. Une fois que git est installé, la commande suivante doit être saisie dans le terminal.
  • Le lien suivant doit être visité et le bouton vert doit être cliqué. Les fichiers compressés doivent être téléchargés et extraits.
  • Le dossier doit être renommé en modèles à partir de models-master.
  • Un environnement doit être créé virtuellement. L'un des principaux objectifs de la création d'un environnement virtuel Python est de créer un environnement Python isolé. Il est à utiliser pour des projets sous python. Par conséquent, les dépendances de chaque projet seront différentes.
  • Les commandes suivantes doivent être utilisées dans l'invite d'anaconda :

Dans ce cas, l'environnement virtuel est nommé obj_detection

conda create -n obj_detection -> pour configurer virtuellement l'environnement

conda activate obj_detection -> pour activer l'environnement virtuel

2. Installation des dépendances

  • Les dépendances requises par l'API doivent être installées sur le PC local.
  • Les dépendances peuvent être installées après l'activation de l'environnement virtuel.
  • La commande suivante doit être tapée

pip installer tensorflow

  • Si un GPU est présent, la commande suivante est requise

pip installer tensorflow-gpu

  • Les autres dépendances sont à installer via la commande suivante

pip install pillow Cython lxml jupyter matplotlib contextlib2 tf_slim

3. Téléchargement des tampons de protocole (Protobuff)

  • Les tampons de protocole sont certains mécanismes pour structurer les données en série comme le XML.
  • 'Protobuff' doit être téléchargé à partir du lien .
  • Extrayez les fichiers et copiez-les dans le sous-dossier nommé "recherche" dans le dossier "modèles" déjà téléchargé.
  • Le dossier contenant les fichiers protobuf doit être navigué et exécuté la commande suivante

protocole object_detection/protos/*.proto –python_out=.

  • L'exécution réussie de la commande créera un fichier python pour chacun des fichiers proto dans le dossier protos sous la détection d'objet dans le dossier des modèles.

Conclusion

La détection d'objets est une technique largement appliquée dans diverses applications en temps réel. Nous avons appris que la technique peut être réalisée grâce à l'application d'algorithmes d'apprentissage automatique ou d'apprentissage en profondeur.

De plus, avec l'application d'une API, c'est-à-dire TensorFlow, les utilisateurs doivent avoir une connaissance préalable du concept de programmation python. Ce n'est qu'alors que les méthodes de détection d'objets utilisant l'API TensorFlow pourraient être correctement comprises. TensorFlow est une plate-forme open source pour l'apprentissage automatique. Par conséquent, pour comprendre le mécanisme de fonctionnement de TensorFlow et son application, il est préférable d'acquérir des connaissances sur les concepts d'apprentissage automatique.

Si vous êtes un professionnel de niveau intermédiaire qui souhaite apprendre la programmation python, déployer des modèles ML avec le cloud computing, vous pouvez consulter le cours « Master of Science in Machine Learning & Artificial Intelligence » proposé par upGrad . Le cours certifié conjointement par IIIT Bangalore et LJMU alignera vos objectifs sur la formation d'experts et vous permettra de préparer votre entrée dans les entreprises de vos rêves. Tout ce dont vous avez besoin est d'avoir un baccalauréat. Notre équipe d'assistance est disponible pour vous répondre s'il y a des questions liées au cours par upGrad.

Menez la révolution technologique basée sur l'IA

PROGRAMME EXÉCUTIF PG EN APPRENTISSAGE MACHINE ET INTELLIGENCE ARTIFICIELLE
Appliquer maintenant