Apprenez à vous de construire le système de détection d'objet en Python (avec le code, les matériaux d'apprentissage)

Auteur: FAIZANSHAIKH

Traduction: Yan Xiao Yu

Commenté par: Zhang Ling

Cet article sur 3200 Word, lecture recommandée 10 minutes.

Cet article décrit la technologie de détection d'objet et de plusieurs façons différentes de résoudre avec vous ces domaines problématiques étude approfondie de la façon de construire notre propre système de détection d'objet en Python.

introduction

Lorsqu'une image est affichée en face de notre cerveau reconnaîtra instantanément les objets qu'il contient. D'autre part, la machine mais il faut beaucoup de temps et des données de formation pour identifier ces objets. Mais avec la récente mise à niveau du matériel et de la profondeur de l'apprentissage, la vision informatique plus facile et plus intuitive.

Voir l'image exemple suivant, le système est capable de reconnaître l'incroyable précision des différents objets dans l'image:

La technologie de détection de l'objet a été une application rapide dans tous les domaines de la vie, en aidant à escorter les véhicules autonomes dans le trafic dans les zones congestionnées violence identifiées, les équipes sportives d'aide et d'analyse pour établir le rapport de scouting, afin d'assurer que le secteur de la fabrication le lien pour obtenir le contrôle de la qualité appropriée, et bien d'autres choses. Et ce ne sont que la surface de la technologie de détection d'objet peut faire des choses!

Dans cet article, nous apprendrons ce que la technologie de détection d'objet et de plusieurs façons différentes pour résoudre ce problème, les zones suivies par l'étude approfondie de la façon de construire notre propre système de détection d'objet en Python. A la fin de cet article, vous aurez suffisamment de connaissances pour relever les défis d'une détection d'objet différent seul!

Remarque: Ce tutoriel vous prédéfini comprendre les bases de l'apprentissage en profondeur, et jusqu'à ce que cela a été résolu des problèmes simples de traitement d'image. Si vous ne le faites pas, ou besoin d'un rappel, je vous recommande de lire les articles suivants:

  • profondeur Fondation de l'apprentissage - à partir du réseau de neurones artificiels
  • https://www.analyticsvidhya.com/blog/2016/03/introduction-deep-learning-fundamentals-neural-networks/
  • Computer Vision apprentissage en profondeur - Introduction à convolution Réseaux de Neurones
  • https://www.analyticsvidhya.com/blog/2016/04/deep-learning-computer-vision-introduction-convolution-neural-networks/
  • Tutoriel: (reconnaissance d'images avec des études de cas) en utilisant une optimisation du réseau de neurones Keras
  • https://www.analyticsvidhya.com/blog/2016/10/tutorial-optimizing-neural-networks-using-keras-with-image-recognition-case-study/
annuaire
  • Quelle est la détection d'objet?
  • Nous pouvons utiliser différentes méthodes pour résoudre le problème de la détection d'objet
  • Méthode 1: manière primitive (diviser pour régner)
  • Méthode 2: augmenter le nombre de scission
  • Méthode 3: effectuer une division structurée
  • Méthode 4: Amélioration de l'efficacité
  • Méthode 5: apprentissage en profondeur en utilisant la méthode de sélection de fonction à la fin de la construction
  • Pour technique: comment utiliser la bibliothèque pour construire un modèle de détection d'objet ImageAI
Quelle est la détection d'objet?

Avant de construire le modèle le plus avancé, essayons d'abord de comprendre ce que oui de détection d'objet. Si nous devons créer un système de détection des piétons de véhicule autonome, véhicule image capturée comme illustré sur la figure. Comment décririez-vous cette image?

La voiture d'affichage d'image à proximité d'un carré, quelques personnes traversent la route devant notre voiture. Impossible d'identifier avec précision les panneaux de signalisation, système de détection des piétons du véhicule doit identifier avec précision l'emplacement des personnes à pied, afin de les éviter.

Alors, comment assurer que le système de voiture parfaite pour l'éviter? Il peut faire est de créer une boîte englobante autour de ces personnes, de sorte que le système basé sur l'emplacement des gens dans l'image, décider quel chemin prendre, pour éviter tout accident.

La détection de l'objet cible a deux aspects:

  • Tous les objets présents dans l'image et l'identification de la position
  • Filtrer les objets d'intérêt
Différentes méthodes pour résoudre le problème de la détection d'objet

Maintenant, nous savons quel est le problème, alors que la méthode (ou méthodes) qui peuvent être utilisés pour le résoudre? Dans cette section, nous allons décrire certaines techniques peuvent être utilisées pour détecter l'image de l'objet. Commencez par la meilleure façon de commencer, et de là pour trouver notre chemin. Si vous avez des suggestions sur les méthodes mentionnées ci-dessous ou une autre méthode correspondante, s'il vous plaît nous dire dans la section commentaire!

Méthode 1: manière primitive (diviser pour régner)

La meilleure façon est à l'image divisée en quatre parties:

  • Le coin supérieur gauche

  • coin supérieur droit

  • coin inférieur gauche

  • coin inférieur droit

Maintenant, la prochaine étape est d'avoir chaque partie de l'image au classificateur d'image pour la reconnaissance. De cette façon, nous allons y arriver si la sortie de chaque partie de l'image piétonne. Si oui, marquez la zone dans l'image originale. Sortie comme ceci:

Ceci est une bonne façon de commencer à essayer, mais nous sommes à la recherche d'un système plus précis et précis. Il est nécessaire d'identifier l'objet entier (ou d'une personne dans cet exemple), puisque seule une partie de la reconnaissance d'objets peut entraîner des conséquences désastreuses.

Méthode 2: augmenter le nombre de scission

système précédent a bien fonctionné, mais comment pouvons-nous améliorer? Nous pouvons augmenter le nombre de boîtes que nous entrons dans le système grâce à l'index pour améliorer la précision. La sortie devrait ressembler à ceci:

Cette méthode avantages et les inconvénients. Bien que notre solution semble un peu mieux que la méthode originale, mais une grande partie est boîte de gros tamis, les résultats réels sont fondamentalement les mêmes. Ceci est un problème, nous avons besoin d'une méthode plus structurée pour résoudre ce problème de problème.

Méthode 3: représente une structure partitions strictes

Pour construire notre système de détection d'objet dans une approche plus structurée, nous pouvons suivre les étapes suivantes:

Étape 1: L'image est divisée en 10x10 treillis, comme indiqué:

Étape 2: La définition de chaque région du centre de gravité.

Étape 3: Pour chaque barycentre sélectionner trois rapports d'aspect différents de hauteur et la surface est la suivante:

Étape 4: Tous ces domaines va créer l'image entrants classificateurs pour obtenir des prédictions.

Par conséquent, la sortie finale est comme? Un des résultats plus déterminés et stricte et ordonnée - voir ci-dessous:

Cependant, nous pouvons améliorer encore! Poursuivez votre lecture pour trouver une autre façon de produire de meilleurs résultats.

Méthode 4: Amélioration de l'efficacité

Auparavant, nous voyons la méthode dans une large mesure est acceptable, mais nous pouvons également construire un système plus efficace qu'auparavant. Pouvez-vous recommander comment le faire? Dans mon esprit, je peux faire un programme d'optimisation. Si nous pensons à méthode 3 , Vous pouvez faire deux choses pour améliorer le modèle:

  • Augmenter la taille de la grille: La taille des mailles de 20 à la place de la 10 originale:

  • Dans une variété de taille et rapport d'aspect pour sélectionner d'autres zones au lieu de seulement trois domaines: Ici, on peut entourer la zone de chaque ancre barycentre sélectionner neuf sortes de formes, à savoir, trois hauteurs différentes région carrée et six différentes hauteurs verticales et horizontales de la zone rectangulaire, qui nous fournit des régions de différents rapports d'aspect.

Encore une fois, c'est des avantages et des inconvénients. Bien que ces méthodes peuvent nous aider à atteindre un niveau plus détaillé, mais parce que nous devions passer à tous les domaines du modèle de classification d'image, ce qui entraînera l'explosion de recalcul.

Ce que nous pouvons faire est de zone sélective plutôt que Choisit tous sélectionnés. Par exemple, nous pouvons construire un modèle de classification du milieu, qui tente de prédire si la sélection est vraiment que l'arrière-plan, ou contient potentiellement un objet, ce qui peut réduire de façon exponentielle la zone du modèle de classification d'image du jugement.

Il y a un autre schéma d'optimisation est La réduction de la prédit « le même objet » . Rappelons Méthode 3 fois:

Comme vous pouvez le voir, essentiellement toutes les prédictions boîtes sont la même personne, nous pouvons choisir un. Ainsi, on peut considérer toute la coche dans la « même objet », par éventuellement un plus un probable du modèle de classification de zone de saisie d'image détectée, à prédire.

À l'heure actuelle, tous ces optimisation nous a donné des prévisions tout à fait appropriées. Nous sommes à peu près certain de gagner, mais vous pouvez deviner ce qui manque il? apprentissage en profondeur!

Méthode 5: apprentissage en profondeur en utilisant la méthode de sélection de fonction à la fin de la construction

l'apprentissage de profondeur a un grand potentiel dans le domaine de la détection d'objet. Pouvez-vous suggérer où et comment utiliser notre apprentissage en profondeur pour résoudre notre problème? J'ai énuméré quelques-unes des façons, comme suit:

  • par entrée du réseau de neurones afin de réduire les dimensions de l'image originale Au lieu d'entrer dans tous les domaines de l'image originale.
  • peut également Utilisation de réseaux de neurones pour définir une sélection de zone d'image .
  • pouvoir Renforcer l'algorithme d'apprentissage en profondeur Si proche de l'original que possible de prédire la zone de délimitation des objets dans l'image, qui veillera à ce que l'algorithme peut être plus strictement, plus finement prédire la zone de délimitation.

Maintenant, nous pouvons utiliser un seul modèle de réseau de neurones de profondeur, pour tenter de résoudre tous les problèmes lui-même, plutôt que la formation différents réseaux de neurones pour résoudre tous les problèmes. L'avantage est que le réseau de neurones Chacun des composants plus petits contribueront à optimiser d'autres parties du réseau de neurones Pour faciliter notre coopération et de formation commune dans le modèle profond.

Jusqu'à présent, toutes les méthodes que nous avons vu, nous sommes en mesure de fournir le meilleur rendement de la performance, un peu semblable à la figure ci-dessous. Nous verrons dans la section suivante sur la façon d'utiliser Python pour le créer.

Pour technique: comment la bibliothèque ImageAI Modèle détection d'objets de construction

Maintenant que nous savons quelle est la détection d'objet et la meilleure façon de résoudre ce problème, nous allons construire votre propre système de détection d'objets! ImageAI nous allons utiliser la bibliothèque, qui est une bibliothèque Python qui prend en charge tous les algorithmes d'apprentissage machine la plus avancée dans les tâches de vision par ordinateur.

modèle de prédiction de détection d'objet Run est très simple à obtenir. Nous n'avons pas le script d'installation complexe pour commencer, ou même exiger que le GPU pour générer une prédiction! Nous allons utiliser cette bibliothèque pour obtenir une sortie ImageAI dans la méthode 5 voir. Il est fortement recommandé que vous entrez le code suivant sur votre machine, car il vous aide à tirer le meilleur parti des connaissances de cette section.

S'il vous plaît noter que vous devez mettre en place le système avant de créer le modèle de détection d'objet. Anaconda après l'installation dans un système local, pour commencer la procédure suivante.

Étape 1: Utilisez python version 3.6 build environnement Anaconda.

Conda créer -nretinanet python = 3,6 Anaconda

Étape 2: Activez l'environnement et installer les logiciels nécessaires.

la source activateretinanetconda installtensorflow numpy scipy OpenCV oreiller matplotlib h5py keras

Étape 3: Installation bibliothèque ImageAI

pip installer https://github.com/OlafenwaMoses /ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl

Étape 4: Télécharger obtenir les prévisions des modèles pré-formation requis. Le modèle est basé RetinaNet (futur sujet de l'article). Accès le lien pour télécharger le modèle pré-formation --RetinaNet:

https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_coco_best_v2.0.1.h5

Étape 5: Copiez les fichiers téléchargés dans ce dossier.

Étape 6: À partir du lien ci-dessous pour télécharger l'image, l'image nommée image.png:

https://s3-ap-south-1.amazonaws.com/av-blog-media/wp-content/uploads/2018/06/I1_2009_09_08_drive_0012_001351-768x223.png

Étape 7: bloc-notes Open jupyter (bloc-notes de type jupyter dans le terminal) et exécutez le code suivant:

de détecteur imageai.Detection import ObjectDetectionimport os execution_path = os.getcwd () = détection d'objet () detector.setModelTypeAsRetinaNet () detector.setModelPath (os.path.join (execution_path de "resnet50_coco_best_v2.0.1.h5")) detector.loadModel () custom_objects = detector.CustomObjects (personne = True, voiture = False) = detector.detectCustomObjectsFromImage détection (input_image = os.path.join (execution_path, "image.png"), output_image_path = os.path.join (execution_path, « image_new. .png "), custom_objects = custom_objects, minimum_percentage_probability = 65) pour eachObject en détections: print (eachObject +": "+ eachObject ) print (" ---------- ---------------------- « )

Cela va créer un fichier image nommé image_new.png après une modification, qui contient la zone de délimitation de l'objet.

Étape 8: Si vous avez besoin d'imprimer l'image, utilisez le code suivant:

de ImageImage d'importation IPython.display ( "image_new.png")

Félicitations! Leur modèle de détection d'objets que vous avez créé pour la détection des piétons. Ce grand amis!

épilogue

Dans cet article, nous avons appris ce que la détection d'objet et modèle de détection d'objet créé l'idée, mais aussi apprendre comment utiliser la bibliothèque pour construire la ligne ImageAI modèle de détection des piétons.

Par code peaufinage, vous pouvez facilement convertir le modèle pour résoudre leurs propres problèmes de détection d'objets. Si vous avez utilisé la méthode ci-dessus pour résoudre ces problèmes, en particulier les aspects sociaux, s'il vous plaît nous dire dans les commentaires ci-dessous!

Titre original:

Understandingand Construction d'un modèle de détection d'objet à partir de zéro en Python

Lien original:

https://www.analyticsvidhya.com/blog/2018/06/understanding-building-object-detection-model-python/

Introduction Traducteur

Yan Xiaoyu, diplômé de Université forestière de Beijing, a étudié à l'Université de Californie du Sud sur le point d'appliquer biostatistique et le programme d'épidémiologie Maître. Continuer sur la route des statistiques de la santé se sont battus, les données d'amour, regard vers l'avenir.

attention Tsinghua - données Académie des sciences de Qingdao plate-forme publique micro-canal officiel " données d'envoi THU « Sisters et n ° » Les données envoyées THU « Pour plus de conférences et de bien-être contenu de qualité.

Approfondir le service, à faire 58 ville réelle pelle d'or courtier immobilier « eau aux gens. »
Précédent
Ressources | « la profondeur de l'apprentissage par renforcement » manuscrit ouvert!
Prochain
Exclusive | comment utiliser les données non supervisées massives pour établir des caractéristiques de haut niveau?
Shenzhou école de ski internationale italienne célèbre station de ski du Nord États-organiser les activités d'enseignement
Wang Lei Taiqiang! Envoyer aide à Tianjin l'année dernière, tout à fait plat, et maintenant face aux mêmes adversaires envoyant aide!
Cela italien grande honte Chine? Tu me as « de baguettes pour manger, » Je vais vous laisser « sortir de plein air »!
Exclusive | Tongji spéciale, puis une IA financière totale! (Shanghai)
Luneng fou jouer Gif! 7 minutes boom même trois buts, l'équipe de Tianjin Tianhai est écroulé!
Exclusive | vous apprendre à utiliser Keras sur affiner Google Colab la profondeur des réseaux de neurones
Comment juger est pas une jolie fille? (Soeur point première étape)
Une nouvelle poudre Année 31 | mom soldat: Nouvel An jour réveillon, ces enfants font du bénévolat
Exclusif | données sur les personnes - comment les machines co-traitement au titre du mécanisme tout à fait différent?
prendre de la police de la Floride Otake loin un jeu illégal soupçonné tanières Danghuo 18
lancement de choc géant optique Carl Zeiss nouveaux Verres intelligents, lunettes serment à briser le sort Google