Обработайте большой набор данных в массив numpy

#python #numpy #image-processing #deep-learning #google-colaboratory

Вопрос:

как я могу обработать свой большой набор данных изображений (75 000 изображений) в массив numpy? Моя попытка состоит в том, чтобы просто открыть изображение и сохранить его в массиве, вот так:

 for i, image in enumerate(allTrainImages):
  if i % 1000 == 0:
    print("%d images processed!" % i)
  x_train[i] = np.asarray(Image.open(image).thumbnail(image_size))
  y_train[i] = np.asarray(train['class_label'][i])
 

Первые 5000 изображений можно легко обработать, но после этого потребуется целая вечность, чтобы перейти к следующему шагу 1000…
Есть ли более быстрый метод?

Комментарии:

1. Без более подробной информации трудно быть конкретным. Как x_train[] они определены и y_train[] определены? ( shape=(75000,1) , dtype=object ?) Насколько велики сохраненные изображения? Если мне нужно угадать, я подозреваю, что замедление-это время, потраченное на перераспределение памяти для каждого нового массива. Я думаю, что Список будет более эффективным. Ты можешь это сделать? Или требуется массив?

2. 75000 изображений-это много и должно занимать огромный объем памяти, если изображение довольно большое. Загрузка 5000 HD-изображений (1080×720) занимает примерно 13 ГБ оперативной памяти и до 193 ГБ оперативной памяти для 75000 HD-изображений! У вас действительно есть такой объем памяти на целевой машине? Если нет, вам нужно загрузить изображение небольшими порциями.