[PYTHON] J'ai essayé la reconnaissance d'image simple avec Jupyter

Aperçu

https://qiita.com/uz29/items/ec854106355bf783e316 Depuis que la préparation s'est terminée la dernière fois, j'ai d'abord créé un programme de discrimination d'image en utilisant le modèle d'apprentissage existant VGG16.

Importation de bibliothèque et importation de modèle

Le modèle sera téléchargé pour la première fois.

import glob
import pprint
import numpy as np
import tensorflow as tf
from PIL import Image

model = tf.keras.applications.vgg16.VGG16(weights='imagenet')

Script de prédiction

Je voulais prédire toutes les images du dossier à la fois, j'ai donc utilisé glob pour obtenir une liste de chemins et créer un tableau de chaque image. Il semble que la prédiction puisse traiter plusieurs images en même temps en appelant une fois une fonction.

#Prédire toutes les photos d'un dossier
file_list = glob.glob("./images/*")

pil = []
imgs = []
for path in file_list:
    #Chargement d'image
    img_pil = tf.keras.preprocessing.image.load_img(path, target_size=(224, 224))
    pil.append(img_pil)
    #Convertir des images en tableaux
    img = tf.keras.preprocessing.image.img_to_array(img_pil)
    #Convertir en un tableau à 4 dimensions
    imgs.append(img)
imgs = np.stack(imgs, 0)

#Prétraitement
img_p = tf.keras.applications.vgg16.preprocess_input(imgs)
#Prévoir
predict = model.predict(img_p)
result = tf.keras.applications.vgg16.decode_predictions(predict, top=5)

Voir les résultats

Les résultats de la prédiction peuvent être vus ci-dessous.

pprint.pprint(result[0])
plt.imshow(pil[0])

[('n02124075', 'Egyptian_cat', 0.42277277), ('n02123159', 'tiger_cat', 0.18187998), ('n02123045', 'tabby', 0.12070633), ('n02883205', 'bow_tie', 0.0892005), ('n02127052', 'lynx', 0.024664408)] image.png

pprint.pprint(result[1])
plt.imshow(pil[1])

[('n02119789', 'kit_fox', 0.6857688), ('n02119022', 'red_fox', 0.24295172), ('n02120505', 'grey_fox', 0.065218925), ('n02114855', 'coyote', 0.004371826), ('n02115913', 'dhole', 0.00046840237)] image.png

pprint.pprint(result[2])
plt.imshow(pil[2])

[('n02138441', 'meerkat', 0.9073721), ('n02137549', 'mongoose', 0.092063464), ('n02447366', 'badger', 0.00037895824), ('n02361337', 'marmot', 8.514335e-05), ('n02441942', 'weasel', 2.4436611e-05)] image.png

Les espèces d'animaux subtiles ne sont pas incluses dans la VGG16 et peuvent différer, mais elles renvoient généralement l'espèce exacte. À l'avenir, j'aimerais créer mon propre modèle d'apprentissage et faire des prédictions.

Recommended Posts

J'ai essayé la reconnaissance d'image simple avec Jupyter
J'ai essayé la reconnaissance d'image de CIFAR-10 avec Keras-Learning-
J'ai essayé la reconnaissance d'image de CIFAR-10 avec la reconnaissance d'image Keras-
Jusqu'à ce que vous puissiez faire une reconnaissance d'image simple avec Jupyter
J'ai essayé la reconnaissance faciale avec OpenCV
J'ai essayé de créer une API de reconnaissance d'image simple avec Fast API et Tensorflow
J'ai essayé de jouer avec l'image avec Pillow
Reconnaissance d'image avec keras
J'ai essayé d'utiliser Jupyter
J'ai essayé la reconnaissance manuscrite des caractères des runes avec scikit-learn
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé de "binariser" l'image avec Python + OpenCV
J'ai essayé de démarrer Jupyter avec toutes les lumières d'Amazon
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé Learning-to-Rank avec Elasticsearch!
J'ai essayé la reconnaissance faciale avec Face ++
[OpenCV / Python] J'ai essayé l'analyse d'image de cellules avec OpenCV
J'ai essayé le clustering avec PyCaret
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai essayé un RPA simple pour me connecter avec du sélénium
jupyter je l'ai touché
Reconnaissance d'image avec Keras + OpenCV
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé la "correction gamma" de l'image avec Python + OpenCV
J'ai essayé la reconnaissance de caractères manuscrits des caractères runiques avec CNN en utilisant Keras
J'ai essayé de résumer des phrases avec summpy
sculpture de couture (recadrage d'image) j'ai essayé
J'ai essayé l'apprentissage automatique avec liblinear
J'ai essayé webScraping avec python.
J'ai essayé de frapper 100 traitement d'image (Q1 ~ Q10)
J'ai essayé d'implémenter DeepPose avec PyTorch
J'ai essayé la détection de visage avec MTCNN
J'ai essayé d'utiliser le notebook jupyter d'une manière ou d'une autre
J'ai essayé d'exécuter prolog avec python 3.8.2.
J'ai essayé la communication SMTP avec Python
J'ai essayé la génération de phrases avec GPT-2
J'ai essayé d'apprendre LightGBM avec Yellowbrick
J'ai essayé le notebook Jupyter de VS Code
J'ai essayé de traiter l'image en "style croquis" avec OpenCV
[Python] J'ai créé une visionneuse d'images avec une fonction de tri simple.
J'ai essayé de traiter l'image dans un "style de dessin au crayon" avec OpenCV
Reconnaissance d'image
J'ai essayé de créer une fonction de similitude d'image avec Python + OpenCV
J'ai essayé l'analyse de régression multiple avec régression polypoly
J'ai essayé d'envoyer un SMS avec Twilio
J'ai essayé d'utiliser Amazon SQS avec django-celery
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé linebot avec flacon (anaconda) + heroku
J'ai essayé de visualiser AutoEncoder avec TensorFlow
Je veux écrire un blog avec Jupyter Notebook
J'ai essayé d'utiliser du sélénium avec du chrome sans tête
J'ai essayé l'analyse factorielle avec des données Titanic!
J'ai essayé d'apprendre avec le Titanic de Kaggle (kaggle②)
J'ai essayé un langage fonctionnel avec Python