【TFR-Net】基于transformer的鲁棒多模态情感分析特征重构网络

代码地址:TFR-Net/models at main · thuiar/TFR-Net · GitHub

abstract:

提高对数据缺失的鲁棒性已经成为多模态情感分析(MSA)的核心挑战之一,MSA旨在从语言、视觉和声学信号中判断说话者的情感。在目前的研究中,针对不完全模态特征的MSA,提出了基于平移的方法和张量正则化方法。然而,这两种方法都无法解决非对齐序列中缺失的随机模态特征。为了提高模型对非对齐模态序列随机缺失的鲁棒性,提出了一种基于变压器的特征重构网络(TFR-Net)。

  • 首先,采用基于模态内和模态间注意的提取器学习模态序列中每个元素的鲁棒表示。
  • 然后,提出一个重构模块来生成缺失的模态特征。
  • 在生成序列和完整序列之间的SmoothL1Loss监督下,TFR-Net有望学习缺失特征对应的语义级特征。

在两个公共基准数据集上的大量实验表明,我们的模型在各种缺失模态组合和不同缺失程度的数据缺失方面取得了良好的效果。

intro:


随着用户生成的在线内容的丰富,MSA最近成为自然语言处理(NLP)中的一个活跃领域[16,20]。利用人工对齐的完整信息,包括文本语言、音频和视觉,前人的工作在MSA任务上取得了显著的进步。然而,用户生成的视频通常并不完美。首先,不同模式的受体可能有不同的接收频率,这导致了不对齐的性质。其次,许多不可避免的因素,如用户生成视频中的损坏的噪声或传感器故障,都可能导致模态特征提取器失效。

Q:intro说的是数据集本身的缺陷,但是方法部分却拿数据集提取出的特征当做完整模态的特征,另外模拟缺失模态特征,这两点矛盾吗?

A:论文的intro部分提到的模态缺失不是人为设计的,而是数据采集时由于设备或者环境问题导致的自然缺失。自然的缺失反映了数据的真实不完美性,是模型必须解决的真实问题,人为模拟是一种训练策略,用于确保模型在可能的模态缺失场景下保持稳定的性能。



在上述情况下,需要一个可以处理随机模态特征缺失(RMFM)的模型。因此,在MSA中构建能够处理RMFM的模型仍然是一个开放的研究。基于RMFM的MSA的核心挑战在于不完全模态序列的稀疏语义,导致难以提取鲁棒模态表示。据我们所知,目前的工作并没有致力于重建情态序列中缺失的语义。相反,他们直接使用缺失惩罚的不完整模态序列来学习关节融合表示。然而,由于缺乏在语义信息缺失的序列中,改进是有限的。

编码器-解码器框架最早是作为神经机器翻译(NMT)中的序列对序列方法提出的[5],并很快适应了许多多模态翻译任务,如图像/视频字幕[18,25]和视觉问答[4]。在目前的研究中,该框架也被用于多模态表示学习,因为它能够从源序列和目标序列中生成捕获共享语义的隐藏表示[9]。在它的激励下,我们形成了一个编码器-解码器框架来重现缺失元素的语义

具体来说,编码器不完整的模态序列为输入,通过模态间和跨模态注意机制提取模态序列的语义。所提出的解码器试图将丰富的序列表示投影到输入空间中。通过最小化生成序列与完整模态序列之间的重构损失,该模型学习从不完整模态序列中提取语义。此外,我们利用后期融合策略对丰富的情态序列进行融合并进行情感预测。

简而言之,我们的工作贡献可以总结如下:

  • 据我们所知,本文首次针对非对齐模态序列中随机缺失的多模态情感分析任务,提出了一个完整合理的评价模型来评价多模态不完整数据的鲁棒性。
  • 提出了一种基于编码器-解码器框架的模态特征提取方法,用于生成语义缺失部分的序列特征。
  • 该模型在基准多模态情感分类数据集的实验中表现良好。从实验结果可以看出,TFR-Net是一个通用的框架,可以灵活地处理各种形式和不同程度的不对齐特征的不完全性。

related work:

在这一部分中,我们主要介绍了本文的相关工作。

首先对传统的非对齐MSA模型和考虑了模态缺失问题的MSA模型进行了说明。接下来,我们将简要介绍转换器和Bert语言模型,通过它们,我们提出的模型可以更有效。最后,介绍了处理各种不完全数据的生成模型。

MSA的目的是从视频、音频和文本中预测人们的情绪。MFN[30]和EF-LSTM[27]等模型可以处理对齐的多模态数据,这意味着音频和视觉的帧与文本模态中的单词具有明确的对应关系。为了处理更实际的场景,MSA模型正逐步扩展到非对齐多模态数据输入领域。TFN[29]和LMF[13]使用基于张量的方法获得话语的联合表示。MulT[22]利用跨模态变压器处理未对齐的多模态数据。MISA[10]学习每个模态的模态不变和特定表示,以改进融合过程。然而,在这些模型中,不存在对缺失的多模态数据的额外处理。

为了解决MSA中的数据缺失问题,MSA中已经有了一些研究工作。MCTN[17]使用模态之间的循环转换,仅通过一个模态生成其他模态。因此,鲁棒联合表示可以被学习。T2FN[12]通过监督张量秩正则化下表征的学习,在缺失任务中获得了更好的性能。然而,T2FN需要一致的输入。我们提出的模型可以作为更接近真实情况的更广泛应用场景的MSA模型。当没有任何模态缺失时,所提出的模型与其他传统的MSA模型一样工作。

Transformer[23]和BERT略过

生成网络通过训练数据学习样本和标签的联合概率分布。因此,训练后的模型可以生成符合样本分布的新数据。

典型的生成网络包括生成对抗网络(GAN)[8]和变分自编码器[11]。对于模态缺失问题,一组方法[2,3,19,26]利用GAN或其变体,包括cGAN[15]和cycleGAN[33]来生成缺失模态数据。CRA[21]采用层叠去噪自编码器[24]改编的级联残差自编码器来计算残差并重建损坏的多模态数据序列。

然而,基于生成模型的方法通常应用范围很窄,因为一个生成器只能从另一个特定模态生成一个特定模态,因此只遗漏了样本的一个特定模态。我们提出的模型也不同于旨在为下游工作输入完整样本的自编码器。与缺失数据的生成相比,更好的特征提取方法在MSA任务中也很重要。我们提出的模型就像一个去噪的自编码器,其结构类似于CRA,但解码器执行监督有效表征学习的任务,而最终目的仍然是情绪预测。

method:

在本节中,我们描述了通过模态重建来学习针对缺失模态的鲁棒表示的方法。TFR-Net可分为三个子模块:模态特征提取模块(第3.2节)、模态重构模块(第3.3节)和融合模块(第3.4节)。总体框架如图2所示。

 

任务设置:

我们的目标是通过利用不完整的多模态信号来判断视频中的情绪。对于每个视频剪辑,涉及文本(t),音频(a),视觉(v)中随机缺失的三个低级特征序列。这些表示为,所提出的模型以𝑈‘𝑡,𝑈’𝑎,𝑈'𝑣作为输入,输出一个情感强度结果。在训练阶段,使用完整的情态特征和特征缺失位置来指导表征学习。

Q1:缺失模态和完整模态怎么来的?

A1:训练阶段的输入数据就是完整模态,也就是文本、音频和视觉的完整数据,这些完整模态特征用于训练模型。

至于缺失模态,是模拟来的,为了让模型具备相应的缺失模态的能力,训练过程中会故意模拟模态缺失的情况,在experimental setting部分提到,他们通过随机替换序列中的某些模态来模拟实际情况下不完整的数据输入。这些模态值被替换为特殊的标记(例如UNK用于文本缺失,零填充用于其他模态),以模拟模态缺失的情况。

此外,文章中也提到“missing proportion”,也就是模态缺失比例,这个比例在训练、验证和测试阶段是相同的。通过设置不同的缺失比例,作者测试了模型在应对不同缺失程度情况下的鲁棒性。


Q2:特征缺失位置是什么?是怎么实现的?

A2:特征缺失位置指的是输入数据中哪些部分(哪些模态或模态中哪些具体特征)是缺失的,这个信息通过一个缺失标记矩阵(Missing Mask,M')来表示。缺失标记矩阵 M′ 用于标记输入模态的特征哪些是存在的,哪些是缺失的。矩阵中的每个元素是0或1,0表示缺失,1表示存在。在重建模块(Reconstruction Module)中,模型需要知道具体哪些模态缺失,才能尝试通过其他模态的特征来重建这些缺失部分。标记矩阵 M′ 作为指导信息,确保模型知道如何聚焦于现有特征来生成缺失部分。在训练时,模型会利用缺失位置标记,来计算生成特征和完整特征之间的SmoothL1Loss,从而不断调整模型的参数,使得重建的特征尽可能接近真实特征。

至于M'的实现,首先在训练过程中,模型会随机选择部分输入模态来设定为缺失,这个过程可以通过编程随机化的方式进行,具体是根据某个缺失概率来决定每个输入样本中哪些模态缺失。这些缺失模态的信息会被记录到缺失标记矩阵M'中,矩阵中的每个元素为0或1,这个矩阵在训练时作为掩码使用,直到模型如何对缺失部分进行重建。同时重建损失的计算也会参考这个矩阵,使得只有哪些标记为0的部分才参与到损失计算中。

模态特征提取:

模态特征提取模块首先用一维卷积层对不完整模态序列进行处理,保证输入序列的每个元素都知道它的邻居元素。

其中是模式𝑡,𝑎,𝑣的卷积核的大小,d是一个公共维度。然后,我们用位置嵌入(PE)增强卷积序列,然后使用模态内和模态间变压器来捕获输入序列的每个时间步的模态动态。利用注意机制从另一个序列𝐻𝑗中提取一个序列𝐻i的信息,对这些序列使用变压器编码器结构。查询、键和值是转换器编码器的输入。查询的来源是𝐻i,而键和值的来源应该是𝐻𝑗。因此,变压器编码器可以表示为transformer(𝐻i,𝐻𝑗,𝐻𝑗)。

 

最后,我们将获得的所有潜在特征与所有模内和模间变压器连接起来作为增强的序列特征输出

 

 其中𝑚∈{𝑡,𝑎,𝑣}和𝑛1,𝑛2表示除𝑚之外的另外两种模态。期望增强序列能够利用模态之间的互补性提取缺失模态特征的有效表示。此外,这种包含跨模态相互作用的增强模态序列可以被视为模型级融合结果。

 模态重建模块:

基于从提取的模态序列中重建完整的模态序列可以引导提取器模块学习缺失部分的语义,我们提出了一个模态重构模块。对于每种模态,首先在特征维度上建立自注意机制,捕捉提取的特征之间的相互作用。

其中𝑚∈{𝑡,𝑎,𝑣}和𝐻∗𝑚被重新降级为转换后的序列特征。然后进行线性变换,将提取的特征映射到输入空间。

其中𝑚∈{𝑡,𝑎,𝑣},𝑊𝑚,𝑏𝑚为线性层的参数

对于监督,利用原始和生成器之间在缺失元素上的SmoothL1Loss(·)作为生成损失L𝑚𝑔来利用缺失重建的效果。

其中𝑚∈{𝑡,𝑎,𝑣},𝑀'是缺失的掩码,表示输入模态序列中缺失的位置。

Q:怎么理解这个SmoothL1Loss函数?

A:Smooth L1 Loss是一种常用于回归任务的损失函数,其特点是结合了均方误差(MSE)和绝对误差(MAE)的优点,能够平衡它们之间的不足。Smooth L1 Loss 可以对大误差更加鲁棒,而对小误差更加精确。

对误差|x - y|较大时,损失函数转变为类似MAE的形式,使得它对误差更加不敏感,减少了对异常值的影响,防止梯度爆炸。

当误差|x−y|较小时,损失函数表现为类似 MSE 的形式,能够更加精确地对误差进行惩罚,使得损失对小误差进行更严格的优化。

在TFR-Net中,Smooth L1 Loss 用于度量重建特征真实特征之间的差距,指导模型学习如何更好地补全缺失的模态特征。

:是由重建模块生成的缺失模态特征的估计

:这是真实的模态特征,从完整的数据集中获得

:这是一个缺失标记矩阵,用于指示输入中哪些特征是缺失的

:是逐元素相乘的操作,这里M'作用在上,M' = 1的部分意味着该位置的特征是存在的,因此相乘后保留这些位置的特征。M' = 0的部分意味着该位置的特征是缺失的,相乘后会忽略这些位置的特征。所以SmoothL1Loss中计算的其实是存在的部分(M' = 1)的特征,通过这种做法,模型在重建缺失特征时可以学到如何尽量接近那些存在的特征的分布和模式。

融合模块:

在重建损失的指导下,利用互补模态信息增强不完整模态序列,将它们融合成一个联合向量进行情感预测。提出的CNN门编码器分别对增强模态序列𝐻𝑚进行编码。

CNN Gate Encoder: 

首先对提取的模态序列进行双向GRU层处理,然后是𝑡𝑎𝑛h激活函数进行处理,得到更新后的表示

卷积门组件被设计为进一步编码

具体来说,一维卷积网络(CNN)在输入上滑动一个窗口大小为𝑘的卷积核,以获得序列中每个元素的标量值。填充策略用于确保𝐻"𝑚和𝑔具有相同的序列长度:

 

在𝑚∈{𝑡、𝑎𝑣},和𝐶𝑜𝑛𝑣1𝑑(·)是一种一维卷积操作。𝑔被视为缩放表示的门,过滤掉话语中不相关的上下文信息:

 

这里⊗表示元素相关产物。

此外,还将表示和最初提取的序列连接起来。然后使用全连接层去控制最终的字级表示维:

最后,利用最大池化操作来关注话语中具有更显著影响的特征,最终的情态表示𝑈∗𝑚定义如下:

其中,𝑚表示模态的隐藏维度

将三种情态表示的连接作为融合结果,并将其输入到一个简单的分类器中,从而对情感强度进行最终预测。

其中BN是BatchNorm操作,而LeakyReLu被用作激活

Q:reconstruction module是如何影响fusion module的?

A:reconstruction module并不直接参与情感分类的计算,但他通过影响特征的质量来间接提升分类性能。它的作用主要用于重建缺失模态特征,虽然它不直接参与分类,但它通过其重建损失来影响特征提取模块,提升特征的表达能力,从而间接提升分类的性能。

 模型训练:

我们以L1Loss作为情绪强度预测的基本优化目标。随着重建损失,模型的整体学习通过最小化:

其中,是决定每个模态重构损失对总损失贡献的权重,

这些分量损失中的每一个都负责每个模态子空间中的表示学习。

Q:损失函数怎么理解?

A:这一项其实是情感分类损失,是模型预测情感与真实情感之间的误差进行最小化,虽然论文没有明确提到,但是从损失函数的整体可以看到,L1损失对情感分析的监督,重建损失则用于对提升模型在特征补全上的表现。两者共同作用构成了模型的损失函数。

experiment:

数据集用的SIMS和MOSI

特征提取:

文本用Bert提取出,dt=768

对于音频特征提取,MOSI数据集使用COVAREP声学框架[6],SIMS数据集使用LibROSA[14]。特征维度𝑑𝑎对于MOSI是5,对于SIMS数据集是33。

MOSI使用Facet1提取面部表情特征。对于SIMS,首先使用MTCNN人脸检测算法[32]提取对齐后的人脸,然后使用MultiComp OpenFace2.0工具包提取人脸特征[1]。特征尺寸𝑑𝑣对于MOSI是20,对于SIMS是709。

baseline:

在三种基线方法上进行了实验,并对我们提出的模型进行了验证。所有方法都可以在未对齐的多模态数据集上工作。

TFN。张量融合网络(Tensor Fusion Network, TFN)[29]利用张量融合层,利用笛卡尔积形成特征向量。因此,三种模式的信息可以融合来预测情绪。

MulT。多模态转换器(Multimodal transformer, MulT)[22]使用一种跨模态注意机制来捕捉不同模态之间的关系。这些交互可以在未对齐的多模态数据集上获得更好的性能。

MISA。该方法通过将样本的每个模态投影到两个子空间中来学习模态不变和特定表示[10]。这种有效的特征提取方法提高了模型在MSA任务中的性能。

experimental setting:

建立了具有缺失值的多模态数据集。采用序列中缺失值的随机替换来模拟不完全多模态数据的场景。文本模态数据的缺失值为[UNK],其他模态数据的缺失值为零填充向量。每种模态的缺失比例需要提前指定,并且训练、验证和测试数据集之间的缺失比例相同。

对于我们提出的模型,超参数包括卷积核大小、注意力缺失、变压器头、融合特征向量的维度以及三种模式的生成损失权重。这些参数针对有效集上的不同数据集进行了很好的调优。使用Adam优化器进行学习,MOSI数据集的学习率为0.002,SIMS数据集的学习率为0.001。

在MOSI和SIMS数据集中使用三种不同的随机种子进行实验。

结果中评价指标为3项的平均值。

评价指标:

为了与基线进行综合比较,记录MOSI和SIMS测试集上的二元分类准确率(Acc-2)、五类分类准确率(Acc-5)、平均绝对误差(MAE)和Pearson相关系数(Corr)关于缺失率增加的情况。根据最近的研究[10,22],二元分类精度(Acc-2)是通过更准确的负/正类公式来计算的,其中对< 0和> 0的情绪得分分别分配负和正类。此外,我们计算了每个度量序列的指标下面积折线图(AUILC)值,以定量评估处理不完全模态输入的整体性能。

AUILC值定义如下:

给定模型评价结果序列𝑋={𝑥0,𝑥1,···,xt}缺失率{𝑟0,𝑟1,···,𝑟𝑡},则指标下面积折线图(AUILC)定义为:

对于上述所有指标,更高的值表示更强的性能,除了MAE,更低的值表示更强的性能。

 result:

本节对我们的实验结果进行了详细的分析和讨论.

不同缺失率下的模型稳健性

我们首先研究了随机模态缺失率增加时TFR-Net的鲁棒性。在训练和测试期间,在每个模式中引入相同水平的缺失率,missing_rate∈{0.0,0.1,···,1.0}作为参数。下面的实验采用随机丢弃策略,即每个条目独立丢弃,概率为𝑝∈𝑚i𝑠𝑠𝑛𝑔_𝑟𝑎𝑡𝑒。

详细的缺失构造方法已在第expertiment中描述。

问题1:与现有的多模态情感分析方法相比,TFR-Net的表现如何?

首先给出了模型性能曲线,直观地评价了模型的有效性。如图3所示,在MOSI数据集上,TFR-Net在所有缺失率𝑝∈{0.0,0.1···,1.0}的大多数评估指标上都超过了基线方法。而在SIMS数据集上,如图4所示,TFR-Net在低缺失率(𝑝∈{0.0,0.1,···,0.5})下的性能更好。在缺失率较高的情况下(𝑝∈{0.6,0.7,···,1.0}),所有模型表现相似,最终收敛到一个稳定值。我们将这种现象归因于数据集中的标签偏差。根据表1中每个数据集的正样本和负样本的统计,我们发现SIMS数据集存在明显的标签偏差。由于标签偏差,用有效集中的平均情绪强度进行预测的平凡模型表现得足够好。

随着缺失率的增加,模型难以击败缺乏信息的训练数据模型,最终退化为琐碎的模型。

除折线图外,还计算了AUILC值,以定量评价所提出的模型。我们在MOSI数据集上记录整个区间𝑝∈{0.0,0.1···,1.0}的AUILC值,在SIMS数据集上记录部分区间𝑝∈{0.0,0.1···,0.5}的AUILC值作为较高𝑝的不可区分结果。从表2中,定量结果进一步验证了TFR-Net在两个数据集上对各种模态缺失率的鲁棒性。

基于MOSI和SIMS数据集的AUILC结果与基线模型的比较。MOSI数据集上的结果用全缺失率区间𝑝∈{0.0,0.1,···,1.0}计算,SIMS数据集上的结果用部分缺失率区间𝑝∈{0.0,0.1,···,0.5}计算。

 

模态缺失组合的模型鲁棒性

我们的下一个实验侧重于TFR-Net对不同模态缺失组合的鲁棒性。我们使用TFR-Net在完全丢弃不同模态组合的情况下(missing_rate 𝑝= 1.0)对MOSI数据集进行了实验。

问题2:TFR-Net在测试过程中对不同模态缺失组合的表现如何?

实验结果收集见表3。对于单模态输入实验,我们看到TFR-Net在保持文本模态时保持了相当的性能,而音频输入和视觉输入的TFR-Net则失败了。对于双模态输入,文本模态和视觉模态表现最好,甚至比三模态输入获得更好的MAE和Corr。根据以上结果,我们可以总结出,文本情态包含更多的语义,在缺失语义重建和情感预测中发挥着重要作用。而在输入音频和视觉特征的情况下,模型很难重构文本模态中存在的语义。

消融实验:

最后,在MOSI数据集上进行了烧蚀实验。

我们分别测试了模态内注意模块、生成模块、CNN门模块的贡献。无模态内注意力的模型用w/o a表示,不含生成模块的模型用w/o g表示,不含CNN栅极模块的模型用w/o c表示。从表4可以看出,去掉TFR-Net中的任意一个模块都会导致模型性能下降。其中,去掉模态内注意模块对模型性能影响最大,导致二值分类准确率AUILC值下降2%。而作为附加监督的生成模块对模型性能的影响相对较小。为了进一步分析生成模块的有效性,我们说明了在训练和验证期间生成损失和预测损失的趋势。

图5显示了生成的三种模态的SmoothL1Loss的趋势和情绪预测的回归损失。在MOSI数据集上跟踪TFR-Net训练过程中的损失值,三种模式的缺失率分别为(0.3,0.3,0.3)。如图5所示,在整个训练过程中,训练集和验证集的损失值都呈下降趋势。生成损失和预测损失可以收敛在一起。这证明了该模型在学习能够重构完整多模态数据特征的表征的同时,可以获得更好的情感分析结果。

上述消融研究的结果验证了所提出的模块在提高模型对模态缺失的鲁棒性方面的有效性。

在本文中,我们强调提高模型对MSA任务模态不完备性的鲁棒性,并设计了基于变压器的特征重构网络(TFR-Net),这是一种通用框架,可以灵活地处理各种模态组合和不同程度的不连续特征的不完备性。TFR-Net的核心是特征重构模块,该模块指导提取器获取缺失模态特征的语义。在两个基准MSA数据集上的实验结果表明,我们的模型在不同模式和不同程度的不对齐特征不完备情况下都取得了良好的结果。

我们还发现当前的模型性能受到标签偏差问题的限制。在未来的工作中,我们将引入数据增强方法来处理数据偏差,并通过实时用户生成的视频输入进一步创新我们的模型。

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

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

相关文章

HBuilder X 中Vue.js基础使用->计算属性的应用(三)

一、通过简单的计算属性&#xff1a;对两数进行加法&#xff0c;减法&#xff0c;乘法&#xff0c;除法运算 <template><div><h1>computed 计算属性</h1><el-input type"text" v-model"numOne" /> <el-input type"t…

D49【python 接口自动化学习】- python基础之类

day49 类的常见错误 学习日期&#xff1a;20241026 学习目标&#xff1a;类 -- 63 避坑指南&#xff1a;类的常见错误 学习笔记&#xff1a; 语法错误 设计错误 总结 self 是刚开始学习面向对象编程时&#xff0c;最容易忽略的语法编写多个类时&#xff0c;解决依赖关系是…

51单片机快速入门之 AD(模数) DA(数模) 转换 2024/10/25

51单片机快速入门之 AD(模数) DA(数模) 转换 2024/10/25 声明:本文图片来源于网络 A模拟信号特点: 电压或者电流 缓慢上升 随着时间连续缓慢上升或下降 D数字信号特点:电压或者电流 保持一段时间的高/低电平 状态 / 突变 (高电压瞬间低电压) 数字电路中 通常将0-1v电压称…

Segugio:一款针对恶意软件的进程执行跟踪与安全分析工具

关于Segugio Segugio是一款功能强大的恶意软件安全分析工具&#xff0c;该工具允许我们轻松分析恶意软件执行的关键步骤&#xff0c;并对其进行跟踪分析和安全审计。 Segugio允许执行和跟踪恶意软件感染过程中的关键步骤&#xff0c;其中包括从点击第一阶段到提取恶意软件的最…

STM32Lx GXHT3x SHT3x iic 驱动开发应用详解

简介 项目开发过程中&#xff0c;采用STM32L151 为主控芯片进行设计&#xff0c;并外接GXHT3x进行温湿度数据采集。这里MCU采用片上IIC与GXHT3x进行数据交互&#xff0c;本文详细记录了开发过程&#xff0c;为今后的项目提供参考&#xff0c;加速项目开发进度。 硬件设计 相…

【WebGis开发 - Cesium】三维可视化项目教程---图层管理拓展图层顺序调整功能

目录 引言一、为什么要开发图层顺序调整功能二、开发思路整理1. 拖拽库方案选择2. cesium图层api查询 三、代码编写1. 编写拖拽组件代码2. 修改原有图层管理代码2.1 图层加载移除的调整2.2 图层顺序与拖拽列表的矛盾 3. 编写图层移动代码 四、总结 引言 本教程主要是围绕Cesium…

Linux-Centos操作系统备份及还原(整机镜像制作与还原)--再生龙

适用场景 Linux系统设备需要备份整机数据&#xff0c;或者需要还原到多台设备上。适用再生龙工具进行整机备用和还原。 镜像制作 下载再生龙镜像&#xff1a;clonezilla-live-2.6.4-10-amd64.iso&#xff0c;制作启动盘-设置U盘启动 启动后界面如下选择第四项other modes of…

使用Python来下一场深夜雪

效果图&#xff1a;&#xff08;真实情况是动态的&#xff09; 完整代码&#xff1a; import turtle import random# 初始化画布 turtle.bgcolor("#001f3f") # 偏深蓝色的背景 turtle.title("下雪的画面") turtle.speed(0) turtle.hideturtle() turtle.t…

steam新品节!GameViewr远程随时随地手机平板玩主机游戏教程

Steam平台在10月14日迎来了新品节&#xff0c;你可以尝试即将推出的游戏的免费试用版&#xff0c;将他们加入愿望单&#xff0c;像是《迷失之径》《贪婪大地》《疯狂手机大亨》等等。不知道大家是否已经选择好自己心怡的游戏呢&#xff1f;要是你想随时随地体验steam新品节的游…

WebStorm EsLint报红色波浪线

如图左侧。 这个错误是由于 ESLint 和 Prettier 的配置不一致导致的。它建议你移除多余的空格。以下是一些解决方法&#xff1a; 安装 Prettier 插件&#xff1a; 确保你在 WebStorm 中安装了 Prettier 插件&#xff0c;并确保它配置正确。 调整 ESLint 配置&#xff1a; 检查…

10340 文本编辑器(vim)

经验值&#xff1a;1600 时间限制&#xff1a;1000毫秒 内存限制&#xff1a;512MB 经开区2023年信息学竞赛试题 不许抄袭&#xff0c;一旦发现&#xff0c;直接清空经验&#xff01; 题目描述 Description 李明正在学习使用文本编辑器软件 Vim。与 Word、VSCode 等常用的…

qt QNetworkProxy详解

一、概述 QNetworkProxy通过设置代理类型、主机、端口和认证信息&#xff0c;可以使应用程序的所有网络请求通过代理服务器进行。它支持为Qt网络类&#xff08;如QAbstractSocket、QTcpSocket、QUdpSocket、QTcpServer、QNetworkAccessManager等&#xff09;配置网络层代理支持…

arthas使用 笔记

下载启动 curl -O https://arthas.aliyun.com/arthas-boot.jarjava -jar arthas-boot.jar基本命令使用 JVM相关命令 Dashboard - 仪表盘 用途&#xff1a;查看当前Java应用的实时性能面板&#xff0c;包括CPU、线程、内存使用情况等。场景&#xff1a;快速概览系统整体健康…

【JAVA】第三张_Eclipse下载、安装、汉化

简介 Eclipse是一种流行的集成开发环境&#xff08;IDE&#xff09;&#xff0c;可用于开发各种编程语言&#xff0c;包括Java、C、Python等。它最初由IBM公司开发&#xff0c;后来被Eclipse Foundation接手并成为一个开源项目。 Eclipse提供了一个功能强大的开发平台&#x…

JavaWeb——Maven(5/8):依赖管理-依赖配置(Maven 项目中的依赖配置、访问仓库网站、配置依赖的注意事项)

目录 依赖配置 Maven 项目中的依赖配置 访问仓库网站 配置依赖的注意事项 接下来&#xff0c;我们了解 Maven 当中的第三方依赖管理。 Maven 第三方依赖管理的重要性 依赖管理是 Maven 这款工具最核心的功能。在依赖管理这部分&#xff0c;我们主要讲解四个方面&#xff…

uniapp一键打包

1.先安装python环境&#xff0c; 2.复制这几个文件到uniapp项目里面 3.修改自己证书路径&#xff0c;配置文件路径什么的 4.在文件夹页面双击buildController.py或者cmd直接输入buildController.py 5.python报错&#xff0c;哪个依赖缺少安装哪个依赖 6.执行不动的话&…

语音提示器-WT3000A离在线TTS方案-打破语种限制/AI对话多功能支持

前言&#xff1a; TTS&#xff08;Text To Speech &#xff09;技术作为智能语音领域的重要组成部分&#xff0c;能够将文本信息转化为逼真的语音输出&#xff0c;为各类硬件设备提供便捷的语音提示服务。本方案正是基于唯创知音的离在线TTS&#xff08;离线本地音乐播放与在线…

STM32--基于STM32F103C8T6的OV7670摄像头显示

本文介绍基于STM32F103C8T6实现的OV7670摄像头显示设计&#xff08;完整资源及代码见文末链接&#xff09; 一、简介 本文实现的功能&#xff1a;基于STM32F103C8T6实现的OV7670摄像头模组实时在2.2寸TFT彩屏上显示出来 所需硬件&#xff1a; STM32F103C8T6最小系统板、OV76…

HivisionIDPhoto Docker部署以及Springboot接口对接(AI证件照制作)

项目简介 项目以及官方文档地址 HivisionIDPhoto 旨在开发一种实用、系统性的证件照智能制作算法。 它利用一套完善的AI模型工作流程&#xff0c;实现对多种用户拍照场景的识别、抠图与证件照生成。 HivisionIDPhoto 可以做到&#xff1a; 轻量级抠图&#xff08;纯离线&a…

Mysql主主互备配置

在现有运行的mysql环境下&#xff0c;修改相关配置项&#xff0c;完成主主互备模式的部署。 下面的配置说明中设置的mysql互备对应服务器IP为&#xff1a; 192.168.1.6 192.168.1.7 先检查UUID 在mysql的数据目录下&#xff0c;检查主备mysql的uuid&#xff08;如下的server-…