2017-10-01 5 views
1

Je souhaite concevoir un CNN pour une tâche de classification d'image binaire, qui consiste à détecter un petit objet présent ou absent dans les images. Les images sont en niveaux de gris (non signés courts) avec la taille 512x512 (dowmsampled de 2048x2048 déjà), et j'ai des milliers de ces images pour l'entraînement et le test.Estimation de paramètre CNN

C'est la première fois que j'utilise CNN pour ce genre de tâche, et j'espère atteindre une précision de ~ 80% pour commencer, donc j'aimerais savoir, EN GÉNÉRAL, comment concevoir le CNN de manière à avoir le meilleur chance d'atteindre mon objectif.

Mes questions spécifiques sont:

  1. Combien de couches de convolution et des couches entièrement connectées dois-je utiliser?

  2. Combien de mappes d'entités y a-t-il dans chaque couche de convolution et combien de nœuds dans chaque couche entièrement connectée? Quelle est la taille du filtre dans chaque couche de convolution?

Je suis en train de mettre en œuvre le CNN en utilisant Keras avec back-end tensorflow, et les spécifications de mon ordinateur sont: 8 Intel Xeon @ 3,5 GHz; 32 Go de mémoire; 2 GPU Nvidia: GeForce GTX 980 et Quadro K4200

Avec ces matériels et logiciels, j'aimerais aussi connaître le temps de calcul de la formation. Plus précisément,

Combien de temps faut-il pour former le CNN (avec la structure ci-dessus) avec 1000 images mentionnées ci-dessus à l'époque, et (en général) combien d'époques sont nécessaires pour atteindre une précision de 80%?

La raison pour laquelle je veux connaître le temps de calcul typique est de m'assurer que tout est correctement configuré.

J'espère que je n'ai pas posé trop de questions dans mon premier message.

+1

vous vous posez des questions sur les paramètres du réseau de neurones, il n'y a pas de réponse "EN GÉNÉRAL" à cette question, surtout avec des données différentes. Vous devez trouver les meilleurs paramètres par des expériences – malioboro

+0

@malioboro OK, s'il n'y a pas de réponse générale, pourriez-vous faire la lumière sur votre expérience? – mjk

+0

Vous pouvez obtenir des conseils généraux sur la configuration des paramètres CNN à partir du cours Stanford CS231n. –

Répondre

1

Vous iriez probablement très bien si vous prenez l'un des modèles déjà existants que keras met à disposition pour cette tâche, comme VGG16, VGG19, InceptionV3 et d'autres: https://keras.io/applications/.

Vous pouvez expérimenter sur eux, essayer différents paramètres, petits réglages ici et là, et des choses comme ça. Puisque vous n'avez qu'une seule classe, vous pouvez probablement essayer des versions plus petites.

Tous les codes peuvent être trouvés dans https://github.com/fchollet/keras/tree/master/keras/applications

La vitesse est très très relatif. Il est impossible de dire la vitesse car chaque méthode d'installation, chaque pilote, chaque version, chaque système opérationnel peut ou non utiliser vos capacités matérielles correctement ou entièrement.

Mais avec vos spécifications, il devrait être assez rapide, si tout est bien mis en place.

+0

Merci pour votre réponse, Dan. Quand vous dites "ça devrait être rapide", vous voulez dire quelques secondes de quelques minutes par époque? La raison pour laquelle je demande est de m'assurer que tout va bien. – mjk

+0

Quelle est la taille des images? Cela devrait prendre quelques secondes "par lot" avec 1 grande image (1200x1800) ou avec plusieurs petites images couvrant une zone similaire en pixels. Au moins, c'est ce que j'ai réalisé sur Google VM avec un Tesla K80. Mais cela dépend beaucoup de la taille du modèle. Mon modèle avait environ 10 millions de paramètres de formation. –