人脸表情识别数据集:CK+

这篇具有很好参考价值的文章主要介绍了人脸表情识别数据集:CK+。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. CK+有123的子类(人),每个人提供1~7种表情,每种表情是一组序列(总共有593个图像序列,其中327个序列是有表情标签的):从自然缓慢变化到给定表情

ck+数据集,深度学习DL,python,人工智能
比如上图是人S026做出的某类表情,第一张是自然,缓慢变化到最终是峰值快乐表情

  1. 标签
    593个序列中只有327个是具有情感序列标签的,情绪类别分别是0=neutral, 1=anger, 2=contempt, 3=disgust, 4=fear, 5=happy, 6=sadness, 7=surprise

某些实验会说明在CK+上的精度,所以需要自己制作为ImageNet式的数据集文章来源地址https://www.toymoban.com/news/detail-741413.html

import glob
import os
import shutil
import cv2


def creat_folder():
    [os.makedirs(os.path.join('results',folder,str(i+1))) for folder in ['ckp','ckp_facedet_crop','train','val','test'] for i in range(7)]


def toImageFolder():
    """
    将该函数所在脚本与"Emotion_labels"和"extended-cohn-kanade-images"同级,
    成功运行后,会产生ckp文件夹并有1~7共7个子文件夹,总共981张图片(选取最后三张)
    @return:
    """
    i = 0
    for info in os.walk("Emotion_labels/Emotion"):
        abs_path, _, file_names = info  # 获取标签文件所在路径,以及标签文件的名字file_names
        if file_names.__len__() > 0:  # 如果至少存在一个标签,则循环读取标签复制相应图片文件
            for file_name in file_names:
                # 获取当前标签的类别
                with open(os.path.join(abs_path, file_name)) as f:
                    label_context = f.readline()
                    label_index = label_context.strip()[0]
                # 标签仅记录序列图片中感情最强烈的图片[pos=-1],但是倒数几张[pos=-1,-2,-3]其实都很强烈,可以作为数据集
                img_root_path = abs_path.replace("Emotion_labels/Emotion",
                                                 "extended-cohn-kanade-images/cohn-kanade-images")
                img_paths = glob.glob(img_root_path + "/*")
                for img_path in img_paths[-3:]:  # 选取最后三张
                    # 将label路径修改为"xx/类别/文件名"路径
                    src = img_path
                    dst = os.path.join('results',"ckp", label_index,
                                       img_path.split(os.path.sep)[-1])  # eg: 'ckp\\3\\S005_001_00000009.png'
                    shutil.copyfile(src, dst)
                    i += 1
    print("图片总数:", i)


def face_crop():
    """
    遍历ckp每个子文件夹下的所有图片,进行人脸检测并裁剪
    @return:
    """
    def face_detect(img_path):
        image = cv2.imread(img_path)
        image_draw = image.copy()
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        face_detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
        faces = face_detector.detectMultiScale(gray, 1.02, 20)
        for x, y, w, h in faces:
            face_img = image[y:y + h, x:x + w]
            cv2.rectangle(image_draw, (x, y), (x + w, y + h), (0, 0, 255), 2)
        dst = img_path.replace("ckp", 'ckp_facedet_crop')
        # 需要创建文件夹
        cv2.imwrite(dst, face_img)

    i = 0
    for sub in glob.glob("results/ckp/*"):
        for img_path in glob.glob(sub + "/*"):
            face_detect(img_path)
            i += 1
            if i % 50 == 0:
                print(i)

def cp_splite_img():
    """
    根据同级的train_list.txt、val_list.txt、test_list.txt,
    分割文件我用PaddleX GUI划分,也可以手动划分
    按ImageNet式数据集划分标签进行train、val和test划分
    @return:
    """
    def cp_train_data():
        """
        读取train_list.txt文件,并将所属train数据复制到train文件夹内
        @return:
        """
        with open("train_list.txt") as f:
            file_datas=f.readlines()
            for data in file_datas:
                path,index=data.split(" ")
                src = os.path.join('results','ckp_facedet_crop', path)
                dst=os.path.join('results',"train",path)
                shutil.copyfile(src,dst)

    def cp_val_data():
        with open("val_list.txt") as f:
            file_datas=f.readlines()
            for data in file_datas:
                path,index=data.split(" ")
                src = os.path.join('results','ckp_facedet_crop', path)
                dst=os.path.join('results',"val",path)
                shutil.copy(src,dst)

    def cp_test_data():
        with open("test_list.txt") as f:
            file_datas=f.readlines()
            for data in file_datas:
                path,index=data.split(" ")
                src = os.path.join('results','ckp_facedet_crop', path)
                dst=os.path.join('results',"test",path)
                shutil.copy(src,dst)

    cp_train_data()
    cp_val_data()
    cp_test_data()

if __name__=="__main__":
    """
    同级目录下,应当包含:
        Emotion_labels:CK+标签文件夹
        extended-cohn-kanade-images:CK+图像文件夹
        ck+process.py:本程序
        haarcascade_frontalface_default.xml:opencv人脸检测器
        test_list.txt:分割列表
        train_list:分割列表
        val_list:分割列表
    """
    print("创建文件夹......")
    creat_folder()
    print("开始处理ImageFolder......")
    toImageFolder()  # 将原始CK+整理为ImageFolder形式,复制到ckp文件夹
    print("开始处理人脸检测裁剪......,裁剪后请手动处理裁剪失败的样本")
    face_crop() # 遍历ckp文件夹所有图像进行人脸检测裁剪,$少许裁剪失败,需手动修复
    print("开始train、val和test划分......")
    cp_splite_img()  # 根据同级的train_list.txt、val_list.txt、test_list.txt,进行train、val和test划分

到了这里,关于人脸表情识别数据集:CK+的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机竞赛 基于深度学习的人脸表情识别

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸表情识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 面部表情识别技术源于1971年心理学家Ekman和Friesen的一项研究,他们提出人类主要有

    2024年02月10日
    浏览(162)
  • 【数据库学习】ClickHouse(ck)

    是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 按列存储,列越多速度越慢; 按列存储,数据更容易压缩(类型相同、区分度);==》每次读取的数据就更多,更少的io。 聚合性能高; 类sql操作;仅支持数据的查询、批量写入、批量删除。 用于磁盘查询,同时也利用

    2024年02月02日
    浏览(55)
  • 深度学习之基于Tensorflow人脸面部表情识别系统

    欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。   基于Tensorflow的人脸面部表情识别系统是一种基于深度学习技术的图像处理应用,该系统主要通过人脸图像数据进行面部表情识别,并且识别准确度较高,其设计过程如下: 数据获取和处理

    2024年02月05日
    浏览(75)
  • 【Python深度学习】Tensorflow+CNN进行人脸识别实战(附源码和数据集)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 下面利用tensorflow平台进行人脸识别实战,使用的是Olivetti Faces人脸图像 部分数据集展示如下  程序训练过程如下  接下来训练CNN模型 可以看到训练进度和损失值变化 接下来展示人脸识别结果   程序会根据一张图片自动

    2024年02月09日
    浏览(42)
  • 毕业设计:python人脸识别系统 实时检测 深度学习 Dlib库 大数据 毕业设计(源码)✅

    🍅 大家好,今天给大家分享一个Python项目,感兴趣的可以先收藏起来,点赞、关注不迷路! 🍅 大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。 技术栈: Python语言、pyqt5图形界面、opencv、ResNet深度卷积神经网络、Dlib库 系统

    2024年02月20日
    浏览(81)
  • 利用PYTHON编写人脸表情识别系统

    最近闲来无事,和一个学妹完成了一个SRT,主要是关于元宇宙什么的,不过我在其中主要的工作是用python写一个人脸识别系统,发到这里和大家分享一下 注:我利用了几个包,包括opencv,dlib,numpy等,所有包都会显示在代码开头import后 第一步,利用PyCharm先做灰度图 想要识别

    2024年02月08日
    浏览(50)
  • python连接clickhouse (CK)

    2024年02月06日
    浏览(32)
  • 人脸识别实战:使用Python OpenCV 和深度学习进行人脸识别

    首先简要讨论基于深度学习的面部识别的工作原理,包括“深度度量学习”的概念。 然后,我将帮助您安装实际执行人脸识别所需的库。 最后,我们将为静止图像和视频流实现人脸识别。 安装人脸识别库 ================================================================== 为了使用 Python 和

    2024年04月09日
    浏览(87)
  • 【深度学习】基于Qt的人脸识别系统,门禁人脸识别系统,Python人脸识别流程,树莓派

    在深度学习领域做人脸识别的识别准确率已经高到超出人类识别,但综合考虑模型复杂度(推理速度)和模型的识别效果,这个地方还是有做一些工作的需求的。 人脸识别的过程基本由下面的流程组成。 yolov5-face、yolov7-face等github项目都可以做到这一点,在公开数据集上训练

    2024年02月09日
    浏览(46)
  • 毕业设计:python人脸识别考勤系统 签到系统 深度学习 Flask框架 Dlib库 MySQL数据库 大数据(源码+论文)✅

    🍅 大家好,今天给大家分享一个Python项目,感兴趣的可以先收藏起来,点赞、关注不迷路! 🍅 大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。 技术栈: Python语言、MySQL数据库、Flask框架、Echarts可视化、Dlib库、刷脸签到、多

    2024年03月22日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包