地学 python升尺度_数据


(D)下列哪些项目是在图像识别任务中使用的数据扩增技术
1 水平翻转(Horizontal flipping)
2 随机裁剪(Random cropping)
3 随机放缩(Random scaling)
4 颜色抖动(Color jittering)
5 随机平移(Random translation)
6 随机剪切(Random shearing)
A 1,3,5,6
B 1,2,4
C 2,3,4,5,6
D 以上选项均正确


--------------------------------------------------------------------------------------------

为了获得更多数据,我们只需要对现有数据集进行微小改动。轻微更改,例如翻转或旋转或平移或轮换。无论如何,我们的神经网络会认为这些是不同的图像。
卷积神经网络CNN,对放置在不同方向的对象,也能进行稳健的分类,即具有不变性的属性。更具体地,CNN对于平移,不同视角,尺度大小或光照等(或上述的组合)可以是不变的。
这基本上是数据增加的前提。在实际场景中,我们可能会在一组有限的条件下获取图像数据集。但是,我们的目标应用可能存在于各种条件下,例如不同的方向,位置,比例,亮度等。我们通过使用额外的合成对数据进行修改,并训练我们的神经网络来解释这些情况。1 FLIP 翻转


# NumPy.'img' = A single image.
flip_1 = np.fliplr(img)
# TensorFlow. 'x' = A placeholder for an image.
shape = [height, width, channels]
x = tf.placeholder(dtype = tf.float32, shape = shape)
flip_2 = tf.image.flip_up_down(x)
flip_3 = tf.image.flip_left_right(x)
flip_4 = tf.image.random_flip_up_down(x)
flip_5 = tf.image.random_flip_left_right(x)


2 CROP 剪切


# TensorFlow. 'x' = A placeholder for an image.
original_size = [height, width, channels]
x = tf.placeholder(dtype = tf.float32, shape = original_size)
# Use the following commands to perform random crops
crop_size = [new_height, new_width, channels]
seed = np.random.randint(1234)
x = tf.random_crop(x, size = crop_size, seed = seed)
output = tf.images.resize_images(x, size = original_size)


3 translation 平移 (x,y轴移动)


# pad_left, pad_right, pad_top, pad_bottom denote the pixel 
# displacement. Set one of them to the desired value and rest to 0
shape = [batch, height, width, channels]
x = tf.placeholder(dtype = tf.float32, shape = shape)
# We use two functions to get our desired augmentation
x = tf.image.pad_to_bounding_box(x, pad_top, pad_left, height + pad_bottom + pad_top, width + pad_right + pad_left)
output = tf.image.crop_to_bounding_box(x, pad_bottom, pad_right, height, width)


4 scale 缩放


# Scikit Image. 'img' = Input Image, 'scale' = Scale factor
# For details about 'mode', checkout the interpolation section below.
scale_out = skimage.transform.rescale(img, scale=2.0, mode='constant')
scale_in = skimage.transform.rescale(img, scale=0.5, mode='constant')
# Don't forget to crop the images back to the original size (for 
# scale_out)


5 rotation 旋转


# Placeholders: 'x' = A single image, 'y' = A batch of images
# 'k' denotes the number of 90 degree anticlockwise rotations
shape = [height, width, channels]
x = tf.placeholder(dtype = tf.float32, shape = shape)
rot_90 = tf.image.rot90(img, k=1)
rot_180 = tf.image.rot90(img, k=2)
# To rotate in any angle. In the example below, 'angles' is in radians
shape = [batch, height, width, 3]
y = tf.placeholder(dtype = tf.float32, shape = shape)
rot_tf_180 = tf.contrib.image.rotate(y, angles=3.1415)
# Scikit-Image. 'angle' = Degrees. 'img' = Input Image
# For details about 'mode', checkout the interpolation section below.
rot = skimage.transform.rotate(img, angle=45, mode='reflect')


6 Gaussion Noise 高斯模糊
当您的神经网络试图学习可能无用的高频特征(大量出现的模式)时,通常会发生过度拟合。具有零均值的高斯噪声基本上在所有频率中具有数据点,从而有效地扭曲高频特征。这也意味着较低频率的组件(通常是您的预期数据)也会失真,但您的神经网络可以学会超越它。添加适量的噪音可以增强学习能力。一个色调较低的版本是盐和胡椒噪音,它表现为随机的黑白像素在图像中传播。这类似于通过向图像添加高斯噪声而产生的效果,但可能具有较低的信息失真水平。


#TensorFlow. 'x' = A placeholder for an image.
shape = [height, width, channels]
x = tf.placeholder(dtype = tf.float32, shape = shape)
# Adding Gaussian noise
noise = tf.random_normal(shape=tf.shape(x), mean=0.0, stddev=1.0,
dtype=tf.float32)
output = tf.add(x, noise)


Advanced Augmentation Techniques高级增强技术——GAN来拯救你4)对比度和亮度
给图像增加一些随机的光照;
对比度受限自适应直方图均衡化算法(Clahe),锐化(Sharpen),凸点(Emboss);5)随机色相、饱和度、明度(HSV)变换6)彩图到灰度转换(Color to Gray)7)将灰度图重新映射到随机颜色的图像中8)模糊(Blur)、一般模糊(Median Blur)、非常模糊(Motion Blur)


#随机设置图片的亮度
    random_brightness = tf.image.random_brightness(img,max_delta=30)
    #随机设置图片的对比度
    random_contrast = tf.image.random_contrast(img,lower=0.2,upper=1.8)
    #随机设置图片的色度
    random_hue = tf.image.random_hue(img,max_delta=0.3)
    #随机设置图片的饱和度
    random_satu = tf.image.random_saturation(img,lower=0.2,upper=1.8)