------韦访 20181102
1、概述
好久没更新tensorflow的教程了,这这段时间一直在学习机器学习的基础,但是如果想去找工作,没有一点实际的应用可能就没那么容易聊了,所以,做一下人脸表情识别的例子,其实我最终的目的是想做一个疲劳检测的例子,这里就先练练手,看看性能如何。标题有点长有点拗口,其实不应该加上“人脸表情数据集-fer2013”这几个字的,但是我发现在别人的博客里,有网友想跟博主要将图片解析以后的数据集,博主好像没回复,所以,我最后会上传解析后的数据集的,供不熟悉Python的网友下载。
2、fer2013人脸表情数据集简介
Fer2013人脸表情数据集由35886张人脸表情图片组成,其中,测试图(Training)28708张,公共验证图(PublicTest)和私有验证图(PrivateTest)各3589张,每张图片是由大小固定为48×48的灰度图像组成,共有7种表情,分别对应于数字标签0-6,具体表情对应的标签和中英文如下:0 anger 生气; 1 disgust 厌恶; 2 fear 恐惧; 3 happy 开心; 4 sad 伤心;5 surprised 惊讶; 6 normal 中性。
但是,数据集并没有直接给出图片,而是将表情、图片数据、用途的数据保存到csv文件中,如下图所示,
如上图所示,第一张图是csv文件的开头,第一行是表头,说明每列数据的含义,第一列表示表情标签,第二列即为图片数据,这里是原始的图片数据,最后一列为用途。
3、将表情图片提取出来
知道数据结构以后,就好办了,使用pandas解析csv文件,(pandas的简单用法可以查看这篇博客:https://blog.csdn.net/rookie_wei/article/details/82974277 ),再将原始图片数据保存为jpg文件,并根据用途和标签标签进行分类,分别保存到对应文件夹下,代码比较简单,并且做了详细备注,直接给完整代码如下,
#encoding:utf-8
import pandas as pd
import numpy as np
import scipy.misc as sm
import os
emotions = {
'0':'anger', #生气
'1':'disgust', #厌恶
'2':'fear', #恐惧
'3':'happy', #开心
'4':'sad', #伤心
'5':'surprised', #惊讶
'6':'normal', #中性
}
#创建文件夹
def createDir(dir):
if os.path.exists(dir) is False:
os.makedirs(dir)
def saveImageFromFer2013(file):
#读取csv文件
faces_data = pd.read_csv(file)
imageCount = 0
#遍历csv文件内容,并将图片数据按分类保存
for index in range(len(faces_data)):
#解析每一行csv文件内容
emotion_data = faces_data.loc[index][0]
image_data = faces_data.loc[index][1]
usage_data = faces_data.loc[index][2]
#将图片数据转换成48*48
data_array = list(map(float, image_data.split()))
data_array = np.asarray(data_array)
image = data_array.reshape(48, 48)
#选择分类,并创建文件名
dirName = usage_data
emotionName = emotions[str(emotion_data)]
#图片要保存的文件夹
imagePath = os.path.join(dirName, emotionName)
# 创建“用途文件夹”和“表情”文件夹
createDir(dirName)
createDir(imagePath)
#图片文件名
imageName = os.path.join(imagePath, str(index) + '.jpg')
sm.toimage(image).save(imageName)
imageCount = index
print('总共有' + str(imageCount) + '张图片')
if __name__ == '__main__':
saveImageFromFer2013('fer2013.csv')
运行结果,
运行完上面的代码后,得到3个文件夹,文件下有相应的表情的子文件夹,
子文件夹下又有相应的图片,
这些表情,说真的,我自己都傻傻分不清,比如,
这张图片我可能归于伤心,但是它却在生气类里,还有很多类似的例子,没有具体的情景,还真不好说。里面甚至有些图片是漫画的,也有不知道是什么东西的,如下,
可能是想加些噪音吧,真是为难了机器了。
这里就将原始数据集、提取成图片后的数据集和提取代码上传,下载链接为:
https://download.csdn.net/download/rookie_wei/10761139
以前下载可以选择免积分,现在最少也得一个积分,真是苦了没积分的小伙伴们~