表情识别实验
上海站 | 高性能计算之GPU CUDA培训
4月13-15日正文共988个字,8张图,预计阅读时间3分钟。
需要完成的任务内容为:对图片里的人脸进行检测并对其表情进行分类。
项目代码地址:代码地址链接(https://github.com/hanghang2333/emotionrecognition)
用的是FER-2013 这个数据库, 这个数据库一共有 35887 张人脸图像,来源于kaggle竞赛网站上下载的数据(数据下载地址https://www.kaggle.com/c/challenges-in-representation-learning-facial-expression-recognition-challenge/data)。
原始数据将标签和图片统一以csv格式存储,通过简单的转换后,可以得知图片大小均为48*48的灰度图(转换程序实例参见getpic.py)。下面是几个示例图片。该数据集标签为7类,分别为:
*0:'angry',1:'disgust',2:'fear',3:'happy',4:'sad',5:'surprise',6:'neutral'。
0.png
1.png
2.png
3.png
4.png
5.png
数据预处理
数据是竞赛数据,固定大小48*48,无需特别的预处理(除了归一化之类)。
模型训练
网络结构用的是Xception网络结构,也是类似的使用了depthwise卷积的结构,(参见论文:Xception: Deep Learning with Depthwise Separable Convolutios).
具体的程序文件参看:cnn.py
优化方法使用Adam。
loss函数使用多分类softmax,后来尝试focal loss(针对样本难度不均衡问题使用)和其他一些变化,不过并没有带来提升。
初步测试集准确:0.66
使用训练好的模型,完成测试。
要求:输入一张图片地址,输出这张图片里人脸框位置和对应人脸的表情(demo阶段为了看的方便将人脸框画在图片将表情结果也写在人脸上边)。
图片demo程序文件:image_demo.py.
测试结果:
predicted_test_image.png
程序文件:video_demo.py.
这个就不再贴图了,读者自己运行下就大概知道了,其实就是实时获取摄像头图片而后分类并且显示在视频上。
原文链接:https://www.jianshu.com/p/8e269451795d
查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:
www.leadai.org
请关注人工智能LeadAI公众号,查看更多专业文章
大家都在看