首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras实时增强添加噪声和对比度

Keras实时增强添加噪声和对比度
EN

Stack Overflow用户
提问于 2017-04-13 09:19:13
回答 3查看 10.4K关注 0票数 7

Keras提供了一个用于实时增强的ImageDataGenerator类,但它不包括对比度调整和噪声添加。

我们如何在训练期间应用随机的噪声水平和随机的对比度调整?可以将这些函数添加到datagen的'preprocessing_function‘参数中吗?

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-13 09:37:28

来自Keras文档:

preprocessing_function:将隐含在每个输入上的函数。该函数将在对其进行任何其他修改之前运行。该函数应该有一个参数:一个图像(秩为3的Numpy张量),并且应该输出一个具有相同形状的Numpy张量。

因此,我创建了一个简单的函数,然后使用imgaug module中的图像增强函数。请注意,imgaug要求图像的等级为4。

票数 2
EN

Stack Overflow用户

发布于 2020-04-25 20:01:30

你确实可以用preprocessing_function来增加噪音。

示例脚本:

代码语言:javascript
复制
import random
import numpy as np

def add_noise(img):
    '''Add random noise to an image'''
    VARIABILITY = 50
    deviation = VARIABILITY*random.random()
    noise = np.random.normal(0, deviation, img.shape)
    img += noise
    np.clip(img, 0., 255.)
    return img

# Prepare data-augmenting data generator
from keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(
        rescale=1./255,
        rotation_range=40,
        width_shift_range=0.2,
        height_shift_range=0.2,
        zoom_range=0.2,
        preprocessing_function=add_noise,
    )

# Load a single image as our example
from keras.preprocessing import image
img_path = 'cat_by_irene_mei_flickr.png'
img = image.load_img(img_path, target_size=(299,299))

# Generate distorted images
images = [img]
img_arr = image.img_to_array(img)
img_arr = img_arr.reshape((1,) + img_arr.shape)
for batch in datagen.flow(img_arr, batch_size=1):
    images.append( image.array_to_img(batch[0]) )
    if len(images) >= 4:
        break

# Display
import matplotlib.pyplot as plt
f, xyarr = plt.subplots(2,2)
xyarr[0,0].imshow(images[0])
xyarr[0,1].imshow(images[1])
xyarr[1,0].imshow(images[2])
xyarr[1,1].imshow(images[3])
plt.show()

脚本生成的示例图像:

票数 9
EN

Stack Overflow用户

发布于 2019-08-05 23:06:35

我发现在this blog中你可以做一些简单的事情,比如:

代码语言:javascript
复制
from keras.layers import GaussianNoise

model.add(Dense(32))
model.add(GaussianNoise(0.1))
model.add(Activation('relu'))
model.add(Dense(32))
...

不幸的是,我找不到一种类似的方法来调整/增强对比度。但是,根据这个post,你可以通过以下方式增加亮度

代码语言:javascript
复制
from keras.preprocessing.image import ImageDataGenerator
ImageDataGenerator(brightness_range=[range_min,range_max])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43382045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档