是否有更快或更好的方式来加载和预处理NIST SD 19数据集?

时间:2019-06-06 18:25:41

标签: python python-3.x opencv tensorflow

我需要使用NIST SD 19训练模型。我已经从他们的网站下载了数据集,并对其进行了重新排列,以使每个类都有自己的目录,并且其中包含其图像。我没有将其分为训练和测试集。

如果可能,我需要更快地读取或访问它们,例如TF 2.0如何下载和读取它们。

我采用了经典的方法:我遍历每个子目录(其名称是其类),然后遍历每个图像文件,将其读取为图像,将其添加到图像列表中,并添加到其类(子目录)中它来自)到标签列表。然后,我制作了一个字典,将子目录名称转换为整数,以便模型可以将其分类。


def mapImagesToLabels(dir_dataset):
    data_root = pathlib.Path(dir_dataset)

    all_image_paths = list(data_root.glob('*/*'))
    all_image_paths = [str(path) for path in all_image_paths]

    label_names = sorted(item.name for item in data_root.glob('*/') if item.is_dir())
    label_to_index = dict((name, index) for index, name in enumerate(label_names))
    # print(label_to_index)

    all_image_labels = [label_to_index[pathlib.Path(path).parent.name] for path in all_image_paths]
    all_images = [cv2.imread(image_path) for image_path in all_image_paths]

    print(all_images.shape)
    print(all_images[0].shape)

    return all_images, all_image_labels

如果不冻结终端并在运行时减慢计算机速度,这种方法就可以了。每次我重新测试模型时,我也会加载它,所以我认为存在时间限制。

0 个答案:

没有答案