No se pueden cargar imágenes de un depósito de Google Cloud Storage en TensorFlow o Keras

Aug 17 2020

Tengo un depósito en Google Cloud Storage que contiene imágenes para un entrenamiento de modelo de TensorFlow. Estoy usando tensorflow_cloudpara cargar las imágenes almacenadas en el depósito llamado stereo-trainy la URL completa al directorio con imágenes es:

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

Pero al usar esta ruta en la tf.keras.preprocessing.image_dataset_from_directoryfunción, obtengo el error en el registro en Google Cloud Console:

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

¿Cómo arreglar esto?

Código:

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)


Incluso cuando uso lo siguiente, no funciona:


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_fileen lugar de la función keras, obtengo el mismo error. ¿Cómo arreglar esto?

Respuestas

1 mac13k Aug 17 2020 at 10:03

Si está usando Linux u OSX, puede usar Google Cloud Storage FUSE, que le permitirá montar su depósito localmente y usarlo como cualquier otro sistema de archivos. Siga la guía de instalación y luego monte su balde en algún lugar de su sistema, es decir:

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

Luego, debería poder usar las rutas desde el punto de montaje en su código y cargar el contenido del depósito en Keras.