No se pueden cargar imágenes de un depósito de Google Cloud Storage en TensorFlow o Keras
Tengo un depósito en Google Cloud Storage que contiene imágenes para un entrenamiento de modelo de TensorFlow. Estoy usando tensorflow_cloud
para cargar las imágenes almacenadas en el depósito llamado stereo-train
y 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_directory
funció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_file
en lugar de la función keras, obtengo el mismo error. ¿Cómo arreglar esto?
Respuestas
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.