Robust多模态模型的开发

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

目录

Robust 多模态模型:寻找遗失的模态!

一、研究背景

二、模型结构和代码

三、数据集介绍

六、性能展示

六、实现过程

七、运行过程

Robust 多模态模型:寻找遗失的模态!

近年来,随着网络视频的大量涌现,各种多模态任务日益备受关注。尽管取得了显著的进展,但在迈向稳健多模态交互的道路上仍面临两大挑战:

1)在未对齐多模态数据中建模跨模态交互时效率低下;

2)在现实环境中通常会发生的随机模态特征缺失的脆弱性。其中,提高对数据丢失的鲁棒性已成为多模态任务的核心挑战之一,其目的是从语言,视觉和声学信号中完成多模态任务。针对模态特征不完备的情况,目前主要提出了基于修正的方法和张量正则化方法。然而,这两种方法都无法科普非对齐序列中随机模态特征的缺失。

本文提出了一种 Robust 的多模态模型来提高模型对非对齐模态序列随机缺失的鲁棒性。

同时,我在流行的多模态任务–多模态情感计算的数据集上对模型进行了测试,得到了不错的效果,证明了该模型的可靠性。具体来说,我们使用了MOSI,MOSEI,以及两个中文数据集 SIMS, SIMSv2,以及抑郁症数据集AVEC2019,为医学心理学等领域提供帮助。

【注】 我们文章中所用到的数据集,都经过重新特征提取形成新的数据集特征文件(.pkl),另外该抑郁症数据集因为涉及患者隐私,需要向数据集原创者申请,申请和下载链接都放在了我们附件中的 readme文件中,感兴趣的小伙伴可以进行下载,谢谢支持!

一、研究背景

随着用户生成的在线内容的丰富,各种多模态任务层出不穷。使用手动对齐的完整信息,包括转录语言,音频和视频,以前的工作已经取得了显着的改进多模态任务。然而,用户生成的视频通常是不完美的。首先,不同模态的接收器可能具有可变的接收频率,这导致不对齐的性质。其次,如下图所示,许多不可避免的因素,如用户生成的视频中的噪声或传感器故障,可能会导致模态特征提取器的故障。在这种情况下,需要一种能够处理随机模态特征缺失(RMFM)的模型。因此,在多模态任务中构建能够处理RMFM的模型仍然是一个开放的研究。基于RMFM的多模态任务的核心问题在于不完整模态序列的语义稀疏性,导致难以提取鲁棒的模态表示。据我所知,目前的工作大多直接使用具有缺失惩罚的不完整模态序列来学习联合融合表示。

二、模型结构和代码

1. 单模态特征提取

模态特征提取模块首先用一维卷积层处理不完整的模态序列,以确保输入序列的每个元素都知道其相邻元素。

公式的排版如下:

其中,kmkm 是模态 mm 的卷积核大小,dd 是公共维度。接下来,使用位置嵌入(Positional Embedding, PE)来增强卷积序列表示,然后通过模态内和模态间的 Transformer 来捕捉输入序列中每个时间步的模态动态。通过注意力机制,Transformer 能从一个序列块中提取另一个序列块的信息。用于这些变换的结构是 Transformer 编码器。在此过程中,HiHi 的键、查询、值(key, query, value)都是 Transformer 编码器的输入。查询来自文本模态,而键和值可以从视觉或音频模态提取。因此,Transformer 编码器的表示可以写作:Transformer(query,key,value)Transformer(query,key,value)。

其中,PE(Tm,d)∈RTm×dPE(Tm ,d)∈RTm ×d 计算每个位置索引的嵌入,m∈{t,a,v}m∈{t,a,v},n∈{t,a,v}−{m}n∈{t,a,v}−{m}。最后,将所有模态内和模态间变换器获得的潜在特征连接起来,作为增强的序列特征输出。

其中,m∈{t,a,v}m∈{t,a,v},n1n1 和 n2n2 表示除 mm 之外的其他两种模态。增强后的序列有望利用模态间的互补性,为缺失的模态特征提取有效的表示。此外,这种包含跨模态交互的增强模态序列可以被视为模型级融合结果。

2. 模态重建模块

我们提出了一个模态重建(MR)模块,基于这样一个关键观点:从提取的模态序列中重建完整的模态序列,可以引导提取模块学习缺失部分的语义。对于每种模态,首先在特征维度上执行自注意力机制,以捕获提取特征之间的交互。

其中 m∈{t,a,v}m∈{t,a,v},Hm∗Hm 被视为转换后的序列特征。然后,我们进行线性变换,将提取的特征映射到输入空间。

其中 m∈{t,a,v}m∈{t,a,v},WmWm 和 bmbm 是线性层的参数。

在监督方面,利用原始和生成器在缺失元素上的 SmoothL1Loss(·) 作为生成损失 LmgLmg ,以提升缺失重建的效果。

其中 m∈{t,a,v}m∈{t,a,v},M′M 是缺失掩码,用于标识输入模态序列中的缺失位置。

3. 融合模块

在重建损失的指导下,通过补充模态信息增强不完整的模态序列后,我们将它们融合为一个联合向量用于情感预测。我们提出了一个CNN门控编码器,用于分别编码增强的模态序列HmHm

CNN Gate Encoder:首先,提取的模态序列HmHm 通过一个双向GRU层处理,并通过tanhtanh激活函数获得更新的表示Hm′′Hm′′

然后,设计了一个卷积门组件进一步编码HmHm 。具体来说,一个一维卷积网络(CNN)使用窗口大小为kk的卷积核在输入Hm′′Hm′′ 上滑动,对序列中的每个元素得到一个标量值gigi 。使用填充策略确保Hm′′Hm′′ 和gg具有相同的序列长度:

其中,m∈{t,a,v}m∈{t,a,v},Conv1d(⋅)Conv1d(⋅)是一个一维卷积操作。gg被视为一个门,用于缩放表示HmHm ,过滤掉话语中不相关的上下文信息:

其中,⊗⊗表示逐元素相乘。此外,将表示Hm′Hm 和初始提取的序列Hm′′Hm′′ 进行连接。然后,使用一个全连接层来控制最终词级表示Hm∗Hm 的维度:

最后,利用最大池化操作来关注话语中具有更大影响的特征,定义最终的模态表示Um∗Um 为:

其中,hmhm 表示模态mm的隐藏维度。

三个模态表示的连接被视为融合结果,并输入到一个简单的分类器中,以进行情感强度的最终预测:

其中,BN表示批量归一化操作,LeakyReLU作为激活函数使用。

三、数据集介绍

1. 多模态情感计算数据集:

  • CMU-MOSI: CMU-MOSI数据集是MSA研究中流行的基准数据集。该数据集是YouTube独白的集合,演讲者在其中表达他们对电影等主题的看法。MOSI共有93个视频,跨越89个远距离扬声器,包含2198个主观话语视频片段。这些话语被手动注释为[-3,3]之间的连续意见评分,其中-3/+3表示强烈的消极/积极情绪;
  • CMU-MOSEI: CMU-MOSEI数据集是对MOSI的改进,具有更多的话语数量,样本,扬声器和主题的更大多样性。该数据集包含23453个带注释的视频片段(话语),来自5000个视频,1000个不同的扬声器和250个不同的主题
  • SIMS/SIMSV2: CH-SIMS数据集[35]是一个中文多模态情感分析数据集,为每种模态提供了详细的标注。该数据集包括2281个精选视频片段,这些片段来自各种电影、电视剧和综艺节目,每个样本都被赋予了情感分数,范围从-1(极度负面)到1(极度正面);

3. 多模态抑郁检测数据集:

  • AVEC2019: AVEC2019 DDS数据集是从患者临床访谈的视听记录中获得的。访谈由虚拟代理进行,以排除人为干扰。与上述两个数据集不同的是,AVEC2019中的每种模态都提供了几种不同的特征。例如,声学模态包括MFCC、eGeMaps以及由VGG和DenseNet提取的深度特征。在之前的研究中,发现MFCC和AU姿势分别是声学和视觉模态中两个最具鉴别力的特征。因此,为了简单和高效的目的,我们只使用MFCC和AU姿势特征来检测抑郁症。数据集用区间[0,24]内的PHQ-8评分进行注释,PHQ-8评分越大,抑郁倾向越严重。该基准数据集中有163个训练样本、56个验证样本和56个测试样本。

六、性能展示

  • 在情感计算任务中,可以看到加入 SimAM 算法后性能有了明显提升,证明了其有效性;

七、实现过程

下载附件并准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行;

1. 数据集准备

下载附件中多种数据集已提取好的特征文件。把它放在"./dataset”目录。2. 下载需要的包

pip install MMSA

3. 进行训练

from MMSA import MMSA_run# run LMF on MOSI with default hyper parameters
MMSA_run('tfr_net', 'mosi', seeds=[1111, 1112, 1113], is_tune=False, gpu_ids=[0], config_file="../config/config_regression.json",
         model_save_dir="../saved_models", res_save_dir="../saved_results")

七、运行过程

  1. 训练过程

  1. 最终结果

感觉不错,点击我,立即使用

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

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

相关文章

最新项目全功能知识付费小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 知识付费小程序源码系统是一款基于先进技术架构设计的综合性平台。它旨在为用户提供一站式的知识付费解决方案,涵盖了从内容创作到用户管理的各个环节。 该系统采用了现代化的开发理念和技术手段,确保了系统的稳定性、安全性和高效性。它具有…

ClickHouse 24.9 版本发布说明

本文字数:7295;估计阅读时间:19 分钟 作者:ClickHouse Team 本文在公众号【ClickHouseInc】首发 又到新版本发布的时间了! 发布概要 本次ClickHouse 24.9 版本包含了23个新功能🎁、14项性能优化&#x1f6f…

Golang反射解说

在Go语言中,反射(Reflection)是一种强大的机制,允许程序在运行时检查、修改和操作变量的类型信息。 反射主要用于处理那些在编译时无法确定类型的情况,比如处理接口类型的值、实现通用的函数等。 Go语言中反射的基本…

邮件系统国产化改造: 保障信息安全、提升效率的最佳选择

在当前数字化转型的大背景下,我国政府提出了构建网络强国和数字强国的宏伟蓝图。这一战略的实施,不仅为数字政府的建设提供了坚实的基础,也为政府和企业的数字化升级指明了方向。在这一进程中,邮件系统的国产化改造就显得尤为重要…

Chromium 关闭 Google Chrome 后继续运行后台应用功能分析c++

此功能允许关闭 Google Chrome 后继续运行后台,控制此功能的开关是 // Set to true if background mode is enabled on this browser. //更改此值可以修改默认开启关闭 inline constexpr char kBackgroundModeEnabled[] "background_mode.enabled"; …

前端的全栈混合之路Meteor篇:分布式数据协议DDP深度剖析

本文属于进阶篇,并不是太适合新人阅读,但纯粹的学习还是可以的,因为后续会实现很多个ddp的版本用于web端、nodejs端、安卓端和ios端,提前预习和复习下。ddp协议是一个C/S架构的协议,但是客户端也同时可以是服务端。 什…

STM32F407寄存器操作(DMA+SPI)

1.前言 前面看B站中有些小伙伴吐槽F4的SPIDMA没有硬件可控的CS引脚,那么今天我就来攻破这个问题 我这边暂时没有SPI的从机芯片,并且接收的过程与发送的过程类似,所以这里我就以发送的过程为例了。 2.理论 手册上给出了如下的描述 我们关注…

Spring Boot 学习之路 -- Thymeleaf 模板引擎

前言 最近因为业务需要,被拉去研究后端的项目,代码框架基于 Spring Boot,后端对我来说完全小白,需要重新学习研究…出于个人习惯,会以 Blog 文章的方式做一些记录,文章内容基本来源于「 Spring Boot 从入门…

微信小程序-分包加载

一.分包的意义 小程序是由多个页面构成,为了因为代码量多,体积大导致用户打开速度变慢,小程序提供了分包加载数据。 分包加载数据,只有在主包调用分包某一个页面时候才会调用加载分包。即就是按需加载。 整个小程序不能超过20M&a…

golang grpc进阶

protobuf 官方文档 基本数据类型 .proto TypeNotesGo Typedoublefloat64floatfloat32int32使用变长编码,对于负值的效率很低,如果你的域有可能有负值,请使用sint64替代int32uint32使用变长编码uint32uint64使用变长编码uint64sint32使用变长…

滚柱导轨适配技巧与注意事项!

滚柱导轨是一种重要的传动元件,它由滚柱作为滚动体。用于连接机床的运动部件和床身基座,其设计旨在提供高承载能力和高刚度,适用于重型机床和精密仪器,而滚柱导轨的适配方法对于确保机械设备的高精度运行至关重要。 滚柱导轨的适配…

大数据分析案例-基于逻辑回归算法构建抑郁非抑郁推文识别模型

🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章 大数据分析案例合集

介绍Java

Java简介 Java是一门由Sun公司(现被Oracle收购)在1995年开发的计算机编程语言,其主力开发人员是James Gosling,被称为Java之父。Java在被命名为“Java”之前,实际上叫做Oak,这个名字源于James Gosling望向…

Unite Barcelona主题演讲回顾:深入了解 Unity 6

本周,来自世界各地的 Unity 开发者齐聚西班牙巴塞罗那,参加 Unite 2024。本次大会的主题演讲持续了一个多小时,涵盖新功能的介绍、开发者成功案例的分享,以及在编辑器中进行的技术演示,重点展示了 Unity 6 在实际项目中…

学习python自动化——pytest单元测试框架

一、什么是pytest 单元测试框架,unittest(python自带的),pytest(第三方库)。 用于编写测试用例、收集用例、执行用例、生成测试结果文件(html、xml) 1.1、安装pytest pip instal…

Spring AI 介绍与入门使用 -- 一个Java版Langchain

Langchain 是什么? Langchain 是一个Python 的AI开发框架,它集成了模型输入输出、检索、链式调用、内存记忆(Memory)、Agents以及回调函数等功能模块。通过这些模块的协同工作,它能够支持复杂的对话场景和任务执行流程…

C语言 | Leetcode C语言题解之第460题LFU缓存

题目: 题解: /* 数值链表的节点定义。 */ typedef struct ValueListNode_s {int key;int value;int counter;struct ValueListNode_s *prev;struct ValueListNode_s *next; } ValueListNode;/* 计数链表的节点定义。 其中,head是数值链表的头…

多点低压差分(M-LVDS)线路驱动器和接收器——MS2111

MS2111 是多点低压差分 (M-LVDS) 线路驱动器和接收器。经过 优化,可运行在高达 200Mbps 的信号速率下。所有部件均符合 M LVDS 标准 TIA / EIA-899 。该驱动器的输出支持负载低至 30Ω 的多 点总线。 MS2111 的接收器属于 Type-2 , 可在 -1…

【GESP】C++一级练习BCQM3037,简单计算,国庆七天乐收官

又回到了简单计算的题目,继续巩固练习。 题解详见:https://www.coderli.com/gesp-1-bcqm3037/ 【GESP】C一级练习BCQM3037,简单计算,国庆七天乐收官 | OneCoder又回到了简单计算的题目,继续巩固练习。https://www.cod…

性能测试工具locust —— Python脚本参数化!

1.1.登录用户参数化 在测试过程中,经常会涉及到需要用不同的用户登录操作,可以采用队列的方式,对登录的用户进行参数化。如果数据要保证不重复,则取完不再放回;如可以重复,则取出后再返回队列。 def lo…