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.
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')
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)
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)]
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)]
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)]
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