当前位置: 首页 > news >正文

TETFN情感计算的实践复现(论文复现)

TETFN情感计算的实践复现(论文复现)

本文所涉及所有资源均在传知代码平台可获取

文章目录

    • TETFN情感计算的实践复现(论文复现)
      • 概述
      • 研究背景
      • 主要贡献
      • 模型框架
      • 数据介绍及下载
      • 复现过程(重要)
      • 运行过程及结果

概述

本文讲解并复现了2024年一篇多模态情感计算的文章 “TETFN: A text enhanced transformer fusion network for multimodal sentiment analysis”,这篇论文利用三种模态之间进行交互,并对文本模态进行增强,以更准确的提取非文本模态的情感信息。

研究背景

随着社交媒体和短视频行业的快速发展,来自文本、视频和音频的多模态数据呈现爆炸式增长。与此同时,捕获设备的广泛使用,加上其易用性、移动性和低成本,使得从不同用户捕获情感线索变得容易,这与人类语言交流相同。这三种情态在表达过程中既有语义上的联系又有互补性。因此,在多模态情感分析中的一个关键问题是如何设计一种多模态融合方案来有效地集成异构数据,以便学习包含更多情感相关信息的多模态表示,同时保持每个模态的一致性和差异性信息。

主要贡献

  • 本文提出了一种文本增强型Transformer融合网络,该网络通过面向文本的多头注意机制和文本引导的跨模态映射来获得模态间的一致性,并通过单峰预测来保持差异化信息;
  • 利用视觉预训练模型ViT对原始视频进行预处理和特征提取,以获得具有全局和局部信息的视觉特征;
  • 在增强文本模态表示的同时,利用文本模态信息充分提取非文本模态特征,并充分融合模态间表示,提高情感预测的准确性;

模型框架

下图是整体的TETFN模型框架:

在这里插入图片描述

1.特征提取:

  • 文本特征:使用预先训练好的语言模型Bert作为文本编码器,它可以为文本模态提供丰富的语义信息。给定原始句子S=w1,w2,…,wnS=w1,w2,…,w**n,在将SS与两个特殊令牌[CLS][CLS]和[SEP][SEP]连接之后,将该序列输入到编码器中;然后,具有上下文信息的序列表示作为文本模态的输入;
  • 视觉特征:至于视觉模态,使用预先训练的视觉模型Vision-Transformer(ViT)作为视觉编码器。视觉形态的情感主要通过面部表情来体现。同时,鉴于眼睛、嘴巴等特定器官更能反映人的情绪,因此本文采用ViT来获取人脸的全局和局部信息;
  • 声学特征:对于音频模态,利用由COVERAP声学分析框架提取的音频手工特征。特征包括12个梅尔频率倒谱系数、音高、音量、声门源参数以及与语音的情绪和音调相关的其他特征。CMU-MultimodalSDK可以获得每个多模态示例的COVERAP特征序列;
  • 上下文编码:鉴于说话人在视频中的情感表达是一个连续的过程,每种模态的输入序列都具有时间性。因此,为了通过将时间长期依赖注入特征序列来模拟情感的变化过程,对视觉和声学使用单层长短期记忆网络(LSTM),然后对所有模态使用时间卷积网络来捕获每个时间步的信息的时间依赖性,并投射所有隐藏状态以获得后续过程的统一维度;

在这里插入图片描述

2.文本增强型Transformer模块

Text enhanced Transformer主要包含3个模块:Positional embedding、Text Enhanced Transformer、Unimodal Label Generation Module;我们分别对他们进行介绍和讲解:

  • Positional embedding

    为了让模型捕获输入的顺序信息,根据Transformer的结构,作者在每个模态的低层表示中添加了位置嵌入

在这里插入图片描述

  • Text Enhanced Transformer
    设计了一个文本增强的Transformer(TET)模块,以更好地编码三个信息源。TET通过计算两种模态之间的注意力权重来促进一种模态从另一种模态接收信息,从而促进不同模态的情感相关信息的交互。众所周知,文本是反映说话人情感的最基本、最直观的形式,比视频和音频包含更多的情感相关信息。因此,当视觉模态v和音频模态a被映射和转换到彼此时,融合特征缺乏情感相关的信息和语义。针对这种情况,除了标准的多头注意力编码功能,从其他形式的组合,作者利用面向文本的多头注意力机制,它利用文本来催化音频和视觉形式之间的交互;下图是该模块的运作图:

在这里插入图片描述

h_l_with_as = self.trans_l_with_a(proj_x_l, proj_x_a, proj_x_a)    # Dimension (L, N, d_l)
h_l_with_vs = self.trans_l_with_v(proj_x_l, proj_x_v, proj_x_v)    # Dimension (L, N, d_l)
h_ls = torch.cat([h_l_with_as, h_l_with_vs], dim=2)
h_ls = self.trans_l_mem(h_ls)
if type(h_ls) == tuple:h_ls = h_ls[0]
last_h_l = h_ls[-1]   # Take the last output for prediction# (L,V) --> A
h_a_with_ls = self.trans_a_with_l(proj_x_a, proj_x_l, proj_x_l)
h_a_with_vs = self.trans_a_with_v(proj_x_v, proj_x_a, proj_x_l)
h_as = torch.cat([h_a_with_ls, h_a_with_vs], dim=2)
h_as = self.trans_a_mem(h_as)
if type(h_as) == tuple:h_as = h_as[0]
last_h_a = h_as[-1]# (L,A) --> V
h_v_with_ls = self.trans_v_with_l(proj_x_v, proj_x_l, proj_x_l)
h_v_with_as = self.trans_v_with_a(proj_x_a, proj_x_v, proj_x_l)
h_vs = torch.cat([h_v_with_ls, h_v_with_as], dim=2)
h_vs = self.trans_v_mem(h_vs)
if type(h_vs) == tuple:h_vs = h_vs[0]
last_h_v = h_vs[-1]# fusion
fusion_h = torch.cat([last_h_l, last_h_a, last_h_v], dim=-1)
fusion_h = self.post_fusion_dropout(fusion_h)
fusion_h = F.relu(self.post_fusion_layer_1(fusion_h), inplace=False)
# # text
text_h = self.post_text_dropout(text_h)
text_h = F.relu(self.post_text_layer_1(text_h), inplace=False)
# audio
audio_h = self.post_audio_dropout(audio_h)
audio_h = F.relu(self.post_audio_layer_1(audio_h), inplace=False)
# vision
video_h = self.post_video_dropout(video_h)
video_h = F.relu(self.post_video_layer_1(video_h), inplace=False)
  • Unimodal Label Generation Module

    作者将单峰标签生成模块(ULGM)集成以捕获特定于模态的信息。在前向传播过程中,通过LSTM的音频和视觉模态的最后隐藏状态被用作初始表示。同时,在Bert的最后一层中的第一个词向量被选为文本表示。然后,通过全连接层获得单峰预测。在训练阶段,首先用预测的单峰标签和多峰融合表示来定义正中心和负中心。然后,计算从每个模态的表示到正中心和负中心的相对距离,并获得从单峰标签到多模态标签的偏移值,以生成第i个epoch的单峰标签。这样,更有利于情感分析获得不同模态的差异化信息,同时保持每个模态的一致性;

    在这里插入图片描述

数据介绍及下载

1. CMU-MOSI: 它是一个多模态数据集,包括文本、视觉和声学模态。它来自Youtube上的93个电影评论视频。这些视频被剪辑成2199个片段。每个片段都标注了[-3,3]范围内的情感强度。该数据集分为三个部分,训练集(1,284段)、验证集(229段)和测试集(686段)。
2. CMU-MOSEI: 它类似于CMU-MOSI,但规模更大。它包含了来自在线视频网站的23,453个注释视频片段,涵盖了250个不同的主题和1000个不同的演讲者。CMU-MOSEI中的样本被标记为[-3,3]范围内的情感强度和6种基本情绪。因此,CMU-MOSEI可用于情感分析和情感识别任务

复现过程(重要)

在准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行;
1. 下载多模态情感分析集成包

pip install MMSA

2. 进行训练

# show usage
$ python -m MMSA -h# train & test LMF on MOSI with default parameters
$ python -m MMSA -d mosi -m lmf -s 1111 -s 1112# tune 50 times of TFN on MOSEI with custom config file & custom save dir
$ python -m MMSA -d mosei -m tfn -t -tt 30 --model-save-dir ./models --res-save-dir ./results# train & test self_mm on SIMS with custom audio features & use gpu2
$ python -m MMSA -d sims -m self_mm -Fa ./Features/Feature-A.pkl --gpu-ids 2

运行过程及结果

值得注意的是,我没有设置固定的epoch轮数,利用每轮训练结果与best performance比较,知道结果达到最好,则自动停止训练;

  1. 训练过程

在这里插入图片描述

  1. 每轮的单模态预测结果

在这里插入图片描述

  1. 最终模型结果输出

在这里插入图片描述

文章代码资源点击附件获取

相关文章:

TETFN情感计算的实践复现(论文复现)

TETFN情感计算的实践复现(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 TETFN情感计算的实践复现(论文复现)概述研究背景主要贡献模型框架数据介绍及下载复现过程(重要)运行过程及结果 概…...

游戏各个知识小点汇总

抗锯齿原理记录 SSAA:把成像的图片放大N倍,然后每N个点进行平均值计算。一般N为2的倍数。比如原始尺寸是1000x1000,长宽各放大2倍变成2000x2000。 举例: 原始尺寸: 放大2倍后 最后平均值计算成像: MSAA&…...

Python设计模式实战:开启软件设计的精进之旅

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...

用RNN(循环神经网络)预测股票价格

RNN(循环神经网络)是一种特殊类型的神经网络,它能够处理序列数据,并且具有记忆先前信息的能力。这种网络结构特别适合于处理时间序列数据、文本、语音等具有时间依赖性的问题。RNN的核心特点是它可以捕捉时间序列中的长期依赖关系…...

08-图7 公路村村通(C)

很明显聪明的同学已经发现,这是一个稠密图,所以用邻接矩阵。可以很好的表达,比邻接表有优势,所以,采用邻接矩阵破题, 当然也可以用邻接表,仔细观察我的AC,会发现其实都一样,只是存储…...

Java-sleep()、wait()、join()、yield()的区别

关于线程,作为八股文面试中必问点,我们需要充分了解sleep()、wait()、join()以及yield()的区别。在正式开始之前先让我们了解两个概念:锁池和等待池 1.锁池 所有需要竞争同步锁的线程都会放在锁池当中,比如当前对象的锁已经被其中…...

Linux命令的补全和自动完成完全开启

前言 在安装好RockyLinux8.8后,输入dn后,按下“TAB”能自动提示,但在输入dnf make后,按下“TAB”不能实现自动补全,如果要使Linux的Bash支持完整的自动提示和补全功能,还需要执行一些其它操作。 内容 1、…...

Deep Active Contours for Real-time 6-DoF Object Tracking

这篇论文解决了从RGB视频进行实时6自由度(6-DoF)物体跟踪的问题。此前的基于优化的方法通过对齐投影模型与图像来优化物体姿态,这种方法依赖于手工设计的特征,因此容易陷入次优解。最近的基于学习的方法使用神经网络来预测姿态&am…...

IDEA安装教程配置java环境(超详细)

引言 IntelliJ IDEA 是一款功能强大的集成开发环境(IDE),广泛用于 Java 开发,但也支持多种编程语言,如 Kotlin、Groovy 和 Scala。本文将为你提供一步一步的指南,帮助你在 Windows 系统上顺利安装 Intelli…...

Excel文档的读取(1)

熟悉使用Excel的同学应该都知道,在单个Excel表格里想要分商品计算总销售额,使用数据透视表也可以非常快速方便的获得结果。但当有非常大量的Excel文件需要处理时,每一个Excel文件单独去做数据透视也会消耗大量的时间。就算使用Power Query这样…...

Linux:体系结构和操作系统管理

目录 一、冯诺依曼体系结构 1.问题1 2.问题2 二、操作系统管理 一、冯诺依曼体系结构 本章将会谈论一下对冯诺依曼计算机体系结构的理解。 在2024年,几乎所有的计算机,都遵守冯诺依曼体系结构。 冯诺依曼体系结构是应用在硬件层面的,而硬…...

c++ install boost lib

同步系统上的软件包列表 sudo apt-update 整个库安装: sudo apt-get install libboost-all-dev 安装部分库: sudo apt-get install libboost-thread-dev sudo apt-get install libboost-filesystem-dev 链接时加上: -lboost_filesystem -lboost_system 例如: g -Wall -o bo…...

文件加密最简单的方法有哪些?十个电脑文件加密方法【超详细】

在当今数字化和信息化的时代,数据已成为企业最重要的资产之一。内部数据外泄不仅可能导致商业秘密的丧失,还可能对企业的声誉和财务健康造成严重影响。为了有效防止内部数据外泄,企业需要实施综合的防泄密解决方案。以下是十大最佳防泄密解决…...

IPv6地址的表示方法

IPv6地址总长度为128比特,通常分为8组,每组为4个十六进制数的形式,每组十六进制数间用冒号分隔。 例如:2409:8745:039a:c700:0000:0000:0162,这是IPv6地址的首选格式。 为了书写方便,IPv6还提供了压缩格式…...

Kubernetes 之 kubelet 与 CRI、CNI 的交互过程

序言 当一个新的 Pod 被提交创建之后,Kubelet、CRI、CNI 这三个组件之间进行了哪些交互? Kubelet -> CRI -> CNI 如上图所示: Kubelet 从 kube-api-server 处监听到有新的 pod 被调度到了自己的节点且需要创建。Kubelet 创建 sandbo…...

【python】OpenCV—Age and Gender Classification

文章目录 1、任务描述2、网络结构2.1 人脸检测2.2 性别分类2.3 年龄分类 3、代码实现4、结果展示5、参考 1、任务描述 性别分类和年龄分类预测 2、网络结构 2.1 人脸检测 输出最高的 200 个 RoI,每个 RoI 7 个值,(xx,xx&#x…...

python安装换源

安装 python 使用演示的是python 3.8.5 安装完成后,如下操作打开命令行:同时按 “WindowsR” > 输入 “cmd” -> 点击确定 python换源 临时换源: #清华源 pip install markdown -i https://pypi.tuna.tsinghua.edu.cn/simple # 阿里…...

JavaScript练手小技巧:利用鼠标滚轮控制图片轮播

近日,在浏览网站的时候,发现了一个有意思的效果:一个图片轮播,通过上下滚动鼠标滚轮控制图片的上下切换。 于是就有了自己做一个的想法,顺带复习下鼠标滚轮事件。 鼠标滚轮事件,参考这篇文章:…...

搭建Eureka高可用集群 - day03

全部代码发出来了 搭建服务提供者 步骤: 1.创建项目,引入依赖 2.添加Eureka相关配置 3.添加EnableEurekaClient注解 4.测试运行 步骤1:创建项目,引入依赖 使用Spring Initializr方式创建一个名称为eureka-provider的Sprin…...

并行程序设计基础——并行I/O(2)

目录 一、显式偏移的并行文件读写 1、阻塞方式 1.1 MPI_FILE_READ_AT 1.2 MPI_FILE_WRITE_AT 1.3 MPI_FILE_READ_AT_ALL 1.4 MPI_FILE_WRITE_AT_ALL 2、非阻塞方式 2.1 MPI_FILE_IREAD_AT 2.2 MPI_FILE_IWRITE_AT 3、两步非阻塞组调用 3.1 MPI_FILE_READ_AT_ALL_BEG…...

XML Group端口详解

在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言:多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...