详解Keras:keras.preprocessing.image

keras.preprocessing.image

 Keras 库中的一个模块,用于处理和增强图像数据,它提供了一些实用的函数,如图像的加载、预处理、增强等。

常用函数 

1、load_img

用于加载图像文件,并返回一个 NumPy 数组表示该图像

示例
from keras.preprocessing.image import load_img,load_img,array_to_img
import numpy as np

#从指定路径加载图像,并将其调整为指定的大小(默认为 (224, 224))
img = image.load_img('test.jpg', target_size=(224, 224))

2、img_to_array

将图像转换为 NumPy 数组。

示例
from keras.preprocessing.image import load_img,load_img,array_to_img
import numpy as np

# 加载图像并调整大小
img = image.load_img('example.jpg', target_size=(224, 224))

# 将 PIL 图像转换为 numpy 数组
x = image.img_to_array(img)

 3、array_to_img

将 numpy 数组或 PIL 图像转换为 PIL 图像。

示例
from keras.preprocessing.image import load_img,load_img,array_to_img

# 加载图像并调整大小
img = load_img('example.jpg', target_size=(224, 224))

# 将 PIL 图像转换为 numpy 数组
x = img_to_array(img)

# 将 numpy 数组转换为 PIL 图像
y = array_to_img(x)

4、ImageDataGenerator 

用于数据增强的类,可以对图像进行旋转、缩放、平移、翻转等操作。

示例1
# 导入Keras的ImageDataGenerator模块,用于数据增强
from keras.preprocessing.image import ImageDataGenerator

# 创建一个ImageDataGenerator对象,设置各种数据增强参数
datagen = ImageDataGenerator(
    rotation_range=40,  # 随机旋转的角度范围
    width_shift_range=0.2,  # 水平平移的范围
    height_shift_range=0.2,  # 垂直平移的范围
    shear_range=0.2,  # 剪切强度
    zoom_range=0.2,  # 随机缩放的范围
    horizontal_flip=True,  # 是否进行水平翻转
    fill_mode='nearest'  # 填充新创建像素的方法
)


#使用flow_from_directory方法从指定的目录中读取图像数据
#并将其传递给ImageDataGenerator对象进行处理
train_generator = datagen.flow_from_directory(
    'path/train/data',  #训练数据的目录
    target_size=(150, 150),  #将所有图像调整为150x150大小
    batch_size=32,  #每个批次包含32个图像
    class_mode='binary'  #对于多分类问题使用 'categorical',对于二元分类问题使用 'binary',对于无标签问题使用 None  
)


#使用生成器对象来训练模型
model.fit_generator(
    train_generator,
    steps_per_epoch=2000,  # 每个epoch需要遍历的批次数
    epochs=50  # 训练的总轮数
)




注:

  • flow_from_directory方法中的target_size参数需要与模型输入层的大小相匹
示例2 
import os
from keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array, array_to_img

# 图像数据增强函数
def ImageDataAugmentation(imageFile):
    # 获取图片所在的文件夹路径
    savePath = os.path.dirname(imageFile)
    
    # 创建一个ImageDataGenerator对象,用于进行图像数据增强
    datagen = ImageDataGenerator(
        rotation_range=40,  # 随机旋转角度范围
        width_shift_range=0.2,  # 水平平移范围
        height_shift_range=0.2,  # 垂直平移范围
        shear_range=0.2,  # 剪切强度
        zoom_range=0.2,  # 缩放范围
        horizontal_flip=True,  # 是否进行水平翻转
        fill_mode='nearest'  # 填充模式
    )

    # 加载图片
    img = load_img(imageFile)  # 替换为你要处理的图片路径
    x = img_to_array(img)  # 将图片转换为numpy数组
    x = x.reshape((1,) + x.shape)  # 重新调整数组的形状

    # 使用ImageDataGenerator进行图片增强
    i = 0
    for batch in datagen.flow(x, batch_size=1):
        i += 1
        y = array_to_img(batch[0])
        y.save(savePath+'/output_{}.jpg'.format(i))  # 保存增强后的图片
        if i > 20:  # 生成20张增强后的图片
            print('finish')
            break

# 设置要进行图像数据增强的图片路径
imageFile ='/Users/Desktop/test/1.jpg'
# 调用图像数据增强函数
ImageDataAugmentation(imageFile)

 

  • 20
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

缘起性空、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值