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

如何将CK+数据集转为图像-情感列DataFrame及实现文件夹标签标注

CK+ 数据集转换为DataFrame的解决方案

是否有必要转换为DataFrame?

  • 做数据探索时(比如统计各情感标签的样本数量、查看样本路径分布),DataFrame是高效的结构化格式,能快速用pandas的统计函数、可视化工具分析数据。
  • 对接scikit-learn、XGBoost等传统机器学习框架时,DataFrame可直接作为数据载体,配合train_test_split等函数划分数据集。
  • 若用PyTorch/TensorFlow的原生Dataset类加载数据,也可以不转DataFrame,但DataFrame能帮你提前梳理清楚所有样本的标签对应关系,避免加载时出现标签错误。

简单总结:数据探索和传统ML流程建议转;纯深度学习流水线可直接用文件夹结构加载,但转DataFrame能降低出错概率。

如何将文件夹名作为标签生成DataFrame?

可以用Python的pathlib(更简洁)或os模块遍历数据集目录,收集每个图像的路径和对应的文件夹名(即情感标签),再转换为DataFrame。

代码示例(用pathlib)

import pandas as pd
from pathlib import Path

# 替换为你的CK+数据集根目录路径
dataset_root = Path("/path/to/CK+_dataset")

# 存储图像路径和标签的列表
data = []
# 遍历所有情感文件夹
for emotion_dir in dataset_root.iterdir():
    if emotion_dir.is_dir():
        # 获取情感标签(文件夹名)
        label = emotion_dir.name
        # 遍历文件夹下的所有图像文件(假设图像是jpg/png格式)
        for img_path in emotion_dir.glob("*.jpg"):  # 若为png则改成*.png
            data.append({"image_path": str(img_path), "emotion_label": label})

# 转换为DataFrame
df = pd.DataFrame(data)

# 查看前5行验证
print(df.head())

代码说明

  • Path.iterdir()遍历根目录下的所有子目录,筛选出文件夹(即情感类别)。
  • emotion_dir.name直接获取文件夹名作为情感标签,完美匹配需求。
  • glob("*.jpg")匹配文件夹下的所有jpg图像,根据实际图像格式调整后缀即可。
  • 最终生成的DataFrame包含image_path(图像的绝对/相对路径)和emotion_label(情感标签)两列。

额外提示

  • 如果需要将标签转换为数值(比如Anger=0, Contempt=1),可以用pd.factorize():
    df["emotion_label_num"], unique_labels = pd.factorize(df["emotion_label"])
    
  • 用df["emotion_label"].value_counts()可快速统计各情感类别的样本数量,检查数据分布是否均衡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:20:56