如何按类别拆分提取ImageNet-1K数据集并整理为指定目录结构?
ImageNet1K 数据集目录结构整理方案
验证集整理脚本(Python)
针对文件名格式如 ILSVRC2012_val_00000009_n03794056.JPEG 的验证集图片,可通过以下脚本按类别归类:
import os import shutil # 替换为你实际的原始验证集图片目录 src_val_dir = "./your_raw_val_images" # 目标目录,最终生成 imagenet/val/[类别名] 结构 dst_val_dir = "./imagenet/val" os.makedirs(dst_val_dir, exist_ok=True) for filename in os.listdir(src_val_dir): if filename.endswith(".JPEG"): # 从文件名提取类别编号(如 n03794056) class_name = filename.split("_")[-1].split(".")[0] class_dir = os.path.join(dst_val_dir, class_name) os.makedirs(class_dir, exist_ok=True) # 移动图片到对应类别文件夹 shutil.move(os.path.join(src_val_dir, filename), os.path.join(class_dir, filename))
训练集整理脚本(Python)
如果训练集文件名格式为 n01440764_10026.JPEG,用以下脚本归类:
import os import shutil # 替换为你实际的原始训练集图片目录 src_train_dir = "./your_raw_train_images" dst_train_dir = "./imagenet/train" os.makedirs(dst_train_dir, exist_ok=True) for filename in os.listdir(src_train_dir): if filename.endswith(".JPEG"): # 从文件名提取类别编号 class_name = filename.split("_")[0] class_dir = os.path.join(dst_train_dir, class_name) os.makedirs(class_dir, exist_ok=True) shutil.move(os.path.join(src_train_dir, filename), os.path.join(class_dir, filename))
直接处理tar文件(Python)
如果还未解压tar包,可直接在解压时完成归类:
import tarfile import os # 替换为你的验证集tar路径 val_tar_path = "./ILSVRC2012_val.tar" dst_val_base = "./imagenet/val" with tarfile.open(val_tar_path, 'r') as tar: for member in tar.getmembers(): if member.isfile() and member.name.endswith(".JPEG"): class_name = member.name.split("_")[-1].split(".")[0] class_dir = os.path.join(dst_val_base, class_name) os.makedirs(class_dir, exist_ok=True) tar.extract(member, path=class_dir)
命令行(Bash)方案
如果习惯用命令行,也可以用以下脚本:
验证集整理
mkdir -p imagenet/val cd /path/to/your/val_images for img in *.JPEG; do class_name=$(echo "$img" | awk -F '_' '{print $NF}' | sed 's/.JPEG//') mkdir -p ../imagenet/val/$class_name mv "$img" ../imagenet/val/$class_name/ done
训练集整理(若训练集是按类别分tar包)
mkdir -p imagenet/train cd /path/to/your/train_tars for tar_file in *.tar; do class_name=$(basename "$tar_file" .tar) mkdir -p ../imagenet/train/$class_name tar -xf "$tar_file" -C ../imagenet/train/$class_name done
内容的提问来源于stack exchange,提问作者S.EB
相关产品推荐
相关产品推荐

