news 2026/10/17 14:17:30

【PYTHON-YOLOV8N】面部表情识别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【PYTHON-YOLOV8N】面部表情识别

【PYTHON-YOLOV8N】面部表情识别

    • 环境准备
    • 数据集准备
    • FER2013数据下载地址
    • 查看FER2013数据
    • FER2013CSV数据转数据集

环境准备

参考这篇文章https://youyouhome.blog.csdn.net/article/details/155965991?spm=1001.2014.3001.5502

数据集准备

常用的公开数据集如下

  1. FER2013:经典表情数据集,含 7 类表情(愤怒、厌恶、恐惧、开心、悲伤、惊讶、中性),共 35 万 + 人脸图片;
  2. AffectNet:更大规模,含 12 类基本表情 + 复杂情绪,支持多分辨率;
  3. RAF-DB:亚洲人脸为主,表情标注更精准,适合中文场景。

本次采用的是以FER2013为例。

FER2013数据下载地址

最终下载到的文件是fer2013.csv,下载地址点击https://tianchi.aliyun.com/dataset/37273/

查看FER2013数据

使用python代码看一张图片,如下代码运行即可

importpandasaspdimportnumpyasnpimportmatplotlib.pyplotasplt# 1. 加载CSV文件df=pd.read_csv('fer2013.csv')# 请确保文件路径正确# 2. 查看数据前几行和基本信息print(df.head())print(df['emotion'].value_counts())# 3. 将像素字符串转换为图像数组的函数defstring_to_array(pixel_string):pixel_list=list(map(int,pixel_string.split()))returnnp.array(pixel_list).reshape(48,48)# 4. 提取并显示一张图片示例(例如,第一张训练图片)first_image_pixels=df.loc[0,'pixels']first_image_emotion=df.loc[0,'emotion']first_image_array=string_to_array(first_image_pixels)plt.figure()plt.imshow(first_image_array,cmap='gray')plt.title(f'Emotion Label:{first_image_emotion}')plt.axis('off')plt.show()

FER2013CSV数据转数据集

运行如下代码就可以将csv数据转为图片

importpandasaspdimportnumpyasnpimportosfromPILimportImageimportcsv# 1. 读取CSV文件df=pd.read_csv('FER2013.csv')# 请确保文件路径正确# 2. 创建保存图片的主目录base_save_dir='./FER2013_Images'ifnotos.path.exists(base_save_dir):os.makedirs(base_save_dir)# 3. 表情标签对应的中文/英文名称(方便理解)emotion_dict={0:'Angry',1:'Disgust',2:'Fear',3:'Happy',4:'Sad',5:'Surprise',6:'Neutral'}# 4. 核心函数:将像素字符串转换为图片并保存defsave_pixels_to_image(pixels_str,save_path):# 将字符串转换为整数列表pixels_array=np.array(list(map(int,pixels_str.split())),dtype=np.uint8)# 重塑为48x48的灰度图像矩阵image_matrix=pixels_array.reshape(48,48)# 创建PIL图像对象并保存img=Image.fromarray(image_matrix,mode='L')# 'L' 表示灰度模式img.save(save_path)# 5. 遍历每一行数据,生成图片forindex,rowindf.iterrows():emotion_label=row['emotion']pixels_str=row['pixels']usage=row['Usage']# 为每张图片构建保存路径:主目录/数据集划分/表情类别/img_save_dir=os.path.join(base_save_dir,usage,emotion_dict[emotion_label])ifnotos.path.exists(img_save_dir):os.makedirs(img_save_dir)# 构建图片文件名(用索引命名以防重复)img_save_path=os.path.join(img_save_dir,f'{index:06d}.png')# 调用函数保存图片save_pixels_to_image(pixels_str,img_save_path)# 可选:打印进度if(index+1)%1000==0:print(f'已处理{index+1}张图片...')print('所有图片已成功生成!')print(f'图片保存至:{os.path.abspath(base_save_dir)}')

最终的目录结构如下,应该是训练集、测试集、验证集

FER2013_Images --PrivateTest 0: 'Angry', 1: 'Disgust', 2: 'Fear', 3: 'Happy', 4: 'Sad', 5: 'Surprise', 6: 'Neutral' --PublicTest ... ... --Training ... ...
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 9:54:54

别瞎挖了!弱口令挖掘就这 3 招(1 字典 + 2 技巧),月入 5K 稳

一、我靠 “弱口令” 赚的第一笔 1200 元 去年帮某地方电商平台找漏洞,用 “admin/admin” 直接登录后台 —— 提交后拿到 1200 元奖金,后来发现:70% 的中小站后台都有弱口令,只是新手没找对方法。不用学复杂爆破,会用…

作者头像 李华
网站建设 2026/10/17 4:33:55

语音合成也能‘演戏’?EmotiVoice演绎悲伤与喜悦

语音合成也能“演戏”?EmotiVoice演绎悲伤与喜悦 在一场虚拟偶像的直播中,弹幕突然刷起“好心疼你……”,而屏幕中的数字人声音微微颤抖:“我也……不想告别。”语调低沉、呼吸微滞,仿佛真的带着不舍。这并非真人演出&…

作者头像 李华
网站建设 2026/10/17 6:18:36

计算机专业,一定要考取这六个证书,手握一个薪资起码翻一倍,含金量高!从零基础到精通,收藏这篇就够了!

“计算机专业,有没有推荐的证书与竞赛?有助于将来找工作”。 这确实是一个好问题。 因为,在很多人的意识里,计算机专业是一个非常好就业的专业,所以,找到工作并不是很难,可能只要有毕业证就行…

作者头像 李华
网站建设 2026/10/17 21:11:57

如何快速上手YOLO目标检测:智能可视化工具完整教程

如何快速上手YOLO目标检测:智能可视化工具完整教程 【免费下载链接】YOLOSHOW YOLO SHOW - YOLOv10 / YOLOv9 / YOLOv8 / YOLOv7 / YOLOv5 / RTDETR GUI based on Pyside6 项目地址: https://gitcode.com/gh_mirrors/yo/YOLOSHOW 还在为复杂的YOLO命令行操作…

作者头像 李华
网站建设 2026/10/17 3:13:49

SlopeCraft:重新定义Minecraft地图画创作边界

SlopeCraft:重新定义Minecraft地图画创作边界 【免费下载链接】SlopeCraft Map Pixel Art Generator for Minecraft 项目地址: https://gitcode.com/gh_mirrors/sl/SlopeCraft 还在为Minecraft中单调的平面像素画感到困扰吗?SlopeCraft作为开源社…

作者头像 李华
网站建设 2026/10/16 17:01:41

EmotiVoice vs 传统TTS:情感表达能力全面超越

EmotiVoice:让机器语音真正“有温度”的技术突破 在智能语音助手每天叫你起床、车载导航用冷静语调提醒变道的今天,我们是否曾期待过——它能因为你的进步而为你开心鼓劲?能在你低落时用亲人的声音轻声安慰?这并非科幻场景。随着深…

作者头像 李华