首页 > 解决方案 > 如何从大型图像数据集中选择一些特定的图像?

问题描述

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

我的数据集中的文件夹

文件夹内的图片

标签: pythonmachine-learningdeep-learningimage-preprocessing

解决方案


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

您可以使用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)    

这样,您就有了包含所有文件名(带有完整路径)的 2D 列表,您可以选择它们。

某天的前 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) )

推荐阅读