如何从庞大的图像数据集中选择一些特定的图像?
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) )
我的数据集有 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) )