Невозможно загрузить изображения из корзины Google Cloud Storage в TensorFlow или Keras

Aug 17 2020

У меня есть корзина в Google Cloud Storage, содержащая изображения для обучения модели TensorFlow. Я использую tensorflow_cloudдля загрузки изображений, хранящихся в названном ведре, stereo-trainи полный URL-адрес каталога с изображениями:

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

Но используя этот путь в tf.keras.preprocessing.image_dataset_from_directoryфункции, я получаю ошибку в журнале в Google Cloud Console:

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

Как это исправить?

Код:

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)


Даже когда я использую следующее, это не работает:


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вместо функции keras я получаю ту же ошибку. Как это исправить?

Ответы

1 mac13k Aug 17 2020 at 10:03

Если вы используете Linux или OSX, вы можете использовать Google Cloud Storage FUSE, который позволит вам локально смонтировать ведро и использовать его, как любую другую файловую систему. Следуйте инструкциям по установке, а затем установите ведро где-нибудь в системе, например:

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

После этого вы сможете использовать пути из точки монтирования в своем коде и загружать контент из корзины в Keras.