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

How do I Feed local Data (Images) into my Keras Network in Python?

我正在使用最新版本的 Tensorflow 和 Keras。 我看过加载和使用 MNIST ist 等数据集的示例。

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

首先阅读您所有的本地图片:

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

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