面部表情展示人类内心的情感。它们帮助我们识别一个人是愤怒、悲伤、快乐还是正常。医学研究人员也使用面部情绪来检测和了解一个人的心理健康。
人工智能在识别一个人的情绪方面可以发挥很大的作用。在卷积神经网络的帮助下,我们可以根据一个人的图像或实时视频来识别他的情绪。
Facial Expression Recognition 是一个 Python 库,可用于以更少的努力和更少的代码行检测一个人的情绪。它是使用 Python 中实现的 Tensorflow 和 Keras 库通过深度神经网络开发的。其中使用的数据集来自表示学习中的 Kaggle 竞赛挑战:面部表情识别挑战。
安装
我们可以使用 pip 在本地系统中安装库。只需运行下面的命令,就会看到您的库正在安装。
pip install per
依赖项:
- OpenCV 3.2+
- Tensorflow 1.7+
- Python 3.6+
预测图像上的情绪
from fer import FER
import matplotlib.pyplot as plt
img = plt.imread("img.jpg")
detector = FER(mtcnn=True)
print(detector.detect_emotions(img))
plt.imshow(img)
使用 emotion.py 保存并简单地使用 python emotion.py 运行它。
输出:
[OrderedDict([(‘box’, (160, 36, 99, 89)), (’emotions’, {‘angry’: 0.0, ‘disgust’: 0.0, ‘fear’: 0.0, ‘happy’: 1.0, ‘sad’: 0.0, ‘surprise’: 0.0, ‘neutral’: 0.0})])]
实时预测的 Web 应用程序代码
from fer import FER
import matplotlib.pyplot as plt
import streamlit as st
from PIL import Image, ImageOps
st.write('''
# Emotion Detector
''')
st.write("A Image Classification Web App That Detects the Emotions Based On An Image")
file = st.file_uploader("Please Upload an image of Person With Face", type=['jpg','png'])
if file is None:
st.text("Please upload an image file")
else:
image = Image.open(file)
detector = FER(mtcnn=True)
result = detector.detect_emotions(image)
st.write(result)
st.image(image, use_column_width=True)
用 Emotion _ web.py 保存 Python 文件。
运行
streamlit run FILENAME.py
复制 URL 并粘贴到你的浏览器中,就可以看到网页应用程序的运行情况。