Je travaille sur la reconnaissance des expressions faciales avec Keras.Architecture du modèle de réseau de neurones convolution
J'ai un jeu de données avec 72 000 images. J'utilise 80% pour Train, 10% pour Validation et 10% pour Test.
Toutes les images sont en mode 48 x 48 en niveaux de gris.
Mon modèle d'architecture est comme ceci:
model = Sequential()
model.add(Conv2D(64, 5, 5, border_mode='valid', input_shape=(img_rows, img_cols, 1)))
model.add(PReLU(init='zero', weights=None))
model.add(ZeroPadding2D(padding=(2, 2), dim_ordering='tf'))
model.add(MaxPooling2D(pool_size=(5, 5),strides=(2, 2)))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(Conv2D(64, 3, 3))
model.add(PReLU(init='zero', weights=None))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(Conv2D(64, 3, 3))
model.add(PReLU(init='zero', weights=None))
model.add(MaxPooling2D(pool_size=(3, 3),strides=(2, 2)))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(Conv2D(128, 3, 3))
model.add(PReLU(init='zero', weights=None))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(Conv2D(128, 3, 3))
model.add(PReLU(init='zero', weights=None))
model.add(ZeroPadding2D(padding=(1, 1), dim_ordering='tf'))
model.add(MaxPooling2D(pool_size=(3, 3),strides=(2, 2)))
model.add(Flatten())
model.add(Dense(1024))
model.add(PReLU(init='zero', weights=None))
model.add(Dropout(0.2))
model.add(Dense(1024))
model.add(PReLU(init='zero', weights=None))
model.add(Dropout(0.2))
model.add(Dense(7))
model.add(Activation('softmax'))
ada = Adadelta(lr=0.1, rho=0.95, epsilon=1e-08)
J'ai plusieurs questions:
1/Comment choisir le nombre de couches et de leurs paramètres optimaux (les circonvolutions, Pooling Max, abandon scolaire, etc.) qui donne la meilleure performance (précision), je veux dire sur quoi? 2/Quelle est la relation entre chaque couche en terme de paramètres (Noyau et taille du filtre, pas etc.)? 3/Comme je l'ai dit, les images sont en mode de niveaux de gris 48 x 48. Est-ce bien ? Cela affecte-t-il la performance? Est-ce que mon architecture de modèle agit bien avec ces images? Utiliser des images plus grandes ou colorées améliorera les performances?
Une réponse à la question 2? Merci –
Regardez celui-ci: https://stackoverflow.com/questions/42240489/in-what-ways-are-the-output-of-neural-network-layers-useful?rq=1 - il donne une belle explication à ce que vous pourriez penser. – OZ13
D'accord, merci. –