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))

代码说明:

  1. 导入必要的库:os 用于文件操作,shutil 用于移动文件,pandas 用于读取 CSV 文件。
  2. 读取 train.csv 文件并将其存储在 train_df 数据框中。
  3. 遍历 train 文件夹中的所有图像文件。
  4. 获取每个图像的 ID。
  5. 根据 ID 的前三个字符创建子文件夹路径。
  6. 使用 os.makedirs 创建子文件夹路径(如果不存在)。
  7. 使用 shutil.move 将图像文件移动到对应的子文件夹中。
  8. train_df 中获取对应图像的标签。
  9. 在子文件夹中创建一个名为 label.txt 的文件,并将标签写入其中。

注意:

  • 确保 train.csv 文件位于同一目录中。
  • 将代码中的 traintest 文件夹路径替换为实际路径。
  • 可以根据需要修改代码以适应不同的数据组织形式。
Python 代码:将 ImageNet 格式数据转换为 Kaggle 竞赛所需格式

原文地址: https://www.cveoy.top/t/topic/qzmh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录