1

Wie kann die Größe eines Bildeffekts das Modell für diese Aufgabe trainieren?TensorFlow für Bilderkennung, Bildgröße

Mein aktuelles Trainingssatz enthält Bilder, die 2880 X 1800 sind, aber ich bin besorgt, dass dies zu groß sein kann, um zu trainieren. Insgesamt wird meine Stichprobengröße etwa 200-500 Bilder betragen.

Würde das bedeuten, dass ich mehr Ressourcen (GPU, RAM, Distribution) benötige, wenn ich mein Modell trainiere?

Wenn dies zu groß ist, wie sollte ich über die Größenänderung gehen? - Ich möchte realistische Fotoauflösungen so gut wie möglich nachahmen, um die Genauigkeit zu verbessern.

Edit:

Ich würde auch TFRecord Format für die Bilddateien

Antwort

1

Ihre Speicher- und Verarbeitungsanforderungen sind proportional zur Pixelgröße Ihres Bildes. Ob dies für eine effiziente Verarbeitung zu groß ist, hängt von Ihren Hardwarebeschränkungen und der zur Verfügung stehenden Zeit ab.Wenn Sie die Größe der Bilder ändern wollen, gibt es keine Antwort. Sie müssen überlegen, wie Sie am besten Informationen erhalten, die Ihr Algorithmus benötigt, um von Ihren Daten zu lernen, während Sie Informationen entfernen, die nicht nützlich sind. Wenn Sie die Größe Ihrer Eingabebilder verringern, ist das nicht unbedingt negativ für die Genauigkeit. Betrachten wir zwei Fälle:

Handwritten Ziffern

Hier werden die Bilder in der Größe beträchtlich reduziert werden könnte und halten alle strukturellen Informationen, die korrekt identifiziert werden. Werfen Sie einen Blick auf die MNIST data set, diese Bilder werden mit 28 x 28 Auflösung und identifizierbar zu 99.7%+ accuracy verteilt.

Identifizierung Baumarten

eine Reihe von Bildern von Bäumen Stellen Sie sich vor, wo einzelne Blätter Arten identifizieren helfen könnte. Hier könnten Sie feststellen, dass die Reduzierung der Bildgröße die Detailgenauigkeit der Blattform auf eine für das Modell nachteilige Weise reduziert, aber Sie könnten feststellen, dass Sie bei einer engen Bildfolge (die einzelne Blätter erhält) ein ähnliches Ergebnis erzielen, statt eine Bildgrößenanpassung vorzunehmen . Wenn dies der Fall ist, können Sie feststellen, dass das Erstellen mehrerer Ernten aus demselben Bild einen erweiterten Datensatz für das Training bietet, der die Ergebnisse erheblich verbessert (was bei Ihrem Trainingssatz möglichst zu berücksichtigen ist)

Deep-Learning-Modelle erzielen in vielen Aufgaben der Bildklassifizierung Ergebnisse auf menschlicher Ebene: Wenn Sie Schwierigkeiten haben, Ihre eigenen Bilder zu identifizieren, ist es weniger wahrscheinlich, dass Sie einen Algorithmus trainieren. Dies ist oft ein nützlicher Ausgangspunkt, wenn man das Skalierungsniveau in Betracht zieht, das angemessen sein könnte.

1

Wenn Sie GPUs zu trainieren verwenden verwenden, wird dies auf jeden Fall Ihre Trainingszeit beeinflussen. Tensorflow macht den Großteil der GPU-Zuweisung, so dass Sie sich darüber keine Sorgen machen müssen. Aber mit großen Fotos erleben Sie eine lange Trainingszeit, obwohl Ihr Datensatz klein ist. Sie sollten die Datenerweiterung in Betracht ziehen.

Sie könnten Ihre Größenanpassung mit der Datenerweiterung ergänzen. Ändern Sie die Größe in gleichen Dimensionen und führen Sie dann Reflexion und Translation durch (wie bei der geometrischen Bewegung).

1

Wenn Ihre Bilder zu groß sind, wird Ihrem Speicher möglicherweise nicht genügend Speicherplatz zur Verfügung stehen, bevor er mit dem Training beginnen kann, da er die Faltungsausgaben im Speicher ablegen muss . Wenn das passiert, können Sie einige der folgenden Dinge tun, um den Speicherverbrauch zu reduzieren:

  • die Größe des Bildes
  • reduzieren Losgröße
  • Komplexitätsmodell reduzieren

Ihr Bild, um die Größe, da Viele Skripte sind nur eine Google-Suche entfernt, aber ich werde hinzufügen, dass in Ihrem Fall 1440 von 900 ist wahrscheinlich ein süsser Ort.

1

Bilder mit höherer Auflösung führen zu einer höheren Trainingszeit und einem erhöhten Speicherverbrauch (hauptsächlich GPU-Speicher).

Abhängig von Ihrer konkreten Aufgabe möchten Sie vielleicht die Bildgröße reduzieren, um eine angemessene Stapelgröße von beispielsweise 32 oder 64 auf der GPU zu erreichen - für stabiles Lernen.

Ihre Genauigkeit hängt wahrscheinlich eher von der Größe Ihres Trainingssatzes ab. Anstatt also nach der Bildgröße zu suchen, sollten Sie 500-1000 Beispielbilder verwenden. Aktuelle Publikationen wie SSD - Single Shot MultiBox Detector erreichen hohe Genauigkeitswerte wie ein mAP von 72% auf dem Datensatz PascalVOC - mit "nur" 300x300 Bildauflösung.

Größenanpassung und Vergrößerung: SSD skaliert beispielsweise jedes Eingangsbild bis auf 300x300, unabhängig vom Seitenverhältnis - scheint nicht zu schmerzen. Sie könnten Ihre Daten auch durch Spiegeln, Übersetzen, ... usw. erweitern (aber ich nehme an, dass dafür in Tensorflow eingebaute Methoden vorhanden sind).