Không thể tải hình ảnh từ nhóm Google Cloud Storage trong TensorFlow hoặc Keras
Tôi có một nhóm trên Google Cloud Storage chứa các hình ảnh để đào tạo mô hình TensorFlow. Tôi đang sử dụng tensorflow_cloudđể tải các hình ảnh được lưu trữ trong nhóm được gọi stereo-trainvà URL đầy đủ của thư mục có hình ảnh là:
gs://stereo-train/data_scene_flow/training/dat
Nhưng khi sử dụng đường dẫn này trong tf.keras.preprocessing.image_dataset_from_directoryhàm, tôi gặp lỗi trong nhật ký trong Google Cloud Console:
FileNotFoundError: [Errno 2] No such file or directory: 'gs://stereo-train/data_scene_flow/training/dat'
Làm thế nào để khắc phục điều này?
Mã:
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)
Ngay cả khi tôi sử dụng những thứ sau, nó không hoạt động:
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_filethay vì hàm keras, tôi gặp lỗi tương tự. Làm thế nào để khắc phục điều này?
Trả lời
Nếu bạn đang sử dụng Linux hoặc OSX, bạn có thể sử dụng Google Cloud Storage FUSE cho phép bạn gắn bộ chứa của mình cục bộ và sử dụng nó giống như bất kỳ hệ thống tệp nào khác. Làm theo hướng dẫn cài đặt và sau đó gắn thùng của bạn vào một nơi nào đó trên hệ thống của bạn, tức là:
mkdir /mnt/buckets
gcsfuse gs://stereo-train /mnt/buckets
Sau đó, bạn sẽ có thể sử dụng các đường dẫn từ điểm gắn kết trong mã của mình và tải nội dung từ thùng trong Keras.