---
title: FER-wanbiao
canonical_url: "https://www.modelscope.cn/models/wanbiao/FER-wanbiao"
md_url: "https://www.modelscope.cn/models/wanbiao/FER-wanbiao.md"
repository: wanbiao/FER-wanbiao
chinese_name: "视频人脸情绪识别"
last_updated: 2024-01-05
license: "Apache License 2.0"
pipeline_tag: face-emotion
tasks:
  - face-emotion
library_name:
  - pytorch
frameworks:
  - Pytorch
downloads: 2011
stars: 14
---

# FER-wanbiao

> FER-wanbiao - wanbiao 在 ModelScope 开源的模型。使用CNN-BiLSTM进行视频中的情绪识别。本模型用于复旦大学课程作业

wanbiao/FER-wanbiao 是 ModelScope 魔搭社区上的face-emotion模型，采用 Apache License 2.0 许可。

- **Repository**: wanbiao/FER-wanbiao
- **License**: Apache License 2.0
- **Tasks**: face-emotion
- **Downloads**: 2011
- **Stars**: 14
- **Last updated**: 2024-01-05

Source: https://www.modelscope.cn/models/wanbiao/FER-wanbiao

---

#### Clone with HTTP
```bash
 git clone https://www.modelscope.cn/wanbiao/FER-wanbiao.git
```

# 模型介绍

本模型使用CREMA-D数据集，使用CNN-BiLSTM进行训练。识别视频中的人脸情绪。

本模型用于复旦大学

本库提供了5个基本模型
1. ResNet18 用于提取图像空间特征
2. ResNet18_BiLSTM 用于处理空间和时序特征
3. ResNet181D 用于提取MFCC特征
4. ResNet181D_BiLSTM 用于处理MFCC和时序特征
5. 融合ResNet18_BiLSTM和ResNet181D_BiLSTM的多模态模型

# 本模型使用例子

https://modelscope.cn/studios/wanbiao/split-video-emotion/summary

# 本模型微调方法

1. 将视频保存在一个文件夹中，命名为：序号_名字_类别_XX.flv
2. 运行CNNBiLSTM_SortVideo.py对其进行重新排序
3. 运行CNNBiLSTM_Extraxx.py对其进行帧抽取
4. 运行CNNBiLSTM_Imag2Pickle.py将抽取的帧进行打包，可以进行分包操作
5. 运行ipynb训练相应的模型即可

# 模型使用

```python 
# 预测
## 注意引入
## @MODELS.register_module('my-fer-task', module_name='my-custom-model')
## 例子在https://modelscope.cn/studios/wanbiao/split-video-emotion/summary中的app.py中

from modelscope.pipelines import pipeline
model_id="wanbiao/FER-wanbiao"
fer = pipeline('my-fer-task', model_id)
## input_frames 是(10,50,50,3)的时序数据
predictions = fer(input_frames)
```

# 模型再训练

```python 
# 注意FerTrainer文件的导入
from FerTrainer import FerTrainer


# 构建训练器
model_id = "wanbiao/FER-wanbiao"
model_most_name = "CNNBiLSTM_image_resnet182d_multiplex_epoch_26.h5"
local_data = "VideoFrameAudio-Simple-40"

kwargs = dict(
    model=model_id,                 # 模型id
    model_name=model_most_name,
    data_dir = local_data,
    epoch = 50,
    batch_size = 100,
    validation_split = 0.5,
    save_path = ".",                  # 模型保存路径
    save_epoch = True,                # 是否每次epoch都保存
    model_revision='v1.0.2'
    )

trainer = FerTrainer(model=model_id,kwargs=kwargs)

trainer.train(kwargs=kwargs)

loss,acc = trainer.evaluate(kwargs=kwargs)
print(f"loss {loss},acc {acc}")
```
