繁体   English   中英

具有不同图像尺寸的Keras CNN

[英]Keras CNN with varying image sizes

我正在尝试使用VOC2012数据集来训练CNN。 对于我的项目,我需要黑白数据,因此我提取了R组件。 到现在为止还挺好。 问题在于图像的大小不同,所以我不知道如何将其传递给模型。 我编译了模型,然后创建了如下的32个迷你批处理(其中X_trainY_train是文件的路径)。

for x in X_train:
    img = plt.imread(x)
    img = img.reshape(*(img.shape), 1)
    X.append(img)

for y in Y_train:
    img = plt.imread(y)
    img = img.reshape(*(img.shape), 1)
    Y.append(img)

model.train_on_batch(np.array(X), np.array(Y))

但是,我怀疑由于图像的大小都不同,所以numpy数组的形状为(32,)而不是我期望的形状(32,height,width,1)。 我该如何处理?

根据某些消息来源,确实可以训练至少一些具有不同输入大小的体系结构。 Quora交叉验证

当要生成大小可变的数组的数组时,可能只是使用Python的NumPy数组列表或类型为objectndarray来收集所有图像数据。 然后在训练过程中,Quora回答提到只能使用批处理大小1,否则可能会根据大小将多个图像合并在一起。 甚至可以使用零填充来使图像大小均匀,但是对于这种方法的有效性我不能说太多。

祝您研究顺利!

示例代码示例:

# Generate 10 "images" with different sizes
images = [np.zeros((i+5, i+10)) for i in range(10)]
images = np.array([np.zeros((i+5, i+10)) for i in range(10)])

# Or an empty array to append to
images = np.array([], dtype=object)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM