Как загрузить локальный набор данных (X, y) с помощью платформы Keras - PullRequest
0 голосов
/ 14 апреля 2019

У меня есть локальный набор данных, разработанный для папок trainingSet и testSet, и каждый из них содержит 3 класса, например:

-Training_Set
   --Class1
     --img1.jpg
     --img2.jpg
     ..
   --Class2
     --img101.jpg
     --img102.jpg
     ..
   --Class3
     --img201.jpg
     --img202.jpg

-Test_Set
       --Class1
         --img10.jpg
         --img11.jpg
         ..
       --Class2
         --img150.jpg
         --img140.jpg
         ..
       --Class3
         --img210.jpg
         --img220.jpg

, и я хочу загрузить его так, как мы загружаем набор данных Cifar:

(trainX, trainY), (testX, testY) = cifar10.load_data()

Ответы [ 2 ]

2 голосов
/ 15 апреля 2019

Вы можете попробовать это (хотя и не уверены, почему вы хотите именно так, как cifar):

import cv2  # pip install opencv-python
import numpy as np
import os


class ImageLoader:
    """Load images in arrays without batches."""

    def __init__(self, train_dir, test_dir):
        """Create class."""
        self.train_dir = train_dir
        self.test_dir = test_dir

    def load_data(self):
        """Load the data."""
        features, labels = [], []

        for source in [self.train_dir, self.test_dir]:
            input, output = [], []
            for class_name in os.listdir(source):
                if os.path.isdir(class_name):
                    for img_name in os.listdir(class_name):
                        img = cv2.imread(os.path.join(self.train_dir, class_name, img_name))

                        # ...
                        # Modify your image array here.
                        # ...

                        input.append(img)
                        output.append(class_name)  # or other method to convert label

            # Shuffle labels.
            combine = list(zip(input, output))  # zip as list for Python 3
            np.random.shuffle(combine)
            input, output = zip(*combine)
            features.append(input)
            labels.append(output)

        return [[np.array(features[0], dtype=np.float32),
                 np.array(labels[0], dtype=np.float32)],
                [np.array(features[1], dtype=np.float32),
                 np.array(labels[1], dtype=np.float32)]]


cifar10 = ImageLoader('path-to-training', 'path-to-testing')
(trainX, trainY), (testX, testY) = cifar10.load_data()
0 голосов
/ 14 апреля 2019

Вы можете использовать load-image-dataset для загрузки набора данных:

from load_image_dataset import load_image_dataset

(x_train, y_train), (x_test, y_test) = load_image_dataset('/path/to/your/dataset', ['Training_Set', 'Test_Set'])

Также вы можете использовать ImageDataGenerator и flow_from_directory в Keras.См. этот пример и документы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...