Как передать локальные данные (изображения) в мою сеть Keras в Python? - PullRequest
0 голосов
/ 24 мая 2018

Я использую новейшую версию Tensorflow и Keras.Я видел пример, где наборы данных, такие как MNIST, загружаются и используются.

Но как мне это сделать с локальными изображениями?

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вы также можете использовать ImageDataGenerator, который перетасовывает ваши данные и может сделать для вас увеличение (см. https://keras.io/preprocessing/image/).

from keras.preprocessing.image import ImageDataGenerator

image_datagen = ImageDataGenerator(rescale=1./255)

image_generator = image_datagen.flow_from_directory(
    'your_training_images/train',
    target_size=(image_height, image_width),
    batch_size=batch_size,
    class_mode='binary')
0 голосов
/ 24 мая 2018

Начните с чтения всех ваших локальных изображений:

import cv2
import os,sys
from glob import glob

folder = "path_to_images_folder"
images = glob(os.path.join(folder, '*.images_extension/s'))

Затем вы можете преобразовать изображения в массив пикселей определенной ширины и высоты:

def proc_images():
"""
Returns  array x of resized images: 
"""
    x = []
    WIDTH = 32 #you can adapt to the desired_width(i.e. 64, 128)
    HEIGHT = 32 #you can adapt to the desired_height ( 64, 128)

    for img in images:
        base = os.path.basename(img)


    # Read and resize image
        full_size_image = cv2.imread(img)
    #x.append(full_size_image)
        x.append(cv2.resize(full_size_image, (WIDTH,HEIGHT), interpolation=cv2.INTER_CUBIC))

    return x

x = proc_images()

С этого момента вы можетеприсоедините изображения, связанные с метками, и начните разработку нужной нейронной сети с помощью input_shape (WIDTH, HEIGHT, 3).

Пример:

model = Sequential()
model.add(layers.Conv2D(32, (2, 2), input_shape=(32, 32, 3)))
...