数据增强加噪声如何通过python实现
时间: 2023-12-14 11:39:56 浏览: 180
数据增强是指通过对原始数据进行一系列变换,生成新的数据来增加数据量,提高模型的泛化能力和鲁棒性。其中加噪声是一种常用的数据增强方法,可以增加数据的多样性,减少过拟合。
在Python中,可以通过以下方式实现加噪声的数据增强:
1. 添加高斯噪声
```python
import numpy as np
def add_gaussian_noise(image, mean=0, std=0.1):
noise = np.random.normal(mean, std, image.shape)
noisy_image = image + noise
return np.clip(noisy_image, 0, 1)
```
其中,`mean`和`std`分别表示高斯噪声的均值和标准差,`np.random.normal`函数用于生成符合高斯分布的随机数,`np.clip`函数用于将像素值限制在[0, 1]之间。
2. 添加椒盐噪声
```python
def add_salt_pepper_noise(image, prob=0.05):
noisy_image = np.copy(image)
salt = np.random.binomial(1, prob, image.shape[:2])
pepper = np.random.binomial(1, prob, image.shape[:2])
noisy_image[salt == 1] = 1
noisy_image[pepper == 1] = 0
return noisy_image
```
其中,`prob`表示椒盐噪声的概率,`np.random.binomial`函数用于生成伯努利分布的随机数,`1`表示概率为`prob`的事件发生,`0`表示概率为`1-prob`的事件发生。
3. 添加随机旋转、平移、缩放等变换
```python
from keras.preprocessing.image import ImageDataGenerator
def random_transform(image, seed=None):
datagen = ImageDataGenerator(
rotation_range=20,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,
fill_mode='reflect',
data_format='channels_last',
)
return datagen.random_transform(image, seed=seed)
```
其中,`rotation_range`表示旋转角度范围,`width_shift_range`和`height_shift_range`表示平移范围,`shear_range`表示剪切范围,`zoom_range`表示缩放范围,`horizontal_flip`表示是否进行水平翻转,`fill_mode`表示边缘像素填充方式。
以上三种方法可以根据具体场景和需求进行组合使用,实现数据增强加噪声。
阅读全文