# 表情识别 **Repository Path**: wang-zhizhou_1/expression-recognition ## Basic Information - **Project Name**: 表情识别 - **Description**: 用于表情分类 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 3 - **Created**: 2021-08-11 - **Last Updated**: 2024-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 如何在忘乎所以时察觉对方的情感变化 本项目用于对表情进行识别,可以利用表情来察觉情感。 # 一、项目背景 在学习了微表情心理学后,认识到读懂表情对认识一个人的情感变化的意义,从而诞生了做这一项目的想法。 ## 载入所需库 ```py import paddle import numpy as np import cv2 from paddle.vision.models import resnet50 from paddle.vision.datasets import DatasetFolder import matplotlib.pylab as plt import os ``` ## 定义参数 ```py train_file='train' valid_file='valid' test_file='test' imagesize=32 batch_size=32 lr=1e-5 ``` # 二、数据集介绍 本项目用fer2013数据集,事先数据集已完成对训练集和验证集的切分,同时已将不同表情放于不同文件夹中。具体表情对应的标签和中英文如下:0 anger 生气; 1 disgust 厌恶; 2 fear 恐惧; 3 happy 开心; 4 sad 伤心;5 surprised 惊讶; 6 normal 中性。 ## 1.解压数据集 ```py !unzip -oq /home/aistudio/work/image/fer2013.zip ``` ## 2.对数据加载进行预处理 ```py # 定义数据预处理 def load_image(img_path): img = cv2.cvtColor(cv2.imread(img_path), cv2.COLOR_BGR2RGB) #resize img = cv2.resize(img,(imagesize,imagesize)) img = np.array(img).astype('float32') # HWC to CHW img = img.transpose((2,0,1)) #Normalize img = img / 255 return img # 构建Dataset class Face(DatasetFolder): def __init__(self, path): super().__init__(path) def __getitem__(self, index): img_path, label = self.samples[index] label = np.array(label).astype(np.int64) return load_image(img_path), label train_dataset = Face(train_file) eval_dataset = Face(valid_file) ``` ## 3.对数据集查看 ```py plt.figure(figsize=(15, 15)) for i in range(5): fundus_img, lab = train_dataset.__getitem__(i) plt.subplot(2, 5, i+1) plt.imshow(fundus_img.transpose(1, 2, 0)) plt.axis("off") print(lab) ``` # 三、模型选择和开发 选择了resnet50,又用了两个全连接层,然后输出。 ## 1.模型组网 ```py class Network(paddle.nn.Layer): def __init__(self): super(Network, self).__init__() self.resnet = resnet50(pretrained=True, num_classes=0) self.flatten = paddle.nn.Flatten() self.linear_1 = paddle.nn.Linear(2048, 512) self.linear_2 = paddle.nn.Linear(512, 256) self.linear_3 = paddle.nn.Linear(256, 8) self.relu = paddle.nn.ReLU() self.dropout = paddle.nn.Dropout(0.2) def forward(self, inputs): # print('input', inputs) y = self.resnet(inputs) y = self.flatten(y) y = self.linear_1(y) y = self.linear_2(y) y = self.relu(y) y = self.dropout(y) y = self.linear_3(y) y = paddle.nn.functional.sigmoid(y) return y ``` ## 2.实例化模型和模型可视化 ```py inputs = paddle.static.InputSpec(shape=[None, 3, 32, 32], name='inputs') labels = paddle.static.InputSpec(shape=[None, 2], name='labels') model = paddle.Model(Network(), inputs, labels) paddle.summary(Network(), (1, 3, 32, 32)) ``` ``` ------------------------------------------------------------------------------- Layer (type) Input Shape Output Shape Param # =============================================================================== Conv2D-54 [[1, 3, 32, 32]] [1, 64, 16, 16] 9,408 BatchNorm2D-54 [[1, 64, 16, 16]] [1, 64, 16, 16] 256 ReLU-19 [[1, 64, 16, 16]] [1, 64, 16, 16] 0 MaxPool2D-2 [[1, 64, 16, 16]] [1, 64, 8, 8] 0 Conv2D-56 [[1, 64, 8, 8]] [1, 64, 8, 8] 4,096 BatchNorm2D-56 [[1, 64, 8, 8]] [1, 64, 8, 8] 256 ReLU-20 [[1, 256, 8, 8]] [1, 256, 8, 8] 0 Conv2D-57 [[1, 64, 8, 8]] [1, 64, 8, 8] 36,864 BatchNorm2D-57 [[1, 64, 8, 8]] [1, 64, 8, 8] 256 Conv2D-58 [[1, 64, 8, 8]] [1, 256, 8, 8] 16,384 BatchNorm2D-58 [[1, 256, 8, 8]] [1, 256, 8, 8] 1,024 Conv2D-55 [[1, 64, 8, 8]] [1, 256, 8, 8] 16,384 BatchNorm2D-55 [[1, 256, 8, 8]] [1, 256, 8, 8] 1,024 BottleneckBlock-17 [[1, 64, 8, 8]] [1, 256, 8, 8] 0 Conv2D-59 [[1, 256, 8, 8]] [1, 64, 8, 8] 16,384 BatchNorm2D-59 [[1, 64, 8, 8]] [1, 64, 8, 8] 256 ReLU-21 [[1, 256, 8, 8]] [1, 256, 8, 8] 0 Conv2D-60 [[1, 64, 8, 8]] [1, 64, 8, 8] 36,864 BatchNorm2D-60 [[1, 64, 8, 8]] [1, 64, 8, 8] 256 Conv2D-61 [[1, 64, 8, 8]] [1, 256, 8, 8] 16,384 BatchNorm2D-61 [[1, 256, 8, 8]] [1, 256, 8, 8] 1,024 BottleneckBlock-18 [[1, 256, 8, 8]] [1, 256, 8, 8] 0 Conv2D-62 [[1, 256, 8, 8]] [1, 64, 8, 8] 16,384 BatchNorm2D-62 [[1, 64, 8, 8]] [1, 64, 8, 8] 256 ReLU-22 [[1, 256, 8, 8]] [1, 256, 8, 8] 0 Conv2D-63 [[1, 64, 8, 8]] [1, 64, 8, 8] 36,864 BatchNorm2D-63 [[1, 64, 8, 8]] [1, 64, 8, 8] 256 Conv2D-64 [[1, 64, 8, 8]] [1, 256, 8, 8] 16,384 BatchNorm2D-64 [[1, 256, 8, 8]] [1, 256, 8, 8] 1,024 BottleneckBlock-19 [[1, 256, 8, 8]] [1, 256, 8, 8] 0 Conv2D-66 [[1, 256, 8, 8]] [1, 128, 8, 8] 32,768 BatchNorm2D-66 [[1, 128, 8, 8]] [1, 128, 8, 8] 512 ReLU-23 [[1, 512, 4, 4]] [1, 512, 4, 4] 0 Conv2D-67 [[1, 128, 8, 8]] [1, 128, 4, 4] 147,456 BatchNorm2D-67 [[1, 128, 4, 4]] [1, 128, 4, 4] 512 Conv2D-68 [[1, 128, 4, 4]] [1, 512, 4, 4] 65,536 BatchNorm2D-68 [[1, 512, 4, 4]] [1, 512, 4, 4] 2,048 Conv2D-65 [[1, 256, 8, 8]] [1, 512, 4, 4] 131,072 BatchNorm2D-65 [[1, 512, 4, 4]] [1, 512, 4, 4] 2,048 BottleneckBlock-20 [[1, 256, 8, 8]] [1, 512, 4, 4] 0 Conv2D-69 [[1, 512, 4, 4]] [1, 128, 4, 4] 65,536 BatchNorm2D-69 [[1, 128, 4, 4]] [1, 128, 4, 4] 512 ReLU-24 [[1, 512, 4, 4]] [1, 512, 4, 4] 0 Conv2D-70 [[1, 128, 4, 4]] [1, 128, 4, 4] 147,456 BatchNorm2D-70 [[1, 128, 4, 4]] [1, 128, 4, 4] 512 Conv2D-71 [[1, 128, 4, 4]] [1, 512, 4, 4] 65,536 BatchNorm2D-71 [[1, 512, 4, 4]] [1, 512, 4, 4] 2,048 BottleneckBlock-21 [[1, 512, 4, 4]] [1, 512, 4, 4] 0 Conv2D-72 [[1, 512, 4, 4]] [1, 128, 4, 4] 65,536 BatchNorm2D-72 [[1, 128, 4, 4]] [1, 128, 4, 4] 512 ReLU-25 [[1, 512, 4, 4]] [1, 512, 4, 4] 0 Conv2D-73 [[1, 128, 4, 4]] [1, 128, 4, 4] 147,456 BatchNorm2D-73 [[1, 128, 4, 4]] [1, 128, 4, 4] 512 Conv2D-74 [[1, 128, 4, 4]] [1, 512, 4, 4] 65,536 BatchNorm2D-74 [[1, 512, 4, 4]] [1, 512, 4, 4] 2,048 BottleneckBlock-22 [[1, 512, 4, 4]] [1, 512, 4, 4] 0 Conv2D-75 [[1, 512, 4, 4]] [1, 128, 4, 4] 65,536 BatchNorm2D-75 [[1, 128, 4, 4]] [1, 128, 4, 4] 512 ReLU-26 [[1, 512, 4, 4]] [1, 512, 4, 4] 0 Conv2D-76 [[1, 128, 4, 4]] [1, 128, 4, 4] 147,456 BatchNorm2D-76 [[1, 128, 4, 4]] [1, 128, 4, 4] 512 Conv2D-77 [[1, 128, 4, 4]] [1, 512, 4, 4] 65,536 BatchNorm2D-77 [[1, 512, 4, 4]] [1, 512, 4, 4] 2,048 BottleneckBlock-23 [[1, 512, 4, 4]] [1, 512, 4, 4] 0 Conv2D-79 [[1, 512, 4, 4]] [1, 256, 4, 4] 131,072 BatchNorm2D-79 [[1, 256, 4, 4]] [1, 256, 4, 4] 1,024 ReLU-27 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-80 [[1, 256, 4, 4]] [1, 256, 2, 2] 589,824 BatchNorm2D-80 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 Conv2D-81 [[1, 256, 2, 2]] [1, 1024, 2, 2] 262,144 BatchNorm2D-81 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 4,096 Conv2D-78 [[1, 512, 4, 4]] [1, 1024, 2, 2] 524,288 BatchNorm2D-78 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 4,096 BottleneckBlock-24 [[1, 512, 4, 4]] [1, 1024, 2, 2] 0 Conv2D-82 [[1, 1024, 2, 2]] [1, 256, 2, 2] 262,144 BatchNorm2D-82 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 ReLU-28 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-83 [[1, 256, 2, 2]] [1, 256, 2, 2] 589,824 BatchNorm2D-83 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 Conv2D-84 [[1, 256, 2, 2]] [1, 1024, 2, 2] 262,144 BatchNorm2D-84 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 4,096 BottleneckBlock-25 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-85 [[1, 1024, 2, 2]] [1, 256, 2, 2] 262,144 BatchNorm2D-85 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 ReLU-29 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-86 [[1, 256, 2, 2]] [1, 256, 2, 2] 589,824 BatchNorm2D-86 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 Conv2D-87 [[1, 256, 2, 2]] [1, 1024, 2, 2] 262,144 BatchNorm2D-87 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 4,096 BottleneckBlock-26 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-88 [[1, 1024, 2, 2]] [1, 256, 2, 2] 262,144 BatchNorm2D-88 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 ReLU-30 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-89 [[1, 256, 2, 2]] [1, 256, 2, 2] 589,824 BatchNorm2D-89 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 Conv2D-90 [[1, 256, 2, 2]] [1, 1024, 2, 2] 262,144 BatchNorm2D-90 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 4,096 BottleneckBlock-27 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-91 [[1, 1024, 2, 2]] [1, 256, 2, 2] 262,144 BatchNorm2D-91 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 ReLU-31 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-92 [[1, 256, 2, 2]] [1, 256, 2, 2] 589,824 BatchNorm2D-92 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 Conv2D-93 [[1, 256, 2, 2]] [1, 1024, 2, 2] 262,144 BatchNorm2D-93 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 4,096 BottleneckBlock-28 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-94 [[1, 1024, 2, 2]] [1, 256, 2, 2] 262,144 BatchNorm2D-94 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 ReLU-32 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-95 [[1, 256, 2, 2]] [1, 256, 2, 2] 589,824 BatchNorm2D-95 [[1, 256, 2, 2]] [1, 256, 2, 2] 1,024 Conv2D-96 [[1, 256, 2, 2]] [1, 1024, 2, 2] 262,144 BatchNorm2D-96 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 4,096 BottleneckBlock-29 [[1, 1024, 2, 2]] [1, 1024, 2, 2] 0 Conv2D-98 [[1, 1024, 2, 2]] [1, 512, 2, 2] 524,288 BatchNorm2D-98 [[1, 512, 2, 2]] [1, 512, 2, 2] 2,048 ReLU-33 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 0 Conv2D-99 [[1, 512, 2, 2]] [1, 512, 1, 1] 2,359,296 BatchNorm2D-99 [[1, 512, 1, 1]] [1, 512, 1, 1] 2,048 Conv2D-100 [[1, 512, 1, 1]] [1, 2048, 1, 1] 1,048,576 BatchNorm2D-100 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 8,192 Conv2D-97 [[1, 1024, 2, 2]] [1, 2048, 1, 1] 2,097,152 BatchNorm2D-97 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 8,192 BottleneckBlock-30 [[1, 1024, 2, 2]] [1, 2048, 1, 1] 0 Conv2D-101 [[1, 2048, 1, 1]] [1, 512, 1, 1] 1,048,576 BatchNorm2D-101 [[1, 512, 1, 1]] [1, 512, 1, 1] 2,048 ReLU-34 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 0 Conv2D-102 [[1, 512, 1, 1]] [1, 512, 1, 1] 2,359,296 BatchNorm2D-102 [[1, 512, 1, 1]] [1, 512, 1, 1] 2,048 Conv2D-103 [[1, 512, 1, 1]] [1, 2048, 1, 1] 1,048,576 BatchNorm2D-103 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 8,192 BottleneckBlock-31 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 0 Conv2D-104 [[1, 2048, 1, 1]] [1, 512, 1, 1] 1,048,576 BatchNorm2D-104 [[1, 512, 1, 1]] [1, 512, 1, 1] 2,048 ReLU-35 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 0 Conv2D-105 [[1, 512, 1, 1]] [1, 512, 1, 1] 2,359,296 BatchNorm2D-105 [[1, 512, 1, 1]] [1, 512, 1, 1] 2,048 Conv2D-106 [[1, 512, 1, 1]] [1, 2048, 1, 1] 1,048,576 BatchNorm2D-106 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 8,192 BottleneckBlock-32 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 0 AdaptiveAvgPool2D-2 [[1, 2048, 1, 1]] [1, 2048, 1, 1] 0 ResNet-2 [[1, 3, 32, 32]] [1, 2048, 1, 1] 0 Flatten-2 [[1, 2048, 1, 1]] [1, 2048] 0 Linear-4 [[1, 2048]] [1, 512] 1,049,088 Linear-5 [[1, 512]] [1, 256] 131,328 ReLU-36 [[1, 256]] [1, 256] 0 Dropout-2 [[1, 256]] [1, 256] 0 Linear-6 [[1, 256]] [1, 8] 2,056 =============================================================================== Total params: 24,743,624 Trainable params: 24,637,384 Non-trainable params: 106,240 ------------------------------------------------------------------------------- Input size (MB): 0.01 Forward/backward pass size (MB): 5.39 Params size (MB): 94.39 Estimated Total Size (MB): 99.79 ------------------------------------------------------------------------------- {'total_params': 24743624, 'trainable_params': 24637384} ``` ## 3.模型训练 ```py # 模型训练相关配置,准备损失计算方法,优化器和精度计算方法 model.prepare(paddle.optimizer.Adam(learning_rate=lr, parameters=model.parameters()), paddle.nn.CrossEntropyLoss(), paddle.metric.Accuracy()) # 模型训练 model.fit(train_data=train_dataset, #训练数据集 eval_data=eval_dataset, #测试数据集 batch_size=batch_size, #一个批次的样本数量 epochs=27, #迭代轮次 save_dir="/home/aistudio/lup", #把模型参数、优化器参数保存至自定义的文件夹 save_freq=3, #设定每隔多少个epoch保存模型参数及优化器参数 verbose=1 ) ``` ``` step 898/898 [==============================] - loss: 1.8075 - acc: 0.2449 - 53ms/step save checkpoint at /home/aistudio/lup/0 Eval begin... step 113/113 [==============================] - loss: 1.7850 - acc: 0.2530 - 23ms/step Eval samples: 3589 ``` ## 4.模型评估测试 ```py model.evaluate(eval_dataset, batch_size=5, verbose=1) ``` ``` Eval begin... step 718/718 [==============================] - loss: 1.9499 - acc: 0.4870 - 22ms/step Eval samples: 3589 {'loss': [1.9498544], 'acc': 0.48704374477570356} ``` # 四、预测 ## 1.对预测数据处理 ```py def load_test(img_path): img = cv2.cvtColor(cv2.imread(img_path), cv2.COLOR_BGR2RGB) #resize img = cv2.resize(img,(imagesize,imagesize)) img = np.array(img).astype('float32') # HWC to CHW img = img.transpose((2,0,1)) img = np.expand_dims(img, axis=0) #Normalize img = img / 255 return img test_dataset=[] for i in os.listdir(test_file): test_dataset.append(load_test(test_file+'//'+i)) ``` ## 2.对模型预测 ```py # 进行预测操作 result = model.predict(test_dataset) # 定义产出数字与表情的对应关系 face={0:'anger',1:'disgust',2:'fear',3:'happy',4:'sad',5:'surprised',6:'normal'} # 定义画图方法 def show_img(img, predict): plt.figure() plt.title('predict: {}'.format(face[predict])) plt.imshow(img.reshape([3, 32, 32]).transpose(1,2,0)) plt.show() # 抽样展示 indexs = [4, 15, 45,] for idx in indexs: show_img(test_dataset[idx][0], np.argmax(result[0][idx])) ``` ``` Predict begin... step 3589/3589 [==============================] - 21ms/step Predict samples: 3589 ``` ![img](data:image/png;base64,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) ![img](data:image/png;base64,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) ![img](data:image/png;base64,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) # 五、效果展示 ![](https://ai-studio-static-online.cdn.bcebos.com/9157e550a7ff42b48afd4dc33a016edb3ddbed826b9e40dfa5beb8e4bb28e7ca) # 五、总结与升华 1.在图像分类中输出数要大于所分图像类数。 2.对于维度缺失问题可以用img = np.expand_dims(img, axis=0)增加维度。 # 六、个人介绍 > 太原理工大学 软件学院 软件工程专业 2020级 本科生 王志洲 >AIstudio地址链接:[https://aistudio.baidu.com/aistudio/personalcenter/thirdview/559770](https://aistudio.baidu.com/aistudio/personalcenter/thirdview/559770) >码云地址链接:[https://gitee.com/wang-zhizhou_1](https://gitee.com/wang-zhizhou_1)