数据扩充功能不正确

时间:2019-11-24 19:23:35

标签: python numpy machine-learning data-augmentation

要抬起头:我是新来的,所以请保持冷静。

我正在尝试创建一个函数,该函数将平移MNIST数据集中的每个图像并将平移后的图像添加到原始数据集中,从而有效地使数据集大小加倍。

我的代码(警告,可能是一团糟,我最终必须学习如何编写更精美的函数):

def four_point(i_set):
o_set = i_set
    for i in i_set:
        copy1 = np.ndarray(shape=(28,28))
        shift(i, shift=(1,0), output=copy1)
        copy1 = copy1.reshape(1,28,28)
        o_set = np.concatenate((o_set, copy1))
    return o_set

我已经检查了输出的数据集,它似乎没有应用偏移。有人可以引导我过去吗?

1 个答案:

答案 0 :(得分:0)

取决于编写更高级别的机器学习/深度学习模块提供的内置功能,而不是编写自己的函数来执行此操作。

就像Keras模块中一样,有一个内置函数叫做ImageDataGenerator()

此函数有两个用于在图像中产生偏移的参数。一个用于水平移位,另一个用于垂直移位。这两个参数是:

width_shift_range,
height_shift_range

每个参数都采用:Float,类似于一维数组或int。

1)。 float:如果小于1,则为总高度的分数;如果大于等于1,则为像素。

2)。一维数组状:数组中的随机元素。

3)。 int:间隔(-height_shift_range,+ height_shift_range)中的整数像素数

现在,要想扩充这些图像并将它们全部保存在同一文件夹中,请使用以下代码:

aug = ImageDataGenerator(width_shift_range=0.2,height_shift_range=0.2)

### Make sure to have "/" at the end of the path

list_of_images=os.listdir("/path/to/the/folder/of/images/")

total = 0
#Change the value of "const" to the number of new augmented images to be created
const= 300

for i in range(const):
    curr_image = random.choice(list_of_images)
    image = load_img("/path/to/the/folder/of/images/"+curr_image)
    image = img_to_array(image)
    image = np.expand_dims(image, axis=0)
    imageGen = aug.flow(image, batch_size=1, save_to_dir='/path/to/folder/to/save/images/',save_prefix="augment_image",save_format="jpg")
    for image in imageGen:
        total += 1
        if total == const:
            break
        break

以上片段将在名为“ / path / to / folder / to / save / images /”的文件夹中创建300张新图像。然后,您要做的就是将原始图像粘贴到此文件夹中。

您还可以为ImageDataGenerator()提供其他参数,例如亮度,缩放,垂直翻转,水平翻转等。在documentation中查找更多此类参数。