fer2013数据集处理

fer2013数据集

源链接:https://www.kaggle.com/datasets/ahmedmoorsy/facial-expression
在这里插入图在这里插入图片描述
片描述

下载后的文件为一个csv,每一行代表一个图片,表情类别id和train或者val或者test以及图像的像素信息。可以用下面的代码处理:

import os
import pandas as pd
import numpy as np
from PIL import Image

# 表情类别映射,根据FER2013官方定义
emotion_map = {
    0: 'Angry',
    1: 'Disgust',
    2: 'Fear',
    3: 'Happy',
    4: 'Sad',
    5: 'Surprise',
    6: 'Neutral'
}

# 加载数据集
data = pd.read_csv('fer2013.csv')

# 创建根目录
base_dir = 'FER2013_images'
datasets = ['train', 'val', 'test']

for dataset in datasets:
    for emotion_name in emotion_map.values():
        os.makedirs(os.path.join(base_dir, dataset, emotion_name), exist_ok=True)

# 遍历数据集,提取并保存图像
for index, row in data.iterrows():
    emotion = emotion_map[row['emotion']]
    usage = row['Usage'].lower()
    if usage == 'training':
        dataset_type = 'train'
    elif usage == 'publictest':
        dataset_type = 'val'
    elif usage == 'privatetest':
        dataset_type = 'test'
    else:
        continue

    pixels = np.array(list(map(int, row['pixels'].split()))).reshape(48, 48)
    img = Image.fromarray(pixels.astype(np.uint8))

    filename = os.path.join(base_dir, dataset_type, emotion, f"{emotion}_{index}.png")
    img.save(filename)

    if index % 1000 == 0:
        print(f"Processed {index} images")

print("所有图像已成功提取并分类到train、val、test的各自目录中。");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值