我想看看我的ImageDataGenerator会为我的网络带来什么。
修改
删除了channel_shift_range,意外地将其留在了代码
genNorm = ImageDataGenerator(rotation_range=10, width_shift_range=0.1,
height_shift_range=0.1, zoom_range=0.1, horizontal_flip=True)
batches = genNorm.flow_from_directory(path+'train', target_size=(224,224),
class_mode='categorical', batch_size=64)
x_batch, y_batch = next(batches)
for i in range (0,32):
image = x_batch[i]
plt.imshow(image.transpose(2,1,0))
plt.show()
这是正常还是我在这里做错了什么?
答案 0 :(得分:1)
您的频道转换会产生奇怪的颜色。你真的需要这样来增加你的样品吗?值10(=非常高)真的是你想要的吗?
除此之外:检查生成器产生的另一种可能更有效的方法是使用save_to_dir
(目录函数的流/流参数)设置目录。在那里你将找到所有已经转换并传递到你的拟合/流动函数的图像。
修改:
在处理过程中或显示图像时,您仍然会以某种方式反转图像。我假设原始图像看起来更像是这样:
将ImageDataGenerator的结果保存到目录中,并将其与您使用plt.show
看到的结果进行比较。
答案 1 :(得分:1)
尝试一下;更改生成器,如下所示:
import numpy as np
def my_preprocessing_func(img):
image = np.array(img)
return image / 255
genNorm = ImageDataGenerator(rotation_range=10, width_shift_range=0.1,
height_shift_range=0.1, zoom_range=0.1, horizontal_flip=True,
preprocessing_function=my_preprocessing_func)
对我有用,
布鲁诺
答案 2 :(得分:0)
keras使用带有Pillow后端的图像操作,该后端默认为'RGB'格式。因此,您无需反转plt.imshow()
中的通道轴。
仅在cv2.imread()
(默认为'BGR')中,您可能需要plt.imshow(img[:, :, ::-1])
才能显示正确的图像。
BR