Bien qu'il ne soit pas traité dans la pratique, il est enregistré comme apprentissage. Cette fois, le réseau de neurones convolutifs (CNN) Il semble efficace pour l'analyse de reconnaissance d'image ...
CNN Le fait est qu'il existe une couche de convolution et une couche de regroupement en plus du réseau neuronal normal.
La partie la plus importante de la conversion des fonctionnalités en données à partir d'images. Les données d'image sont des données 5x5x1. Définissez la pondération dans le noyau 3x3x3 et calculez tous les modèles. 9 motifs dans la figure ci-dessous. Le résultat est appelé une carte des caractéristiques.
La mise en commun est une méthode permettant de réduire une grande image tout en laissant des informations importantes. En conséquence, la dimension des données peut être réduite, la vitesse de calcul peut être supprimée et l'apprentissage peut se poursuivre. Il existe deux types ・ Mise en commun maximale → Définir la valeur maximale dans le noyau ・ Mise en commun moyenne → Calculer la valeur moyenne de tous les nombres du noyau
En pliant, le nombre de dimensions est réduit (= compressé) en calculant les données d'image dans la taille du noyau et en extrayant une nouvelle quantité de fonctionnalités. La formule est la suivante. En mutualisant, les données sont compressées tout en mettant l'accent sur les fonctionnalités. La méthode consiste à calculer la valeur maximale dans le noyau ou la valeur moyenne.
Utilisez le jeu de données MNIST.
%matplotlib inline
import keras
from keras.datasets import mnist
import matplotlib.pyplot as plt
#Lisez les données. Divisé en données d'entraînement et données d'entraînement
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#Affichage des données MNIST
fig = plt.figure(figsize=(9, 9))
fig.subplots_adjust(left=0, right=1, bottom=0, top=0.5, hspace=0.05, wspace=0.05)
for i in range(81):
ax = fig.add_subplot(9, 9, i + 1, xticks=[], yticks=[])
ax.imshow(x_train[i].reshape((28, 28)), cmap='gray')
Ça sort comme ça.
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras import backend as K
batch_size = 128
num_classes = 10
epochs = 12
img_rows, img_cols = 28, 28
(x_train, y_train), (x_test, y_test) = mnist.load_data()
if K.image_data_format() == 'channels_first':
x_train = x_train.reshape(x_train.shape[0], 1, img_rows, img_cols)
x_test = x_test.reshape(x_test.shape[0], 1, img_rows, img_cols)
input_shape = (1, img_rows, img_cols)
else:
x_train = x_train.reshape(x_train.shape[0], img_rows, img_cols, 1)
x_test = x_test.reshape(x_test.shape[0], img_rows, img_cols, 1)
input_shape = (img_rows, img_cols, 1)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print('x_train shape:', x_train.shape)
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
y_train = y_train.astype('int32')
y_test = y_test.astype('int32')
y_train = keras.utils.np_utils.to_categorical(y_train, num_classes)
y_test = keras.utils.np_utils.to_categorical(y_test, num_classes)
#La partie qui va du pliage à la mise en commun
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
activation='relu',
input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adadelta(),
metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs,
verbose=1, validation_data=(x_test, y_test))
L'image conceptuelle était organisée.
[Mécanisme du réseau neuronal convolutif] (https://postd.cc/how-do-convolutional-neural-networks-work/) [Qu'est-ce qu'un réseau neuronal convolutif souvent utilisé dans le traitement d'image] (https://kenyu-life.com/2019/03/07/convolutional_neural_network/)
Recommended Posts