深度学习之:数据增强 (Data Augmentation)
内容持续更新中,欢迎各位在评论区补充和讨论!
在当前AI这个数据驱动的时代,没有数据几乎是万万不能的。
你的数据太少?
别怕,我们有数据增强技术!
当前流行的数据增强技
1.翻转(Flip)
可以对图片进行水平和垂直翻转。一些框架不提供垂直翻转功能。但是,一个垂直反转的图片等同于图片的180度旋转,然后再执行水平翻转。下面是我们的图片翻转的例子。
从左侧开始,原始图片,水平翻转的图片,垂直翻转的图片。
你可以使用你喜欢的工具包进行下面的任意命令进行翻转,数据增强因子=2或4
# 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.旋转(Rotation)
一个关键性的问题是当旋转之后图像的维数可能并不能保持跟原来一样。如果你的图片是正方形的,那么以直角旋转将会保持图像大小。如果它是长方形,那么180度的旋转将会保持原来的大小。以更精细的角度旋转图像也会改变最终的图像尺寸。我们将在下一节中看到我们如何处理这个问题。以下是以直角旋转的方形图像的示例。
当我们从左向右移动时,图像相对于前一个图像顺时针旋转90度。
你可以使用你喜欢的工具包执行以下的旋转命令。数据增强因子= 2或4。
# Placeholders: 'x'