TIM: A Time Interval Machine for Audio-Visual Action Recognition

标题:TIM:一种用于视听动作识别的时间间隔机器

源文链接:openaccess.thecvf.com/content/CVPR2024/papers/Chalk_TIM_A_Time_Interval_Machine_for_Audio-Visual_Action_Recognition_CVPR_2024_paper.pdficon-default.png?t=N7T8https://openaccess.thecvf.com/content/CVPR2024/papers/Chalk_TIM_A_Time_Interval_Machine_for_Audio-Visual_Action_Recognition_CVPR_2024_paper.pdf

源码链接:https://github.com/JacobChalk/TIMicon-default.png?t=N7T8https://github.com/JacobChalk/TIM

发表:CVPR-2024

摘要 

长时间的视频中,各种动作会产生丰富的视听信号。最近的研究表明,音频和视频这两种模态的事件时间长度和标签各不相同。我们通过明确建模音频和视觉事件的时间长度来解决长时间视频中两种模态之间的相互作用。我们提出了时间间隔机器(TIM),其中特定模态的时间间隔被用作查询,输入到一个处理长视频输入的转换器编码器。然后,编码器关注于指定的时间间隔,以及两种模态中的周围上下文,以识别正在进行的动作。

我们在三个长视听视频数据集上测试了TIM:EPIC-KITCHENS、Perception Test和AVE,报告了识别方面的最新技术(SOTA)。在EPIC-KITCHENS上,我们击败了之前利用大型语言模型(LLMs)和显著更大预训练量的SOTA,将顶级动作识别准确率提高了2.9%。此外,我们还展示了TIM可以通过使用密集多尺度间隔查询来适应动作检测,在EPIC-KITCHENS-100上大多数指标都超过了SOTA,并在Perception Test上表现出强大的性能。我们的消融实验表明,整合两种模态并建模它们的时间间隔在实现这种性能中起着关键作用。代码和模型可在以下网址获取:https://github.com/JacobChalk/TIM。

1. 简介

长视频展现出了一系列快速连续的听觉和视觉事件。最新的尝试分别在这些模态中标注事件[15, 30],展示了两种模态之间的时间长度和类标签都有所不同。然而,这些事件仍然保持相关——识别两种模态中时间上接近的事件可以改善视觉和音频中的动作识别。

此外,迄今为止的大多数方法通常仅利用动作的精确时间长度;一个精确裁剪的动作片段被输入到基于卷积[5, 8, 39]或基于转换器[1, 11, 22]的主干网络中,该网络预测正在进行的动作。即使当利用周围上下文来改善动作识别时[18, 31, 42],这种上下文也是以相邻动作的精确片段形式提供的,而不是未裁剪的长输入视频。在本文中,我们提出了一种方法,该方法编码长视频输入中视觉和听觉流中发生的多个事件。我们通过将时间间隔提升为首要元素来实现这一点,利用它们来指定伴随模态中的查询。我们将这种机制称为时间间隔机器(TIM)。它能够接收长视频输入,并输出被查询模态的查询区间内发生的动作

图1. 时间区间机器(TIM):顶部:给定视觉和听觉流输入,特定时间区间的正在进行的动作由指定该区间开始和结束时间的查询以及感兴趣的模态来确定。底部:TIM可以查询视觉(例如,“冲洗海绵”)和听觉(例如,“水声”)动作类别,并区分同一模态中重叠的动作(“玻璃碰撞”和“擦洗/刮擦”)。

考虑图1中的示例。输入包含水流动的声音,同时海绵被冲洗,之后用来擦拭表面。这些不同的事件在持续时间上可能差异很大,并且可能在音频或视觉模态中更为突出。尽管这些事件之间存在差异,但它们与周围环境之间很可能存在许多相关性,这可能有助于识别给定事件(例如,水声与冲洗海绵相关,为识别视觉动作提供了有用的信息)。TIM能够通过访问两种模态内的上下文(包括没有事件发生时的背景)来利用这一点。然后,它可以通过查询给定模态中特定事件的时间间隔来区分同一输入中不同且可能重叠的事件

我们在三个具有挑战性的长视频视听识别数据集上测试了TIM:EPIC-KITCHENS[7],该数据集最近通过EPIC-SOUNDS[15]提供了不同的音频标注;Perception Test[30];以及AVE[36]。我们展示了TIM能够在长输入中有效地学习视觉和听觉类别,在EPIC-KITCHENS上比当前最先进(SOTA)的top-1准确率提高了2.9%,在EPIC-SOUNDS上提高了1.4%,尽管之前的竞争方法使用了更大的预训练数据集、大型语言模型或更高分辨率的输入。此外,我们在AVE上比使用公共数据集预训练的模型提高了0.6%,并在Perception Test的视觉和音频动作识别中分别比强大的基线提高了9.9%和3.2%。

此外,我们通过固定多尺度密集查询和添加区间回归损失,将TIM适应于动作检测。我们在EPIC-KITCHENS和Perception Test上报告了强大的检测结果,分别比Action Former[49]高出1.6平均mAP和4.3。

我们的贡献总结如下:(i) 我们提出了TIM查询机制,用于关注长视频中特定模态的区间。(ii) 我们有效地训练TIM以使用时间区间编码/查询多个音频和视频动作。(iii) 我们展示了TIM在视觉和听觉动作识别中的价值,并通过添加区间回归损失将其适应于检测。(iv) 我们在多个数据集的视频和多模态识别中均达到了新的SOTA水平

2. 相关工作

音-视频动作识别。已有一些工作采用音频和视觉模态进行动作识别[10, 17, 18, 26, 41, 44]。一些工作引入新的架构来有效地融合不同模态[17, 18, 26, 44];其他工作则提出了独特的训练技术来解决训练多模态模型时出现的问题,如梯度混合[41],以解决每个模态以不同速度过拟合的问题,或跨模态对比学习以进行区分[25]。然而,这些工作对两种模态都使用相同的语义和时序标签。最近的工作表明,事件的时序区间和语义在不同模态之间是不同的[15, 30]。[37]独立地对视觉和听觉事件进行了时序标注,尽管它们共享相同的标签集。在这项工作中,我们为每个模态训练了不同的标签,以利用具有判别性的音频和视觉动作

利用时序上下文。一些工作已经考虑了融入时序上下文[18, 27, 42, 43, 48],这是一个与使用多种模态正交的方向,特别是在未裁剪的视频中特别有用。在[27]中,提出了一种基于自回归LSTM的编码器-解码器,用于动作序列分类,有效地利用过去的动作上下文来预测当前的动作。时间查询网络(Temporal Query Network)[48]使用可学习的查询向量,这些向量对应于长视频的特定属性,使模型能够关注视频的各个方面及其周围的上下文,以产生针对每个属性的响应。[42]提出通过长期特征库(Long-Term Feature Bank)和注意力机制,从邻近的动作片段中聚合时间上下文来增强动作的表示。[43]通过存储一个转换器所有中间层的键和值来构建一个更复杂的记忆库,以聚合过去的上下文。最后,[18]利用视觉、音频和语言从周围动作中提取多模态时间上下文。

[18, 42, 43]与我们的方法最为接近,因为共同的目标是使用未裁剪视频中的周围上下文来丰富感兴趣动作的表示,而不是仅依赖邻近的片段。然而,[42, 43]是单模态模型,仅识别视觉动作。[18]假设所有动作的时间范围都是已知的,包括测试集,这具有一定的限制性。

视觉模型中的查询。使用Transformer架构学习视觉查询最近受到了关注[4, 14, 16, 23, 48]。通常,这些方法使用一组可学习的向量来查询输入中某个概念的存在。例如,在[4, 23]中,可学习的查询对应于不同的对象,而在[14]中,它们被用于多任务学习,每个可学习的查询对应于不同的任务。[16]已经融入了可学习的查询来适应预训练模型,同时保持其余参数冻结。与我们的动机最接近的是[48],其中查询对应于视频中的事件及其属性,用于细粒度动作识别。作者指出,这些查询还具有在未裁剪视频中定位事件时间的作用

与[48]和其他工作不同,我们的查询主要是时间性的,没有语义解释,并且应用于多个模态。重要的是,由于时间是连续的,我们不能使用预定义的一组查询。相反,我们采用MLP架构来编码时间,类似于一个通用时钟。接下来我们将介绍我们的方法。

3. 时间间隔机

在本节中,我们描述了时间间隔机器(TIM),一个多模态Transformer编码器架构,其中所有输入(包括特征和查询)都与其相关的时间间隔进行编码时间间隔结合了每个音频和视觉特征的持续时间和位置,并用于查询网络以获取给定时间间隔内发生的任何动作。TIM的架构如图2所示。它接收大量的视频输入,这些输入被表示为一系列音频和视觉特征,并为提供的时间间隔输出正在进行的听觉或视觉动作标签

图2. 时间间隔机器(TIM)概述。该模型接收来自视频的音频和视觉特征序列,每个特征都通过其跨越的时间间隔进行时间戳记,并根据其模态进行编码。为了推断在时间间隔内发生的动作(视觉或音频事件),会形成一个查询,指定感兴趣的时间间隔和模态。

3.1. 模型体系结构

输入。TIM的输入是未裁剪视频的长片段,由提取的特征表示。当考虑两种模态输入,如视频和音频时,每种模态的嵌入是分别进行的:对于每种模态m,设Xm = [Xm1, ..., XmNm]是输入视频的Nm个按时序排列的特征表示,这些特征表示是从预训练的特征提取器Sm(·)中获得的。我们将这些特征通过特定模态的嵌入层gm(·)进行传递,将它们投影到所有模态共有的较低维度D。然后,嵌入的特征会被标记上模态编码和时间间隔编码,形成Transformer编码器的输入。现在我们详细说明如何对时间间隔进行编码。

图3. 时间间隔MLP I(·)的说明。它输入一个二维向量,即一个时间间隔的起始时间和结束时间,并输出一个单一向量,该向量可以沿着通道维度与输入特征或[CLS]标记进行级联。图中展示了三个时间间隔输入和三个对应的输出。请注意,在实际操作中,时间间隔是同时输入的。

时间间隔编码。在这项工作中,我们介绍了一种新型的学习查询网络——时间间隔MLP(多层感知器),它生成一个表示给定时间间隔的单一的D维向量。这个网络在TIM中用于编码输入特征的时间间隔以及我们想要查询并后续分类的时间间隔。图3说明了这个网络的概念。

时间间隔MLP I(·) : R2 → RD 接收一个时间间隔作为输入,这个时间间隔由起始时间和结束时间表示,并输出该时间间隔的一个单一的D维编码。请注意,这与单独编码起始时间和结束时间是不同的。具体来说,设ts和te是感兴趣的时间间隔的起始时间和结束时间,它们被长视频输入的长度归一化。I(·)接收时间间隔 ˜t = [ts, te] 作为输入,并输出该时间间隔的D维向量编码,这个向量编码了时间间隔在输入内的相对位置,以及其持续时间。然后,这个向量作为模型关于该时间间隔内发生的动作的查询。此外,每个特征\{X_i^m\}在输入内跨越一定的时间间隔。因此,对特征的时间间隔进行编码也很重要。总的来说,时间间隔MLP充当了一个通用时钟,它编码了输入中来自任何模态的特征的时间范围。请注意,对于输入特征和跨模态查询的所有时间间隔,使用相同的时间间隔MLP进行编码是至关重要的,以便准确编码通用时间。还值得注意的是,时间间隔MLP可以覆盖连续的时间间隔,而传统的位置编码仅覆盖输入特征的固定位置集合。时间间隔MLP与Transformer一起进行端到端的训练。

Transformer特征输入。\tilde{\mathbf{t}}^{m} = [\tilde{t}_{1}^{m},\cdots,\tilde{t}_{N^{m}}^{m}] 是来自模态m的视频特征Xm对应的时间间隔。我们通过通道级联将编码的时间间隔I(˜tm)注入到嵌入的特征中。然后,一个可学习的特定模态编码em ∈ R2D被添加到时间编码的特征上,以区分每个模态。总结来说,TIM的特征输入Em通过以下方式计算:

E_i^m=[g^m(X_i^m),I(\tilde t_i^m)]+e^m\quad\forall i\in[1,...,N^m]\quad(1)

其中[·, ·]表示级联。

Transformer查询输入。为了查询某个感兴趣区间内的动作,我们采用了标准的方法,即在输入序列的末尾添加一个可学习的分类标记CLSm如果˜tQ是一个感兴趣的时间区间,我们将时间区间表示I(˜tQ)沿着通道维度与这个分类标记连接起来,这作为网络的一个查询,以预测在˜tQ区间内发生的对应动作。我们还向每个分类标记添加了模态特定的编码e^m,作为一个标志来区分我们正在查询的是哪种模态。编码后的[CLS]m标记可以更正式地定义为:
[\text{CLS}]^m=[\text{CLS}^m,I(\tilde{t}_Q)]+e^m\quad(2)
在训练期间,我们为输入视频中的每个动作添加一个分类标记,从而在两种模态中都生成了多个[CLS]标记

Transformer编码器。我们使用transformer编码器对输入序列执行自注意力机制,以聚合相关的时间上下文和跨模态关系。我们使用编码后的特征输入Em和一个或多个代表每个时间区间查询的分类标记[CLS]m来形成transformer的输入序列,并将这些输入到编码器中。请注意,我们通过向输入中添加多个CLSm标记来同时识别来自任何模态的所有动作然后,将transformer输出的[CLS]m表示ZmCLS传递给相应的线性分类器,以预测动作标签。重要的是,我们使用注意力掩码来防止查询之间相互关注,同样防止输入特征关注查询,这确保了在推理期间,每个查询都是在不依赖于其他查询或动作边界的特权知识的情况下被识别的

3.2. TIM的训练和测试

为了训练TIM(Temporal Interaction Modeling),我们考虑未裁剪视频中的所有W秒长的连续片段,并以Hw的步长遍历整个视频。我们从这些片段中随机选择批次。对于每个窗口,我们查询所有与窗口重叠超过δ = 0.2秒的已标注音频和视觉动作

窗口中的所有查询都被编码并连接到不同的CLS标记上。为了对查询进行分类,h_{\mathrm{CLS}}^{m}(\cdot)为模态m的线性分类器,设\hat{y}_{\mathrm{CLS}}^{m}=h^{m}(Z_{\mathrm{CLS}}^{m})为ZmCLS输出表示的预测动作

我们通过使用交叉熵分类损失CE(·)在真实标签ymCLS上训练TIM,如下所示:
L^m=\frac{1}{N_Q}\sum^{N_Q}CE(\hat{y}_{\mathrm{CLS}}^m,y_{\mathrm{CLS}}^m)\text{(3)}
其中NQ是批次内的查询数量。

时间距离损失。除了标准的分类损失外,我们还引入了时间距离(TD)损失作为训练TIM的辅助损失。受到[21]的启发,其中使用自监督学习令牌嵌入中的相对补丁位置,我们同样训练网络以获取两个transformer输出并预测它们对应时间区间之间的经过时间

\mathbf{Z}_{1:\sum_{m}N^{m}}为来自所有模态的特征的transformer输出。我们从这些输出中随机采样一组特征对\mathbb{B}\subset\mathbf{Z}_{1:\sum_{m}N^{m}},将它们沿通道维度连接并输入到时间距离回归头h_{\tilde{t}}(\cdot) : \mathbb{R}^{4D} \to \mathbb{R}^{1},以预测每对之间的时间区间差。请注意,特征对可以在模态内部和跨模态中采样。在我们的情况下,我们通过将一个视觉特征与另一个音频特征配对来跨模态采样。这有助于模型学习模态之间的时间关系

正式地,TD损失Ltd计算为:
L^{td}=\sum_{\{Z_i,Z_j\}\in\mathbb{B}}|h_{\tilde{t}}(Z_i,Z_j)-d_{ij}|\quad(4)
其中dij是区间˜ti, ˜tj之间的时间距离。

将两个时间段的特征进行通道维度拼接,输入到时间距离回归头来预测这两个时间段之间的时间差,通过最小化TD损失,来使得从特征层面预测的时间差和实际的时间差相近。

训练目标和策略。对于最终的训练损失,我们将各模态的损失与时间距离(TD)损失相加

L^{total}=\left(\sum_{m\in\mathbb{M}}\lambda^mL^m\right)+\lambda^{td}L^{td}\quad\text{(5)}

其中,M 是模态的集合,λm 控制每个模态损失的权重,λtd 是一个超参数,控制时间距离(TD)损失的权重。

测试时增强。我们使用测试时增强,因为这通常会增加预测的鲁棒性和性能[29, 32]。在TIM中,我们使用一个滑动窗口遍历未裁剪的视频,从而为相同的区间查询提供不同的上下文。然后,我们将不同窗口中相同区间查询的预测结果进行聚合,以做出最终预测

3.3. 适应检测

虽然TIM最初是为了识别而设计的,但我们可以将其调整为用于检测。其基础架构在识别方面基本保持不变,但有两个主要的不同点。首先,我们在每个尺度上构建了跨越整个视频输入的密集多尺度区间查询。这些查询在训练和检测推断中都被用作区间查询。多尺度区间允许检测长动作和短动作。其次,我们引入了一个额外的区间回归头,该回归头将查询区间回归到动作的精确时间长度

在训练过程中,我们将多尺度金字塔中任何与真实动作重叠超过某个IoU(交并比)阈值的查询视为正查询。除了对查询进行分类外,我们还训练了一个DIOU回归损失[52]来预测动作的精确区间。分类损失和区间回归损失都是联合训练的。我们在ArXiv附录中提供了完整的细节。

4. 实验

本节描述了用于评估我们模型的数据集、实现细节和结果,以及与最先进方法的比较。

4.1 数据集

EPIC-KITCHENS-100 [7] 是一个大规模视频数据集,包括 700 个记录厨房中动作的第一人称视角视频。它包含 89,977 个细粒度动作片段。受先前工作 [11, 34, 35] 的启发,我们直接在训练和验证集中从 3806 个类别中预测动作,以避免预测无效动作。

EPIC-SOUNDS [15] 提供了音频注释,这些注释捕获了 EPIC-KITCHENS-100 音频流中的时间范围和类别标签。注释包含 78,366 个标记的音频事件。我们将 EPIC-KITCHENS 的视觉注释与 EPIC-SOUNDS 的音频注释结合起来,以训练我们的音视频模型。TIM 可以使用单个模型从两个数据集中识别动作。

AVE [36] 包含 4,143 个视频,涵盖了一系列现实生活场景,并被标记为 27 个类别,如教堂钟声、男性说话和狗叫。每个视频都被平均分成 10 个段,每个段长 1 秒。我们在监督音视频事件定位任务上评估 TIM。给定一个 1 秒的片段,我们从 27 个类别加上一个背景类别中识别正在进行的动作。

Perception Test [30] 是一个最近的包含 11,620 个视频的多模态视频基准,平均长度为 23 秒,同时提供了时间动作和声音注释。有 73,503 个跨越 63 个类别的视觉注释,以及 137,128 个跨越 16 个类别的声音注释。

4.2. 实现细节

架构细节视觉和音频嵌入层 gm 包括一个单一的 512 维前馈层,随后是 GELU [13] 激活函数和层归一化 [2],用于将特征投影到公共空间时间间隔多层感知机 I 由三个具有 512 维隐藏维度的线性层组成,后跟 ReLU 激活函数,最后一个线性层的输出后还有层归一化。我们为每个模态的每个查询都包含了 512 维的可学习 [CLS] 标记(如 [CLS]m_action),这些标记在与时间间隔编码拼接后变为 1024 维。然后,它们与 1024 维的模态编码 e_m 相加。音视频转换器包含四个编码器层,每层有 8 个注意力头、GELU 激活函数以及 1024 维的键、查询和值。在编码器层内部应用了 p=0.1 的丢弃率。我们还在原始输入特征以及编码后的转换器输入上直接应用了通道级丢弃率 p=0.5。时间距离头由两个隐藏维度为 1024 的线性层和一个输出单个数字的第三层组成,该数字对应于每个时间间隔之间的已过去时间。我们在 ArXiv 附录中包含了关于编码器层和时间距离头的架构消融研究。

训练/验证细节。我们使用 AdamW [24] 优化器对每个模型进行 100 个周期的训练,批次大小为 64,权重衰减为 1e-4。在前两个周期中应用了线性学习率预热,从 1e-6 增加到目标学习率,并使用余弦学习率调度器。我们将 TD 损失权重 λtd 设置为 0.3。我们为批次中每个窗口的查询填充到每个数据集中单个窗口中的最大查询数。我们在 ArXiv 附录中为每个数据集提供了实现细节。

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

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

相关文章

社区项目-项目介绍环境搭建

文章目录 1.技术选型2.原型设计1.安装AxureRP2.进行汉化3.载入元件库4.基本设计 3.元数建模1.安装元数建模软件2.新建项目3.新增一个刷题模块主题域4.新增数据表 subject_category5.新增关系图,将表拖过来6.新增题目标签表7.新增题目信息表8.新增单选表、多选表、判…

​Claude 3.5 最新体验:助力硕博生与科研人员高效完成论文,超越ChatGPT4o !

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 要不说AI领域的进展真的是日新月异,发展速度已经大大超过预期进度。娜姐本来在准备AI降重工具的测评文章(最近好多小伙伴需要)。 昨天晚上…

ECharts 词云图案例二:创意蒙版应用

ECharts 词云图案例二:创意蒙版应用 引言 在数据可视化领域,ECharts 以其强大的功能性和灵活性,成为开发者和设计师的首选工具之一。继上一篇关于 ECharts 词云图的详细介绍后,本文将探索词云图的进阶应用——使用蒙版来创造更具…

【C#上位机应用开发实战】—— UI界面设计与实践代码

在C#上位机应用开发中,UI界面设计是至关重要的一环。一个好的UI设计不仅可以提升应用的用户体验,还可以提高应用的易用性和效率。本文将介绍一些UI界面设计的实战经验和技巧。 在这个示例中,我们创建了一个名为MainForm的窗体类。该窗体包含了…

AI在线免费视频工具2:视频配声音;图片说话hedra

1、视频配声音 https://deepmind.google/discover/blog/generating-audio-for-video/ https://www.videotosoundeffects.com/ (免费在线使用) 2、图片说话在线图片生成播报hedra hedra 上传音频与图片即可合成 https://www.hedra.com/ https://www.…

如何使用Windows备份轻松将数据转移到新电脑?这里有详细步骤

序言 我们都知道那种买了一台新电脑,就想直接上手的感觉。我记得在过去的日子里,要花几个小时传输我的文件,并试图复制我的设置。在当今传输数据的众多方法中,Windows备份提供了一个简单可靠的解决方案。 登录到你的Microsoft帐户 Microsoft在传输过程中使用其云存储来保…

英文字母表

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 英文字母表 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){foreach (var item in panel1.Controls){if (item ! null)…

A股3000点失守是出局还是机会?

今天的大A失守300点,那么A股3000点失守是出局还是机会? 1、今天两市低开,盘中一度跌破3000点,最低回踩到了2985点,盘面出现了两个罕见现象,意味着即将探底回升。 2、盘面出现两个罕见现象: 一是…

buuctf----firmware

- -一定不能再ubutu22进行,我是在18(血泪教训) binwalk安装 buuctf firmware(binwalk和firmware-mod-kit的使用)_buu firmware-CSDN博客 参考博客 指令 sudo apt-get update sudo apt-get install python3-dev python3-setuptools python3-pip zlib1g-dev libmagic-dev pi…

云计算技术高速发展,优势凸显

云计算是一种分布式计算技术,其特点是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,并通过多部服务器组成的系统进行处理和分析这些小程序,最后将结果返回给用户。它融合了分布式计算、效用计算、负载均衡、并行计算、网络存储…

竞赛选题 LSTM的预测算法 - 股票预测 天气预测 房价预测

0 简介 今天学长向大家介绍LSTM基础 基于LSTM的预测算法 - 股票预测 天气预测 房价预测 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 1 基于 Ke…

k8s部署wordpress及性能优化

镜像版本:wordpress mysql版本:mysql:8.0.27 部署wordpress:v1 此版本包含wordpress基础服务,可访问,但是一旦pod重新创建会丢失数据,文章中的图片等也会丢失,且只又一个pod,性能…

高通Android 12 aapt报错问题踩坑

背景 最近因为要做多module模块,出现aapt报错,于是简单记录下,踩坑过程。 1、我一开始项目中三个module,然后在build.gradle设置androidApplication plugins {alias(libs.plugins.androidApplication) }2、运行完之后都是报下面…

DevEco鸿蒙开发请求网络交互设置

首先,在鸿蒙项目下config.json中找到module项,在里面填写"reqPermissions": [{"name": "ohos.permission.INTERNET"}] 在页面对应js文件内,填写import fetch from system.fetch;。 GET和POST区别 GET将表单数…

湖南科技大学24计算机考研情况,软工学硕考数二,分数线290分,录取均分321分!

湖南科技大学(Hunan University of Science and Technology)坐落在伟人故里、人文圣地湘潭,处于长株潭核心区域,比邻湘潭九华经济技术开发区(国家级),是应急管理部、国家国防科技工业局与湖南省…

DVWA 靶场 Open HTTP Redirect 通关解析

前言 DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

拍卖商城开发要点源码及功能分析

要创建一个正规的拍卖商城平台,需要遵循一系列步骤,确保平台的合法性、专业性和用户体验。以下是一个详细的步骤指南: 一、明确平台定位与规划 确定拍卖商城平台的目标市场、用户群体和主要拍卖品类。 制定平台的发展规划和战略目标&#…

网络爬虫设置代理服务器

目录 1.获取代理 IP 2.设置代理 IP 3. 检测代理 IP 的有效性 4. 处理异常 如果希望在网络爬虫程序中使用代理服务器,就需要为网络爬虫程序设置代理服务器。 设置代理服务器一般分为获取代理 IP 、设置代理 IP 两步。接下来,分…

redis高可用-集群部署

一:背景 前面我们实现了redis的主从同步和哨兵模式,解决了单机redis的故障转移和流量分担,但是不管是主从或者哨兵模式都是一个主服务对应一个或者多个从服务,并且主服务和从服务的数据是一样的,这样就实现不了redis大…

远程桌面总是连接不上,mstsc远程总是连接不上解决方法

远程桌面连接在日常生活和工作中扮演着至关重要的角色,它允许用户在不同地点和设备之间无缝协作。然而,有时用户可能会遇到MSTSC(Microsoft远程桌面连接)总是连接不上的问题,这可能是由于多种原因造成的。本文将针对这…