批量数据增强python代码
时间: 2023-10-13 22:13:53 浏览: 112
高光谱图像的批量PCA降维、数据增强和图像显示python代码
5星 · 资源好评率100%
数据增强是指在不改变标签的情况下,对已有的数据进行一定的变换,从而生成新的数据,增加数据样本的多样性和数量,提高模型的泛化能力。以下是一个基于Python的数据增强代码示例:
```python
import os
import cv2
import numpy as np
from keras.preprocessing.image import ImageDataGenerator
# 定义数据增强的方法
def data_augmentation():
datagen = ImageDataGenerator(
rotation_range=10, # 随机旋转的角度范围
width_shift_range=0.1, # 水平方向上平移的范围
height_shift_range=0.1, # 垂直方向上平移的范围
shear_range=0.2, # 剪切变换的程度
zoom_range=0.2, # 随机缩放的范围
horizontal_flip=True, # 水平翻转
fill_mode='nearest' # 填充像素的方式
)
return datagen
if __name__ == '__main__':
data_path = 'path/to/your/data'
save_path = 'path/to/save/data'
if not os.path.exists(save_path):
os.makedirs(save_path)
image_list = os.listdir(data_path)
for image_name in image_list:
image_path = os.path.join(data_path, image_name)
img = cv2.imread(image_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换为RGB格式
img = img.reshape((1,) + img.shape) # 扩展为4维数组
datagen = data_augmentation() # 定义数据增强器
save_prefix = image_name.split('.')[0]
# 利用数据增强器生成新的数据
for i, new_image in enumerate(datagen.flow(img, batch_size=1, save_to_dir=save_path, save_prefix=save_prefix, save_format='jpg')):
if i >= 9: # 生成10张新图片
break
```
以上代码使用Keras中的`ImageDataGenerator`方法定义了数据增强器,并通过调整不同的参数来实现旋转、平移、缩放、剪切等变换。在主函数中,读取原始图片文件夹中的图片,然后利用`ImageDataGenerator`生成新的图片,并保存到指定的文件夹中。生成的新图片文件名以原始图片文件名为前缀,后接一个数字表示第几张新图片。
阅读全文