- 数据增强的重要性:深度学习对数据量要求高,数据增强是解决训练集过拟合问题的有效手段,通过对现有数据进行变换,可扩充数据规模,提升模型泛化能力。
- 数据增强的实践操作
- 导包准备:使用
matplotlib.pyplot用于数据可视化,PIL的Image模块处理图像,keras.preprocessing.image替代opencv操作图像,keras.backend辅助图像操作,os和glob处理文件路径,numpy进行数值计算。 - 查看原始数据:定义
print_result函数展示图像,设置图像展示布局为 3 行 4 列,可展示 6 张图像。指定数据路径,读取特定文件夹下的图像数据,若文件夹中图像数量不足展示数量会报错,但不影响已读取图像的展示。 - 图像增强操作
- 调整图像大小:利用
ImageDataGenerator设置target_size,将图像统一调整为指定尺寸,如调整为 300×300 像素。通过flow_from_directory函数指定源数据目录、批量大小、是否打乱数据、保存增强后图像的目录、文件名前缀等参数,执行next()方法生成增强后的图像并保存。 - 角度旋转:设置
rotation_range参数实现图像角度旋转,如设置为 45,表示图像可随机旋转 0 - 45 度。先读取数据,再进行数据增强和保存操作。 - 平移变换:通过
width_shift_range和height_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 之间。
- 调整图像大小:利用
- 导包准备:使用
- 猫狗训练实战:在猫狗分类任务中,分别定义训练数据生成器
train_datagen和测试数据生成器test_datagen。训练数据生成器对图像进行多种增强操作,包括重新缩放像素值、旋转、平移、错切、缩放、水平翻转等,并使用nearest填充方式;测试数据生成器仅进行像素值重新缩放。通过flow_from_directory函数分别从训练集和验证集目录读取数据,设置目标图像大小、批量大小和分类模式。最后使用model.fit_generator函数进行模型训练,指定训练步数、训练轮数、验证数据和验证步数等参数。
深度学习数据增强全攻略:从基础操作到猫狗训练实战
最新推荐文章于 2025-12-09 17:25:48 发布
1909

被折叠的 条评论
为什么被折叠?



