【发布时间】:2020-09-13 15:07:46
【问题描述】:
我有一组 20,000 张图像,我正在从磁盘导入,如下所示。
imgs_dict={}
path="Documents/data/img"
os.listdir(path)
valid_images =[".png"]
for f in os.listdir(path):
ext= os.path.splitext(f)[1]
if ext.lower() not in valid_images:
continue
img_name=os.path.basename(f)
img_name=os.path.splitext(img_name)[0]
img=np.asarray(Image.open(os.path.join(path,f)))
imgs_dict.update([(img_name,img)])
我最后将其转换为字典的原因是因为我还有另外两个字典指定图像 ID、分类以及它是训练集还是验证集的一部分。其中一个字典对应于应该成为训练数据一部分的所有数据,另一个指定应该成为验证数据一部分的那些数据。将它们分开后,我需要将它们恢复为图像的标准数组格式(高度、宽度、通道)。如何获取图像字典并将其转换回我想要的格式?当我执行以下操作时,它会生成一个形状为 (8500,) 的数组,这是我的训练集中的图像数量,但显然不反映高度、宽度和通道。
x_train=np.array(list(training_images.values()))
np.shape(x_train)
(8500,)
或者其次,我做的这一切都错了吗?有没有比这更容易处理图像的方法?从一开始就将图像保存在一个 numpy 数组中似乎要好得多,但据我所知,没有办法让数组具有任何类型的键值/标签,所以我无法提取特定的图像。
编辑:对于更多上下文,我实际上想要做的是将我的数据转换为如下链接中描述的格式。
https://elitedatascience.com/keras-tutorial-deep-learning-in-python
我遇到问题的具体部分是:
from keras.datasets import mnist
# Load pre-shuffled MNIST data into train and test sets
(X_train, y_train), (X_test, y_test) = mnist.load_data()
当我们加载 MNIST 数据时,X_train 和 y_train 之间的关系是如何确定的?如何使用我的数据复制它?
【问题讨论】:
标签: python image numpy image-processing numpy-ndarray