0
votes

Besoin d'aide pour améliorer mon modèle de vision informatique, il n'obtient que 88% de précision sur le jeu de données test

J'essaie de travailler sur le jeu de données Kaggle (10_monkey_dataset) et je ne reçois pas une bonne précision sur mon modèle.

Voici le modèle complet est écrit à Karas. P>

model.add(Conv2D(32, (3, 3), input_shape=(224, 224, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

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(10))
model.add(Activation('softmax'))


0 commentaires

3 Réponses :


1
votes

On dirait que votre modèle est survistatif car votre précision du train est bien supérieure à la précision de votre test. Je suggérerais d'appliquer l'une des techniques suivantes:

  • Régularisation L1 / L2
  • Ajout de plus de dépose
  • normalisation du lot
  • essayer une architecture de réseau plus petite

    Vous voudrez peut-être aussi essayer la fonction d'activation relie fuite que cela donne parfois de meilleurs résultats.

    Également checkout Cet ordinateur portable , Ce mec semble avoir une meilleure précision avec un modèle plus simple.


1 commentaires

Ce n'est pas un modèle plus simple, il utilise la xception comme extracteur de caractéristiques



1
votes

Il y a vraiment beaucoup de choses que vous pouvez faire pour améliorer votre précision:

Architecture modèle H1>
  1. Vous pouvez ajouter plus de couche convolutionnelle par bloc. Un "Bloc" est la combinaison de plusieurs couches telles que (CONV -> RELU -> CONV -> RELU -> BatchNorm -> MAXPOOL) LI>
  2. Vous pouvez ajouter plus de blocs afin d'avoir un modèle plus profond li>
  3. Vous pouvez ajouter de la batchnorm comme indiqué par @daan Klijn, il peut donner plus de stabilité à votre réseau et réduire le surversion li>
  4. Vous pouvez augmenter votre largeur de modèle en augmentant le nombre de filtres li>
  5. Ajouter plus Bloc complexe, comme Squeeze Squeeze et Excite Bloc ( https: // github. COM / TITU1994 / KERAS-Squeeze-Excite-Network ), Bloc résiduel, Bloc de création Li> ol>

    Exemple de modèle Architecture: P>

    x = Conv2D(64, (3, 3) , padding='SAME')(model_input)
    x = Activation('relu')(x)
    x = BatchNormalization()(x)
    x = Conv2D(64, (3, 3) , padding='SAME')(x)
    x = Activation('relu')(x)
    x = BatchNormalization()(x)
    x = Conv2D(64, (3, 3) , padding='SAME')(x)
    x = Activation('relu')(x)
    x = BatchNormalization()(x)
    x = MaxPooling2D(pool_size=(2, 2))(x)   
    


0 commentaires

1
votes

Avec d'autres grandes réponses, vous pouvez également essayer différentes fonctions d'activation pour obtenir une précision de 1% plus. J'ai vu Mish Fonction d'activation donnant de bons résultats.

https://github.com/digantamisra98/mish

HTTPS : //forums.fast.ai/t/meet-mish-New-Activation-function-possible-successor-a-relu/53299/76


0 commentaires