Impossible de charger des images à partir d'un bucket Google Cloud Storage dans TensorFlow ou Keras
J'ai un bucket sur Google Cloud Storage qui contient des images pour une formation de modèle TensorFlow. J'utilise tensorflow_cloud
pour charger les images stockées dans le seau appelé stereo-train
et 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_directory
fonction, 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_file
au lieu de la fonction keras, j'obtiens la même erreur. Comment régler ceci?
Réponses
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.