【发布时间】:2021-11-10 21:16:45
【问题描述】:
我想打印我使用 Keras 创建的训练批次中的示例图片,如下所示:
train_batches = ImageDataGenerator(rescale=1/255, horizontal_flip=True,
rotation_range=5).flow_from_directory('train', target_size=(256, 256), classes=[
'bike', 'car', 'motorcycle', 'other', 'truck', 'van'], batch_size=12)
理想情况下,我希望课程也能展示,但现在我很高兴能够展示示例图片。我找到了this thread,但是当我像这样用我的 train_batch 尝试该代码时:
def plots(ims, figsize=(12,6), rows=3, interp=False, titles=None):
if type(ims[0]) is np.ndarray:
ims = np.array(ims).astype(np.uint8)
if (ims.shape[-1] != 3):
ims = ims.transpose((0,2,3,1))
f = plt.figure(figsize=figsize)
cols = len(ims)//rows if len(ims) % 2 == 0 else len(ims)//rows + 1
for i in range(len(ims)):
sp = f.add_subplot(rows, cols, i+1)
sp.axis('Off')
if titles is not None:
sp.set_title(titles[i], fontsize=16)
plt.imshow(ims[i], interpolation=None if interp else 'none')
imgs, labels = next(train_batches)
plots(imgs, titles=labels)
它按应有的方式绘制类,但只有黑色方块,而不是这样的图片: 正如我之前所说,现在我很高兴能够打印示例图片,并且不必是一整批。 (但如果您知道如何更正我的代码以便上面的代码真正有效,我将不胜感激。)
编辑: 如果我删除了 ImageDataGenerator 括号中的所有内容,则会按原样绘制图片。我尝试先删除重新缩放,但它什么也没做。所以现在我的问题是;如何创建具有所有这些差异(翻转、重新缩放、旋转)的图像,以便我可以训练一个实体(或至少尝试成为)模型?
【问题讨论】:
-
可能是组合
rescale=1/255+.astype(np.uint8)基本上将所有像素设置为零? (这取决于输入图像,所以我不能确定) -
谢谢,我删除了重新缩放但得到了相同的结果,我应该用 astype 尝试什么?(输入图像是 .PNG 256x256 和 RGB)
-
您可以尝试删除它。如果它不起作用,您可以在函数内的某处放置
print(ims),以了解您是否只有零,或者是否是可视化问题 -
正如你所说,它充满了零,所以有些东西是错误的。那么它必须在第一位 - ImageDataGenerator - 位? (因为我可以毫不费力地查看 png.files ......)
-
是的,问题也可能出在生成器上。我会尝试调试它删除参数,并使用不同的图像进行测试
标签: python matplotlib keras