Apprenez à vous avec 10 lignes de Python atteindre la détection cible (avec le code)

Source: Big Digest de données

Cet article sur 2729 Word, lecture recommandée 6 minutes.

Cet article décrit un programme appelé bibliothèque ImageAI Python qui intègre le cadre actuel d'apprentissage en profondeur populaire et bibliothèque vision informatique, vous a appris à construire vos propres applications de détection de cible.

Contexte réponse lettre privée, « 0706 », peut obtenir les fichiers de code et le modèle.

Juste 10 lignes de code pour réaliser la détection d'objet? !

L'auteur et son équipe ont construit une bibliothèque Python appelée ImageAI, la profondeur du cadre d'apprentissage intégré populaire d'aujourd'hui et de Computer Vision Library. Cet article vous a appris à construire vos premières applications de détection de cible, et de petites séries a aidé à fosse fait un pas, pro-test efficace!

Personne ne supermarché, reconnaissance des visages, sans pilote, de nombreux scénarios d'utilisation et cas, la « détection d'objet » de la vision informatique devient le plus prometteur.

Les sons comme une technique difficile nécessite beaucoup de données de formation et d'algorithmes pour terminer. En fait, l'auteur a développé une bibliothèque en Python, vous pouvez utiliser dix lignes de code pour obtenir une détection des cibles plus efficace.

Les lecteurs qui ne connaissent pas, nous prenons un coup d'oeil, à la fin est ce que la détection des cibles, et les défis auxquels sont confrontés les développeurs de logiciels.

Détection cible au moyen de systèmes informatiques et de logiciels dans l'image / scène, les cibles identifiées et chaque art de la catégorie cible. Il a été largement utilisé dans le domaine de la détection de visage humain, la détection des véhicules, le nombre de piétons, image réseau, les systèmes de sécurité et de véhicules aériens sans pilote. Avec les efforts infatigables du développement des développeurs de technologies informatiques et de logiciels, la technologie de détection cible future sera plus largement popularisé.

Utilisation dans des applications et des systèmes dans les méthodes de détection de cibles avancées, ainsi que de construire de nouvelles applications basées sur ces méthodes ne sont pas faciles. La détection précoce est l'objectif de certains algorithmes basés sur l'algorithme classique mis en uvre, tels que des supports OpenCV (bibliothèque populaire Computer Vision). Cependant, les performances de ces algorithmes classiques en raison des conditions limitées.

En 2012, la profondeur de champ d'étude a un certain nombre de percées, les chercheurs ont mis en avant une série de nouveaux algorithmes de détection de cibles de haute précision et des méthodes, telles que RCNN, Fast-RCNN, plus rapide-RCNN, RetinaNet, ainsi que rapide et précis et le SSD YOLO ainsi de suite. Pour utiliser ces méthodes et algorithmes basés sur la profondeur de l'apprentissage (bien sûr, la profondeur de l'apprentissage est également basé sur l'apprentissage de la machine), il faut une profonde compréhension des mathématiques et le cadre de l'apprentissage en profondeur. Des millions de développeurs de logiciels dédiés à la technologie de détection cible d'intégration pour développer de nouveaux produits. Mais veulent comprendre la technologie et être utilisée pour les non-programmeurs pour apprendre la profondeur du champ est pas facile.

Un auto-développeur de l'ordinateur il y a Moïse Olafenwa quelques mois au courant du problème, et développé avec la bibliothèque Python nommé compagnon ImageAI ensemble.

ImageAI permet aux programmeurs et aux développeurs de logiciels que quelques lignes de code, vous pouvez facilement intégrer la technologie de vision par ordinateur la plus avancée à leurs applications existantes et nouvelles à l'intérieur.

Avec ImageAI obtenir une détection de cible, il vous suffit de suivre les étapes suivantes:

  • Installation de Python
  • Installation ImageAI et bibliothèques connexes
  • Télécharger le fichier objet modèle de détection
  • Exécuter du code d'échantillon (ligne 10 uniquement)

préparations

Cet environnement de test pour les systèmes Windows 64 bits, la version Python 3.6.

Télécharger et installer Python 3, Python et installer pip sur le site officiel.

Télécharger:

https://python.org

https://pip.pypa.io/en/stable/installing/

Installation suivante dépendances avec pip

Trouvez l'installation Pyhthon Scripts dans le dossier de fichiers, par exemple C: \ XXX \ Python \ Python36 \ Scripts, cmd pour ouvrir une fenêtre de commande, entrez les informations suivantes afin de commander l'installation.

1. tensorflow:

pip installer tensorflow

2. Numpy:

pip installer numpy

3. SciPy:

pip installer scipy

4. OpenCV:

pip installer OpenCV-python

5. Coussin:

pip installer oreiller

6. Matplotlib:

pip installer matplotlib

7. H5py:

pip installer h5py

8. Keras:

pip installer keras

9. ImageAI:

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

Remarque: Lorsque vous installez ImageAI si une exception se produit, peut être téléchargé le fichier .whl et placé dans le dossier Scripts, installez avec la commande suivante:

pip installer imageai-2.0.1-AP3-aucun-any.whl

fichier modèle RetinaNet à télécharger pour la détection cible:

Télécharger:

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

Fini les préparatifs, vous pouvez écrire votre propre code pour détecter le premier but. Créer un nouveau fichier et le nom Python (par exemple FirstDetection.py), puis le code suivant est écrit dans le fichier. Ensuite, les fichiers modèles RetinaNet, FirstDetection.py et que vous voulez vérifier les images sur le même chemin, et l'image nommée « image.jpg ».

Ci-dessous les 10 lignes de code FirstDetection.py:

de l'importation de détection d'objet imageai.Detection

import os

execution_path = os.getcwd ()

Détecteur = détection d'objet ()

detector.setModelTypeAsRetinaNet ()

detector.setModelPath (os.path.join (execution_path, "resnet50_coco_best_v2.0.1.h5"))

detector.loadModel ()

détections = detector.detectObjectsFromImage (input_image = os.path.join (execution_path, "image.jpg"), output_image_path = os.path.join (execution_path, "imagenew.jpg"))

pour eachObject en Détections:

imprimer (eachObject + ":" + eachObject )

Ensuite, double-cliquez sur FirstDetection.py exécuter le code, et attendez un moment, les résultats de reconnaissance seront imprimés dans la console. Une fois que les résultats sont affichés dans la console, contenant le dossier FirstDetection.py, vous trouverez un fichier image nouvellement enregistré nommé « imagenew.jpg ».

Remarque: L'exception suivante se produit lorsque vous exécutez le code:

Vous devez installer le fichier de dépendance Numpy + MKL correspondant au .whl de téléchargement et placé sous le dossier Scripts, pip fichiers d'installation de .whl.

Télécharger:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

Les résultats de détection

Considérez les images exemple suivant, et ces deux nouvelles images ont été testées et stockées.

il y a détection:

Après la détection:

Résultats des tests:

personne: 55,8402955532074

personne: 53,21805477142334

personne: 69,25139427185059

personne: 76,41745209693909

vélo: 80,30363917350769

personne: 83,58567953109741

personne: 89,06581997871399

camion: 63,10953497886658

personne: 69,82483863830566

personne: 77,11606621742249

bus: 98,00949096679688

camion: 84,02870297431946

voiture: 71,98476791381836

Résultats des tests:

personne: 71,10445499420166

personne: 59,28672552108765

personne: 59,61582064628601

personne: 75,86382627487183

moto: 60,1050078868866

bus: 99,39600229263306

voiture: 74,05484318733215

personne: 67,31776595115662

personne: 63,53200078010559

personne: 78,2265305519104

personne: 62,880998849868774

personne: 72,93365597724915

personne: 60,01397967338562

personne: 81,05944991111755

moto: 50,591760873794556

moto: 58,719027042388916

personne: 71,69321775436401

vélo: 91,86570048332214

moto: 85,38855314254761

Aussi quelques images résultats des tests sont les suivants:

il y a détection:

Après la détection:

Résultats des tests:

voiture: 59,04694199562073

voiture: 50,62631368637085

voiture: 71,59191966056824

voiture: 52,60368585586548

personne: 76,51243805885315

voiture: 56,73831105232239

voiture: 50,02853870391846

voiture: 94,18612122535706

voiture: 70,23521065711975

voiture: 75,06842017173767

voiture: 87,21032738685608

voiture: 89,46954607963562

personne: 73,89532923698425

vélo: 90,31689763069153

bus: 65,3587281703949

Il a pu détecter la vache ......

Résultats des tests:

personne: 55,15214800834656

personne: 62,79672980308533

personne: 69,01599168777466

personne: 67,26776957511902

personne: 75,51649808883667

personne: 52,9820442199707

personne: 67,23594665527344

personne: 69,77047920227051

personne: 83,80664587020874

personne: 61,785924434661865

personne: 82,354336977005

personne: 93,08169484138489

vache: 84,69656705856323

Résultats des tests:

personne: 65,07909297943115

personne: 65,68368077278137

personne: 68,6377465724945

personne: 83,80006551742554

personne: 85,69389581680298

personne: 55,40691018104553

personne: 56,62997364997864

personne: 58,07020664215088

personne: 70,90385556221008

personne: 95,06895542144775

explication code

Expliquons le sens de ces 10 lignes de code.

de l'importation de détection d'objet imageai.Detection

import os

execution_path = os.getcwd ()

Ce qui précède de trois lignes, la première détection de la cible sur la base de ligne ImageAI introduite, l'introduction de la deuxième rangée de la classe de python, la troisième ligne définit une variable pour enregistrer le fichier python, modèle de chemin RetianNet et des fichiers d'image du dossier.

Détecteur = détection d'objet ()

detector.setModelTypeAsRetinaNet ()

detector.setModelPath (os.path.join (execution_path, "resnet50_coco_best_v2.0.1.h5"))

detector.loadModel ()

détections = detector.detectObjectsFromImage (input_image = os.path.join (execution_path, "image.jpg"), output_image_path = os.path.join (execution_path, "imagenew.jpg"))

Le dessus de cinq lignes, la première ligne définit le type de détection d'objet, la deuxième ligne est réglé sur le type de modèle RetinaNet, troisième trajet de ligne de modèle dans le fichier de modèle de chemin d'RetinaNet, quatrième rangées de chargement modèle basé sur la détection de la cible, puis la cinquième rangée appeler la fonction de détection, et de régler les images d'entrée de chemin et les images de sortie.

pour eachObject en Détections:

imprimer (eachObject + ":" + eachObject )

Les deux lignes ci-dessus, la première itération de la ligne detector.detectObjectsFromImage tous les résultats renvoyés par la fonction, la deuxième rangée imprimer un modèle de l'image détectée et la probabilité de chaque type d'objet.

ImageAI prend également en charge la configuration d'autres caractéristiques processus de détection d'objet. Par exemple, l'image de chaque cible détectée est extraite séparément. En fonction detectObjectsFromImage simplement écrire extract_detected_objects = True, l'objet cible de détection fixé pour le type d'image va créer un nouveau dossier, chaque image extraite, ils sont stockés dans le dossier, et pour enregistrer chaque retourne un tableau le chemin de l'image suivante en tant que:

, = extracted_images menaces détectées detector.detectObjectsFromImage (input_image = os.path.join (execution_path, "image.jpg"), output_image_path = os.path.join (execution_path, "imagenew.jpg"), extract_detected_objects = true)

Nous avons extrait avec un résultat de détection du premier exemple illustré sur la photo figure:

Les paramètres de configuration

Afin de répondre aux exigences de production de détection de cible, la ImageAI fournit des paramètres configurables, comprenant:

Réglage de probabilité minimum (seuil minimal réglable de probabilité)

La valeur de seuil par défaut est de 50%, si le résultat des valeurs de probabilité de détection inférieure à 50%, le résultat de détection ne soit pas affiché. Vous pouvez modifier la valeur de seuil en fonction des besoins spécifiques de.

La détection des objets personnalisés (détection d'objet personnalisé)

Utilisez la classe CustomObject offre, vous pouvez laisser les résultats des tests ne montrent qu'un type spécifique de la cible.

Vitesses de détection (taux de détection)

la vitesse de détection peut être réglée sur « rapide », « plus rapide » et « le plus rapide », afin de réduire le temps nécessaire pour détecter l'image.

Types d'entrée (type d'entrée)

Vous pouvez analyser et modifier le chemin du fichier à l'image, qui, tableau numpy, ou un flux de fichier image peut être utilisé comme type d'entrée.

Types de sortie (type de sortie)

Vous pouvez modifier la fonction retourne detectObjectsFromImage une valeur, tels que les fichiers d'image ou Numpy retourne un tableau.

Une documentation détaillée sur GitHub.

lien GitHub:

https://github.com/OlafenwaMoses/ImageAI

Contexte réponse lettre privée, « 0706 », peut obtenir les fichiers de code et le modèle.

connexes:

https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606

gaz tranchée! Boge Ba de la fouille pour construire 200.000 anneaux Euro championnat de la Coupe, un personnel de son coéquipier
Précédent
Cet âge moyen de la bande spéciale de 68 ans: à Fun neuf sortes d'instruments de musique, plus de 40 chansons originales
Prochain
Zidane trop dur! En poste depuis moins de 10 jours, le Real Madrid sera évidé cinq géants Premiership
vous avez commencé avec une statistique de texte (ressources ci-joint) | sec
Deuxième main librairie principale raison les gens Futian Bin: « Je ne suis pas un collectionneur, mais les gens de revenu du livre »
Prenez-vous avec quatre lignes de formation de génération de code texte RNN (avec des ressources)
2 étoiles 1 exposition Henzhao Mourinho! Ibrahimovic il est prêt à mourir, même Boge Ba a également été impressionné
L'Allemagne a une affaire d'agression sexuelle collective! Appartement Munich six hommes dans une fille violée
La machine peut-elle avoir une conscience comme les humains? Interprétation de la revue du texte long de la science
Deuxième main de principal peuple raison Futian Bin: Taoshu 20 ans en circulation de 2 millions Liushahe portant l'inscription « ronce librairie »
il y a 2 mois, il a commis des erreurs fatales dans la Coupe d'Asie, est encore le capitaine national de football!
Exclusif | comment améliorer vos données d'entraînement? (Avec cas)
« Pékin développement intelligence artificielle industrie Livre blanc » publié (avec téléchargement)
The Ultimate Guide 2017 opéra de science-fiction - ceux qui débuts du nouveau drame