[PYTHON] Reconnaissance d'image avec keras

Dernière fois Créez un programme de reconnaissance d'image qui distingue les singes, les inoshi et les corbeaux en utilisant les données d'entraînement créées.

Qu'est-ce que keras

https://keras.io/ja/

Keras est une bibliothèque de réseau neuronal de haut niveau écrite en Python qui peut être exécutée sur TensorFlow, CNTK ou Theano.

Code source

importer

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras.utils import np_utils
import keras
import numpy as np

Fonction principale

Le flux général est le suivant:

  1. Chargez le fichier ʻanimal.npy` précédemment enregistré
  2. Transmettez les données d'entraînement à la fonction d'entraînement pour créer un modèle
  3. Transmettez le modèle créé à la fonction d'évaluation pour vérifier l'exactitude de la classification.
classes = ["monkey", "boar", "crow"]
num_classes = len(classes)
image_size = 50

def main():
    X_train, X_test, y_train, y_test = np.load("./animal.npy", allow_pickle=True)
    X_train = X_train.astype("float") / 256
    X_test = X_test.astype("float") / 256
    y_train = np_utils.to_categorical(y_train, num_classes)
    y_test = np_utils.to_categorical(y_test, num_classes)

    model = model_train(X_train, y_train)
    model_eval(model, X_test, y_test)

-La raison pour laquelle «X_train» et «X_test» sont divisés par 256 est la normalisation (les données sont comprises entre 0 et 1).

To_categorical a un tableau de [0, 1, 2]

[[1, 0, 0]
 [0, 1, 0]
 [0, 0, 1]]

Donc, convertissez en un tableau qui contient 1 uniquement dans l'index de la bonne réponse et 0 dans d'autres endroits.

Entraînement

Reportez-vous à la 34ème ligne et après du code suivant Référence: https://github.com/keras-team/keras/blob/master/examples/cifar10_cnn.py

def model_train(X, y):
    model = Sequential()
    model.add(Conv2D(32, (3,3), padding='same', input_shape=X.shape[1:]))
    model.add(Activation('relu'))
    model.add(Conv2D(32, (3,3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Dropout(0.25))

    model.add(Conv2D(64, (3,3), padding='same'))
    model.add(Activation('relu'))
    model.add(Conv2D(64, (3,3)))
    model.add(Activation('relu'))
    model.add(MaxPooling2D(pool_size=(2,2)))
    model.add(Dropout(0.25))

    model.add(Flatten())
    model.add(Dense(512))
    model.add(Activation('relu'))
    model.add(Dropout(0.5))
    model.add(Dense(3))
    model.add(Activation('softmax'))

    opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6)

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

    model.fit(X, y, batch_size=32, epochs=100)

    #Enregistrer le modèle
    model.save("./animal_cnn.h5")

    return model

model = Sequential() Créer un objet modèle

model.add(Conv2D(...)) Ajouter un calque

model.add(Activation('relu')) Ajouter un calque qui utilise "ReLU (Rectified Linear Unit)" comme fonction d'activation

model.add(MaxPooling2D(pool_size=(2,2))) Ajouter une couche pour une mise en commun maximale (diviser l'entrée en zones prédéterminées et afficher la valeur maximale de chaque zone)

model.add(Dropout(0.25)) Jeter 25% (quoi?) Pour éliminer le biais des données

opt = keras.optimizers.rmsprop(lr=0.0001, decay=1e-6) Déclaration d'optimisation. Avec la méthode «optimizers.rmsprop », le taux d'apprentissage est de 0,0001, et le taux d'abaissement du taux d'apprentissage est de 0,000001 à chaque fois.

model.compile() Compilation du modèle.

model.fit(X, y, batch_size=32, epochs=100) Entraînez-vous avec «X» et «y». batch_size est le nombre de données utilisées dans une formation. ʻEpochs` Combien de formations faites-vous?

Évaluation des résultats de la formation

Validez le modèle créé par la méthode ʻevaluate`.

def model_eval(model, X, y):
    scores = model.evaluate(X, y, verbose=1)
    print('test Loss: ', scores[0])
    print('test Accuracy: ', scores[1])

Recommended Posts

Reconnaissance d'image avec keras
Reconnaissance d'image avec Keras + OpenCV
Reconnaissance d'image
Reconnaissance faciale des personnages d'anime avec Keras
J'ai essayé la reconnaissance d'image simple avec Jupyter
Traitement d'image avec MyHDL
J'ai essayé la reconnaissance d'image de CIFAR-10 avec Keras-Learning-
Reconnaissance faciale avec Edison
J'ai essayé la reconnaissance d'image de CIFAR-10 avec la reconnaissance d'image Keras-
Tutoriel CIFAR-10 avec Keras
Reconnaissance d'image avec le modèle Caffe Chainer Yo!
Tutoriel Pepper (7): Reconnaissance d'image
Traitement d'image avec Python
LSTM multivarié avec Keras
Principes de base de la reconnaissance d'image CNN 1
Traitement d'image avec PIL
Analyse d'images par apprentissage profond à partir de Kaggle et Keras
Identifiez le nom de l'image de la fleur avec des keras (flux tenseur)
Challenge classification des images par TensorFlow2 + Keras 3 ~ Visualiser les données MNIST ~
Jusqu'à ce que vous puissiez faire une reconnaissance d'image simple avec Jupyter
Téléchargement d'image avec l'API Flickr
Traitement d'image avec Python (partie 2)
Lire les coordonnées de l'image avec Python-matplotlib
Traitement d'image avec PIL (Pillow)
Reconnaissance faciale avec OpenCV de Python
Installation de Keras (utilisée par Anaconda)
Édition d'image avec python OpenCV
Reconnaissance d'image par apprentissage profond 1 théorie
Notes AutoEncodder avec Keras
Reconnaissance faciale par Amazon Rekognition
Implémentation de word2vec avec Theano + Keras
Génération de phrases avec GRU (keras)
Téléchargement d'images et personnalisation avec django-ckeditor
Réglage des paramètres Keras avec Keras Tuner
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
Créer une visionneuse d'images avec Tkinter
Traitement d'image avec Python (partie 1)
Tweet avec image en Python
Tri des fichiers image avec Python
Application de la reconnaissance d'image CNN2
Créez facilement des CNN avec Keras
Traitement d'image avec Python (3)
Génération de légende d'image avec Chainer
Obtenez des fonctionnalités d'image avec OpenCV
Implémentation d'un GAN efficace avec keras
Reconnaissance faciale / coupe avec OpenCV
Essayez la reconnaissance faciale avec Python
[Python] Traitement d'image avec scicit-image
CNN avec keras Essayez avec l'image que vous avez prise
Classification d'images avec un réseau de neurones auto-fabriqué par Keras et PyTorch
Reconnaissance d'image avec API à partir de zéro connaissance avec AutoML Vision
Reconnaissance d'image en temps réel sur les appareils mobiles à l'aide du modèle d'apprentissage TensorFlow
J'ai essayé la reconnaissance de caractères manuscrits des caractères runiques avec CNN en utilisant Keras
Reconnaissance des nombres dans les images avec Python
MNIST (DCNN) avec Keras (backend TensorFlow)
Découpez une image avec python
Principes de base du traitement d'image en temps réel avec opencv
Défi la classification des images par TensorFlow2 + Keras 4 ~ Prédisons avec un modèle entraîné ~
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)