第一步:准备数据
fer2013公开数据,原数据有七种表情,在解析和读取数据的时候,本文选择了七种表情("愤怒", "厌恶", "害怕", "高兴", "悲伤", "惊讶", "中性")做为训练和识别
第二步:搭建模型
本文选择XCEPTION,为了兼顾速度,在实际应用的时候,对网络进行剪纸,具体可以参考代码,其网络结构如下:
由于是七分类问题,直接套用网络肯定是不行,因此会在全连接部分做手脚,参考代码如下:
x = Conv2D(num_classes, (3, 3),
#kernel_regularizer=regularization,
padding='same')(x)
x = GlobalAveragePooling2D()(x)
output = Activation('softmax',name='predictions')(x)
model = Model(img_input, output)
return model
第三步:训练代码
1)损失函数为:交叉熵损失函数
2)从头训练代码:
# 构建模型
model = mini_XCEPTION(input_shape, num_classes)
model.compile(optimizer='adam', # 优化器采用adam
loss='categorical_crossentropy', # 多分类的对数损失函数
metrics=['accuracy'])
model.summary()
第四步:整个算法流程
一般来说做表情识别有两种方式,第一种端到端yolo目标检测做的,比如我的博客链接:基于深度学习神经网络YOLOv5目标检测的人脸表情识别系统_yolo 表情识别-CSDN博客,第二种方式是先进行人脸检测,然后再送到分类网络,比如我的博客链接:基于keras框架深度学习神经网络七种表情识别系统源码(结合注意力机制模块)-CSDN博客,但这里的人脸检测模块是用haarcascade,传统算法做的,很明显,检测人脸的准确率不高,因此多人模式下的表情识别,效果更不加。因此本文增加用深度学习做人脸检测的模块,用到的是centerface,它的网络结构图如下:
|
第五步:搭建GUI界面
第六步:整个工程的内容
有训练代码和训练好的模型以及训练过程,提供数据,提供GUI界面代码,主要使用方法可以参考里面的“文档说明_必看.docx”
代码的下载路径(新窗口打开链接):基于keras框架深度学习神经网络七种表情识别系统源码(结合深度学习人脸检测来增加多人表情模式)
有问题可以私信或者留言,有问必答