如何从庞大的图像数据集中选择一些特定的图像?

How to choose some specific images from a large dataset of images?

我的数据集有 366 个文件夹,意思是每天的文件夹,持续时间为 1 年,每个文件夹包含 51-55 张图像,其中我只需要 36 张图像来构建神经网络。那么我可以为这些图像分配一些索引,并根据它们的索引 select 分配一些索引吗?有人可以建议我这样做的代码吗?

列表中的每个元素都有自己的 number/index - 所以首先您可以创建包含所有文件名的列表。

您可以使用 os.listdir() 获取所有文件夹,然后对每个文件夹使用 os.listdir(folder) 获取文件夹中的文件名列表。

import os

base = '/home/furas/images/2021'

folders = os.listdir(base)

all_filenames = []

for folder_name in folders:

    # add base path to folder name to have full path
    full_path = os.path.join(base, folder_name)
    print(full_path)
    
    # get filenames (without path) in folder
    filenames = os.listdir(full_path)
    
    # add path to filenames
    filenames = [os.path.join(full_path, name) for name in filenames]
   
    all_filenames.append(filenames)
    
print(all_filenames)    

这样你就有了包含所有文件名(带完整路径)的二维列表,你可以 select 它们。

某一天的前36张图片

selected = all_filenames[day_index][:36]

每天前36张图片

selected = []

for day in all_filenames:
    selected.append( day[:36] )

每天随机36张图片

import random

selected = []

for day in all_filenames:
    selected.append( random.choices(day, 36) )