SUN397 数据集解压后文件组织形式及转换为 ImageNet 格式
SUN397 数据集解压后的文件组织形式如下:
/mnt/disk1/gjh/data/SCENE/SUN397
- a
- abbey
- airport_terminal
- ...
- b
- basketball_court
- outdoor
- basketball_court_outdoor
- indoor
- outdoor
- beach
- outdoor
- ...
- basketball_court
- c
- canyon
- outdoor
- castle
- ...
- canyon
- 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_dir和imagenet_dir的路径。这段代码将遍历 SUN397 数据集,根据类别名和细分名构建新的目录结构,并将文件移动到对应的位置。
原文地址: https://www.cveoy.top/t/topic/h5HE 著作权归作者所有。请勿转载和采集!