Impossible de charger des images à partir d'un bucket Google Cloud Storage dans TensorFlow ou Keras

Aug 17 2020

J'ai un bucket sur Google Cloud Storage qui contient des images pour une formation de modèle TensorFlow. J'utilise tensorflow_cloudpour charger les images stockées dans le seau appelé stereo-trainet l'URL complète du répertoire avec les images est:

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

Mais en utilisant ce chemin dans la tf.keras.preprocessing.image_dataset_from_directoryfonction, j'obtiens l'erreur dans le journal de Google Cloud Console:

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

Comment régler ceci?

Code:

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)


Même lorsque j'utilise ce qui suit, cela ne fonctionne pas:


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_fileau lieu de la fonction keras, j'obtiens la même erreur. Comment régler ceci?

Réponses

1 mac13k Aug 17 2020 at 10:03

Si vous utilisez Linux ou OSX, vous pouvez utiliser Google Cloud Storage FUSE qui vous permettra de monter votre bucket localement et de l'utiliser comme n'importe quel autre système de fichiers. Suivez le guide d'installation , puis montez votre seau quelque part sur votre système, c'est-à-dire:

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

Ensuite, vous devriez pouvoir utiliser les chemins du point de montage dans votre code et charger le contenu du compartiment dans Keras.