Python 代码:将 ImageNet 格式数据转换为 Kaggle 竞赛所需格式
Python 代码:将 ImageNet 格式数据转换为 Kaggle 竞赛所需格式
本代码将演示如何使用 Python 将 ImageNet 格式的数据转换为 Kaggle 竞赛中所需的特定格式。
竞赛数据组织形式描述如下:
- 训练集位于
train/文件夹中,对应的地标标签位于train.csv文件中。 - 测试集图像位于
test/文件夹中。 - 每个图像都有一个唯一的 ID。
- 由于图像数量庞大,每个图像根据其 ID 的前三个字符放置在三个子文件夹中(例如,图像
abcdef.jpg将放置在a/b/c/abcdef.jpg中)。
代码示例:
import os
import shutil
import pandas as pd
# 读取 train.csv 文件
train_df = pd.read_csv('train.csv')
# 遍历 train 文件夹中的所有图片
for image_name in os.listdir('train'):
# 获取图片 ID
image_id = image_name.split('.')[0]
# 根据图片 ID 的前三个字符创建子文件夹路径
subfolder_path = os.path.join('train', image_id[0], image_id[1], image_id[2])
# 创建子文件夹路径(如果不存在)
os.makedirs(subfolder_path, exist_ok=True)
# 移动图片到对应的子文件夹中
shutil.move(os.path.join('train', image_name), os.path.join(subfolder_path, image_name))
# 获取对应图片的标签
label = train_df[train_df['id'] == image_id]['landmark_id'].values[0]
# 将图片标签写入对应的子文件夹中的 label.txt 文件
with open(os.path.join(subfolder_path, 'label.txt'), 'w') as f:
f.write(str(label))
代码说明:
- 导入必要的库:
os用于文件操作,shutil用于移动文件,pandas用于读取 CSV 文件。 - 读取
train.csv文件并将其存储在train_df数据框中。 - 遍历
train文件夹中的所有图像文件。 - 获取每个图像的 ID。
- 根据 ID 的前三个字符创建子文件夹路径。
- 使用
os.makedirs创建子文件夹路径(如果不存在)。 - 使用
shutil.move将图像文件移动到对应的子文件夹中。 - 从
train_df中获取对应图像的标签。 - 在子文件夹中创建一个名为
label.txt的文件,并将标签写入其中。
注意:
- 确保
train.csv文件位于同一目录中。 - 将代码中的
train和test文件夹路径替换为实际路径。 - 可以根据需要修改代码以适应不同的数据组织形式。
原文地址: https://www.cveoy.top/t/topic/qzmh 著作权归作者所有。请勿转载和采集!