2017-10-01 16 views
1

Ich möchte ein CNN für eine binäre Bildklassifizierung Aufgabe, die ein kleines Objekt in den Bildern vorhanden oder nicht vorhanden ist, zu entwerfen. Die Bilder sind Graustufen (unsigned short) mit der Größe 512x512 (bereits ab 2048x2048 dowmsampled), und ich habe Tausende von diesen Bildern für Training und Test.CNN Parameter Schätzung

Es ist mein erstes Mal mit CNN für diese Art von Aufgabe, und ich hoffe, um ~ 80% Genauigkeit zu starten, so würde ich gerne wissen, im Allgemeinen, wie man das CNN so, dass ich das Beste habe Chance, mein Ziel zu erreichen.

Meine spezifische Fragen sind:

  1. Wie viele Faltungs Schichten und vollständig verbundene Schichten soll ich verwenden?

  2. Wie viele Feature-Maps gibt es in jeder Faltungsschicht und wie viele Knoten in jeder vollständig verbundenen Ebene?

  3. Wie groß ist die Filtergröße in jeder Faltungsschicht?

Ich versuche, die CNN mit Keras mit TensorFlow Backend zu implementieren, und mein Computer Spezifikationen sind: 8 Intel Xeon CPUs @ 3,5 GHz; 32 GB Speicher; 2 Nvidia GPUs: GeForce GTX 980 und Quadro K4200

Mit dieser Hardware und Software möchte ich auch die Rechenzeit des Trainings wissen. Spezifisch

Wie lange dauert es, um das CNN (mit der oben genannten Struktur) mit 1000 oben genannten Bildern in der Epoche zu trainieren, und (im Allgemeinen) wieviele Epochen benötigt werden, um ~ 80% Genauigkeit zu erreichen?

Der Grund, warum ich die typische Rechenzeit wissen möchte, ist sicherzustellen, dass ich alles richtig aufstelle.

Ich hoffe, ich habe in meinem ersten Beitrag nicht zu viele Fragen gestellt.

+1

Fragen Sie nach Parametern des neuronalen Netzes, es gibt keine "IN ALLGEMEINEN" Antwort für diese Frage, insbesondere mit anderen Datensätzen. Sie müssen die besten Parameter durch Experimente finden – malioboro

+0

@malioboro OK, wenn es keine allgemeine Antwort gibt, könnten Sie Licht aus Ihrer Erfahrung werfen? – mjk

+0

Sie können einige allgemeine Hinweise zur Einstellung der CNN-Parameter von Stanford CS231n natürlich erhalten. –

Antwort

1

Sie würden wahrscheinlich sehr gut gehen, wenn Sie eines der bereits vorhandenen Modelle nehmen, die keras für diese Aufgabe zur Verfügung stellt, wie VGG16, VGG19, InceptionV3 und andere: https://keras.io/applications/.

Sie können an ihnen experimentieren, verschiedene Parameter ausprobieren, hier und da kleine Verbesserungen vornehmen, und solche Sachen. Da Sie nur eine Klasse haben, können Sie wahrscheinlich kleinere Versionen von ihnen ausprobieren.

Alle Codes können in https://github.com/fchollet/keras/tree/master/keras/applications

Geschwindigkeit zu finden ist sehr, sehr relativ. Es ist unmöglich, die Geschwindigkeit zu bestimmen, da jede Installationsmethode, jeder Treiber, jede Version, jedes Betriebssystem Ihre Hardwarefähigkeiten richtig oder vollständig nutzt oder nicht.

Aber mit Ihren Spezifikationen sollte es ziemlich schnell sein, wenn alles gut eingerichtet ist.

+0

Danke für deine Antwort, Dan. Wenn Sie sagen "es sollte ziemlich schnell sein", meinen Sie ein paar Sekunden von ein paar Minuten pro Epoche? Der Grund warum ich frage ist, dass ich alles richtig mache. – mjk

+0

Wie groß sind die Bilder? Es sollte ein paar Sekunden "pro Batch" mit einem großen Bild (1200x1800) oder mit mehreren kleinen Bildern, die einen ähnlichen Bereich in Pixel abdecken, dauern. Das zumindest habe ich auf Google VMs mit einem Tesla K80 erreicht. Aber es hängt viel von der Größe des Modells ab. Mein Modell hatte ungefähr 10 Millionen trainierbare Parameter. –