深度学习数据增强全攻略:从基础操作到猫狗训练实战

  1. 数据增强的重要性:深度学习对数据量要求高,数据增强是解决训练集过拟合问题的有效手段,通过对现有数据进行变换,可扩充数据规模,提升模型泛化能力。
  2. 数据增强的实践操作
    • 导包准备:使用matplotlib.pyplot用于数据可视化,PILImage模块处理图像,keras.preprocessing.image替代opencv操作图像,keras.backend辅助图像操作,osglob处理文件路径,numpy进行数值计算。
    • 查看原始数据:定义print_result函数展示图像,设置图像展示布局为 3 行 4 列,可展示 6 张图像。指定数据路径,读取特定文件夹下的图像数据,若文件夹中图像数量不足展示数量会报错,但不影响已读取图像的展示。
    • 图像增强操作
      • 调整图像大小:利用ImageDataGenerator设置target_size,将图像统一调整为指定尺寸,如调整为 300×300 像素。通过flow_from_directory函数指定源数据目录、批量大小、是否打乱数据、保存增强后图像的目录、文件名前缀等参数,执行next()方法生成增强后的图像并保存。
      • 角度旋转:设置rotation_range参数实现图像角度旋转,如设置为 45,表示图像可随机旋转 0 - 45 度。先读取数据,再进行数据增强和保存操作。
      • 平移变换:通过width_shift_rangeheight_shift_range分别设置图像在水平和垂直方向的平移范围,取值范围为 0 - 1,如设置为 0.3 表示可平移图像宽度或高度的 30%。
      • 缩放操作:利用zoom_range设定缩放比例,如设置为 0.5 表示图像可在 0.5 倍(缩小)到 2 倍(放大)之间缩放。缩放可能导致图像位置空缺,有constant(常量填充)、nearest(最近邻填充)、reflect(反射填充)、wrap(循环填充)等填充方式。
      • 通道移位(channel_shift):设置channel_shift_range实现通道移位,虽然肉眼难以察觉变化,但对计算机处理有影响,如设置为 15 表示通道值会在一定范围内移动。
      • 翻转操作:通过horizontal_flip=True实现图像水平翻转,若想垂直翻转可添加vertical_flip=True参数。此外,rescale参数可对图像像素值进行重新缩放,将所有像素值映射到 0 - 1 之间。
  3. 猫狗训练实战:在猫狗分类任务中,分别定义训练数据生成器train_datagen和测试数据生成器test_datagen。训练数据生成器对图像进行多种增强操作,包括重新缩放像素值、旋转、平移、错切、缩放、水平翻转等,并使用nearest填充方式;测试数据生成器仅进行像素值重新缩放。通过flow_from_directory函数分别从训练集和验证集目录读取数据,设置目标图像大小、批量大小和分类模式。最后使用model.fit_generator函数进行模型训练,指定训练步数、训练轮数、验证数据和验证步数等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值