如何使用Python将本地数据(图像)输入我的Keras网络?

时间:2018-05-24 14:19:01

标签: python tensorflow keras feed

我使用的是Tensorflow和Keras的最新版本。 我已经看到了加载和使用像MNIST这样的数据集的例子。

但是如何使用本地图像执行此操作?

2 个答案:

答案 0 :(得分:2)

首先阅读所有本地图片:

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

答案 1 :(得分:0)

您还可以使用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')