多模态COGMEN详解
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。
我是Srlua小谢,在这里我会分享我的知识和经验。🎥
希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮
记得先点赞👍后阅读哦~ 👏👏
📘📚 所属专栏:人工智能、话题分享
欢迎访问我的主页:Srlua小谢 获取更多信息和资源。✨✨🌙🌙
目录
概述
论文模型框架
演示效果
核心逻辑
使用方式
部署方式
避坑指南
本文所有资源均可在该地址处获取。
概述
情绪是人类行动的一个固有部分,因此,开发能够理解和识别人类情绪的人工智能系统势在必行。在涉及不同人的对话中,一个人的情绪会受到其他说话者的言语和他们自己在言语中的情绪状态的影响。在本文中,我们提出了基于 COntex- tualized Graph Neural Network的多模态情感识别COGMEN)系统,该系统利用了本地信息(即说话人之间的内/外依赖性)和全局信息(上下文)。建议的模型使用基于图谱神经网络 (GNN) 的架构来模拟对话中的复杂关系(本地和全局信息)。我们的模型在IEMOCAP和MOSEI数据集上给出了最先进的 (SOTA)结果,详细的消融实验显示了在两个层面上对信息进行建模的重要性
论文模型框架
图2显示了详细的体系结构。输入的话语作为语境提取器模块的输入,该模块负责捕获全局语境。语境提取器为每个话语(utterance)提取的特征形成了一个基于说话人之间交互的图(Graph Formation)。该图作为Relational - GCN的输入,然后是graph transformer,graph transformer使用形成的图来捕捉话语之间的内部和内部关系。最后,作为情感分类器的两个线性层使用所有话语获得的特征来预测相应的情感。
特征融合的方式:
简单的concat,论文运用了最简单的融合方式,有在尝试别的融合方式
transfomer层是提取一段对话中,不同语句之间的信息
经过一层transformer之后,融合了信息,就开始建图,进行图学习
图学习分别进行了图卷积以及,图transformer,图学习的意义在于,更好的捕捉对话中这种一来一回的关系,来融合来自不同短语的情感信息。
最后链接一个分类器就结束了
演示效果
核心逻辑
##transformer层:def forward(self, text_len_tensor, text_tensor):if self.use_transformer:rnn_out = self.transformer_encoder(text_tensor)rnn_out = self.transformer_out(rnn_out)else:packed = pack_padded_sequence(text_tensor, text_len_tensor, batch_first=True, enforce_sorted=False)rnn_out, (_, _) = self.rnn(packed, None)rnn_out, _ = pad_packed_sequence(rnn_out, batch_first=True)return rnn_out##图学习层class GNN(nn.Module):def __init__(self, g_dim, h1_dim, h2_dim, args):super(GNN, self).__init__()self.num_relations = 2 * args.n_speakers ** 2self.conv1 = RGCNConv(g_dim, h1_dim, self.num_relations)self.conv2 = TransformerConv(h1_dim, h2_dim, heads=args.gnn_nheads, concat=True)self.bn = nn.BatchNorm1d(h2_dim * args.gnn_nheads)def forward(self, node_features, edge_index, edge_type):x = self.conv1(node_features, edge_index, edge_type)x = nn.functional.leaky_relu(self.bn(self.conv2(x, edge_index)))return x
##分类器:def forward(self, h, text_len_tensor):if self.args.dataset == "mosei" and self.args.emotion == "multilabel":if self.args.use_highway:h = self.highway(h)hidden = self.drop(F.relu(self.lin1(h)))scores = self.lin2(hidden)# y_hat = torch.sigmoid(scores) > 0.5y_hat = scores > 0return y_hatlog_prob = self.get_prob(h, text_len_tensor)y_hat = torch.argmax(log_prob, dim=-1)return y_hat
使用方式
处理数据
python preprocess.py --dataset=“iemocap_4”
训练模型
python train.py --dataset=“iemocap_4” --modalities=“atv” --from_begin --epochs=55
测试模型
python eval.py --dataset=“iemocap_4” --modalities=“atv”
部署方式
下载我训练好模型,以及数据集,附件里有data,modelcheckpoint文件夹,分别替换代码中的文件夹即可,我对每个单独的模态都有训练。
建议在pytorch官方来下载配置pytorch
建议用conda配置环境
避坑指南
如果新手cuda配置不成功,可以在代码:
parser.add_argument(“–device”, type=str, default=“cuda”, help=“Computing device.”)
处,把"cuda"改成"cpu"的方式
如果.pt文件无法打开,可以选择重新训练,自己生成模型文件
模型文件有硬件要求,提供的.pt文件都是用cpu训练,如果需要改成cuda版本,需要另外进行训练
相关文章:

多模态COGMEN详解
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
django 实战(python 3.x/django 3/sqlite)
要在 Python 3.x 环境中使用 Django 3.2 和 SQLite 创建一个新的 Django 项目,你可以按照以下步骤进行操作。这些步骤假设你已经安装了 Python 3.x 和 pip。 1. 设置虚拟环境 首先,建议为你的 Django 项目创建一个虚拟环境,以便隔离项目的依…...

图数据库 | 12、图数据库架构设计——高性能计算架构
在传统类型的数据库架构设计中,通常不会单独介绍计算架构,一切都围绕存储引擎展开,毕竟存储架构是基础,尤其是在传统的基于磁盘存储的数据库架构设计中。 类似地,在图数据库架构设计中,项目就围绕存储的方…...

Unity 利用Button 组件辅助Scroll View 滚动
实现 创建枚举类ScrollDir 以区分滚动方向。每组两个按钮负责同方向上左右/上下滚动。 Update 中实时获取Scroll View 滚动条当前位置。 if (dir.Equals(ScrollDir.vertical)) {posCurrent scroll.verticalNormalizedPosition; } else if (dir.Equals(ScrollDir.horizontal)…...
Ubuntu 安装Ansible ansible.cfg配置文件生成
安装后的ansible.cfg后的默认内容如下: rootlocalhost:/etc/ansible# cat ansible.cfg # Since Ansible 2.12 (core): # To generate an example config file (a "disabled" one with all default settings, commented out): # $ ansible-…...

使用PaddlePaddle实现线性回归模型
目录 编辑 引言 PaddlePaddle简介 线性回归模型的构建 1. 准备数据 2. 定义模型 3. 准备数据加载器 4. 定义损失函数和优化器 5. 训练模型 6. 评估模型 7. 预测 结论 引言 线性回归是统计学和机器学习中一个经典的算法,用于预测一个因变量࿰…...

MongoDB集群的介绍与搭建
MongoDB集群的介绍与搭建 一.MongoDB集群的介绍 注意:Mongodb是一个比较流行的NoSQL数据库,它的存储方式是文档式存储,并不是Key-Value形式; 1.1集群的优势和特性 MongoDB集群的优势主要体现在以下几个方面: (1)高…...

PhpStorm配置Laravel
本文是2024最新的通过phpstorm创建laravel项目 1.下载phpstorm 2.检查本电脑的环境phpcomposer 显示图标就是安装成功了,不会安装的百度自行安装 3.安装完后,自行创建一个空目录不要有中文,然后运行cmd 输入以下命令,即可创建…...

Solving the Makefile Missing Separator Stop Error in VSCode
1. 打开 Makefile 并转换缩进 步骤 1: 在 VSCode 中打开 Makefile 打开 VSCode。使用文件浏览器或 Ctrl O(在 Mac 上是 Cmd O)打开你的 Makefile。 步骤 2: 打开命令面板 按 Ctrl Shift P(在 Mac 上是 Cmd Shift P)&…...

MySQL大小写敏感、MySQL设置字段大小写敏感
文章目录 一、MySQL大小写敏感规则二、设置数据库及表名大小写敏感 2.1、查询库名及表名是否大小写敏感2.2、修改库名及表名大小写敏感 三、MySQL列名大小写不敏感四、lower_case_table_name与校对规则 4.1、验证校对规则影响大小写敏感4.1、验证校对规则影响排序 五、设置字段…...
项目搭建:guice,jdbc,maven
当然,以下是一个使用Guice、JDBC和Maven实现接口项目的具体例子。这个项目将展示如何创建一个简单的用户管理应用,包括用户信息的增删改查(CRUD)操作。 ### 1. Maven pom.xml 文件 首先确保你的pom.xml文件包含必要的依赖&#…...
第四届新生程序设计竞赛正式赛(C语言)
A: HNUCM的学习达人 SQ同学是HNUCM的学习达人,据说他每七天就能够看完一本书,每天看七分之一本书,而且他喜欢看完一本书之后再看另外一本。 现在请你编写一个程序,统计在指定天数中,SQ同学看完了多少本完整的书&#x…...
【分布式知识】Redis6.x新特性了解
文章目录 Redis6.x新特性1. 多线程I/O处理2. 改进的过期算法3. SSL/TLS支持4. ACL(访问控制列表)5. RESP3协议6. 客户端缓存7. 副本的无盘复制8. 其他改进 Redis配置详解1. 基础配置2. 安全配置3. 持久化配置4. 客户端与连接5. 性能与资源限制6. 其他配置…...

程序员需要具备哪些知识?
程序员需要掌握的知识广泛而深厚,这主要取决于具体从事的领域和技术方向。不过,有些核心知识是共通的,就像建房子的地基一样,下面来讲讲这些关键领域: 1. 编程语言: 无论你是搞前端、后端、移动开发还是嵌…...

实验四:MyBatis 的关联映射
目录: 一 、实验目的: 熟练掌握实体之间的各种映射关系。 二 、预习要求: 预习数据库原理中所讲过的一对一、一对多和多对多关系 三、实验内容: 1. 查询所有订单信息,关联查询下单用户信息(注意:因为一…...

【Leetcode】189.轮转数组
题目链接: 189.轮转数组 题目描述: 解题思路: 要想实现数组元素向右轮转k个位置,可是将数组三次反转来实现 以 nums [1,2,3,4,5,6,7], k 3 为例,最终要得到[5,6,7,1,2,3,4]: 第一次反转:将整个数组反转…...
【JavaSE】常见面试问题
1. 什么是 Java 中的多态? 多态是 Java 中面向对象的核心特性之一,指的是同一操作作用于不同类型的对象时表现出不同的行为。通过方法重载和方法重写实现。方法重载是同一方法名,根据参数不同做不同处理,属于编译时多态ÿ…...

【超详图文】多少样本量用 t分布 OR 正态分布
文章目录 相关教程相关文献预备知识Lindeberg-Lvy中心极限定理 t分布的来历实验不同分布不同抽样次数的总体分布不同自由度相同参数的t分布&正态分布 作者:小猪快跑 基础数学&计算数学,从事优化领域7年,主要研究方向:MIP求…...
leetcode hot100【Leetcode 416.分割等和子集】java实现
Leetcode 416.分割等和子集 题目描述 给定一个非负整数的数组 nums ,你需要将该数组分割成两个子集,使得两个子集的元素和相等。如果可以分割,返回 true ,否则返回 false。 示例 1: 输入:nums [1,5,11,…...

《算法导论》英文版前言To the teacher第4段研习录:有答案不让用
【英文版】 Departing from our practice in previous editions of this book, we have made publicly available solutions to some, but by no means all, of the problems and exercises. Our Web site, http://mitpress.mit.edu/algorithms/, links to these solutions. Y…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...