Ich arbeite mit vielen Bildern (10M +) in einem einzigen Verzeichnis (keine Unterordner für jede Klasse) und verwenden Sie ein Pandas DataFrame, um die Klassenbezeichnung zu verfolgen. Die Anzahl der Bilder passt nicht in den Speicher, daher muss ich Minibatches von der Festplatte lesen. Bisher habe ich Keras .flow_from_directory() verwendet, aber ich muss Bilder in einen Unterordner pro Klasse verschieben (und pro Zug/Validierungs-Split). Es funktioniert gut, aber es wird nur sehr unpraktisch, wenn ich verschiedene Teilmengen von Bildern verwenden und Klassen auf verschiedene Arten definieren möchte. Hat jemand eine alternative Strategie, die eine Datenbank (z. B. pandas.DataFrame) verwendet, um das Lesen von Minibatches zu verfolgen, anstatt Bilder in Unterordner zu verschieben?Keras: behalten Sie alle Bilder in einem einzigen Verzeichnis
0
A
Antwort
0
Sie benötigen einen benutzerdefinierten Datengenerator.
import numpy as np
import cv2
def batch_generator(ids):
while True:
for start in range(0, len(ids), batch_size):
x_batch = []
y_batch = []
end = min(start + batch_size, len(ids))
ids_batch = ids[start:end]
for id in ids_batch:
img = cv2.imread(dpath+'train/{}.jpg'.format(id))
#img = cv2.resize(img, (224, 224), interpolation = cv2.INTER_AREA)
labelname=df_train.loc[df_train.id==id,'column_name'].values
labelnum=classes.index(labelname)
x_batch.append(img)
y_batch.append(labelnum)
x_batch = np.array(x_batch, np.float32)
y_batch = to_categorical(y_batch,120)
yield x_batch, y_batch
Dann können Sie den Generator rufen nur mit ids (oder Bildnamen) numpy Array wie folgt:
model.fit_generator(generator=batch_generator(ids_train_split), \
steps_per_epoch= \
np.ceil(float(len(ids_train_split))/float(batch_size)),\
epochs=epochs, verbose=1, callbacks=callbacks, \
validation_data=batch_generator(ids_valid_split), \
validation_steps=np.ceil(float(len(ids_valid_split))/float(batch_size)))
Verwandte Themen
- 1. Alle Bilder aus einem einzigen Verzeichnis einer Website herunterladen
- 2. Laden Sie alle Bilder aus einem Verzeichnis
- 3. So zeigen Sie alle Bilder in einem Verzeichnis mit Kolben
- 4. So laden Sie alle Bilder aus einem Verzeichnis
- 5. Bearbeiten Sie mehrere Bilder in einem einzigen UIView
- 6. Unix Befehl, um alle Dateien in einem Verzeichnis zu löschen, aber das Verzeichnis zu behalten
- 7. erhalten alle Bilder in einem Array von Verzeichnis und Unterverzeichnisse
- 8. Crop Bilder behalten Seitenverhältnis
- 9. Finden Sie alle Verzeichnisse in einem Verzeichnis
- 10. Importieren Sie alle Module in einem Verzeichnis
- 11. Git Zweig in einem einzigen Verzeichnis hinzufügen?
- 12. Move .keras Verzeichnis in Ubuntu
- 13. Laden Sie zwei Bilder in einem einzigen IMG-Tag nacheinander
- 14. Gulp kopieren Sie alle Dateien in einem Verzeichnis, ohne Verzeichnis
- 15. AWS CLI S3 - alle Dateien in einem Eimer in einem einzigen Verzeichnis zu bewegen
- 16. Montieren Sie alle Artefakte der Gradle-Erstellung in einem einzigen Verzeichnis
- 17. Aufrufen des MediaScanners in nur einem einzigen Verzeichnis (Android)
- 18. Alle (Properties.Resources) in einem Verzeichnis gespeichert werden
- 19. Lesen mehrerer Bilder in keras
- 20. Wie behalten Sie globale vis.js Optionen in einer einzigen Datei?
- 21. Schleife über Bilder in einem Verzeichnis
- 22. Löschen Sie alle Dateien in einem Verzeichnis mit einem Zeitmuster
- 23. Mehrere Bilder in einem einzigen Vorschaufenster über AppleScript öffnen
- 24. Python xlwt: alle Stile außer einem behalten
- 25. Plotten mehrerer JPEG-Bilder in einem einzigen Display
- 26. Wo Benutzer speichern hochgeladenen Bilder auf einem einzigen Server
- 27. Extrahiere alle Audiodateien aus einem Verzeichnis und lege sie in ein neues Verzeichnis | Python
- 28. Laden Sie alle Bilder
- 29. Verzeichnis in/sdcard/Bilder
- 30. Parsing durch alle Ordner in einem Verzeichnis