最近更新于 2022-06-13 00:39

测试环境

Ubuntu 20.04 x86_64
Python 3.9.10
pip3 install opencv-python==4.5.5.64
pip3 install tensorflow-cpu==2.8.0
pip3 install jupyter==1.0.0
pip3 install protobuf==3.19.0

源码基于:https://github.com/karansjc1/emotion-detection

本文资源文件下载:https://pan.baidu.com/s/1Fyh0qWE28V-jRhxHYOKAuw?pwd=i798

案例代码支持 5 种表情的识别:生气、开心、无表情、悲伤、惊讶。原理上,首先使用 opencv 获取相机图像,然后转灰度图以减小计算量。再然后通过人脸级联分类器检测出人脸位置,ROI 截取人脸图,使用 Keras 已训练好的模型进行表情识别。

这里使用的 Keras 为 Tensorflow 内置版,也可以使用独立的 Keras,导入库的地方改一下就行。不过需要注意,如果电脑没有 CUDA 支持或者 tf 版本没有匹配的 CUDA 版本(过老或太新)就不要安装 GPU 版 tf,否则使用 tf 时会报错。我这里就是 CUDA 版本太高了,写本文时最新的 tf 稳定版 2.8.0 轮子都还没有支持我电脑的 CUDA 版本,这种情况下就要指定安装 CPU 版 tensorflow-cpu,而安装时指定包名 tensorflow 或者 tensorflow-gpu 都是 GPU 版。

下载资源文件后,使用 jupyter 打开人脸表情识别0.1.ipynb,并运行整个笔记本,可以通过图像预览框查看相机图像,在检测到人脸后会框出并标注识别出的表情。