Memuat gambar di cloud ml

Ini adalah kode utama yang berfungsi pada mesin CPU. Itu memuat semua gambar dan topeng dari folder, mengubah ukurannya, dan menyimpannya sebagai 2 array numpy.

from skimage.transform import resize as imresize
from skimage.io import imread


def create_data(dir_input, img_size):

    img_files = sorted(glob(dir_input + '/images/*.jpg'))
    mask_files = sorted(glob(dir_input + '/masks/*.png'))

    X = []
    Y = []

    for img_path, mask_path in zip(img_files, mask_files):

        img = imread(img_path)
        img = imresize(img, (img_size, img_size), mode='reflect', anti_aliasing=True)

        mask = imread(mask_path)
        mask = imresize(mask, (img_size, img_size), mode='reflect', anti_aliasing=True)

        X.append(img)
        Y.append(mask)



    path_x = dir_input + '/images-{}.npy'.format(img_size)
    path_y = dir_input + '/masks-{}.npy'.format(img_size)

    np.save(path_x, np.array(X))
    np.save(path_y, np.array(Y))


Berikut adalah hierarki penyimpanan gcloud

gs://my_bucket
|
|----inputs    
|      |----images/
|      |-----masks/
|   
|----outputs
|
|----trainer    


dir_input seharusnya gs://my_bucket/inputs

Ini tidak berhasil. Apa cara yang tepat untuk memuat gambar dari jalur itu di cloud, dan menyimpan array numpy di folder input?

Lebih disukai dengan skimage, yang dimuat dalam setup.py


person elektricni    schedule 21.10.2018    source sumber


Jawaban (1)


Sebagian besar pustaka Python seperti numpy tidak mendukung pembacaan dan penulisan ke penyimpanan objek seperti GCS atau S3. Ada beberapa pilihan:

  • Salin data ke disk lokal terlebih dahulu (lihat jawaban ini).
  • Coba gunakan GCS python SDK (dokumen)
  • Gunakan perpustakaan lain, seperti abstraksi FileIO TensorFlow. Berikut beberapa kode yang mirip dengan apa yang Anda coba lakukan (baca/tulis array numpy).

Yang terakhir ini sangat berguna jika Anda menggunakan TensorFlow, tetapi masih dapat digunakan meskipun Anda menggunakan kerangka kerja lain.

person rhaertel80    schedule 22.10.2018