keras.preprocessing.image -仅加载某些图像(其文件名包含某些字符串)

g2ieeal7  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(95)

我有一个二元分类问题。给定一个图像,我想预测它是属于class_1还是class_2
训练数据位于.../data/train/,i下的子文件夹class_1class_2中。e.
.../data/train/class_1
.../data/train/class_2
为了导入训练数据,我目前使用

import tensorflow as tf
tf.keras.preprocessing.image.ImageDataGenerator().flow_from_directory('.../data/train/')

现在,假设我的训练数据被进一步划分为两个不同的数据集,但存储在相同的目录中。训练样本所属的数据集在文件名i中指定。e.每个文件名包含AAABBB。现在我只想加载文件名包括AAA的训练样本。我该如何在不创建新目录的情况下做到这一点?

vbkedwbf

vbkedwbf1#

我知道的唯一选择是自动生成一个新的子文件夹,并在该子文件夹上调用Generator。一个函数来自动生成一个排序的子文件夹应该不会太难。..
假设你存储Path,所有的图像都保存在一个变量中,如下所示:
path = r".../data/train/class_1"
列表中的标识符:
identifier = ["AAA","BBB",...]
然后为每个标识符创建新的子文件夹:

for id in identifier:
    new_path = path + "\\" + id
    os.makedirs(path + \\ + id) #creating the subfolder
    for file in os.listdir(path):
        if Path(path + "\\" + file).is_file(): #making sure, that you'r just grabbing the files, and not similar named folders
            if file.count(id) >= 0: # each file that conatins the identifier at least once
                shutil.move(path + "\\" + file,new_path + "\\" + file) #moving the file to the new subfolder

然后,您可以调用要访问的特定文件夹上的生成器。..
我希望这对你有帮助,如果你有任何问题,随时问:D

相关问题