Impossibile caricare le immagini da un bucket di Google Cloud Storage in TensorFlow o Keras

Aug 17 2020

Ho un bucket su Google Cloud Storage che contiene immagini per un modello di formazione TensorFlow. Sto usando tensorflow_cloudper caricare le immagini archiviate nel bucket chiamato stereo-traine l'URL completo della directory con le immagini è:

gs://stereo-train/data_scene_flow/training/dat

Ma utilizzando questo percorso nella tf.keras.preprocessing.image_dataset_from_directoryfunzione, ottengo l'errore nel log in Google Cloud Console:

FileNotFoundError: [Errno 2] No such file or directory: 'gs://stereo-train/data_scene_flow/training/dat'

Come risolvere questo problema?

Codice:

GCP_BUCKET = "stereo-train"

kitti_dir = os.path.join("gs://", GCP_BUCKET, "data_scene_flow")
kitti_training_dir = os.path.join(kitti_dir, "training", "dat")

ds = tf.keras.preprocessing.image_dataset_from_directory(kitti_training_dir, image_size=(375,1242), batch_size=batch_size, shuffle=False, label_mode=None)


Anche quando uso quanto segue, non funziona:


filenames = np.sort(np.asarray(os.listdir(kitti_train))).tolist()
# Make a Dataset of image tensors by reading and decoding the files.
ds = list(map(lambda x: tf.io.decode_image(tf.io.read_file(kitti_train + x)), filenames))

tf.io.read_fileinvece della funzione keras, ottengo lo stesso errore. Come risolvere questo problema?

Risposte

1 mac13k Aug 17 2020 at 10:03

Se utilizzi Linux o OSX puoi utilizzare Google Cloud Storage FUSE che ti consentirà di montare il tuo bucket localmente e di utilizzarlo come qualsiasi altro file system. Segui la guida all'installazione e poi monta il tuo secchio da qualche parte sul tuo sistema, ad esempio:

mkdir /mnt/buckets
gcsfuse gs://stereo-train /mnt/buckets

Quindi dovresti essere in grado di utilizzare i percorsi dal punto di montaggio nel codice e caricare il contenuto dal bucket in Keras.