Python人脸识别和情绪分析工具推荐

简要

Deepface可以识别人脸,对比,分析情绪性别种族年纪等,比较万能,支持stream视频流检测。比较轻量,引入到现有开发比较快。


安装

使用DeepFace这个库,第一次使用需要下载他的模型,默认没有代理,下不下来(或者速度慢)可以根据报错找到原下载链接(在作者另外一个库中)手动下载保存到c盘用户文件夹的.deepface文件夹下面(第一次调用这个库会自动创建这个文件夹),ssd的文件在opencv仓库,也可以通过下载失败报错的提示直接去原仓库手动复制和下载,应该是有加proxy的参数的地方但是我看readme没找到。


部分功能的使用&注意

DeepFace提供了几种识别人脸的后端(backend参数),测试感觉ssd速度可行(默认的OpenCV在我这里检测不到人脸,其余两个比较慢帧率很低,我是视频检测),ssd后端需要下载的文件下载方法可以看上方说明。
这里截取一小段project代码,识别画面中的情绪使用,注意他给的img_path(第一个参数)的文档其实是这样的:

exact image path, numpy array (BGR) or base64 encoded image could be passed.

也就是可以传入路径,BGR格式的数组(cv默认读出来的,不需要做image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))或者base64编码的图像。silent可以让它少输出一些内容。还有一个enforce_detection默认为True,意思是检测到人脸他才做actions(表情、年龄、性别等的分析)否则会抛出valueError。

try:
    res = DeepFace.analyze(numpy.array(frame), actions=['emotion'], silent=True, detector_backend='ssd')
    self.update_result(res[0]['emotion'])
except ValueError as e:
    # Face not found
    pass
except Exception as e:
    print(e)

这里就可以不用库本身自带的stream(有些功能可能并不需要,anyway),但是把视频流的每一帧都放进来分析,速度还是很不错,精度个人觉得一般但是说得过去,可以自己练完替换模型权重。
数据返回的格式是一个数组,分别对应画面中检测到的某个人脸(没测试,但是推理应该是这样不然没道理这么返回数据)。每一个item包含指定的actions的数据(表情、年龄、性别等的分析数据)以及人脸在画面中的位置,可以通过这个数据绘制选框框住人脸。


可能的报错和解决方案

接下来是遇到的报错

error: (-215:Assertion failed) !empty() in function ‘cv::CascadeClassifier::detectMultiScale’

https://blog.csdn.net/qq_39237205/article/details/122085915
同时还有一个小坑:lib/site-packages/cv2/data/haarcascade_eye.xml这个文件,虚拟路径也不能有中文否则也会报错(我的路径一开始有“作业”两个字报错说无法以read mode打开这个xml文件,路径改为英文就成功了),注意看最开始的报错。
检测不到人脸的时候也会报ValueError,注意try except。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 人脸识别数据集通常是用于训练和测试人脸识别算法的数据集。Python是一种常用的编程语言,因其易学易用和强大的数据处理能力,广泛应用于数据科学和人工智能领域,也被用于处理人脸识别数据集。 在Python中,有一些常用的人脸识别数据集可以使用,如LFW数据集、CelebA数据集和FERET数据集等。这些数据集包含了很多人脸图像以及相应的标签信息,可以用于训练模型和评估算法性能。 使用Python进行人脸识别数据集的处理可以借助一些开源的库和工具。例如,OpenCV是一个常用的图像处理库,可以用于读取、预处理和显示人脸图像。另外,对于深度学习模型的训练,可以使用TensorFlow或PyTorch等框架,这些框架提供了丰富的函数和接口,方便处理图像数据集。 在处理人脸识别数据集时,常见的任务包括数据预处理、特征提取和模型训练。数据预处理阶段可以包括图像裁剪、大小调整和亮度均衡等操作,以便提高模型性能。特征提取是将图像转换为适合机器学习算法处理的向量表示,可以采用传统的特征提取方法或者使用深度学习模型对图像进行特征编码。模型训练阶段可以使用监督学习算法,如支持向量机、K近邻或者深度神经网络等。 通过Python中的人脸识别数据集处理技术,可以实现人脸识别算法的训练和调优,进而应用于人脸识别、身份验证、安全监控等领域。 ### 回答2: Python人脸识别数据集是一组用于训练和评估人脸识别算法的数据集。这些数据集包含了一系列人脸图像和对应的标签或注释信息。人脸识别数据集是计算机视觉领域的一个重要资源,用于帮助开发人员训练出准确高效的人脸识别模型。 Python人脸识别数据集包含大量的人脸图像,这些图像来自于不同的来源和环境,涵盖了不同的年龄、性别、肤色、表情等因素。数据集中的每个图像都会有对应的标签或注释信息,用于告知计算机哪些图像中的人脸属于同一个人。 使用人脸识别数据集,可以通过使用特定的算法和技术来训练一个模型,使其能够在未来的图像中准确地检测和识别人脸。通过不断改进和优化模型,可以提高人脸识别的准确性和鲁棒性。 Python人脸识别数据集的应用非常广泛。它可以用于安全系统,如人脸识别门禁系统,通过对比图像中的人脸与已知的数据库中的人脸进行匹配来实现安全认证。此外,它还可以用于视频监控和调查犯罪活动。人脸识别数据集还能够用于基于人脸情绪分析、年龄和性别识别等应用。 总之,Python人脸识别数据集是一个重要的资源,提供了训练和评估人脸识别算法的样本图像和相关标签。通过使用这些数据集,开发者们可以训练出准确和高效的人脸识别模型,实现各种实际应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值