图像数据预处理

1.下载数据集

首先我们需要先到网上下载猫狗数据集:

猫狗分类数据集下载地址:https://pan.baidu.com/s/1i4SKqWH
密码:d8mt

2.数据集划分

刚开始下载的数据train和test都是猫和狗混合的图片,需要修改一下重新划分一下train和test中的猫和狗分别划分出来。文件结构如下:

|_image
    |_train
        |_dog
        |_cat
    |_test
        |_dog
        |_cat

由于训练时长的问题,这里只用到了2000张图片进行训练,1000图片进行验证。可以自行决定训练和测试数据集的大小。

3.数据预处理代码

代码运行平台为jupyter-notebook,文章中的代码块,也是按照jupyter-notebook中的划分顺序进行书写的,运行文章代码,直接分单元粘入到jupyter-notebook即可。

from keras.preprocessing.image import ImageDataGenerator,array_to_img,img_to_array,load_img
  • rotation_range是一个0~180的度数,用来指定随机选择图片的角度
  • width_shift和height_shift用来指定水平和竖直方向随机移动的程度,这是两个0~1之间的比
  • rescale值将在执行其他处理前乘到整个图像上,我们的图像在RGB通道都是0~255的整数,这样的操作可能使图像的值过高或过低,所以我们将这个值定为0~1之间的数
  • shear_range是用来进行剪切变换的程度,参考剪切变换
  • zoom_range用来进行随机的放大
  • horizontal_flip随机的对图片进行水平翻转,这个参数适用于水平翻转不影响图片语义的时候
  • fill_mode用来指定当需要进行像素填充,比如旋转、水平和竖直位移时,如何填充新出现的像素
datagen = ImageDataGenerator(
    rotation_range=40,      # 随机旋转角度
    width_shift_range=0.2,  # 随机水平平移
    height_shift_range=0.2, # 随机竖直平移
    rescale=1./255,         # 数值归一化
    shear_range=0.2,        # 随机裁剪
    zoom_range=0.2,         # 随机放大
    horizontal_flip=True,   # 水平翻转
    fill_mode="nearest"     # 填充方式
)

这里我们以一张图片先来演示数据处理的效果:

# 载入图片
img = load_img("./image/train/cat/cat.1.jpg")
# 将图片转化为array数据格式
x = img_to_array(img)
# (280, 300, 3) = (H,W,channels)
print(x.shape)
# 给图片增加一个维度 加这个维度主要是因为训练的时候需要一个四维的图片
x = x.reshape((1,)+x.shape)
# (1, 280, 300, 3) = (batch_size,H,W,channels)
print(x.shape)
i = 0
# 生成21张图片
# flow随机生成图片 save_prefix为新生成名字的前缀
for batch in datagen.flow(x,batch_size=1,save_to_dir='temp',save_prefix="cat",save_format="jpeg"):
    # 执行20次
    i += 1
    if i>20:
        break

测试的图片:
在这里插入图片描述
代码运行结果:
在这里插入图片描述
可以看到这个数据增强的效果还是不错的哈!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

布兹学长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值