Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 卷积网络训练数据预处理中图像尺寸的调整_Python_Dataframe_Tensorflow_Machine Learning_Keras - Fatal编程技术网

Python 卷积网络训练数据预处理中图像尺寸的调整

Python 卷积网络训练数据预处理中图像尺寸的调整,python,dataframe,tensorflow,machine-learning,keras,Python,Dataframe,Tensorflow,Machine Learning,Keras,我正在尝试从jpeg文件加载数据以训练卷积网络。图像很大,有2400万像素,因此加载和使用全分辨率是不现实的 为了使图像成为更有用的格式,我尝试加载每个图像,重新缩放它,然后将其附加到列表中。完成后,我可以将列表转换为numpy数组,并像往常一样输入网络进行训练 我的问题是,我的数据集非常大,重新缩放每个图像需要大约一秒钟的时间,这意味着按照我目前实施的方式调整每个图像的大小是不可行的: length_training_DF = 30000 for i in range(length_train

我正在尝试从jpeg文件加载数据以训练卷积网络。图像很大,有2400万像素,因此加载和使用全分辨率是不现实的

为了使图像成为更有用的格式,我尝试加载每个图像,重新缩放它,然后将其附加到列表中。完成后,我可以将列表转换为numpy数组,并像往常一样输入网络进行训练

我的问题是,我的数据集非常大,重新缩放每个图像需要大约一秒钟的时间,这意味着按照我目前实施的方式调整每个图像的大小是不可行的:

length_training_DF = 30000
for i in range(length_training_DF):
    im = plt.imread(TRAIN_IM_DIR + trainDF.iloc[i]['image_name'] + '.jpg')
    image = block_reduce(im, block_size=(10, 10, 1), func=np.max)
    trainX.append(image)
我还使用了以下方法:

length_training_DF = 30000
from keras.preprocessing import image
for i in range(50):
    img = image.load_img(TRAIN_IM_DIR + trainDF.iloc[0]['image_name'] + '.jpg', target_size=(224, 224))
    trainX.append(ima)
有没有办法更快地将这些图像加载到训练网络的格式中?我曾经考虑过使用keras数据集,可能是通过使用tf.keras.preprocessing.image\u dataset\u from_directory(),但是存储图像数据的目录没有正确格式化为包含此方法所需的相同目标的文件夹


图像用于二进制分类问题。

通常的方法是编写预处理脚本,加载大型图像,重新缩放它们,根据需要应用其他操作,然后根据
ImageDataGenerator
的要求将每个类保存到单独的目录中

这样做至少有三个理由:

  • 通常情况下,您将运行数十次培训过程。您不希望每次都进行重新缩放或自动白平衡
  • ImageDataGenerator
    提供了扩充训练数据集的重要方法
  • 这是一台现成的好发电机。您可能不想将整个数据集加载到内存中
好的,谢谢。这是否意味着没有办法避免较长的图像加载步骤,我们只需实现它,以使此操作尽可能少地执行几次?您不会一次加载所有图像,而是成批加载。当处理一个批时,可以提取下一个批并将其缓存在内存中,因此只要不必进行任何繁重的预处理,就几乎没有任何损失。为了避免这种情况,我们预先对数据进行预处理。还可以考虑将数据保存到HDF5或TFRecord(直接加载数据),但除非有很好的理由,否则我不会走这条路线。