从图像中识别面部表情
项目描述
FER
面部表情识别。
安装
目前 FER 仅支持 Python 3.6 及更高版本。可以通过pip安装:
$ pip install fer
要同时安装与 pandas 相关的功能,请使用pip install fer[all]
.
此实现需要在系统中安装 OpenCV>=3.2 和 Tensorflow>=1.7.0,并绑定 Python3。
它们可以通过 pip 安装(如果 pip 版本 >= 9.0.1):
$ pip install tensorflow>=1.7 opencv-contrib-python==3.3.0.9
或直接从源代码(OpenCV3、 Tensorflow)编译。
请注意,如果系统上有可用的 GPU 设备,则可以使用 tensorflow-gpu 版本,这将加速结果。可以用 pip 安装:
$ pip install tensorflow-gpu\>=1.7.0
用法
以下示例说明了此包的易用性:
from fer import FER
import cv2
img = cv2.imread("justin.jpg")
detector = FER()
detector.detect_emotions(img)
样本输出:
[{'box': [277, 90, 48, 63], 'emotions': {'angry': 0.02, 'disgust': 0.0, 'fear': 0.05, 'happy': 0.16, 'neutral': 0.09, 'sad': 0.27, 'surprise': 0.41}]
漂亮地打印它import pprint; pprint.pprint(result)
。
只想要顶级情感?尝试:
emotion, score = detector.top_emotion(img) # 'happy', 0.99
MTCNN 人脸识别
默认情况下,使用 OpenCV 的 Haar Cascade 分类器检测人脸。要使用更准确的 MTCNN 网络,请添加参数:
detector = FER(mtcnn=True)
视频
为了识别视频中的面部表情,Video
该类将视频分割成帧。它可以使用本地 Keras 模型(默认)或 Peltarion API 作为后端:
from fer import Video
from fer import FER
video_filename = "tests/woman2.mp4"
video = Video(video_filename)
# Analyze video, displaying the output
detector = FER(mtcnn=True)
raw_data = video.analyze(detector, display=True)
df = video.to_pandas(raw_data)
检测器返回 JSON 对象列表。每个 JSON 对象包含两个键:“box”和“emotions”:
- 边界框在“box”键下被格式化为 [x, y, width, height]。
- 情绪被格式化为 JSON 对象,键为“愤怒”、“厌恶”、“恐惧”、“快乐”、“悲伤”、“惊讶”和“中性”。
其他很好的使用示例可以在 位于此存储库根目录的文件demo.py中找到。
要运行示例,请安装 click for command line withpip install click
并输入python demo.py [image|video|webcam]
--help。
TF服务
支持使用在线 TF Serving docker 镜像运行。
要使用:运行docker-compose up
并使用 初始化 FER FER(..., tfserving=True)
。
模型
FER 捆绑了一个 Keras 模型。
该模型是一个卷积神经网络,其权重保存到data
相对于模块路径的文件夹中的 HDF5 文件中。可以通过在使用参数FER()
实例化期间将其注入构造函数来覆盖它。emotion_model
执照
信用
此代码包括从 Iván de Paz Centeno 的 MTCNN实现 和 Octavio Arriaga 的面部表情识别 repo复制或派生的方法和包结构。
参考
由 Pierre Luc Carrier 和 Aaron Courville 策划的 FER 2013 数据集,描述于:
“表征学习中的挑战:关于三场机器学习竞赛的报告”,作者:Ian J. Goodfellow、Dumitru Erhan、Pierre Luc Carrier、Aaron Courville、Mehdi Mirza、Ben Hamner、Will Cukierski、Yichuan Tang、David Thaler、Dong-Hyun Lee , 周颖波, Chetan Ramaiah, 冯芳祥, 李瑞凡, 王小杰, Dimitris Athanasakis, John Shawe-Taylor, Maxim Milakov, John Park, Radu Ionescu, Marius Popescu, Cristian Grozea, James Bergstra, 谢晶晶, Lukasz Romaszko, 徐冰, Zhang Chuang, and Yoshua Bengio, arXiv:1307.0414。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。