[1 exemplaire par jour] Classify_images_Using_Python & Machine Learning [Daily_Coding_003]

en premier

Cet article est un article de mémoire destiné aux élèves du primaire qui étudient par eux-mêmes le python, l'apprentissage automatique, etc. «Ce sera extrêmement simple,« étudiez en copiant le code qui vous intéresse ». ――Nous vous serions reconnaissants si vous pouviez nous donner des commentaires constructifs (si vous l'aimez, veuillez LGTM et stockez-le).

Thème: Classify_images_Using_Python & Machine Learning

Le sujet d'aujourd'hui est une vidéo sur Youtube appelée Classify_images_Using_Python & Machine Learning. C'est comme apprendre des images de chiens et de chats et les juger.

Classify Images Using Python & Machine Learning

L'analyse a utilisé Google Colaboratry, comme le montre la vidéo youtube.

Alors j'aimerais le faire.

Étape 1: Importer la bibliothèque ~ Traiter les données

import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense, Flatten, Conv2D, MaxPool2D, Dropout
from tensorflow.keras import layers
from keras.utils import to_categorical
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')

prochain

  1. Lire les données
  2. Confirmation du type de données
  3. Confirmation de la forme des données
  4. Vérifiez certaines données
  5. Sortie d'une image

Je vais faire jusqu'à.

#1
from keras.datasets import cifar10
(x_train, x_test), (y_train, y_test) = cifar10.load_data()

#2
print(type(x_train))
print(type(y_train))
print(type(x_test))
print(type(y_test))

#3
print('x_train shape:', x_train.shape)
print('y_train shape:', y_train.shape)
print('x_test shape:', x_test.shape)
print('y_test shape:', y_test.shape)

#4
index = 10
x_train[index]

#5
img = plt.imshow(x_train[index])

deer.png

Je peux voir l'image. Ensuite, regardons l'étiquette associée à cette image.

print('The image label is:', x_train[index])

Si vous regardez ceci, vous pouvez voir qu'il est étiqueté «4». Ensuite, cet ensemble de données contient 10 images différentes.

# Get the image classification
classification = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
# Print the image class
print('The image class is:', classification[y_train[index][0]])

Du coup, il semble que ce soit l'image d'un "cerf" (même si vous vous approchez souvent de l'écran, c'est difficile ...).

Ensuite, définissez la variable expliquée y sur ʻone_hot_encoding`, et attribuez un nombre de 0 ou 1 (1 si correct, 0 sinon) afin que l'étiquette d'image puisse être placée dans le réseau neuronal.

y_train_one_hot = to_categorical(y_train)
y_test_one_hot = to_categorical(y_test)
print(y_train_one_hot)
print('The one hot label is:', y_train_one_hot[index])

Puis standardisez l'ensemble de données (0-1).

x_train = x_train / 255
x_test = x_test / 255
x_train[index]

Il s'agit de la fin du traitement. Ensuite, construisons un modèle CNN!

Étape 2: créer un modèle

model = Sequential()

model.add( Conv2D(32, (5,5), activation='relu', input_shape=(32,32,3)))

model.add(MaxPool2D(pool_size=(2,2)))

model.add( Conv2D(32, (5,5), activation='relu'))

model.add(MaxPool2D(pool_size=(2,2)))

model.add(Flatten())

model.add(Dense(1000, activation='relu'))

model.add(Dropout(0.5))

model.add(Dense(500, activation='relu'))

model.add(Dropout(0.5))

model.add(Dense(250, activation='relu'))

model.add(Dense(10, activation='softmax'))

Ensuite, compilez le modèle et entraînez-le.


model.compile(loss= 'categorical_crossentropy',
              optimizer= 'adam',
              metrics= ['accuracy'])


hist = model.fit(x_train, y_train_one_hot,
                 batch_size = 256,
                 epochs = 10,
                 validation_split = 0.2)

Testez le modèle terminé avec les données de test.

model.evaluate(x_test, y_test_one_hot)[1]
>> 0.6811000108718872

Eh bien, c'était la même chose dans la vidéo, mais le résultat n'est pas si bon. .. ..

Pour le moment, dessinez l'erreur de précision et de perte avec matplotlib.

# Visualize the model accuracy
plt.plot(hist.history['accuracy'])
plt.plot(hist.history['val_accuracy'])
plt.title('Model accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Val'], loc='upper left')
plt.show()
#Visualize the models loss
plt.plot(hist.history['loss'])
plt.plot(hist.history['val_loss'])
plt.title('Model loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Val'], loc='upper right')
plt.show()

Enfin, faisons une prédiction avec un modèle en utilisant une image appropriée (cette fois l'image d'un chat).

# Test the model with an example
from google.colab import files
uploaded = files.upload()

# show the image
new_image = plt.imread('cat-xxxxx.jpeg')
img = plt.imshow(new_image)

# Resize the image
from skimage.transform import resize
resized_image = resize(new_image, (32,32,3))
img = plt.imshow(resized_image)

# Get the models predictions
predictions = model.predict(np.array([resized_image]))
# Show the predictions
predictions

# Sort the predictions from least to greatest
list_index = [0,1,2,3,4,5,6,7,8,9]
x = predictions

for i in range(10):
  for j in range(10):
    if x[0][list_index[i]] > x[0][list_index[j]]:
      temp = list_index[i]
      list_index[i] = list_index[j]
      list_index[j] = temp

# Show the sorted labels in order
print(list_index)

# Print the first 5 predictions
for i in range(5):
  print(classification[list_index[i]], ':', round(predictions[0][list_index[i]] * 100, 2), '%')

Le résultat est,

cat : 51.09 % dog : 48.73 % deer : 0.06 % bird : 0.04 % frog : 0.04 %

Je ne pouvais pas juger s'il s'agissait d'un chat ou d'un chien (rires) La précision du modèle n'était pas bonne et l'image utilisée n'était pas bonne.

finalement

Cette fois, j'ai étudié le jugement d'image en utilisant le tensorflow et les keras. Bien sûr, je suis conscient que ce n'est pas assez précis pour être utilisé, mais je pense que c'était un bon tremplin.

Merci pour votre soutien continu.

(Apprendre jusqu'à présent)

  1. [1 copie par jour] Prédire l'attrition des employés [Daily_Coding_001]
  2. [1 exemplaire par jour] Créez un programme de prévision des actions [Daily_Coding_002]

Recommended Posts

[1 exemplaire par jour] Classify_images_Using_Python & Machine Learning [Daily_Coding_003]
[1 exemplaire par jour] Classify_images_Using_Python & Machine Learning [Daily_Coding_003]
[1 exemplaire par jour] Créez un programme de prévision des actions [Daily_Coding_002]
[1 exemplaire par jour] Créez un programme de prévision des actions [Daily_Coding_002]
Apprentissage automatique
Apprentissage Python jour 4
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Apprentissage automatique ⑤ Résumé AdaBoost
Apprentissage automatique: supervisé - AdaBoost
Régression logistique d'apprentissage automatique
Fiche d'apprentissage 4 (8e jour)
Fiche d'apprentissage 3 (7e jour)
Machine de vecteur de support d'apprentissage automatique
Fiche d'apprentissage 5 (9e jour)
Fiche d'apprentissage 6 (10e jour)
Enregistrement d'apprentissage de la programmation 2ème jour
Fiche d'apprentissage 8 (12e jour)
Fiche d'apprentissage 1 (4e jour)
Fiche d'apprentissage 7 (11e jour)
Étudier l'apprentissage automatique ~ matplotlib ~
Régression linéaire d'apprentissage automatique
Mémo du cours d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprentissage automatique (TensorFlow) + Lotto 6
Apprenez en quelque sorte le machine learning
Fiche d'apprentissage 2 (6e jour)
Fiche d'apprentissage 16 (20e jour)
Dossier d'apprentissage 22 (26e jour)
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
Qu'est-ce que l'apprentissage automatique?