SUN397 数据集解压后的文件组织形式如下:

/mnt/disk1/gjh/data/SCENE/SUN397

  • a
    • abbey
    • airport_terminal
    • ...
  • b
    • basketball_court
      • outdoor
        • basketball_court_outdoor
      • indoor
    • beach
      • outdoor
    • ...
  • c
    • canyon
      • outdoor
    • castle
    • ...
  • d
    • ...
  • e
    • ...

其中,每个大类(a, b, c, d, e)下面是各个小类别的文件夹。对于部分细分为 indoor 和 outdoor 的小类别,会将其放到外面,并将目录名字改成类别名加上细分名的形式。

以下 Python 代码示例演示如何将 SUN397 数据集转换为 ImageNet 格式:

import os
import shutil

dataset_dir = '/mnt/disk1/gjh/data/SCENE/SUN397'
imagenet_dir = '/path/to/imagenet'

# 创建imagenet格式的目录结构
os.makedirs(imagenet_dir, exist_ok=True)
for i in range(1, 398):
    os.makedirs(os.path.join(imagenet_dir, f'n{i:03}'), exist_ok=True)

# 遍历sun397数据集,并将文件移动到对应的imagenet目录
for root, dirs, files in os.walk(dataset_dir):
    for file in files:
        # 获取类别名
        class_name = os.path.basename(root)
        # 获取细分名(如果有的话)
        sub_class_name = ''
        if len(dirs) > 0:
            sub_class_name = dirs[0]
        # 构建新的目录名
        new_class_name = f'{class_name}_{sub_class_name}'
        # 获取文件路径
        file_path = os.path.join(root, file)
        # 构建新的文件路径
        new_file_path = os.path.join(imagenet_dir, f'n{class_name:03}', new_class_name, file)
        # 创建新的目录
        os.makedirs(os.path.dirname(new_file_path), exist_ok=True)
        # 移动文件
        shutil.move(file_path, new_file_path)

请根据实际情况修改dataset_dirimagenet_dir的路径。这段代码将遍历 SUN397 数据集,根据类别名和细分名构建新的目录结构,并将文件移动到对应的位置。

SUN397 数据集解压后文件组织形式及转换为 ImageNet 格式

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

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