【论文解读】SiamMAE:用于从视频中学习视觉对应关系的 MAE 简单扩展

news2024/9/21 0:52:02

来源:投稿 作者:橡皮
编辑:学姐

论文链接:https://siam-mae-video.github.io/resources/paper.pdf

项目主页:https://siam-mae-video.github.io/

1.背景

时间是视觉学习背景下的一个特殊维度,它提供了一种结构,在该结构中,可以感知顺序事件、学习因果关系、跟踪物体在空间中的移动,以及预测未来事件。所有这些功能的核心是随着时间的推移建立视觉对应的能力。我们的视觉系统擅长在场景之间建立对应关系,尽管存在遮挡、视点变化和对象变换。这种能力是无人监督的,对人类视觉感知至关重要,并且仍然是计算机视觉领域的重大挑战。为机器配备这种能力可以实现广泛的应用,例如视频中的对象分割和跟踪、深度和光流估计以及 3D 重建。

一种强大的自监督学习范例是预测性学习,即根据信号的任何观察到或未隐藏部分预测信号的任何未观察到或隐藏部分。值得注意的是,这种形式的预测学习已被用于通过观察(彩色)过去参考帧来预测灰度未来帧的颜色来学习对应关系。然而,这些方法的性能落后于对比自监督学习方法。学习对应的最先进方法主要采用某种形式的对比学习。直观上,基于对比学习的方法非常适合学习对应的任务,因为它们利用广泛的数据增强来学习不随姿势、光照、视点和其他因素的变化而变化的特征。然而,对对比方法的一个主要批评是它们依赖于仔细选择增强来学习有用的不变性 ,以及一套额外的组件来防止表征崩溃。

最近,掩蔽语言建模和掩蔽视觉建模 (MVM)等预测学习方法在自然语言处理和计算机视觉领域取得了令人鼓舞的成果。像 Masked Autoencoders (MAE) 这样的 MVM 方法通过学习从随机屏蔽的输入图像块中重建丢失的块,在不依赖数据增强的情况下学习良好的视觉表示。然而,出于两个原因,将 MVM 方法从图像扩展到视频以学习对应关系并非易事。首先,MAE 学习的特征专门用于像素重建任务,在微调方面表现出出色的下游性能,但在零样本设置中迁移效果不佳。其次,视频领域中 MAE 的现有扩展也对称地掩盖了所有帧中的大部分补丁。与(大约)各向同性的图像不同,时间维度是特殊的,并且并非所有时空方向都同样可能。因此,对称地处理空间和时间信息可能是次优的。事实上,在视频实例跟踪基准上,在视频上训练的 MAE 的表现并不优于在 ImageNet 上训练的 MAE(表 1)。

2.本文主要贡献

为了解决这些限制,我们提出了 Siamese Masked Autoencoders (SiamMAE):MAE 的简单扩展,用于从视频中学习视觉对应。

在我们的方法中,从视频剪辑中随机选择两帧,未来帧的大部分 (95%) 补丁被随机屏蔽,而过去的帧保持不变。这些帧由编码器网络独立处理,由一系列交叉注意层组成的解码器负责预测未来帧中丢失的补丁。我们的非对称掩蔽方法鼓励网络对物体运动进行建模,或者换句话说,理解什么去了哪里。将 MAE 简单扩展到具有对称掩蔽的帧会浪费模型容量来建模低级图像细节。然而,通过提供整个过去的帧作为输入,我们的网络主要专注于将补丁从过去的帧传播到它们在未来帧中的相应位置。我们解码器中的交叉注意层的功能类似于自监督对应学习方法中经常使用的亲和力矩阵。根据经验,我们发现非对称掩蔽、连体编码器和我们的解码器的组合可以有效地学习适合需要细粒度和对象级对应的任务的特征。

尽管我们的方法在概念上很简单,但它在视频对象分割、姿势关键点传播和语义部分传播方面优于最先进的自监督方法。

此外,我们的 ViT-S/16 模型在视频对象分割任务中通过 MVM 显着优于在 ImageNet(+8.5% J &Fm for ViT-B)和 Kinetics-400(+7.4% J &Fm for ViT-L)上训练的大型模型。我们还观察到使用较小补丁大小 (ViT-S/8) 训练的模型在所有任务中的显着性能提升。 SiamMAE 在不依赖数据增强、手工制作的基于跟踪的借口任务、多作物训练、防止表征崩溃的附加技术的情况下取得了有竞争力的结果或提高性能。我们相信,我们详细的分析、直接的方法和最先进的性能可以作为自我监督对应学习的强大基线。

3.方法介绍

我们的目标是开发一种学习对应关系的自我监督方法。为此,我们研究了 MAE对视频数据的简单扩展(图 1)。在本节中,我们描述了连体蒙版自动编码器的关键组件。

图 1:Siamese Masked 自动编码器。在预训练期间,我们随机采样一对视频帧并随机屏蔽未来帧的大部分 (95%) 块,同时保持过去帧不变。这两帧由 ViT [31] 参数化的连体编码器独立处理。解码器由一系列交叉注意层组成,并预测未来帧中丢失的补丁。

3.1 Patchify.

给定一个有 L 帧的视频剪辑,我们首先随机采样 2 帧 f1 和 f2。这两个帧之间的距离是通过从预定的潜在帧间隙范围中选择一个随机值来确定的。按照原始 ViT [31],我们通过将每一帧转换为一系列非重叠的 N×N 补丁来“补丁化”每一帧。最后,将位置嵌入 [94] 添加到补丁的线性投影 [31] 中,并附加一个 [CLS] 标记。我们不使用任何时间位置嵌入。

3.2 Masking.

图像和视频等自然信号是高度冗余的,分别表现出空间和时空冗余。为了创建具有挑战性的预测性自监督学习任务,MAE 随机屏蔽了高比例 (75%) 的图像块,视频扩展使用了更高的屏蔽率 (90%)。在图像和视频中,屏蔽策略是对称的,即所有帧都具有相似的屏蔽率。这种深思熟虑的设计选择阻止了网络利用和学习时间对应,导致对应学习基准的性能不佳。

我们假设不对称掩码可以创建具有挑战性的自我监督学习任务,同时鼓励网络学习时间相关性。具体来说,我们不屏蔽 f1 中的任何补丁 (0%) 并屏蔽 f2 中非常高比例 (95%) 的补丁。通过提供整个过去的帧作为输入,网络只需要将补丁从过去的帧传播到它们在未来帧中的适当位置。这反过来又鼓励网络对物体运动进行建模并关注物体边界(图 5)。为了进一步增加任务的难度,我们对时间间隔较大的两帧进行采样。尽管进一步预测未来本质上是模棱两可的,并且可能会产生多个似是而非的结果,但提供少量补丁作为第二帧的输入会导致具有挑战性但易于处理的自监督学习任务。

3.3 Encoder.

我们探索了两种不同的编码器配置来处理输入帧。

joint encoder是图像 MAE 到一对帧的自然扩展。来自两个帧的未屏蔽补丁被连接起来,然后由标准 ViT 编码器处理。

*siamese encoder *是用于比较实体的权重共享神经网络,是现代对比表示学习方法的重要组成部分。 Siamese 网络已用于对应学习,并且通常需要一些信息瓶颈来防止网络学习琐碎的解决方案。例如,Lai 和 Xie提出使用颜色通道 dropout 来强制网络避免依赖颜色来匹配对应关系。我们使用孪生编码器独立处理两个帧,我们的不对称掩码成为信息瓶颈。

3.4 Decoder.

使用线性层投影编码器的输出,并添加具有位置嵌入的 [MASK] 标记以生成与输入帧对应的完整标记集。我们探索了三种不同的解码器配置,它们对全套令牌进行操作。

joint decoder将原始 Transformer 块应用于来自两个帧的完整标记集的串联。这种方法的一个主要缺点是显着增加了 GPU 内存需求,尤其是在使用较小的补丁大小时。

cross-self decoder类似于 Transformer模型的原始编码器-解码器设计。每个解码器块由一个交叉注意层和一个自注意层组成。来自 f2 的标记通过交叉注意层关注来自 f1 的标记,然后通过自注意层相互关注。我们注意到,交叉注意层在功能上类似于自监督对应学习方法中经常使用的亲和矩阵。

cross decoder由仅具有交叉注意层的解码器块组成,其中来自 f2 的标记参与来自 f1 的标记。

最后,解码器的输出序列用于预测屏蔽补丁中的归一化像素值。 l2 loss应用于解码器的预测和ground truth之间。

4.实验

在本节中,我们在三个不同的任务上评估我们的方法,将其性能与现有的最先进方法进行比较,并对不同的设计选择进行广泛的消融研究。

图 2:Kinetics-400验证集的可视化(掩蔽率 90%)。对于每个视频序列,我们采样一个 8 帧的剪辑,帧间距为 4,并显示原始视频(顶部)、SiamMAE 输出(中间)和屏蔽的未来帧(底部)。重建显示为 f1 作为视频剪辑的第一帧,f2 作为剩余帧,使用 SiamMAE 预训练的 ViT-S/8 编码器,屏蔽率为 95%。

图 3:三个下游任务的定性结果:视频对象分割 (DA VIS2017)、人体姿势传播 (JHMDB) 和语义部分传播 (VIP)。

4.1 实验设置

骨干网络。 我们在大部分实验中使用 ViT-S/16 模型,因为它在参数数量(21M 与 23M)方面与 ResNet-50 相似,并且允许对不同的自监督学习和对应学习方法进行公平比较。

预训练。 使用 Kinetics-400对模型进行预训练以进行自我监督学习。 SiamMAE 将随机采样帧 (224 × 224) 作为输入对,帧间隙范围为 4 到 48 帧,速率为 30 fps。我们执行最小的数据增强:随机调整大小的裁剪和水平翻转。为消融研究(表 2、3)进行了 400 个时期的训练,为表 1 中的结果进行了 2000 个时期的训练。我们采用重复采样因子为 2 并报告“有效时期”,即数量训练期间观看培训视频的次数。我们使用批量大小为 2048 的 AdamW 优化器。

评估方法。 我们在三个下游任务上使用 k 最近邻推理评估密集对应任务的学习表示质量:视频对象分割 (DA VIS-2017)、人体姿势传播 (JHMDB) 和语义部分传播 (VIP))。在之前的工作之后,所有任务都被表述为视频标签传播:给定初始帧的真实标签,目标是预测视频未来帧中每个像素的标签。我们还通过维护最后 m 帧的队列在推理期间提供时间上下文,并且我们将考虑的源补丁集限制在查询补丁的空间邻域内。

4.2 与之前工作的比较

视频对象分割。 我们首先在 DA VIS 201上评估我们的模型,这是视频对象分割的基准,用于半监督多对象分割的任务。我们遵循先前工作的评估协议,并使用 480p 分辨率的图像进行评估。我们发现 SiamMAE 明显优于 VideoMAE(39.3% 至 62.0%),我们将其归因于 VideoMAE 中使用的管掩蔽方案阻止了模型学习时间对应关系。与 DINO一样,我们还发现减小补丁大小可以显着提高性能。我们的 ViT-S/8 (+9.4%) 模型优于所有先前的对比学习和自我监督对应学习方法。最后,我们注意到,尽管使用随机掩码训练的较大 MAE-ST 模型(ViT-L/16、304M 参数)的性能优于 VideoMAE,但它们的性能仍然落后于 SiamMAE 相当大的差距。令人惊讶的是,我们发现在视频上训练的 MAE 与图像 MAE 的表现相似。与(大约)各向同性的图像不同,时间维度是特殊的,并且并非所有时空方向都同样可能。因此,对称地处理空间和时间信息可能是次优的。

视频部分分割。 接下来,我们在视频实例解析 (VIP) 基准上评估 SiamMAE,它涉及为 20 个不同的人体部分传播语义掩码。与我们评估中的其他数据集相比,VIP 特别具有挑战性,因为它涉及更长的视频(长达 120 秒)。我们遵循先前工作的评估协议,使用 560 × 560 图像和单个上下文框架。在这项具有挑战性的任务中,我们的 ViT-S/8 模型大大优于 DINO(39.5 至 45.9)。与 DINO 相比,SiamMAE 从更小的补丁尺寸中获益更多,比 DINO 的 +3.3 mIoU 提高了 +8.6 mIoU。最后,SiamMAE 优于所有先前的对比学习和自我监督对应学习方法。

姿势追踪。 我们在关键点传播任务上评估 SiamMAE,这涉及传播 15 个关键点并需要空间精确对应。我们遵循先前工作的评估协议,使用 320 × 320 图像和单个上下文框架。 SiamMAE 优于所有先前的工作,并且从比 DINO(+14.9 到 +10.9 PCK@0.1)更小的补丁尺寸中受益更多。

表 1:与三个下游任务的先前工作比较:视频对象分割 (DA VIS-2017)、人体姿态传播 (JHMDB) 和语义部分传播 (VIP)。

表 2:DA VIS上的 SiamMAE 消融实验,默认设置:连体编码器、交叉自解码器、不对称 (a) 掩蔽率 (95%) 和帧采样间隙。默认设置标记为蓝色,(s) 表示对称掩蔽。

表 3:数据扩充。我们消除了手动(空间和颜色抖动)和自然数据增强(帧采样)对于通过 DA VIS 上的 SiamMAE 学习对应关系的重要性。

图 4:训练计划和补丁大小。 ViT-S/16 和 ViT-S/8 模型的 3 个下游任务的 SiamMAE 性能评估。在所有任务中,更长的训练时间和更小的补丁大小可以提高性能。

4.3 消融研究

我们消融 SiamMAE 以了解每个设计决策对默认设置的贡献:孪生编码器、交叉自我解码器、不对称掩蔽率 (95%)、帧采样间隙 4 − 48。

帧MAE。 我们将 SiamMAE 与 FrameMAE(表 2a)进行比较,FrameMAE 是 MAE 对视频帧的扩展,即具有对称屏蔽比的联合编码器和联合解码器。当掩蔽率过高 (90%) 或过低 (50%) 时,FrameMAE 的性能明显变差。在 90% 的掩蔽率下,由于可用于学习时间对应的补丁数量不足,任务变得具有挑战性(更高的损失)。当掩蔽率为 50% 时,任务变得更容易(损失更低),并且由于图像的空间冗余,网络可以在不依赖时间信息的情况下重建帧。具有不对称掩蔽率的 SiamMAE 效果最好。

编码器-解码器设计。 SiamMAE 的一个重要设计决策是编码器和解码器的选择。我们在表 2b 中研究了具有不对称掩蔽的编码器和解码器的各种组合的性能。在所有解码器设计中,联合编码器的性能明显低于连体编码器。这可以归因于训练和测试设置之间的差异,因为每个帧在测试阶段都是独立处理的。带有交叉解码器的连体编码器在连体编码器中表现最差。我们还观察到训练损失更高并且重建的帧在空间上不连贯,因为来自 f2 的所有补丁都是独立处理的。最后,孪生编码器与交叉自我解码器的组合优于所有其他配对。交叉注意力操作类似于自监督对应学习中使用的亲和矩阵,也用于我们的评估协议中的标签传播。因此,通过独立处理帧并通过交叉自我解码器解码它们,鼓励网络学习良好的密集视觉对应表示。

掩码。 接下来,我们讨论屏蔽方案对连体编码器与自交叉解码器组合的影响。随机对称掩蔽性能较差,也比相应的 FrameMAE 配置差(表 2a、2c)。我们还研究了网格方式的掩码采样策略,该策略保留每个交替的补丁。这是一项更容易的任务,因为掩蔽模式使网络能够利用和学习时空相关性。尽管我们看到了显着的进步(41.5 到 48.2),但与 SiamMAE 相比,性能仍然很差。在表 2d 中,我们研究了不同不对称掩蔽比的作用。我们注意到一个明显的趋势:将掩蔽率从 50% 增加到 95% 会提高性能(49.0% 到 58.1%)。

数据扩充。 在表 3a 中,我们研究了不同数据增强策略的影响。与图像 [24] 和视频 [27] 领域中的发现类似,我们发现 SiamMAE 不需要大量的数据增强来实现竞争性能。缩放范围为 [0.5, 1] 的随机裁剪和水平翻转效果最好,添加颜色抖动会导致性能下降。像 DINO 这样的对比方法通过使用广泛的数据增强显示出令人印象深刻的 k-NN 性能。相比之下,SiamMAE 依靠视频中可用的自然数据增强实现了卓越的结果,接下来将讨论。

帧采样。 视频数据是数据增强的丰富来源,例如姿势、光照视点、遮挡等方面的变化。为了有效利用这一点,我们在表 3b 中研究了帧采样的重要性。当我们增加帧采样间隙时,性能会提高。自然视频经常表现出渐进的时间变化;因此,增加帧间隔会导致更强大的自然数据增强,从而提高性能。我们的帧采样策略简单有效:随机采样帧间隙为 4 到 48 帧的帧。

训练时间表。 如前所述,我们的消融基于 400 个纪元的预训练。图 4 研究了 ViT-S/16 和 ViT-S/8 模型的训练长度计划对本工作中考虑的三个下游任务的影响。由于计算限制,我们报告了在不同检查点对单个模型的评估。在两个补丁大小和所有任务中,准确性会随着训练时间的延长而逐渐提高。

4.4 定性分析**

在图 5 中,我们可视化了 ViT-S/8 模型的自注意力图。我们使用 [CLS] 标记作为查询,并使用来自 ImageNet 的 720p 图像可视化最后一层单个头部的注意力。

图 5:自注意力图。来自 ViT-S/8 模型的自注意力图。我们检查了最后一层头部 [CLS] 标记的自注意力。与对比方法不同,没有明确的损失函数作用于 [CLS] 标记。这些自注意力图表明该模型已经从视频中的对象运动中学习了对象边界的概念。

我们发现该模型关注对象边界。例如,它可以清楚地勾勒出标志性物体(如第一行第一列的羊)、多个物体(如第三行第六列的三名棒球运动员),甚至在场景杂乱时(如图所示)第二行第四列的鸟)。虽然其他自监督学习方法已经报告了涌现的对象分割能力,但我们不知道有任何方法展示了预测对象边界的涌现能力。这种涌现能力是独特且令人惊讶的,因为与对比学习方法不同,SiamMAE(或 MAE)中的 [CLS] 标记没有损失函数。我们将这种能力的出现归因于我们的不对称掩蔽率,这鼓励模型从视频中的物体运动中了解物体边界。

5.结论和局限性

在这项工作中,我们介绍了 SiamMAE,这是一种从视频中进行表示学习的简单方法。我们的方法基于这样一种直觉,即时间维度应该与空间维度区别对待。我们证明了一种非对称掩蔽策略,即在保持过去帧不变的同时,掩蔽未来帧的大部分补丁,是学习对应的有效策略。通过预测未来帧的大部分,我们发现我们的 SiamMAE 能够学习对象边界的概念(图 5)。此外,与 MAE 不同的是,通过我们的方法学习的特征可以以零样本的方式使用,并且在各种任务中优于最先进的自监督方法,例如视频对象分割、姿势关键点传播和语义部分传播. SiamMAE 实现了这些有竞争力的结果,而无需数据增强、手工制作的基于跟踪的借口任务或其他防止表征崩溃的技术。我们希望我们的工作能够通过预测未来来鼓励进一步探索学习表征。

局限性和未来的工作。 我们的研究侧重于通过对视频帧对进行操作来学习对应关系。这种选择是由该方法的经验成功和可用计算资源有限驱动的。因此,我们认为需要进一步研究以了解基于过去帧预测多个未来帧的作用,包括一般视觉表示学习和特定的对应学习。一个重要的未来方向是系统地检查我们的方法在数据和模型大小方面的可扩展性。继之前的工作之后,我们利用互联网视频进行预训练。然而,还必须调查不同类型的视频数据的影响,例如以自我为中心的视频与“野外”互联网视频。最后,我们学习到的表征在涉及具体代理(即机器人)的应用中具有潜力,因为对应的概念在诸如对象操纵、导航和动态环境中的交互等任务中可能很有用。

关注下方《学姐带你玩AI》🚀🚀🚀

回复“ViT200”获取全部190+篇ViT论文+代码合集

码字不易,欢迎大家点赞评论收藏!

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

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

相关文章

年终关账四大财务处理技巧|柯桥会计做账,财税知识

2023年即将落下帷幕,无数公司最忙碌就是“年终关账“这件事了。 “年终关账”不仅是企业内部结算一年经营结果的事,还与企业所得税汇算清缴息息相关,甚至还可能关乎企业税负高低与企业是否依法纳税,千万不可小觑。 同时&#xff0…

MySQL 管理端口

错误 客户出现 MySQL连接数 超过 最大连接数的现象 ERROR 1040 (HY000): Too many connections 出现该现象,一般的解决方法: 1.修改配置文件中的最大连接数,之后重启数据库 2.如果配置文件中没有设置 连接超时时间的参数。8小时后&#…

平衡小车——编码器

学习目标 了解编码器的构成理解编码器采样原理掌握编码器获取转速信息学习内容 编码器组成 左侧的减速齿轮中间的电机部分右侧的电路板减速齿轮 将电机转速通过齿轮按照一定比例进行降速。 电路板 电路板中,包含了一个圆形磁体,还有两个霍尔传感器。 电机转动时,圆形的磁…

Spring之AOP源码(一)

文章目录 一、动态代理1. 概念2. Cglib动态代理的使用3. JDK动态代理的使用 二、SpringAOP1. 简介2. Spring AOP使用 一、动态代理 1. 概念 动态代理(Dynamic Proxy)是一种在运行时动态生成代理对象的技术。它是一种设计模式,用于在不修改原…

安卓手机变iOS!

Launcher iOS 16 - 安卓手机秒变iOS Launcher iOS 16 是一款iOS启动器,可以将安卓手机桌面变成iOS样子,还有iOS的开机动画和景深效果! 下载链接:【Launcher iOS 16】 ​

【CCNet】《CCNet:Criss-Cross Attention for Semantic Segmentation》

ICCV-2019 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 Experiments on Cityscapess5.3 Experiments on ADE20K5.4 Experiments on COCO 6 Conclusion(own) 1 Ba…

也谈人工智能——AI科普入门

文章目录 1. 科普入门人工智能的定义人工智能的类型 - 弱 AI 与强 AI人工智能、深度学习与机器学习人工智能的应用和使用场景语音识别计算机视觉客户服务建议引擎数据分析网络安全 行业应用人工智能发展史![img](https://img-blog.csdnimg.cn/img_convert/66aeaaeac6870f432fc4…

Vue的api接口封装以及使用说明、模块说明

在Api目录下面建立user.js,如果以后有不同的接口请求地址都可以单独创建不同的,目的是方便维护! import request from /utils/request 这个代码是引入之前封装好的 request.js 文件,具体可以参考上门一篇文档 Vue的request.js模…

深入剖析开源大模型+Langchain框架,智能问答系统性能下降原因

大模型(LLM)相关理论研究与工程实践随着 GPT3 的发布,在学术界、工业界大爆发,备受各行各业关注,并涌现出一些赋能行业、促进生产力、生产关系变革的实践。GPT3 [1] 以及斯坦福计算机学院近 100 教授联名论文 [2] 将大…

pymssql 报错误解决办法:20002, severity 9

错误 解决办法 python3.6,安装pymssql低版本(pymssql-2.1.5-cp36-cp36m-win32.whl)

腾讯云有没有免费云服务器?如何申请?

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM,轻量配置可选2核2G3M、2核8G7M和4核8G12M,CVM云服务器可选2核2G3M和2核4G3M配置,腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

【前后端的那些事】快速上手富文本+富文本图片上传

文章目录 fullText富文本1. 后端接口1.1 定义常量1.2 定义返回实体类1.3 上传图片接口1.4 下载图片接口 2. 前端代码编写2.1 安装2.2 快速使用 3. 配置富文本图片上传地址3.1 配置图片上传配置 4. 全部代码展示 前言:最近写项目,发现了一些很有意思的功能…

【JaveWeb教程】(23) MySQL数据库开发之事务与索引 详细代码示例讲解(最全面)

目录 2. 事务2.1 介绍2.2 操作2.3 四大特性 3. 索引3.1 介绍3.2 结构3.3 语法 2. 事务 场景:学工部整个部门解散了,该部门及部门下的员工都需要删除了。 操作: -- 删除学工部 delete from dept where id 1; -- 删除成功-- 删除学工部的员工…

定制一套ERP系统大概要多少钱?ERP软件定制报价

定制一套ERP系统大概要多少钱?ERP软件定制报价 每个企业的需求和情况都是独特的,在不清楚题主所在企业的规模、业务流程、所需功能等情况时,确实没办法给出项目预算。 我们公司也定制过管理系统,经验就是,建议在开始…

MySQL数据库设计原则

0.简单的处理逻辑 一.MySQL完整性约束 主键约束 primary key 自增键约束 auto_increment 唯一键约束 unique 非空约束 not null 默认值约束 default 外键约束 foreign key 下面是一个sql语句创建一个表,可以看出来了使用了哪几个约束吗? create table user( id int…

如何将重复方法封装为Aop切面并结合注解使用

首先要导入依赖 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId> </dependency> 编写注解 package com.yg.domain.note;import java.lang.annotation.ElementType; import java.lang.annotation.Rete…

u盘监控系统—公司电脑如何监控U盘使用?【详解】

在当今的办公环境中&#xff0c;U盘等移动存储设备已成为数据传输和存储的重要工具。 然而&#xff0c;随着U盘的广泛使用&#xff0c;也带来了潜在的安全风险&#xff0c;如数据泄露、病毒传播等。 因此&#xff0c;对于随时会有数据泄露风险的企业而言&#xff0c;U盘的使用…

Jetpack Compose -> 声明式UI Modifier

前言 本章主要介绍下 Compose 的声明式 UI 以及初级写法&#xff1b; 什么是声明式UI 传统UI 传统 UI 方式来声明UI <androidx.appcompat.widget.LinearLayoutCompat android:layout_width"match_parent" android:layout_height"match_parent&quo…

(Java企业 / 公司项目)分布式事务Seata详解(含Seata+Nacos组合使用)

一. Seata介绍 Seata 是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前&#xff0c;其内部版本在阿里系内部一直扮演着应用架构层数据一致性的中间件角色&#xff0c;帮助经济体平稳的度过历年的双11&…

Ubuntu22.04,Nvidia4070配置llama2

大部分内容参考了这篇非常详细的博客&#xff0c;是我最近看到的为数不多的保姆级别的教学博客&#xff0c;建议大家去给博主点个赞【Ubuntu 20.04安装和深度学习环境搭建 4090显卡】_ubuntu20.04安装40系显卡驱动-CSDN博客 本篇主要是基于这篇博客结合自己配置的过程中一些注…