https://qiita.com/uz29/items/ec854106355bf783e316 Da die Vorbereitung das letzte Mal abgeschlossen war, habe ich zuerst ein Bildunterscheidungsprogramm unter Verwendung des vorhandenen Lernmodells VGG16 erstellt.
Das Modell wird zum ersten Mal heruntergeladen.
import glob
import pprint
import numpy as np
import tensorflow as tf
from PIL import Image
model = tf.keras.applications.vgg16.VGG16(weights='imagenet')
Ich wollte alle Bilder im Ordner auf einmal vorhersagen, also habe ich glob verwendet, um eine Liste der Pfade zu erhalten und ein Array für jedes Bild zu erstellen. Es scheint, dass die Vorhersage mehrere Bilder gleichzeitig verarbeiten kann, indem eine Funktion einmal aufgerufen wird.
#Sagen Sie alle Fotos in einem Ordner voraus
file_list = glob.glob("./images/*")
pil = []
imgs = []
for path in file_list:
#Bild wird geladen
img_pil = tf.keras.preprocessing.image.load_img(path, target_size=(224, 224))
pil.append(img_pil)
#Konvertieren Sie Bilder in Arrays
img = tf.keras.preprocessing.image.img_to_array(img_pil)
#In ein 4-dimensionales Array konvertieren
imgs.append(img)
imgs = np.stack(imgs, 0)
#Vorverarbeitung
img_p = tf.keras.applications.vgg16.preprocess_input(imgs)
#Prognose
predict = model.predict(img_p)
result = tf.keras.applications.vgg16.decode_predictions(predict, top=5)
Die Vorhersageergebnisse sind unten zu sehen.
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)]
Die subtilen Tierarten sind nicht in VGG16 enthalten und können unterschiedlich sein, geben jedoch im Allgemeinen die genauen Arten zurück. In Zukunft möchte ich mein eigenes Lernmodell erstellen und Vorhersagen treffen.
Recommended Posts