帮我写一个fer2013的人脸表情识别代码
时间: 2024-05-05 13:20:33 浏览: 9
好的,以下是一个简单的fer2013人脸表情识别代码。需要注意的是,该代码仅为演示用途,仅适用于fer2013的数据集。
```python
import numpy as np
import pandas as pd
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# 加载数据集
data = pd.read_csv('fer2013/fer2013.csv')
pixels = data['pixels'].tolist()
# 处理数据集
faces = []
for pixel_sequence in pixels:
face = [int(pixel) for pixel in pixel_sequence.split(' ')]
face = np.array(face).reshape(48, 48)
faces.append(face.astype('float32'))
faces = np.asarray(faces)
faces = np.expand_dims(faces, -1)
emotions = pd.get_dummies(data['emotion']).to_numpy()
# 构建模型
model = keras.Sequential([
keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(48, 48, 1)),
keras.layers.MaxPooling2D((2, 2)),
keras.layers.Conv2D(64, (3, 3), activation='relu'),
keras.layers.MaxPooling2D((2, 2)),
keras.layers.Conv2D(128, (3, 3), activation='relu'),
keras.layers.MaxPooling2D((2, 2)),
keras.layers.Flatten(),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(7, activation='softmax')
])
# 训练模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
train_datagen = ImageDataGenerator(rescale=1./255, validation_split=0.2)
train_generator = train_datagen.flow(faces, emotions, batch_size=64, subset='training')
validation_generator = train_datagen.flow(faces, emotions, batch_size=64, subset='validation')
model.fit(train_generator, epochs=30, validation_data=validation_generator)
# 测试模型
test_loss, test_acc = model.evaluate(faces, emotions)
print('Test accuracy:', test_acc)
```
希望对你有帮助!