【论文复现】MSA+抑郁症模型总结(三)
📝个人主页🌹:Eternity._
🌹🌹期待您的关注 🌹🌹
❀MSA+抑郁症模型
- 热门研究领域:情感计算的横向发展
- 1. 概述
- 2. 论文地址
- 3. 研究背景
- 4. 主要贡献
- 5. 模型结构和代码
- 6. 数据集介绍
- 7. 性能展示
- 8. 复现过程
- 9. 运行过程
- 总结
热门研究领域:情感计算的横向发展
随着社交媒体的蓬勃兴起,近年来多模态数据已成为研究焦点。用户们日益倾向于通过结合多种媒体形式(诸如文本搭配图像、文本配合音乐或视频等)来展现他们的观点和情绪。多模态情感分析(MSA)作为从多元化信息中捕捉情感要素以进行情感预测的前沿研究领域,备受瞩目。以往基于词汇、短语及其语义关系的文本情感分析手段,在面对复杂情感信息的捕捉时显得力不从心。而今,通过融入面部表情识别与语调分析,多模态信息(涵盖视觉、听觉以及文本转录内容)为我们提供了更为鲜活、详尽的情感描绘,使得情感传达更为精确且丰富。过往研究表明,不同模态之间往往潜藏着相互影响的深层联系。如下图所示,MSA展现出了其独特优势:例如,某些语句的情感倾向并不明确,可能因情境差异而蕴含多重情绪。但当融入相应的音频信息后,我们便能更精确地判定情感的正负倾向。然而,如何有效建模这些模态间的相互作用,仍是当前亟待解决的一大难题。
同时,面对激烈的市场竞争和保持领先地位的迫切需求,组织在提升生产力、激发创新等方面面临着更为严苛的挑战。沉重的工作负担、日益紧迫的时间限制、不切实际的工作目标、超时工作的常态、职业安全感的缺失以及人际关系的紧张,这些因素共同加剧了员工间的紧张氛围,为员工营造了一个充满压力的工作环境。当压力超过一定阈值时,不仅会对员工的工作效率和积极性造成负面影响,还会引发一系列生理和心理问题,如长期的压力可能导致失眠、抑郁乃至心脏病等严重健康问题。据国际劳工组织2019年的数据,压力、过长的工作时间和职业病每年导致近280万工人死亡,另有3.74亿人因工作受伤或患病。
因此,早期发现和有效治疗对于缓解员工压力、减少其对健康的长期危害以及改善工作环境至关重要。传统的抑郁症检测方法,如通过生理学家进行的问卷访谈,虽然在一定程度上具有参考价值,但这种方法往往受限于其定性、耗时且缺乏私密性的特性,难以确保员工提供真实反馈,且往往未能达到预期的初步筛选效果。
相比之下,一些生理指标如心率变异性(HRV)、心电图(ECG)、皮肤电反应(GSR)、血压、肌电图和脑电图(EEG)等虽然客观,但同样缺乏私密性,且可能因涉及个人隐私信息而遭到员工的抵触。鉴于此,近年来,基于视频、音频和文本的抑郁症监测技术逐渐成为研究热点。其中,基于视频的技术通过分析嘴唇动作、头部姿态、心跳频率、眨眼频率、凝视方向、瞳孔大小以及眼球在面部的运动轨迹等特征来监测抑郁症状;基于音频的方法则通过提取语音的功率电平、线性预测倒谱系数(LPCC)、梅尔倒谱系数(MPCC)等声学特征,并运用机器学习算法进行分类识别;而基于文本的方法则侧重于从文本中提取句法结构和语言特征,利用机器学习分类器来检测文本中的情感重音。
综上所述,为了更有效地监测和管理员工压力及抑郁症状,我们需要探索更加高效、私密且易于接受的检测方法,以营造更加健康、积极的工作环境。
我专注于情感计算领域的经典模型,致力于对其进行深入剖析、阐释与综合归纳。鉴于当前多数情感计算数据集以英文为主,我计划在接下来的系列文章中,将中文数据集(如SIMS及SIMSv2)融入模型之中,旨在构建贴合国人特性的情感计算分析框架。这一框架将特别应用于情感疾病(例如抑郁症、自闭症)的检测任务,旨在为医学心理学等相关领域提供有力支持。此外,我还引入了幽默检测数据集,以期在情感识别的广度上有所拓展。展望未来,我更有意向纳入更多小众数据集,以捕捉那些更为微妙、隐匿的情感,例如嫉妒、嘲讽等,力求使人工智能技术能够更好地服务于社会,提升其在情感理解与识别方面的能力。
【注】 我们文章中所用到的数据集,都经过重新特征提取形成新的数据集特征文件(.pkl),另外该抑郁症数据集因为涉及患者隐私,需要向数据集原创者申请,申请和下载链接都放在了我们附件中的 readme文件中,感兴趣的小伙伴可以进行下载,谢谢支持!
1. 概述
这篇文章,我开始介绍第三篇情感计算经典论文模型,他是ACMMM 2020的一篇多模态情感计算的论文 “MISA: Modality-Invariant and -Specific Representations for Multimodal Sentiment Analysis”,其中提出的模型是MISA;
此外,原创部分为加入了抑郁症数据集以实现抑郁症检测任务,以及在SIMS数据集和SIMV2数据集上进行实验;值得注意的是,我们还加入了幽默检测的任务;
本文所涉及的所有资源的获取方式:
https://www.aspiringcode.com/content?id=17217255775398&uid=1758d0ff06864c7289ed340422b34d06
2. 论文地址
MISA: Modality-Invariant and -Specific Representations for Multimodal Sentiment Analysis
https://arxiv.org/pdf/2005.03545
3. 研究背景
多模态情感分析和抑郁症检测是一个活跃的研究领域,它利用多模态信号对用户生成的视频进行情感理解和抑郁症程度判断。解决这一问题的主要方法是发展先进的模态融合技术。然而,信号的异质性造成了分布模式的差距,构成了重大挑战。在本文中,我们的目标是学习有效的模态表示,以帮助融合的过程。
4. 主要贡献
- 提出MISA,一个简单而灵活的多模态学习框架,强调多模态表示学习作为多模态融合的前体。MISA学习modality-invariant和modality-specific表示,以提供多模态数据的全面和分解视图,从而帮助融合预测情感状态;
- MSA任务的实验证明了MISA的强大功能,其中学习的表示帮助简单的融合策略超越复杂的最先进的模型。
5. 模型结构和代码
1. 总体框架
如下图所示,MISA的功能可以分为两个主要阶段:模态表征学习和模态融合。
2. 模态表征学习
语言层面的表征
首先,对于每个模态 m ∈ { l , v , a } m \in \{l, v, a\} m∈{l,v,a},我们将其话语序列 U m ∈ R T m × d m U_m \in \mathbb{R}^{T_m \times d_m} Um∈RTm×dm 映射到一个固定大小的向量 u m ∈ R d h u_m \in \mathbb{R}^{d_h} um∈Rdh 上。这一映射过程是通过一个堆叠的LSTM(长短期记忆网络)来实现的,LSTM的端态隐藏表示会经过一个完全连接的密集层,最终给出向量 u m u_m um。该过程可以表示为以下数学公式:
u m = sLSTM ( U m ; θ m lstm ) u_m = \text{sLSTM}(U_m; \theta_m^{\text{lstm}}) um=sLSTM(Um;θmlstm)
其中, sLSTM \text{sLSTM} sLSTM 表示堆叠的LSTM网络, U m U_m Um 是输入的话语序列, θ m lstm \theta_m^{\text{lstm}} θmlstm 是LSTM网络的参数,而 u m u_m um 是输出向量。
模态不变和特定的表征
现在,将每个话语向量 u m u_m um 投射到两个不同的表示。第一个是 modality-invariant(模态不变)组件,它学习一个具有分布相似性约束的公共子空间共享表示。该约束有助于最小化异质性间隙,这是多模融合的理想特性。第二个是 特定于模态(modality-specific)的组件,它捕获了该模态的独特特征。通过这篇论文,我们论证了模态不变和模态特定表示的存在为有效融合提供了一个整体的视角。学习这些表示法是该工作的首要目标。
以下为部分代码展示
if not self.config.use_cmd_sim:# discriminatorreversed_shared_code_t = ReverseLayerF.apply(self.utt_shared_t, self.config.reverse_grad_weight)reversed_shared_code_v = ReverseLayerF.apply(self.utt_shared_v, self.config.reverse_grad_weight)reversed_shared_code_a = ReverseLayerF.apply(self.utt_shared_a, self.config.reverse_grad_weight)self.domain_label_t = self.discriminator(reversed_shared_code_t)self.domain_label_v = self.discriminator(reversed_shared_code_v)self.domain_label_a = self.discriminator(reversed_shared_code_a)else:self.domain_label_t = Noneself.domain_label_v = Noneself.domain_label_a = Noneself.shared_or_private_p_t = self.sp_discriminator(self.utt_private_t)self.shared_or_private_p_v = self.sp_discriminator(self.utt_private_v)self.shared_or_private_p_a = self.sp_discriminator(self.utt_private_a)self.shared_or_private_s = self.sp_discriminator( (self.utt_shared_t + self.utt_shared_v + self.utt_shared_a)/3.0 )# For reconstructionself.reconstruct()
3. 模态融合
在将模态投影到它们各自的表示中之后,我们将它们融合到一个联合向量中,用于下游预测。我们设计了一个简单的融合机制,首先执行自注意-基于Transformer,然后是所有六个变换的模态向量的级联。
融合进程。首先,我们堆叠六个模态表示矩阵。然后,我们在这些表示上执行多头自注意,以使每个向量都知道其他跨模态(和跨子空间)表示。这样做允许每个表征从同伴表征中诱导潜在的信息,这些信息对总体情感取向是协同的。这种跨模态匹配在最近的跨模态学习方法中已经非常突出。
# Projecting to same sized space
self.utt_t_orig = utterance_t = self.project_t(utterance_t)
self.utt_v_orig = utterance_v = self.project_v(utterance_v)
self.utt_a_orig = utterance_a = self.project_a(utterance_a)
self.utt_private_t = self.private_t(utterance_t)
self.utt_private_v = self.private_v(utterance_v)
self.utt_private_a = self.private_a(utterance_a)
self.utt_shared_t = self.shared(utterance_t)
self.utt_shared_v = self.shared(utterance_v)
self.utt_shared_a = self.shared(utterance_a)
6. 数据集介绍
1. CMU-MOSI: CMU-MOSI数据集是MSA研究中流行的基准数据集。该数据集是YouTube独白的集合,演讲者在其中表达他们对电影等主题的看法。MOSI共有93个视频,跨越89个远距离扬声器,包含2198个主观话语视频片段。这些话语被手动注释为[-3,3]之间的连续意见评分,其中-3/+3表示强烈的消极/积极情绪。
2. CMU-MOSEI: CMU-MOSEI数据集是对MOSI的改进,具有更多的话语数量,样本,扬声器和主题的更大多样性。该数据集包含23453个带注释的视频片段(话语),来自5000个视频,1000个不同的扬声器和250个不同的主题
3. AVEC2019: AVEC2019 DDS数据集是从患者临床访谈的视听记录中获得的。访谈由虚拟代理进行,以排除人为干扰。与上述两个数据集不同的是,AVEC2019中的每种模态都提供了几种不同的特征。例如,声学模态包括MFCC、eGeMaps以及由VGG和DenseNet提取的深度特征。在之前的研究中,发现MFCC和AU姿势分别是声学和视觉模态中两个最具鉴别力的特征。因此,为了简单和高效的目的,我们只使用MFCC和AU姿势特征来检测抑郁症。数据集用区间[0,24]内的PHQ-8评分进行注释,PHQ-8评分越大,抑郁倾向越严重。该基准数据集中有163个训练样本、56个验证样本和56个测试样本。
4. SIMS/SIMSV2: CH-SIMS数据集[35]是一个中文多模态情感分析数据集,为每种模态提供了详细的标注。该数据集包括2281个精选视频片段,这些片段来自各种电影、电视剧和综艺节目,每个样本都被赋予了情感分数,范围从-1(极度负面)到1(极度正面)
5. UR_FUNNY: 对于MHD,我们考虑最近提出的UR_FUNNY数据集。与情绪类似,幽默的产生和感知也是通过多通道进行的。因此,这个数据集提供了多模态的话语,作为从TED演讲中采样的笑点。它还为每个目标话语提供相关的上下文,并确保说话者和主题的多样性。每个目标话语被标记为幽默/非幽默实例的二元标签。
7. 性能展示
- 在情感计算任务中,可以看到MMIN模型性能超越其他模型,证明了其有效性;
- 抑郁症检测任务中,MMIN在我们的数据集AVEC2019中依旧亮眼:
Model | CCC | MAE |
---|---|---|
Baseline | 0.111 | 6.37 |
EF | 0.34 | – |
Bert-CNN & Gated-CNN | 0.403 | 6.11 |
Multi-scale Temporal Dilated CNN | 0.430 | 4.39 |
MISA | 0.438 | 5.35 |
- SIMS数据集
8. 复现过程
在准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行;
1. 下载多模态情感分析集成包
pip install MMSA
2. 进行训练
$ python -m MMSA -d mosi/dosei/avec -m mmim -s 1111 -s 1112
9. 运行过程
-
训练过程
-
最终结果
总结
1. 适用场景
-
社交媒体情感分析: MISA模型适用于分析社交媒体平台上用户的多模态数据,包括文本、图像和音频,从而深入理解用户的情感倾向、态度和情绪变化。例如,可以用于监测社交媒体上的舆情、分析用户对特定事件或产品的反应等。
-
情感驱动的内容推荐: 在内容推荐系统中,MISA模型可以根据用户的多模态数据,如观看历史、社交互动、文字评论等,推荐符合用户情感和兴趣的个性化内容,提升用户体验和内容吸引力。
-
智能健康监测: MISA模型在智能健康监测领域具有潜力,可以通过分析用户的语音情绪、面部表情和文字记录来监测心理健康状态,包括抑郁倾向和情绪波动,为个体提供早期干预和支持。
-
教育和人机交互: 在教育领域,MISA模型可以用于情感教育和个性化学习支持。通过分析学生的情感表达和反馈,提供定制化的学习体验和情感指导,增强教育效果和学习动机。
2. 项目特点
-
多模态融合: MISA模型能够有效整合文本、图像和音频等多种数据源,充分利用不同模态之间的关联性和信息丰富度,提升情感分析的全面性和准确性。
-
情感感知和表达建模: 通过先进的深度学习技术,MISA模型能够深入学习和模拟情感感知与表达过程,实现对复杂情感信息的准确捕捉和高效表示。
-
自适应学习和个性化: MISA模型具备自适应学习能力,可以根据具体任务和用户需求调整情感建模策略,实现个性化的情感分析和反馈。
-
跨领域应用能力: 由于其多模态分析的通用性和灵活性,MISA模型不仅适用于社交媒体分析和智能健康监测,还能应用于广告推荐、产品评价和人机交互等多个领域。
综上所述,MISA模型在多模态情感分析和智能应用领域展现出广泛的适用性和高效的技术特点,为实际应用场景提供了强大的分析和决策支持能力
编程未来,从这里启航!解锁无限创意,让每一行代码都成为你通往成功的阶梯,帮助更多人欣赏与学习!
更多内容详见:
https://www.aspiringcode.comuid=2f3a8c82324141c48058d8e14f59b3ce
相关文章:

【论文复现】MSA+抑郁症模型总结(三)
📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀MSA抑郁症模型 热门研究领域:情感计算的横向发展1. 概述2. 论文地址3. 研究背景4. 主要贡献5. 模型结构和代码6. 数据集介绍7. 性…...

【软件测试】敏捷模型(Scrum模型)和V模型、W模型
敏捷模型 前面的那些模型以前非常流行,但现在开发人员在使用的时候会遇到各种问题。主要困难包括在项目开发期间处理来自客户的变更请求,以及合并这些变更所需要的高成本和时间。 在实际工作中,一款产品的功能是不断在变化的 所以为了克服这…...

【go从零单排】接口(interface)和多态(Polymorphism)
🌈Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 📗概念 在Go语言中,interface 是一种重要的类型,用于定义一组方法…...

SI5319C-C-GM,SiliconLabs芯科 SI5319C-C-GMR,时钟合成器/抖动清除器 封装 QFN-36 在售 20000PCS 23+
SI5319C-C-GM是SiliconLabs公司生产的时钟合成器和抖动清除器。它是一款高性能的时钟解决方案,可用于各种应用领域,包括通信、数据中心、消费电子等。 该器件采用了SiliconLabs独有的DSPLL技术,能够提供低抖动和高精度的时钟信号。它具有多个…...

使用批处理脚本批量删除Maven无效依赖
背景 在开发过程中,我们经常会遇到以下情况: 在pom.xml文件中错误地指定了依赖的名称。因为网络问题,某些依赖下载不完全。依赖版本号错误,导致下载的文件无法使用。 这些情况会导致Maven在本地仓库中留下一些无效的文件&#…...

腾讯cos对象存储,下行流量费贵,是否可以加入服务器减少费用,架构如何设计
腾讯云COS(Cloud Object Storage)对象存储服务提供了一种高效、安全、低成本的方式存储大量数据。然而,当涉及到外网下行流量时,确实会产生一定的费用,这可能会增加整体的成本。为了减少这些费用,可以通过以…...

【SAP】关于权限的继承
关于权限的父role和子role的权限继承,既可以 从子role主动去父role那里“取”。从父role“推”到子role 我自己之前一直用的是方法1,但由于子role很多,一个一个手工维护花了不少时间。 后来得知有方法2,特此测试。 我准备了父R…...

SpringBoot技术下的共享汽车运营平台
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理共享汽车管理系统的相关信息成为必然。开发…...

SwiftUI开发教程系列 - 第7章:数据流和状态管理
SwiftUI 的核心优势之一在于其声明式的数据绑定和状态管理系统,使得在多视图间传递和更新数据变得更加直观和高效。在本章中,我们将讨论如何使用 ObservedObject、EnvironmentObject、StateObject 等属性包装器进行复杂的数据管理,确保应用的…...

Ubuntu系统安装NVIDIA驱动、CUDA、PyTorch等GPU深度学习环境
学习目标: 在Ubuntu系统上安装CUDA、PyTorch等GPU深度学习环境,主要目标是为深入研究深度学习和深度强化学习提供高效的计算支持。通过构建GPU环境,计划掌握深度学习的基本概念和算法应用,提高模型训练效率,特别是在复…...

电子学会2024年3月青少年软件编程(图形化)等级考试试卷(三级)真题,含答案解析
我们今天分享的资料是:电子学会2024年3月青少年软件编程(图形化)等级考试试卷(三级)真题,含答案解析 电子学会 2024 年 3 月青少年软件编程(图形化)等级三级考试的主要考点包括但不限于以下内容: 理解变量的概念:能够新建变量,知道如何在舞台区显示或隐藏变量,理解…...

初学者指南:用例图——开启您的软件工程之旅
目录 背景: 基本组成: 关联(Assciation): 包含(Include): 扩展(Extend): 泛化(Inheritance): 完整银行…...

二叉树遍历/算法数据结构
六、树 6.1遍历算法 6.1.1前中后序 在做递归时,最重要是三步骤 确定递归函数的返回值和参数 确定终止条件 确定单层递归的逻辑 伪代码 void travel(cur, vec) {if (cur null) {return ;}vec.push(cur->middle, vec); // 递归中节点vec.push(cur->left, …...

C#字符串的不可变性:内存管理与线程安全的优势分析
在C#编程中,字符串(String)被设计为不可变对象,这意味着一旦创建字符串对象后,其内容是不可更改的。这种设计通过在每次修改字符串时创建一个新实例,而不是直接更改原有字符串实例,来实现不可变…...

【杂记】之语法学习第四课手写函数与结构体
函数 如同我们数学中学的 f(x) ax b ,函数就是把一个东西丢进去,然后进行类似的操作变化,最终得到的可以是一个数,也可能什么都得不到而只是进行一项操作。 如sqrt() , max() 和 swap() 这样的其实都是函数&#x…...

细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的另一种方法
目录 一、工程目的 1、目标 2、通讯协议及应对错误指令的处理目标 二、工程设置 三、程序改进 四、下载与调试 1、合规的指令 2、不以#开头,但以;结束,长度不限 3、以#开头,不以;结束,也不包含;,长…...

python使用turtle画图快速入门,轻松完成作业练习
turtle介绍 turtle是一个绘图库,可以通过编程进行绘图。其模拟了一个乌龟在屏幕上的运动过程。该库通常用于给青少年学习编程,当然,也可以使用其进行作图。 在一些学校中,可能在python学习的课程中,要求完成turtle绘…...

【C++】新手入门指南
> 🍃 本系列为初阶C的内容,如果感兴趣,欢迎订阅🚩 > 🎊个人主页:[小编的个人主页])小编的个人主页 > 🎀 🎉欢迎大家点赞👍收藏⭐文章 > ✌️ 🤞 …...

C++使用开源ConcurrentQueue库处理自定义业务数据类
ConcurrentQueue开源库介绍 ConcurrentQueue是一个高性能的、线程安全的并发队列库。它旨在提供高效、无锁的数据结构,适用于多线程环境中的数据交换。concurrentqueue 支持多个生产者和多个消费者,并且提供了多种配置选项来优化性能和内存使用。 Conc…...

在vue3的vite网络请求报错 [vite] http proxy error:
在开发的过程中 代理proxy报错: [vite] http proxy error: /ranking/hostRank?dateType1 Error: connect ETIMEDOUT 43.xxx.xxx.xxx:443 网络请求是http的: // vite.config.ts import { Agent } from node:http;server: {host: 0.0.0.0,port: port,open: true,https: false,…...

ElasticSearch 简单的查询。查询存在该字段的资源,更新,统计
1.查询存在该字段的数据 {"query": {"bool": {"must": [{"exists": { "field": "chainCode"}}],"must_not": {"exists": {"field": "isDelete"}}}} } 备注:…...

FOFA使用教程之从零到精通
FOFA使用教程之从零到精通 前言一、关于网络资产测绘的概念1、啥是网络空间资产测绘2、啥是互联网资产二、FOFA的简要介绍1、FOFA地址是啥?2、关于FOFA的简要介绍三、FOFA精讲1、运算符规则详解① 关于 = 号的使用说明② 关于 == 号的使用说明③ 关于 && 号的使用说明…...

【提高篇】3.2 GPIO(二,基本结构)
目录 一,GPIO的基本结构 二,保护二极管 三,上拉、下拉电阻 四,施密特触发器 五,P-MOS 管和 N-MOS 管 P-MOS管和N-MOS管的区别 六,片上外设 七,IDR,ODR,BSRR寄存器 7.1 IDR(Input Data Register) 7.2 ODR(Output Data Register) 7.3 BSRR(Bit Set/Rese…...

UE hard/soft reference| DDX DDY | Unity pcg color
目录 1.虚幻引擎性能优化 (附0跳转Unity对应机制) hard reference and soft reference 1. 硬引用(Hard Reference) 2. 软引用(Soft Reference) 3. 使用原则 2.空间梯度转法线 DDX DDY节点 编辑 …...

macOS 应用公证指南:使用 fastlane 实现自动化公证流程
背景介绍 在 macOS 系统上,为了保护用户安全,Apple 要求开发者对未通过 Mac App Store 分发的应用程序进行公证(Notarization)。如果应用程序没有经过公证,用户在运行时会看到警告弹窗,这会影响用户体验。虽然开启沙箱模式的应用可以直接通过 App Store 分发来避免这个问题…...

深度学习:解密图像、音频和视频数据的“理解”之道20241105
🔍 深度学习:解密图像、音频和视频数据的“理解”之道 深度学习已然成为人工智能领域的中流砥柱,它如何处理不同类型的数据(如图像、音频、视频)?如何将这些数据转换成计算机能理解和学习的“语言”&#…...

uniapp 实现瀑布流
效果演示 组件下载 瀑布流布局-waterfall - DCloud 插件市场...

计算机毕业设计 | springboot+vue智慧工地管理系统 前后端分离后台管理(附源码+文档)
1,项目介绍 管理信息是重要的资源、管理信息是决策的基础。同时管理信息是实施管理控制的依据以及是联系组织内外的纽带。对于企业,最重要的5大资源包括人、物资、能源、资金、信息。人、物资、能源、资金是可以看见的有形资源,信息则是一种…...

vue中html如何转成pdf下载,pdf转base64,忽略某个元素渲染在pdf中,方法封装
一、下载 html2Canvas jspdf npm install jspdf html2canvas二、封装转换下载方法 htmlToPdf.js import html2Canvas from html2canvas import JsPDF from jspdf/*** param {*} reportName 下载时候的标题* param {*} isDownload 是否下载默认为下载,传false不…...

Ubuntu下如何管理多个ssh密钥
Ubuntu下如何管理多个ssh密钥 前言 我一直在逃避这个问题,误以为我能够单纯地用一个 ssh 走天下。 好吧,现实是我不得不管理多个 ssh 做,那就写个博客总结一下吧。 查阅后发现前人已经总结了不少,那我就结合之后ÿ…...