Kann die Keras Eingabebilder mit unterschiedlicher Größe verarbeiten? Zum Beispiel können im vollständig konvolutionellen neuralen Netzwerk die Eingabebilder eine beliebige Größe haben. Allerdings müssen wir die Eingabeform angeben, wenn wir ein Netzwerk von Keras erstellen. Wie können wir Keras verwenden, um mit verschiedenen Eingabegrößen umzugehen, ohne die Eingabebilder auf die gleiche Größe zu skalieren? Danke für jede Hilfe.Kann Can Keras Eingabebilder mit unterschiedlicher Größe behandeln?
Antwort
Das Implementieren beliebig großer Eingangsarrays mit den gleichen Rechenkernen kann viele Herausforderungen mit sich bringen - z. Auf einer GPU müssen Sie wissen, wie viel Puffer zu reservieren sind und wie wenig Sie Ihre Schleifen abwickeln müssen. Dies ist der Hauptgrund, warum Keras konstante Eingabeformen benötigt, Eingaben mit variabler Größe sind zu schmerzhaft.
Dies tritt häufiger bei der Verarbeitung von Sequenzen variabler Länge wie Sätze in NLP. Der übliche Ansatz ist eine obere Grenze auf die Größe (und zuschneiden längere Sequenzen), und dann Pad die Sequenzen mit Nullen bis zu dieser Größe.
(Sie können auch auf Nullwerte Maskierung umfassen Berechnungen auf den gepolsterten Bereichen zu überspringen, mit der Ausnahme, dass die Faltungsschichten in Keras möglicherweise nicht noch maskierten Eingänge unterstützen ...)
Ich bin nicht sicher, ob für 3D Datenstrukturen, der Overhead des Auffüllens ist nicht prohibitiv - wenn Sie beginnen, Speicherfehler zu erhalten, besteht die einfachste Problemumgehung darin, die Stapelgröße zu reduzieren. Lassen Sie uns wissen, wie Sie diesen Trick auf Bilder angewendet haben!
Ja. Ändern Sie einfach Ihre Eingabeform in Form = (n_channels, Keine, Keine). Dabei steht n_channels für die Anzahl der Kanäle in Ihrem Eingangsbild.
Ich verwende Theano Backend aber so, wenn Sie verwenden tensorflow Sie es ändern könnte müssen (None, None, n_channels)
Sie verwenden sollten:
input_shape = (1, None, None)
Keine in einer Form bezeichnet eine variable Dimension. Beachten Sie, dass nicht alle Layer mit solchen variablen Dimensionen arbeiten, da einige Layer Shape-Informationen (wie Flatten) erfordern. https://github.com/fchollet/keras/issues/1920
Zum Beispiel würde keras funktionale API Ihre Eingangsschicht mit sein:
Für einen RGB-Datensatz
inp = Input(shape=(3,None,None))
für einen Grau-Datensatz
inp = Input(shape=(1,None,None))
- 1. Training und Validierung von Bildern mit unterschiedlicher Auflösung in Keras
- 2. Broadcasting-Problem beim Hinzufügen Keras Lambda-Layer mit unterschiedlicher Größe Eingabe und Ausgabe
- 3. Mayavi points3d mit unterschiedlicher Größe und Farben
- 4. Can Bot Framework mit Facebook Audio-Nachricht behandeln
- 5. Verkettung Klasse Etiketten mit unterschiedlicher Größe
- 6. Datenframe aus Tupel mit unterschiedlicher Größe auffüllen
- 7. generische Eingabebilder mit Etiketten in Tensorflow
- 8. Zwei Bildschirm, gleiche Größe mit unterschiedlicher Dichte
- 9. Streu-Matrixblöcke unterschiedlicher Größe mit MPI
- 10. C: Gießen zu Struktur mit unterschiedlicher Größe
- 11. Gleiche Speicherauslastung der Matrix mit unterschiedlicher Größe
- 12. Vergleichen zwei Pandas Datenrahmen mit unterschiedlicher Größe
- 13. Pandas vergleichen zwei Spalte mit unterschiedlicher Größe
- 14. Textpost und Bildpost mit unterschiedlicher 'Hauptverpackung' Größe
- 15. Keras und Tensorflow mit identischen Gewichten aber unterschiedlicher Testgenauigkeit
- 16. Iteratoren zu Arrays unterschiedlicher Größe
- 17. caffe - Wie kann ich die Größe der Eingabebilder für googlenet Training
- 18. Ändern Sie vorhandene Funktion, um Arrays unterschiedlicher Größe/Struktur zu behandeln
- 19. Wie kann ich zwei Karten unterschiedlicher Größe vergleichen
- 20. -Center zwei UIViews unterschiedlicher Größe horizontal
- 21. Wie kann ich Ruby Arrays unterschiedlicher Größe transponieren?
- 22. Wie kann from_raw_parts_mut zwischen Typen unterschiedlicher Größe umwandeln?
- 23. Koordinate X & Y auf Bildschirm unterschiedlicher Größe
- 24. Schema mit Karte auf Argumente mit unterschiedlicher Größe
- 25. Benutzerdefinierte Reduktion auf Vektor unterschiedlicher Größe
- 26. Datenrahmen unterschiedlicher Größe zusammenführen und Werte wiederholen
- 27. semPaths - Knoten unterschiedlicher Größe für lavaan SEM
- 28. Schriften in einer Schriftfamilie Anzeige unterschiedlicher Größe
- 29. WPF - Set unterschiedlicher Größe für Canvas
- 30. Ausrichten von Textspalten unterschiedlicher Größe und Inhalt
Hallo maz, ich habe genau das gleiche Problem. Kann ich nach meinen Vorschlägen Bilder mit verschiedenen Größen für das Training verwenden, und ähnlich kann ich Segmentierungen für Bilder mit unterschiedlicher Größe vorhersagen. – user288609
Nie versucht Training mit verschiedenen Bildgrößen, aber im Idealfall sollte es funktionieren. In der Vorhersage jedoch habe ich es versucht und es funktioniert (ymmv natürlich). Im schlimmsten Fall müssten Sie Bilder in derselben Größe einspeisen. – maz