real-time-emotion-detection 排坑记录

real-time-emotion-detection 排坑记录

  • 任务
  • 踩坑回顾
    • CV2包版本问题
      • 症状描述
      • 解决方法
    • 模型文件路径问题
      • 症状描述
      • 解决办法
    • tensorflow版本问题
      • 症状描述
      • 解决办法
  • 其他

任务

我之前跑了一个CNN情绪识别的开源代码,现在我想尝试把他用到我的另一个项目里。但当时那个项目是用python3.8的虚拟环境跑的,我现在的项目的虚拟环境是python3.10,所以就会出点问题。这就是为什么我现在坚持什么项目都用python3.10跑通,并记录排坑博客的原因!方便再次用到。

踩坑回顾

CV2包版本问题

症状描述

我在python3.10环境下,pip3 install一通,直接默认最新的 版本。原本运行没问题的代码,换新环境就找不到元素了:

AttributeError: module 'cv2' has no attribute 'haarcascades'

肯定是包版本问题。要么改版本,要么看新版本是不是同样的功能换了使用方法,如果新版本干脆没这个功能了,就比较棘手,可能得改版本。我不想改版本,就先网上搜下。这篇博客参考回答给了我答案。

解决方法

把源代码中的

face_path = cv2.haarcascades + 'haarcascade_frontalface_alt.xml'

改为

face_path = cv2.data.haarcascades + 'haarcascade_frontalface_alt.xml'

就行了。

模型文件路径问题

症状描述

运行到加载模型这一步报错:

OSError: No file or directory found at ./model/CNN-Emotion-Model

原项目中,脚本和模型的目录在同一个目录中,python也在这个目录下运行,所以是没问题的。但在新项目中,python不在这个目录下运行,所以相对路径的根不再是那个目录,而是python脚本的目录,自然找不到模型文件。这应该是挺常见的问题,但我工程实践太少了,现在才知道怎么处理:

  • 要么用绝对路径:这太傻了,下次项目移植岂不更麻烦
  • 要么保留这一模块的目录结构(也就是保留了相对路径关系),让脚本自己运行时确定自己的绝对路径,一拼接就没问题了:这是个好办法

解决办法

把源代码:

model_path = "./model/CNN-Emotion-Model"

改为:

current_dir = os.path.dirname(os.path.realpath(__file__))
model_path = os.path.join(current_dir, 'model/CNN-Emotion-Model')

就好了。

tensorflow版本问题

症状描述

运行报错很长,可把我吓了一跳。和运行原项目的提示信息一对比,发现主要变化是这几个部分:

2024-02-02 21:58:21.583946: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:9261] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered
2024-02-02 21:58:21.583973: E external/local_xla/xla/stream_executor/cuda/cuda_fft.cc:607] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered
2024-02-02 21:58:21.584533: E external/local_xla/xla/stream_executor/cuda/cuda_blas.cc:1515] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered2024-02-02 21:58:24.336529: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1929] Created device /job:localhost/replica:0/task:0/device:GPU:0 with 6100 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 3070 Laptop GPU, pci bus id: 0000:01:00.0, compute capability: 8.6
2024-02-02 21:58:25.693790: E external/local_xla/xla/stream_executor/cuda/cuda_dnn.cc:447] Loaded runtime CuDNN library: 8.8.1 but source was compiled with: 8.9.4.  CuDNN library needs to have matching major version and equal or higher minor version. If using a binary install, upgrade your CuDNN library.  If building from sources, make sure the library loaded at runtime is compatible with the version specified during compile configuration.
2024-02-02 21:58:25.694223: W tensorflow/core/framework/op_kernel.cc:1839] OP_REQUIRES failed at conv_ops_impl.h:1199 : UNIMPLEMENTED: DNN library is not found.
Traceback (most recent call last):File "/home/lcy-magic/RaceCar_Demo/RaceCar_ShareControl/evaluate/run-realtime.py", line 85, in <module>main()File "/home/lcy-magic/RaceCar_Demo/RaceCar_ShareControl/evaluate/run-realtime.py", line 58, in mainemotion = drawFace(frame, frame_grey)File "/home/lcy-magic/RaceCar_Demo/RaceCar_ShareControl/evaluate/run-realtime.py", line 36, in drawFaceemotion = emotion_model.predict(face/255)File "/home/lcy-magic/anaconda3/envs/CARDEMO/lib/python3.10/site-packages/keras/src/utils/traceback_utils.py", line 70, in error_handlerraise e.with_traceback(filtered_tb) from NoneFile "/home/lcy-magic/anaconda3/envs/CARDEMO/lib/python3.10/site-packages/tensorflow/python/eager/execute.py", line 53, in quick_executetensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.UnimplementedError: Graph execution error:File "/home/lcy-magic/anaconda3/envs/CARDEMO/lib/python3.10/site-packages/keras/src/layers/convolutional/base_conv.py", line 262, in convolution_opDNN library is not found.[[{{node sequential_11/conv2d_57/Conv2D}}]] [Op:__inference_predict_function_1627]

看起来也是版本问题,网上搜了几个方法都不太管用,无奈只好给tensorflow降版本了。

解决办法

通过pip3 list查看原项目的tensorflow版本为tensorflow 2.13.1,而现在项目的版本为tensorflow 2.15.0.post1
于是降版本:

pip3 install tensorflow==2.13.1

再次运行,完美成功:
在这里插入图片描述

其他

我现在很想知道有没有对正负面情绪进行实时打分的算法,特别是基于微表情的,跑的这个情绪识别的开源算法只有做出比较刻意的表情才能被明显识别,较小的情绪变化他捕捉不到,而且波动严重,选取最大值作为主要情绪的识别是合格的,但我想要个能给舒适度打分的算法。如果有知道的大哥,麻烦指个路,多谢多谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/250458.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「效果图渲染」效果图与3D影视动画渲染平台

效果图渲染和3D影视动画渲染都是视觉图像渲染的领域应用。效果图渲染主要服务于建筑、室内设计和产品设计等行业&#xff0c;这些领域通常对视觉呈现的精度和细节有较高要求。与之相比&#xff0c;3D影视动画渲染则普遍应用于电影、电视、视频游戏和广告等媒体领域&#xff0c;…

蓝桥杯---垒骰子

赌圣atm晚年迷恋上了垒骰子&#xff0c;就是把骰子一个垒在另一个上边&#xff0c;不能歪歪扭扭&#xff0c;要垒成方柱体。经过长期观察&#xff0c;atm 发现了稳定骰子的奥秘&#xff1a;有些数字的面贴着会互相排斥&#xff01;我们先来规范一下骰子&#xff1a;1的对面是4&…

arcgis javascript api4.x加载非公开或者私有的arcgis地图服务

需求&#xff1a; 加载arcgis没有公开或者私有的地图服务&#xff0c;同时还想实现加载时不弹出登录窗口 提示&#xff1a;​ 下述是针对独立的arcgis server&#xff0c;没有portal的应用场景&#xff1b; 如果有portal可以参考链接&#xff1a;https://mp.weixin.qq.com/s/W…

故障诊断 | 一文解决,CNN-LSTM卷积神经网络-长短期记忆神经网络组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,CNN-LSTM卷积神经网络-长短期记忆神经网络组合模型的故障诊断(Matlab) 模型描述 CNN-LSTM模型是一种结合了卷积神经网络(Convolutional Neural Network)和长短期记忆神经网络(Long Short-Term Memory)的组合模型,常用于数据故障…

让MySQL和Redis数据保持一致的4种策略

1 前言 先阐明一下 MySQL 和 Redis 的关系&#xff1a;MySQL 是数据库&#xff0c;用来持久化数据&#xff0c;一定程度上保证数据的可靠性&#xff1b;Redis 是用来当缓存&#xff0c;用来提升数据访问的性能。 关于如何保证 MySQL 和 Redis 中的数据一致&#xff08;即缓存…

百无聊赖之JavaEE从入门到放弃(十八)其他常用类

目录 一.Math 类 二.Random 类 三.File类 四.枚举 一.Math 类 java.lang.Math 提供了一系列静态方法用于科学计算&#xff1b;常用方法如下&#xff1a; abs 绝对值 acos,asin,atan,cos,sin,tan 三角函数 sqrt 平方根 pow(double a, double b) a 的 b 次幂 max(double a,…

2401Idea用GradleKotlin编译Java控制台中文出乱码解决

解决方法 解决方法1 在项目 build.gradle.kts 文件中加入 tasks.withType<JavaCompile> {options.encoding "UTF-8" } tasks.withType<JavaExec> {systemProperty("file.encoding", "utf-8") }经测试, 只加 tasks.withType<…

后端——go系统学习笔记(不断更新中......)

数组 固定大小 初始化 arr1 : [3]int{1, 2, 3} arr2 : [...]int{1, 2, 3} var arr3 []int var arr4 [4]int切片 长度是动态的 初始化 arr[0:3] slice : []int{1,2,3} slice : make([]int, 10)len和cap len是获取切片、数组、字符串的长度——元素的个数cap是获取切片的容量—…

计算机视觉实战项目4(单目测距与测速+摔倒检测+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A_路径规划+行人车辆计数+动物识别等)

基于YOLOv5的无人机视频检测与计数系统 摘要&#xff1a; 无人机技术的快速发展和广泛应用给社会带来了巨大的便利&#xff0c;但也带来了一系列的安全隐患。为了实现对无人机的有效管理和监控&#xff0c;本文提出了一种基于YOLOv5的无人机视频检测与计数系统。该系统通过使用…

C++类和对象(3)

目录 1.类的6个默认成员函数 2. 构造函数 2.1 概念 2.2 特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任…

Web3生态系统:构建去中心化的数字社会

随着科技的飞速发展&#xff0c;我们正处在迈向数字未来的道路上&#xff0c;而Web3生态系统则成为这一变革的中心。不仅仅是技术的演进&#xff0c;Web3代表着对传统互联网体系的颠覆&#xff0c;致力于构建一个去中心化的数字社会。本文将深入探讨Web3的核心特征、对金融、社…

数据可视化 pycharts实现地理数据可视化(全球地图)

自用版 紧急整理一点可能要用的可视化代码&#xff0c;略粗糙 以后有机会再改 requirements&#xff1a; python3.6及以上pycharts1.9 数据格式为&#xff1a; 运行结果为&#xff1a; import pandas as pd from pyecharts.charts import Map, Timeline from pyecharts im…

C#读取和保存INI文件配置

在C#应用程序中&#xff0c;读取和保存配置文件是常见的任务&#xff0c;而INI文件是一种轻量级的配置文件格式。在以下代码中&#xff0c;我们将探讨如何使用C#创建一个窗体应用程序&#xff0c;并通过读取和保存INI文件配置来实现一些基本的功能。 创建IniHelper类 首先&…

Node需要了解的知识

Node能执行javascript的原因。 浏览器之所以能执行Javascript代码&#xff0c;因为内部含有v8引擎。Node.js基于v8引擎封装&#xff0c;因此可以执行javascript代码。Node.js环境没有DOM和BOM。DOM能访问HTML所有的节点对象&#xff0c;BOM是浏览器对象。但是node中提供了cons…

Arcgis10.3安装

所需软件地址 链接&#xff1a;https://pan.baidu.com/s/1aAykUDjkaXjdwFjDvAR83Q?pwdbs2i 提取码&#xff1a;bs2i 1、安装License Manager 点击License Manager.exe&#xff0c;默认下一步。 安装完&#xff0c;点击License Server Administrator&#xff0c;停止服务。…

时间序列预测 —— TCN模型

时间序列预测 —— TCN模型 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;在图像处理等领域取得了显著的成就&#xff0c;一般认为在处理时序数据上不如RNN模型&#xff0c;而TCN&#xff08;Temporal Convolutional Network&#xff09;…

autojs简介与对抗

前言 最近发现现在大多安卓工具很多都是autojs和按键精灵等这些非常易于开发的工具来做黑灰产自动化工具&#xff0c;此帖也是由此做为出发点来展开说说这个autojs&#xff0c;我们如何去做对抗。由于笔者对这块也是刚了解学习不久而且这篇帖子也会说的很简单&#xff0c;有很…

【数据结构】认识数据结构 (通俗解释)

目录 1.认识数据结构 1.1 什么是数据结构 1.1.1 什么是数据&#xff1f; 1.1.2 什么是结构&#xff1f; 1.1.3 通俗比喻&#xff1a; 1.1.4 标准概念概念定义&#xff1a; 1.2为什么需要数据结构&#xff1f; 1.认识数据结构 1.1 什么是数据结构 数据结构是由"数…

【Springcloud篇】学习笔记二(四至六章):Eureka、Zookeeper、Consul

第四章_Eureka服务注册与发现 1.Eureka基础知识 1.1Eureka工作流程-服务注册 1.2Eureka两大组件 2.单机Eureka构建步骤 IDEA生成EurekaServer端服务注册中心&#xff0c;类似于物业公司 EurekaClient端cloud-provider-payment8081将注册进EurekaServer成为服务提供者provide…

【QT】贪吃蛇小游戏 -- 童年回忆

成品展示 项目分析&#xff1a; &#x1f40d;基本元素如下 &#x1f40d;小蛇的设计&#xff0c;初始大小蛇头占一个方块&#xff0c;蛇身占两个方块。 &#x1f40d;关于小蛇的移动&#xff0c;采用蛇头前进方向增加一个方块&#xff0c;蛇尾减掉一个方块的实现方法。 &#…