数据集的预处理和数据增强代码
时间: 2024-05-08 12:15:55 浏览: 5
由于不清楚您使用的数据集和所需的预处理和数据增强方法,因此无法为您提供具体的代码。但是,以下是一些常见的数据预处理和增强方法的示例代码:
1. 数据预处理:
(1)缩放到固定大小
```python
from PIL import Image
def resize_image(image, size):
"""
缩放图片到指定大小
:param image: PIL.Image对象
:param size: tuple,指定的大小
:return: PIL.Image对象
"""
return image.resize(size)
# 使用示例
img = Image.open('image.jpg')
resized_img = resize_image(img, (224, 224))
```
(2)将像素值归一化到[0, 1]之间
```python
def normalize_image(image):
"""
将像素值归一化到[0, 1]之间
:param image: PIL.Image对象
:return: numpy数组
"""
return np.array(image) / 255.0
# 使用示例
normalized_img = normalize_image(resized_img)
```
2. 数据增强:
(1)随机旋转
```python
def random_rotate_image(image, angle_range):
"""
随机旋转图片
:param image: PIL.Image对象
:param angle_range: tuple,旋转角度的范围
:return: PIL.Image对象
"""
angle = np.random.uniform(angle_range[0], angle_range[1])
return image.rotate(angle)
# 使用示例
rotated_img = random_rotate_image(resized_img, (-10, 10))
```
(2)随机裁剪
```python
def random_crop_image(image, crop_size):
"""
随机裁剪图片
:param image: PIL.Image对象
:param crop_size: tuple,裁剪后的大小
:return: PIL.Image对象
"""
width, height = image.size
x = np.random.randint(0, width - crop_size[0] + 1)
y = np.random.randint(0, height - crop_size[1] + 1)
return image.crop((x, y, x + crop_size[0], y + crop_size[1]))
# 使用示例
cropped_img = random_crop_image(resized_img, (200, 200))
```
(3)随机水平翻转
```python
def random_horizontal_flip_image(image, p=0.5):
"""
随机水平翻转图片
:param image: PIL.Image对象
:param p: 翻转的概率
:return: PIL.Image对象
"""
if np.random.random() < p:
return image.transpose(Image.FLIP_LEFT_RIGHT)
else:
return image
# 使用示例
flipped_img = random_horizontal_flip_image(resized_img, p=0.5)
```