2017-06-01 3 views
0

Ich teste ein FCN-VGG16-Netzwerk in Caffe. Anstatt die Eingabebilder auf eine feste Größe zu skalieren, formiere ich das Netzwerk jedes Mal um die Bildgröße. Ich habe das sowohl in Matcaffe als auch in Pycaffe versucht. In beiden Fällen scheint es, dass es für kleine Bilder (z. B. 500 x 500) ausgeführt werden kann. Wenn ich jedoch ein größeres Bild habe (z. B. 1920 x 1080), erhalte ich den Fehler "Überprüfung fehlgeschlagen: Fehler == cudaSuccess (2 vs. 0) nicht genügend Speicher". Ich betreibe dies auf einer Quadro M6000 GPU mit 12 GB Speicher. Jede Hilfe/Beratung wäre willkommen.Testen von FCN auf großen Bildgrößen

Antwort

1

Ich weiß, es ist offensichtlich aus der Nachricht, aber Sie tun müssen die Eingabegröße reduzieren: die GPU hat nicht genug On-Board-Speicher für alles, was Sie fütterte es. Können Sie Ihre Batchgröße reduzieren? Wenn nicht, brauchen Sie wirklich brauchen die gesamten 2M Pixel? Die meisten Modelle eignen sich gut für beschnittene oder reduzierte Bilder. Tun Sie dies als Teil der Eingabeverarbeitung (auf der CPU) und parametrisieren Sie es für einen beliebigen Sinuseingang.

Das Ändern der Größe des Netzwerks ist im Speicher teuer, besonders wenn Sie die Größe alle Layer ändern, indem Sie mit den Eingabeabmessungen skalieren. In dem Fall, dass Sie gaben, wird dies Ihren Speicherbedarf um etwa das 8-fache erhöhen.

Als eine Kontrolle über die Größe, die Sie haben können, beobachten Sie die Speicherzahlen, wie Sie das Netzwerk initialisieren; Ich glaube, dass Caffe Speicheranforderungen nach Layer meldet.

+0

Vielen Dank für die schnelle Antwort. Um Ihre Fragen zu beantworten, verwende ich eine Batch-Größe von 1, und ich umgestalte das Netzwerk mit dem folgenden Befehl: net.blobs ['data']. Reshape (1, * im.shape). Ich habe tatsächlich versucht, die Bilder auf eine feste Größe zu skalieren und dann die Tests durchzuführen. Ich bin jedoch nicht mit den Ergebnissen zufrieden, und ich frage mich, ob es mit der Größenänderung zu tun hat. Da ich eine große Auswahl an Eingabegrößen habe, befürchte ich, dass die Größenanpassung auf eine feste Größe die Leistung beeinträchtigt (z. B. wird bei manchen Bildern das Seitenverhältnis erheblich geändert). – user6137678

+0

Da ich eine große Auswahl an Eingabegrößen habe, sollte ich vielleicht nicht alle Bilder auf eine feste Größe skalieren. Stattdessen könnte ich jedes Bild auf eine kleinere Größe verkleinern, aber das Seitenverhältnis beibehalten. In diesem Fall hätten die Eingabebilder jedoch immer noch eine variable Größe, sodass ich das Netzwerk immer noch neu gestalten müsste. – user6137678

+0

Rechts. Sie können das Netzwerk umgestalten, solange Sie den Footprint innerhalb eines "vernünftigen" Bereichs halten - mit "angemessen", bestimmt durch Ihre RAM-Größe. – Prune

Verwandte Themen