详解Keras:keras.preprocessing.image
2024-01-07 17:18:40
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)
?
文章来源:https://blog.csdn.net/lymake/article/details/135432413
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!