深度学习08-图像预处理(图像数据扩充+图像缩放+流水在线处理+keras+cifar10案例)

1、缺少源数据对建模的影响

如果缺少源数据只有对数据加工后的数据:将cifar10案例的自变量X部分都除以255.这里仅仅展示部分重要,全部代码在后面附上。

X_train1 = X_train1.astype('float32') / 255
X_test1 = X_test1.astype('float32') / 255

这是最后的拟合效果:
在这里插入图片描述

2、图像数据扩充

定义所需的图像变换方法

图像变换使用keras的函数ImageDataGenerator

from keras.preprocessing.image import ImageDataGenerator

img_generator = ImageDataGenerator(
    rotation_range = 90,
    width_shift_range = 0.2,
    height_shift_range = 0.2,
    zoom_range = 0.3
    )

部分参数解析:
rotation_range = 0 : 整数,随机旋转的度数范围,取值为0~180的度数。
width_shift_range / height_shift_range = 0.0 : 浮点数、一维数组或整数。
图片内容在水平和竖直方向随机移动的程度,一般使用原宽度/高度0~1之间的比例。
平移图片的时候会出现超出原图范围的区域,该区域会根据fill_mode的设定来补全。
zoom_range = 0.0 : 浮点数或[lower, upper],随机缩放范围,整数为具体范围。
若为浮点数,则相当于[lower,upper] = [1-zoom_range, 1+zoom_range]。

from keras.preprocessing import image
from matplotlib import pyplot as plt
import numpy as np
from PIL import Image #PIL pakage name is Pillow 

img = plt.imread(r'F:\learning_kecheng\deenlearning\NEW\pic1.jpg')
imgarr = np.array([img * 1.0]) # 将图片矩阵处理为所需的浮点格式
imgarr.shape
Image.fromarray(img)#矩阵转图片

生成新的图像数据

我们先看一个例子,这是手写体的一个样本,原本是这样:
在这里插入图片描述

gen = img_generator.flow(imgarr)
next(gen).shape
Image.fromarray(np.uint8(next(gen)[0]))
plt.imshow(np.uint8(next(gen)[0]))

使用ImageDataGenerator函数变换之后:
在这里插入图片描述
修改参数 rotation_range = 180:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值