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