《Video Mamba Suite》论文笔记(1)Mamba在时序建模中的作用

原文链接

https://arxiv.org/abs/2403.09626icon-default.png?t=N7T8https://arxiv.org/abs/2403.09626

原文代码

https://github.com/OpenGVLab/video-mamba-suiteicon-default.png?t=N7T8https://github.com/OpenGVLab/video-mamba-suite

原文笔记

What

《Video Mamba Suite: State Space Model as a Versatile Alternative for Video Understanding》

为了评估 Mamba 是否可以成为视频理解领域中 Transformer 的可行替代方案在这项工作中,我们进行了一组全面的研究,探索 Mamba 在视频建模中可以扮演的不同角色,同时研究 Mamba 可能展现出良好性能的不同任务。

为了实现这一目标,我们探索了曼巴在理解视频中可能扮演的不同角色,以及调查曼巴可能表现出优势的各种任务。我们将 Mamba 分为四个角色来对视频进行建模:(1) temporal model, 2) temporal module, 3) multi-modal interaction network, and 4) spatial-temporal model. )

我们将 Mamba 分为四个角色来对视频进行建模,推导出一个由 14 个模型/模块组成的Video Mamba Suite,并在 12 个视频理解任务上对其进行评估。我们广泛的实验揭示了 Mamba 在纯视频和视频语言任务上的强大潜力,同时显示出有希望的效率-性能权衡。

PS:这篇文章是一篇以实验为主体推动的文章,他每章的命名都与传统CV论文或者Mamba论文不同,他将Mamba应用到很多Video领域,覆盖面很光,等于为很多视频研究领域提供了预训练和baseline,在实验中他提出了一个新的Mamba块DBM从作者给出的结果来看结果是很好的,这篇论文推荐看原文代码:https://github.com/OpenGVLab/video-mamba-suiteicon-default.png?t=N7T8https://github.com/OpenGVLab/video-mamba-suite

这篇文章比较长,本来想看完自己的部分就结束了

但是为了丰富自己的视野和帮助万一有需要的人于是完整翻译将在下几篇中给出

《Video Mamba Suite》论文笔记(2)Mamba对于多模态交互的作用-CSDN博客

《Video Mamba Suite》论文笔记(3)Mamba作为时序适配器的作用-CSDN博客

《Video Mamba Suite》论文笔记(4)Mamba在时空建模中的作用-CSDN博客

Why

现有的Video UnderStaning工作可以被分为三类

1:时空分离建模 - frame-based feature encoding + RNN/GRU/LSTM(cannot capture joint spatiotemporal information

2:时空合并建模 - C3D(效果不如3好,因为使用的是static local operators,说的就是卷积神经网络的卷积核是固定的,所以缺乏一些动态处理能力

3:时空合并建模 -Transformers(计算开销太大,“由于长视频中Vision Transformer的计算效率有限”

为了评估 Mamba 是否可以成为视频理解领域中 Transformer 的可行替代方案,在这项工作中,我们进行了一组全面的研究,探索 Mamba 在视频建模中可以扮演的不同角色,同时研究 Mamba 可能展现出良好性能的不同任务。

Challenge

Idea

我们将 Mamba 分为四个角色来对视频进行建模,推导出一个由 14 个模型/模块组成的Video Mamba Suite,并在 12 个视频理解任务上对其进行评估。我们广泛的实验揭示了 Mamba 在纯视频和视频语言任务上的强大潜力,同时显示出有希望的效率-性能权衡。

原文翻译

Abstract

理解视频是计算机视觉研究的基本方向之一,在大量致力于探索 RNN、3D CNN 和 Transformer 等各种架构的工作的努力下。新提出的状态空间模型架构,例如 Mamba,展现出了其能够将长序列建模方面的成功扩展到视频建模领域的良好特性。为了评估 Mamba 是否可以成为视频理解领域中 Transformer 的可行替代方案在这项工作中,我们进行了一组全面的研究,探索 Mamba 在视频建模中可以扮演的不同角色,同时研究 Mamba 可能展现出良好性能的不同任务。我们将 Mamba 分为四个角色来对视频进行建模,推导出一个由 14 个模型/模块组成的Video Mamba Suite,并在 12 个视频理解任务上对其进行评估。我们广泛的实验揭示了 Mamba 在纯视频和视频语言任务上的强大潜力,同时显示出有希望的效率-性能权衡。我们希望这项工作能够为未来视频理解研究提供有价值的数据点和见解。代码是公开的:https://github.com/OpenGVLab/video-mamba-suite。

Keywords:Video Understanding· State Space Model · Mamba

1 Introduction

视频理解是计算机视觉研究中的一个基本问题,它需要从视频中捕捉时空动态来定位活动或推断其演变。目前对视频理解架构的探索可以分为三类。第一类工作采用基于框架的特征编码,然后通过循环网络(如GRU和LSTM)进行时间依赖性建模。由于这种类型的分割时空建模不能捕获联合时空信息另一种工作使用卷积神经网络中的3D核同时考虑空间和时间相关性[25,73]。

继Transformer模型在语言和图片的处理上取得了巨大成功之后,video transformers在视频理解领域也取得了长足的进步,Video transformer表现出比RNN和3D-CNN更强的能力。Video Transformers将视频封装在一系列tokens中,注意力机制可以实现全局上下文交互和数据依赖的动态计算。因此,该模型擅长以统一的方式处理视频中的时间[10,78,89,90]或时空[6,68]信息。由于长视频中视频变压器的计算效率有限,出现了几种变体[2,6,20,55],以平衡速度性能的权衡。

近年来,状态空间模型(ssm)在自然语言处理(NLP)中显示出其优势。现代ssm[32]在NLP中表现出强大的表征能力,特别是在长序列建模中,同时保持线性时间复杂度这是因为它们的选择机制可以消除存储完整上下文的需要。值得注意的是,Mamba[30]将时变参数纳入SSM,并提出了一种硬件感知算法,以实现高效的训练和推理。Mamba令人印象深刻的缩放性能表明它是一个有前途的Transformer的替代品。同时,Mamba强大的性能和效率使其非常适合视频理解任务。然而,尽管一些初步尝试探索如何将Mamba应用于图像建模[53,96],但其在视频理解中的有效性仍不清楚。缺乏对曼巴在视频理解方面的潜力的全面研究,阻碍了对其在各种视频相关任务中的能力的进一步探索。

在本文中,我们没有提出一种新的方法。相反,我们对SSM(以Mamba模型作为代表)在视频理解背景下的潜力进行了广泛的调查。我们的目标是评估Mamba在这个领域是否可以成为Transformers的可行替代品。为了实现这一目标,我们探索了曼巴在理解视频中可能扮演的不同角色,以及调查曼巴可能表现出优势的各种任务。我们将 Mamba 分为四个角色来对视频进行建模:(1) temporal model, 2) temporal module, 3) multi-modal interaction network, and 4) spatial-temporal model. )1)时间模型,2)时间模块,3)多模态交互网络,4)时空模型。对于每个角色,我们研究了它在不同视频理解任务上的视频建模能力。为了确保与Transformers进行公平比较,我们仔细选择了基于标准或改进的变压器架构的对应模型。我们的探索派生了一个视频 Mamba Suite,其中包含 14 个模型/模块,用于 12 个视频理解任务。我们希望我们的视频 Mamba Suite 可以作为未来在视频理解领域探索基于 SSM 的模型的宝贵资源。

2 Related Work

2.1 Video Modeling

视频建模是实现深度视频理解的基石,并且随着时间的推移经历了重大的发展。最初,TSN[82]采用统一的视频采样,并利用二维网络[35,40]建立多帧共识来生成视频表示。在那之后,视频卷积网络取得了实质性进展。[48,75,81]等方法侧重于将时间模块集成到二维网络中以促进时空建模。相反,[9,25,60,73,74,87]等方法要么增强2D卷积网络的核[35,40,86],要么从头开始训练3D卷积网络以提取时空特征

然而,卷积网络受其依赖静态局部算子的限制,导致其表示能力有限。受到language transformers[8,17,62,63,70]和image transformers[11,18,20,34,54,69,84]有效性的启发,研究人员研究了Video Transformers的各种结构[2,6,45,55]。值得注意的是,结合时空联合注意的video transformer在这些结构中表现出优越的能力。因此,随后的研究工作[24,46,68,80,85]深入研究了基于这种结构的不同预训练方法。然而,与联合注意力相关的二次计算复杂性构成了一个重大障碍,阻碍了视频转换器处理更长的上下文的可扩展性,这与LLMs(Large language models)面临的问题相似[71,72]。一些研究已经开发了基于Transformer的变体[2,6,55],专门用于建模通常超过128帧的长视频。

或者,另一种方法是设计具有线性复杂度的模型架构。例如,RetNet[67]和RWKV[59]利用指数衰减技术来捕获全局信息。状态空间模型[31-33]还提供了线性复杂度,Mamba[30]采用高效的实现来促进数据相关的推理。在视觉领域,一些作品 [1, 19, 96] 探索了具有线性复杂度的视觉编码器。XCiT [1] 通过计算输入标记之间的交叉方差实现了与线性复杂度的全局交互。最近,[53,96] 对基于 Mamba 的视觉应用进行了初步探索。在这项研究中,我们研究了创建一个基于 Mamba 的视频模型以进行视频理解。

2.2 State-Space Models(SSMs)

作为状态空间模型(SSMs)时代的前跑者,[32]引入了一种新的模型,称为结构化状态空间序列(S4),它为cnn和变压器提供了捕获远程依赖的替代方案。S4 模型展示了序列长度线性缩放的一个有前途的特征。在此基础上,[65]提出了一种称为S5的高级层,它将MIMO SSM与高效的并行扫描集成到S4架构中。该开发旨在克服 SSM 的约束,提高其有效性。此外,[26] 贡献了一种新颖的 SSM 层 H3,显着缩小了 SSM 和基于Transformer的注意力在语言建模中的性能差距。[57] 通过在门控状态空间层中引入额外的门控单元来扩展 S4 模型,以增强其表现力。最近,[30] 引入了一个依赖于数据的 SSM 层,并开发了一个名为 Mamba 的通用语言模型。Mamba 在不同大小的大规模真实数据上的性能上优于Transformer,并展示了序列长度的线性缩放。在这项研究中,我们的目标是将 Mamba 在语言领域的成功扩展到视频理解。具体来说,我们构建了一个通用的框架,称为 Video Mamba Suite ,用于开发、验证和分析 Mamba 在视频理解方面的性能。

只有有限的工作使用SSM进行视频理解,而这些工作主要关注长期视频分类[41,79]。[41]扩展了S4架构,并将多尺度时间S4解码器纳入视频序列分类。[79]引入了一个掩码对比学习框架来增强状态空间模型。我们的研究将 SSM 的应用范围扩展到更广泛的视频理解任务。我们以 Mamba [30] 为例,涵盖了 SSM的多个用法 和更多与视频相关的任务,超越了只关注长视频的分类这项任务。

3 Preliminaries

3.1 State Space Model

在本节中,我们将介绍基于结构化状态空间 (SSM) 的模型,特别是 S4 [32] 和 Mamba [30] 模型。这些模型从处理序列或函数的连续系统中汲取灵感。假设一个系统随着时间的推移接受一系列输入 x(t),并产生一系列输出 y(t),同时通过隐藏状态 h(t) 转换输入。

该系统使用矩阵 A^N×N 来定义隐藏状态的演变,B^N×1 和 C^1×N 分别将输入和隐藏状态投影到输出。这个过程可以概括为 h′(t) = Ah(t) + Bx(t), y(t) = Ch(t)。

S4 和 Mamba 被设计为这些连续系统的离散等价形式。它们包含一个时间尺度参数 Δ,将连续参数 (A, B) 转换为它们的离散参数 (A拔, B拔)。转换使用 zero-order hold技术,得到离散公式,A拔 = exp(∆A), B拔 = (∆A)^−1(exp(∆A)−I)·∆B。一旦参数被离散化,在每个离散时间步t的系统行为如下所示:ht = A拔ht−1 + B拔xt, yt = Cht,该公式展现了隐藏状态是如何更新和产生输出的

最后,输出是通过全局卷积过程计算的,涉及结构化卷积核

该内核由转换后投影参数构造并应用于整个输入序列 x 以产生最终输出序列 y,即 y = x * K。这里,M 是输入序列 x 的长度。通过将连续动态转换为离散步骤,S4 和 Mamba 模型允许处理具有复杂依赖关系的序列。

3.2 Mamba Block

Mamba块[30]结合了线性注意算子和MLP块,灵感来自门控注意单元(GAU)[38],如图2(A)所示。该架构涉及通过可控扩展因子 E 扩展模型维度 D。对于每个块,大部分参数 (3ED2) 都在线性投影 层(2ED2 用于输入投影,ED2 用于输出投影),而内部 SSM 的贡献较小。相比之下,SSM 参数的数量(Δ、B、C 和矩阵 A 它们的投影的参数总量)要小得多。

3.3 Vim Block

ViM 块 [96],如图 2 (b) 所示,在 Mamba 块中添加了一个带有附加参数的后向选择性扫描分支。在此基础上,两个扫描方向的特征共享相同的线性投影和门控层。给定输入 x,对于每个方向,ViM 块首先将一维卷积应用于输入 x 并获得 x′o。然后块分别线性投影 x′o 到 Bo、Co、Δo。然后使用 Δo 分别变换 Ao拔 和 Bo拔。接下来,SSM 计算前向扫描特征 yf 和后向扫描特征 yb。最后,这两个特征都由门控层门控并取平均值以获得输出标记序列(output token sequence)。

3.4 DBM Block

我们进一步研究了一种分解的双向 Mamba 块,表示为 DBM,如图 2 (c) 所示。与 ViM 块相比,它采用逆设计。给定输入序列 x,DBM 块最初使用不同的线性层来分离前向特征 xf 和后向特征 xb。然后将这些特征通过具有共享参数的SSM模块进行双向扫描,得到x 'f和x 'b。随后,这两个特征在连接以生成输出标记序列之前经过两个不同的层进行门控操作。这个块引入了方向偏差并削弱了特定的动态。在我们在第 4.1 节中详述的实验中,我们观察到 DBM 块在小规模数据集上的性能有所提高。

4 Video Mamba Suite

在本节中,我们将介绍 Video Mamba Suite ,其中包含各种基于 Mamba 的模型,用于一组不同的视频理解任务。该套件以四个不同的角色利用 Mamba:时间模型时间模块多模态交互模型时空序列模型。每个角色将在以下各小节中讨论,逐渐揭示 Mamba 在视频理解方面的性能并突出其关键特征。由于空间限制,补充材料中提供了更多的实现细节和实验结果。

4.1 Mamba for Video Temporal Modeling

Tasks and datasets.我们评估了 Mamba 在五个视频时间任务上的性能:时间动作定位 (HACS Segment [91])、时间动作分割(GTEA [22])、密集视频描述(ActivityNet [36], YouCook [95])、视频片段描述(ActivityNet [36], YouCook [95])和动作预期(Epic-Kitchen-100 [13])。

Baseline and competitor.我们选择基于Transformer的对应模型作为每个任务的基线。具体来说,Transformer基线是ActionFormer[90]、ASFormer[89]、Testra[92]和PDVC[83]。为了构建 Mamba 挑战者,我们将基线模型的变换器块替换为基于 Mamba 的块,包括 vanilla Mamba [30]、ViM [96] 和我们的 DBM。请注意,在涉及因果推理的动作预期的上下文中,我们将基线的性能与普通 Mamba 块 [30] 进行比较。

Results and analysis.

我们在表 1 和表 5 中展示了四个任务的不同模型的比较结果。总体而言,虽然一些基于Transformer的模型已经结合了注意力变体来提高性能,但与 Transformer 系列中现有方法相比,该表展示了 Mamba 系列的卓越性能。

时间动作定位。 如表 1 所示,我们引入了 ActionMamba,它将 ActionFormer [90] 的 Transformer 块更改为 ViM 块,在 HACS 段数据集上实现了 44.26 的平均 mAP。使用我们的 DBM 块,ActionMamba 可以进一步提高平均 mAP 到 44.56。这显着优于其Transformer对应模型 1.22(44.56 对 43.34)。

时间动作分割。表 2 报告了时间动作分割的结果。与我们复制的 ASFormer [89] 相比,我们提出的 ASamba 表现出更好的性能。由于 ASamba 是一个纯编码器,而 ASFormer 采用编码器-解码器结构,我们还尝试了 ASFormer 的编码器版本,其中观察到性能下降。结果表明,与 Transformer 相比,Mamba 的巨大潜力。

密集的视频字幕。表 3 显示了密集视频字幕的结果。基线 PDVC 模型 [83] 采用Deformable Transformer 对视觉信息进行编码。相比之下,我们的带有 DBM 块的双向 Mamba 在时间事件定位和字幕生成方面表现出更强的性能。

视频段落字幕。表 4 展示了视频段落字幕的结果比较。我们还采用 PDVC 作为基线模型 [83],仅使用字幕损失训练模型。与字幕和定位都至关重要的密集视频字幕任务不同,视频字幕只专注于提取细粒度的视觉信息来生成字幕。表 4 中的结果表明,与时间可变形编码器相比,我们的双向 Mamba 为字幕带来了更强的特征表示。

行动预期。我们通过动作预期任务进一步评估了 Mamba 在因果建模方面的能力。通过将 5 秒时间特征作为输入,我们将拥有因果自注意力块的Testra [92]和因果 Mamba [30] 块进行比较。如表 5 所示,结果证明了 Mamba 优越的因果推理能力,这与表 4 文本生成的结论一致。

由于本人研究内容为dence video captioning,所以理应读到这里就结束了

但是为了文章的完整性 余下翻译将在下几篇给出

《Video Mamba Suite》论文笔记(2)Mamba对于多模态交互的作用-CSDN博客

《Video Mamba Suite》论文笔记(3)Mamba作为时序适配器的作用-CSDN博客

《Video Mamba Suite》论文笔记(4)Mamba在时空建模中的作用-CSDN博客

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

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

相关文章

Windows 系统使用Jenkins 实现CI一键打包部署操作

一 下载安装jenkins jenkins 中文官网链接: 下载地址 点击下载,完成后是一个.msi后缀的安装文件,双击安装 安装和普通软件一样,一路next,安装路径自己设置一下,默认是C盘,我C盘不够用了,设置…

如何delphi7中添加自定义的控件或组件

1.问题 为了编写方便,会自己生成一些自定义的控件。 XXX.PAS:源码文件,后续可以再调整 XXX.DCU:编译后的文件 2.解决办法 1.自定义控件的文件如下 2.将这些文件保留在程式代码中,万一丢失会导致程式开启后报是否忽略 3.选择菜单栏中的com…

我独自升级崛起游戏账号登录注册教程 (5.8最新版)

新韩漫公司所发布的这项动作游戏已向玩家们敞开大门,为大家带来了前所未有的游戏体验和乐趣。这个游戏内包含了大量令人着迷的故事、令人印象深刻的战斗场景以及丰富多样的娱乐元素。在这其中最为引人注目的一点就是游戏内容中融入了“虚拟角色”的元素,…

计算机网络4——网络层8 软件定义网络 SDN

文章目录 一、介绍1、简介2、原理3、案例1)普通2)负载均衡的例子3)防火墙的例子 二、控制层面1、特征2、层次 一、介绍 1、简介 SDN的概念最初由斯坦福大学N.McKeown于2009年首先提出。当时还只是在学术界进行探讨的一种新的网络体系结构。…

Nvidia发布Llama3-ChatQA-1.5: 提升对话问答和表格推理能力,平均性能超越GPT-4

前言 近日,Nvidia推出了一款名为Llama3-ChatQA-1.5的对话问答模型。该模型在对话式问答和检索增强型生成等能力方面表现出色,在综合评测指标上甚至超越了当前业界顶尖的GPT-4模型。 技术特点 Llama3-ChatQA-1.5是基于Llama-3基础模型训练而成的。相比之…

《QT实用小工具·五十八》模仿VSCode的可任意拖拽的Tab标签组

1、概述 源码放在文章末尾 该项目实现了模仿VSCode的可任意拖拽的Tab标签组,包含如下功能: 拖拽标签页至新窗口 拖拽标签页合并控件 无限嵌套的横纵分割布局(类似Qt Creator的编辑框) 获取当前使用的标签组、标签页 自动向上合并…

Elementui的el-footer标签使用报错

Elementui的el-footer标签使用报错 其余标签的使用没有报错信息 el-footer的报错信息 原因: ​ 警告信息表示 Vue 不识别 <el-footer> 解决方式: 在组件中进行引入和暴露

Hive数据模型

Hive数据模型 1. 表&#xff08;Table&#xff09;&#xff1a; 表是数据库中的基本组成单位&#xff0c;用于存储数据。它由一系列的行和列组成&#xff0c;每行代表一个记录&#xff0c;每列代表一种属性或字段。创建表时&#xff0c;你需要定义列的数据类型、约束和索引等信…

Linux:进程概念(二.查看进程、父进程与子进程、进程状态详解)

Linux&#xff1a;进程概念&#xff08;二.查看进程、父进程与子进程、进程状态详解&#xff09; 上次讲了一下:Linux&#xff1a;冯诺依曼体系结构、操作系统、初识进程 文章目录 1.查看进程1.1准备工作1.2 指令&#xff1a;ps—显示当前系统中运行的进程信息1.3查看进程属性…

偶然发现了Python的一个BUG。。。

一般情况下&#xff0c;dict(id1, **{id: 1})这句代码应该报TypeError。但如果在捕获了其他异常的情况下&#xff0c;再来执行这句代码&#xff0c;却是会报KeyError&#xff0c;如下图&#xff1a; Python3.10和Python3.9也能复现该情况&#xff0c;正当我摩拳踩掌&#xff0c…

C语言知识点补充——ASCLL码表

1、ASCLL码表 ASCII码表&#xff08;American Standard Code for Information Interchange&#xff09;是一种用于将字符编码为数字的标准。它定义了128个字符的编码方式&#xff0c;包括数字、字母、标点符号和控制字符等。每个字符都对应一个唯一的7位或8位二进制数 2、Ascl…

【Ping】Windows 网络延迟测试 ping 、telnet、tcping 工具

ping 命令 属于网络层的ICMP协议&#xff0c;只能检查 IP 的连通性或网络连接速度&#xff0c; 无法检测IP的端口状态。 telnet telnet命令&#xff0c;属于应用层的协议&#xff0c;用于远程登录&#xff0c;也可用于检测IP的端口状态。但是功能有限&#xff0c;只能检测一时…

如何使git提交的时候忽略一些特殊文件?

认识.gitignore文件 在生成远程仓库的时候我们会看到这样一个选项&#xff1a; 这个.gitignore文件有啥用呢&#xff1f; .gotignore文件是Git版本控制系统中的一个特殊文件。用来指定哪些文件或者目录不被Git追踪或者提交到版本库中。也就意味着&#xff0c;如果我们有一些文…

linux学习笔记——硬盘原理以及linux中的sector与block

在计算机硬盘中&#xff0c;最小的存储单位叫做扇区sector&#xff0c;0.5kb&#xff0c;多个连续扇区组合在一起形成了块block&#xff0c;最小的块包含8个扇区&#xff0c;4kb 我们可以在linux中印证 创建一个新的文件2.txt&#xff0c;查看文件大小为0k 在文件中添加字符后…

Gradle基础学习(七) 认识插件

Gradle构建在一个插件系统上&#xff0c;本身主要由基础设施组成&#xff0c;比如有一个先进的依赖解析引擎&#xff0c;而其他功能则来自插件。 插件是提供额外功能给Gradle构建系统的软件组件。 插件可以被应用到Gradle构建脚本中&#xff0c;以添加新的任务、配置或其他与构…

第八篇:深入探索操作系统架构:从基础到前沿

深入探索操作系统架构&#xff1a;从基础到前沿 1 引言 在当今这个高速发展的数字时代&#xff0c;操作系统无疑是计算机科学领域的基石之一。它不仅是计算机硬件与最终用户之间的桥梁&#xff0c;更是实现高效计算和资源管理的关键。操作系统的架构&#xff0c;即其内部结构和…

51单片机入门:蜂鸣器

蜂鸣器介绍 蜂鸣器是一种将电信号转换为声音信号的器件&#xff0c;常用来产生设备的按键音、报警音等提示信号。 蜂鸣器的种类 1、从结构上&#xff1a;压电式蜂鸣器和电磁式蜂鸣器。 压电式蜂鸣器&#xff1a;通过压电陶瓷的压电效应原理工作的。当加有交变电压时&#xf…

企业微信主体能不能修改?

企业微信变更主体有什么作用&#xff1f;当我们的企业因为各种原因需要注销或已经注销&#xff0c;或者运营变更等情况&#xff0c;企业微信无法继续使用原主体继续使用时&#xff0c;可以申请企业主体变更&#xff0c;变更为新的主体。企业微信变更主体的条件有哪些&#xff1…

C 深入指针(2)

目录 1 野指针 1.1 成因 1.2 如何规避野指针 2 assert 断言 2.1 用法 2.2 assert 的优点 2.1 assert 的缺点 3 小注解 3.1 Debug 和 Release 1 野指针 【概念】&#xff1a; 野指针就是指针指向的位置是不可知的&#xff08;随机的、不正确的、没有明确限制的&#…

CSS Web服务器、2D、动画和3D转换

Web服务器 我们自己写的网站只能自己访问浏览&#xff0c;但是如果想让其他人也浏览&#xff0c;可以将它放到服务器上。 什么是Web服务器 服务器(我们也会称之为主机)是提供计算服务的设备&#xff0c;它也是一台计算机。在网络环境下&#xff0c;根据服务器提供的服务类型不…