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

如何处理含图像名称、路径字段的CSV乐器图像分类数据集

数据集加载方案选择

优先选直接遍历train、test文件夹读取图像的方案,理由很实在:

  • 这个数据集的目录结构是业界通用的分类数据集格式:根目录下按类别名建子文件夹,同类别图像全放在对应子目录里,PyTorch、Keras等主流框架都有现成的加载接口直接适配,不用自己写标签对齐、路径匹配的代码,对初学者来说出错概率极低。
  • 配套的CSV文件本质是平台生成的文件索引,最常见的问题是里面存的是Kaggle在线环境的绝对路径,你把数据集下到本地、或者换到别的运行环境,路径直接失效,还要手动批量替换路径前缀,平白多了工作量。
  • 只有两种情况需要用到CSV:一是你要做的任务不是基础图像分类,需要用到CSV里额外的标注信息(比如乐器年代、材质这类文件夹名不包含的字段);二是你抽几行核对后发现,官方的train/test划分和文件夹结构不一致,明确要求以CSV划分为准。这类公开分类数据集绝大多数情况下CSV内容和文件夹结构是完全对应的,没必要绕路用CSV加载。
遍历子文件夹读取图像的实现方法

分两种场景选方法就行:

用框架做训练的懒人方案

如果是用PyTorch/TensorFlow做模型训练,根本不用自己写遍历逻辑,直接调用框架内置的目录加载接口即可,以PyTorch为例:

from torchvision import datasets
from torchvision.transforms import ToTensor

# 传入train文件夹根路径,自动遍历所有子文件夹,将文件夹名映射为类别标签
train_dataset = datasets.ImageFolder(
    root="./train", # 替换成你本地的train文件夹实际路径
    transform=ToTensor()
)
# 打印类别和索引的映射关系,确认加载结果正确
print("类别对应索引:", train_dataset.class_to_idx)

测试集用同样的方法传入test根路径即可,接口会自动处理子文件夹遍历、标签匹配的逻辑。

自定义遍历逻辑的实现

如果需要自己控制遍历过程,用Python自带的pathlib模块写最简洁,还能避免不同操作系统的路径拼接错误,参考代码:

from pathlib import Path
from PIL import Image

# 定义支持的图像格式后缀,过滤系统隐藏文件、非图像文件
VALID_IMAGE_EXTS = (".jpg", ".jpeg", ".png", ".bmp")

def load_dataset_from_dir(root_dir):
    root = Path(root_dir)
    images = []
    labels = []
    # 递归遍历根目录下所有层级的文件
    for file in root.rglob("*"):
        if file.is_file() and file.suffix.lower() in VALID_IMAGE_EXTS:
            # 图像所在的直接上级文件夹名就是类别标签
            current_label = file.parent.name
            # 读取图像,统一转成RGB格式避免通道数报错
            current_img = Image.open(file).convert("RGB")
            images.append(current_img)
            labels.append(current_label)
    return images, labels

# 调用示例
train_imgs, train_labels = load_dataset_from_dir("./train")
test_imgs, test_labels = load_dataset_from_dir("./test")

小提示:遍历的时候一定要加文件后缀判断,不然会把目录里的.DS_Store、说明txt这类非图像文件读进去,触发图像解析报错。

内容的提问来源于stack exchange,提问作者Malhar Khairnar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:33:10