如何将本地数据(图像)输入 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')
我正在使用最新版本的 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')