You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按类别拆分提取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 03:50:31