Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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_Arrays_Tensorflow_Merge_Neural Network - Fatal编程技术网

Python 列车验证数据拆分-标签可用,但无类别

Python 列车验证数据拆分-标签可用,但无类别,python,arrays,tensorflow,merge,neural-network,Python,Arrays,Tensorflow,Merge,Neural Network,我的研究项目是开发一个神经网络来识别车牌上的文本。因此,我在上找到了ReId数据集。该数据集包含一组车牌图像以及车牌文本,Spanhel等人使用该数据集实现了与我所想到的类似的方法 此处的车牌示例: 在该项目中,我只想识别车牌文本,即仅识别“9B5 2145”,而不识别国家首字母缩写词“CZ”,也不识别广告文本 我将数据集和标签csv文件下载到本地内存中。因此,我有以下文件夹结构:一个用于整个项目的母目录。这个母目录包括我的数据目录,我在其中存储了ReId数据集。该数据集包括几个子目录,4个包

我的研究项目是开发一个神经网络来识别车牌上的文本。因此,我在上找到了ReId数据集。该数据集包含一组车牌图像以及车牌文本,Spanhel等人使用该数据集实现了与我所想到的类似的方法

此处的车牌示例:

在该项目中,我只想识别车牌文本,即仅识别“9B5 2145”,而不识别国家首字母缩写词“CZ”,也不识别广告文本

我将数据集和标签csv文件下载到本地内存中。因此,我有以下文件夹结构:一个用于整个项目的母目录。这个母目录包括我的数据目录,我在其中存储了ReId数据集。该数据集包括几个子目录,4个包含训练数据的目录和4个包含测试数据的目录,所有这些子目录都包含许多车牌图像。ReId数据集还包含trainVal csv文件,其结构如下(实际工作表的片段):

track_id等于ReID数据集的子目录。 图像路径等于图像的路径,在这种情况下,图像的名称为1\u 1。 lp是车牌的标签,因此是实际的车牌。 train是一个虚拟变量,如果图像用于培训目的,则该变量等于1,如果图像用于验证目的,则为0

关于这个数据集,我有三个主要问题:

  • 如何正确阅读这些图片?我试着用这样的东西

    from keras.preprocessing.image import ImageDataGenerator
    
    # create generator
    datagen = ImageDataGenerator()
    
    # prepare an iterators for each dataset
    train_it = datagen.flow_from_directory('data/train/', class_mode='binary')
    val_it = datagen.flow_from_directory('data/validation/', class_mode='binary')
    test_it = datagen.flow_from_directory('data/test/', class_mode='binary')
    
    # confirm the iterator works
    batchX, batchy = train_it.next()
    print('Batch shape=%s, min=%.3f, max=%.3f' % (batchX.shape, batchX.min(), batchX.max()))
    
  • 但显然Python没有找到属于任何类的图像(旁注:我使用了正确的路径)。这对我来说很清楚,因为我还没有为我的数据分配任何类。所以,我的第一个问题是:我必须这样做吗?我不这么认为

  • 然后我如何正确地阅读这些图像?我想,我必须让numpy阵列正确处理这些数据

  • 如何将图像和标签组合在一起?在我看来,我认为我必须合并这两个数据集,不是吗

  • 多谢各位

    问题1和2:

    要读取图像,可以将matplotlib.pyplot中的imread用作 如示例所示,这不需要设置任何类

    问题3:

    通过将数据数组中每个图像(在示例中存储在xs数组中)的相应车牌号存储在输出数组(在示例中为y)中,可以将标签和图像放在一起。您不一定需要合并它们

    希望我能帮忙

    import os
    import matplotlib.pyplot as plt
    import numpy as np 
    import pandas as pd
    
    xs, y = [], []
    main_dir = './sample/dataset' # the main directory 
    label_data = pd.read_csv('labels.csv')
    
    for folder in os.listdir(main_dir):
        for img in os.listdir(os.path.join(main, folder)):
            arr = plt.imread(os.path.join(main, folder) + img)
            xs.append(arr)
            y.append(label_data[label_data['image_path'] == os.path.join(folder, img)]['lp'])
                    #^ this part can be changed depending on the exact format of your label data file.
    
    # then you can convert them into numpy arrays and reshape them as you need.
    xs = np.array(xs)
    y = np.array(y)
    

    非常感谢。我认为这是可行的!但我仍然收到一个错误代码:FileNotFoundError:[Errno 2]没有这样的文件或目录:“C:\\Users\\tobis\\OneDrive\\Desktop\\Masterarbeit\\data\\2017-IWT4S-CarsReId\u LP-dataset\\s01\u l011000\u 1.png”。我查过了。相反,图像路径是。。。s01_l01/1_1.png。在我看来,代码没有“找到”最后一个目录,而且,在文件名中,添加了3个零。我检查了这个,看起来这些图像存储在1000_1下,但这三个零在打开后一秒钟消失。