Загрузка изображений в облаке мл - PullRequest
0 голосов
/ 22 октября 2018

Это основной код, который работает на процессорной машине.Он загружает все изображения и маски из папок, изменяет их размер и сохраняет их в виде двух массивов.

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))


Здесь представлена ​​иерархия хранилищ gcloud

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


dir_input должно быть gs://my_bucket/inputs

Это не работает.Как правильно загружать изображения с этого пути в облаке и сохранять массив пустых файлов в папке ввода?

Предпочтительнее с skimage, который загружается в setup.py

1 Ответ

0 голосов
/ 22 октября 2018

Большинство библиотек Python, таких как numpy, не поддерживают чтение и запись в хранилища объектов, таких как GCS или S3.Есть несколько вариантов:

  • Сначала скопируйте данные на локальный диск (см. этот ответ ).
  • Попробуйте использовать SDK GCS python (документы )
  • Использовать другую библиотеку, например абстракцию TensorFlow FileIO. Вот некоторый код , похожий на то, что вы пытаетесь сделать (чтение / запись numy массивов).

Последний особенно полезен, если вы используете TensorFlow, но все же может бытьиспользуется, даже если вы используете какой-то другой фреймворк.

...