1

Ich habe mich gefragt, ob es einen Vorteil für das Training auf hochauflösenden Bildern und nicht auf eine niedrige Auflösung gibt. Ich verstehe, dass es länger dauern wird, um auf größeren Bildern zu trainieren, und dass die Dimensionen ein Vielfaches von 32 sein müssen. Mein derzeitiges Bildset ist 1440x1920. Wäre es besser, die Größe auf 480 x 640 zu ändern, oder ist es besser?Spielt die Bildgröße beim Training mit TensorFlow eine Rolle?

Antwort

2

Es ist sicherlich keine Voraussetzung, dass Ihre Bilder Potenzen von zwei sind. Es kann einige Fälle geben, in denen es beschleunigt (z. B. GPU-Zuweisung), aber es ist nicht kritisch.

Kleinere Bilder werden wesentlich schneller und möglicherweise sogar schneller konvergieren (alle anderen Faktoren werden konstant gehalten), da Sie in der Lage sind, größere Serien zu trainieren (z. B. 100-1000 Bilder in einem Durchgang) mach es auf einer einzelnen Maschine mit hochauflösenden Bildern).

Um die Größe zu ändern, müssen Sie sich fragen, ob jedes Pixel in diesem Bild für Ihre Aufgabe entscheidend ist. Das ist oft nicht der Fall - Sie können wahrscheinlich ein Foto eines Busses verkleinern, um 128x128 zu sagen, und immer noch erkennen, dass es ein Bus ist.

Die Verwendung kleinerer Bilder kann auch dazu beitragen, dass Ihr Netzwerk besser verallgemeinert wird, da weniger Daten überfrachtet werden müssen.

häufig eine Technik, die in Bildklassifizierungs-Netzwerken verwendet werden Verzerrungen (zB zufällige Beschneiden, & Helligkeitsanpassung Skalierung) durchzuführen auf Bilder, die auf (a) umwandeln odd große Bilder auf eine konstante Größe, (b) zu synthetisieren und mehr Daten (c) das Netzwerk zu generalisieren.

1

Dies hängt weitgehend von der Anwendung ab. Als Faustregel würde ich mir die Frage stellen: Kann ich die Aufgabe selbst auf den skalierten Bildern erledigen? Wenn ja, würde ich auf die niedrigste Auflösung verkleinern, bevor es Ihnen die Aufgabe selbst erschwert. Wenn nicht ... müssen Sie mit den Bildern 1440 * 1920 -patient sein. Ich kann mir vorstellen, dass Sie fast immer besser mit mehr Architekturen und Hyper-Parameter-Sets auf kleineren Bildern experimentieren als mit weniger Modellen auf Bildern mit voller Auflösung.

Unabhängig von der Größe, die Sie wählen, müssen Sie Ihr Netzwerk für die Bildgröße entwerfen, die Sie im Auge haben. Wenn Sie Faltungsschichten verwenden, erfordert ein größeres Bild größere Schritte, Filtergrößen und/oder Ebenen. Die Anzahl der Parameter bleibt für jede Faltung gleich, obwohl die Anzahl der Features zunimmt (zusammen mit Parametern für die Batch-Normalisierung, wenn Sie sie verwenden).

Verwandte Themen