用Keras ImageDataGenerator生成器读取一整个文件夹的图片作为训练集,并用测试集的图片文件夹进行预测和评估

本文介绍了如何利用Keras的ImageDataGenerator类从文件夹中批量读取和预处理图像,用于训练和评估神经网络模型。通过实例化ImageDataGenerator并调用flow_from_directory方法,可以方便地处理多类别图像数据。训练完成后,使用generator的reset方法和predict_generator、evaluate_generator对测试集进行预测和评估。
摘要由CSDN通过智能技术生成

用Keras ImageDataGenerator生成器读取一整个文件夹的图片作为训练集,并用测试集的图片文件夹进行预测和评估

近期在使用keras框架进行CV项目的学习,在读取训练数据集模型时遇到了一些困难。
刚开始在做Mnist手写数字识别的时候,蠢萌地用plt.imread方法把所有图片都读取到一个np数组里,做了一个shape = (2000x28x28)的ndarray,再把其作为input输入到模型里,这样的方法确实能够实现图片数据的预处理,但是未免也太麻烦了
今天在看百度的paddlepaddle框架示例代码的时候发现人家有专门的reader用于从文件夹里面读取图片直接输入到模型中,我就想,keras肯定也有类似的方法,就到网上找,果然找到了,keras里面对包含图片的文件夹读取的方法如这里面介绍的:
keras-02 浅谈数据集的制作和加载
(链接里面除了图片文件外,还讲了用csv和h5py文件保存图片和标签并进行加载的方法)
具体就是用到了keras.preprocessing.image里面的ImageDataGenerator类。
首先实例化生成器

train_datagen = ImageDataGenerator(featurewise_center=True,
    featurewise_std_normalization=True,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!以下是用`ImageDataGenerator`生成数据集的代码,并划分训练集、验证集和测试集: ```python import os from keras.preprocessing.image import ImageDataGenerator # 设置文件夹路径 train_dir = 'path/to/train' val_dir = 'path/to/validation' test_dir = 'path/to/test' # 设置图像参数 img_width, img_height = 224, 224 batch_size = 32 num_classes = 2 # 定义ImageDataGenerator train_datagen = ImageDataGenerator( rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) val_datagen = ImageDataGenerator(rescale=1./255) test_datagen = ImageDataGenerator(rescale=1./255) # 定义训练集、验证集和测试集生成器 train_generator = train_datagen.flow_from_directory( train_dir, target_size=(img_width, img_height), batch_size=batch_size, class_mode='categorical') val_generator = val_datagen.flow_from_directory( val_dir, target_size=(img_width, img_height), batch_size=batch_size, class_mode='categorical') test_generator = test_datagen.flow_from_directory( test_dir, target_size=(img_width, img_height), batch_size=batch_size, class_mode='categorical') # 划分训练集、验证集和测试集 train_samples = train_generator.samples val_samples = val_generator.samples test_samples = test_generator.samples print("Total number of samples in the training set: ", train_samples) print("Total number of samples in the validation set: ", val_samples) print("Total number of samples in the test set: ", test_samples) train_steps = train_samples // batch_size val_steps = val_samples // batch_size test_steps = test_samples // batch_size print("Total number of steps in the training set: ", train_steps) print("Total number of steps in the validation set: ", val_steps) print("Total number of steps in the test set: ", test_steps) ``` 在这个代码中,我们首先设置了文件夹路径、图像参数和批次大小等。然后,我们使用`ImageDataGenerator`来定义训练集、验证集和测试集生成器,这些生成器会自动从文件夹读取图像,并进行数据增强和归一化等操作。最后,我们使用`flow_from_directory`函数来生成数据集,并使用`samples`属性来获取数据集的总样本数。我们还使用整除运算符`//`来计算每个数据集的步数,以便在训练模型时使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值