RoMA: 基于Mamba的遥感基础模型, 已开源, 首次验证mamba的scaling能力
Time: 2025-03-27T15:27:00
github: 链接
HuggingFace: 链接
摘要
近年来,自监督学习在视觉 Transformer(ViT)方面的进展推动了遥感(RS)基础模型的突破。然而,自注意力机制的二次复杂度给可扩展性带来了重大障碍,尤其是对于大型模型和高分辨率图像。虽然线性复杂度的 Mamba 架构提供了一种有希望的替代方案,但现有的 RS 应用 Mamba 仍然局限于小型、特定领域的监督任务。为了解决这些挑战,我们提出了 RoMA,这是一个框架,它通过使用大规模、多样化的未标记数据,使基于 Mamba 的 RS 基础模型的可扩展自监督预训练成为可能。RoMA 通过定制的自回归学习策略增强了高分辨率图像的可扩展性,包括两个关键创新:1)旋转感知预训练机制,结合自适应裁剪和角度嵌入来处理具有任意方向的稀疏分布对象,2)多尺度标记预测目标,解决遥感图像中固有的极端尺度变化。 系统性实证研究表明,Mamba 遵循 RS 数据和平滑缩放定律,性能随着模型和数据规模的增加而可靠地扩展。此外,在场景分类、目标检测和语义分割等任务上的实验表明,RoMA 预训练的 Mamba 模型在准确性和计算效率方面均优于基于 ViT 的同类模型。源代码和预训练模型将在 RoMA 发布。.
1 引言
过去十年,遥感(RS)技术进步和更高效的数据采集显著提升了生态系统监测[42]和自然灾害管理[3]中的应用。这些应用依赖于关键模型能力,如场景分类[21]、目标检测[24]、变化检测[58]和语义分割[64]。然而,仅基于有限的特定任务数据训练限制了当前遥感深度学习模型的规模和泛化能力。
近期自监督学习(SSL)[17, 61]的突破推动了遥感基础模型(RSFMs)[53, 10, 62, 44, 49, 41, 56, 23]的发展,这些模型提供了鲁棒的特征表示,并在各种遥感任务中表现出色。然而,许多任务涉及高分辨率图像——例如,目标检测数据集 DOTA 中的 4,000 × 4,000 像素图像。大多数 RSFMs 依赖于基于视觉 Transformer(ViT)的注意力架构,其二次复杂度限制了其在高分辨率数据上的实用性。为了克服这一挑战,研究人员正在探索在具有线性复杂度的架构上预训练 RSFMs,其中 Mamba [68]成为了一种有希望的替代方案。
曼巴架构在遥感领域因其高效推理高分辨率图像在下游任务中的表现而备受推崇[63, 6]。然而,基于曼巴的研究目前局限于小规模训练数据集,限制了它们接触多样化遥感数据的机会。这与基于 ViT 的 RSFMs 趋势形成对比,后者利用自监督预训练来利用大量未标记数据。因此,探索为曼巴应用自监督学习以利用大规模遥感数据——从而与 ViT 竞争——是一个有前景但尚未充分探索的方向。
自回归预训练[9, 50]通过将图像表示为 1 维序列并采用下一个标记预测,为 Mamba 的序列连续性挑战提供了一种原则性的解决方案。其因果标记依赖自然与 Mamba 的单向线性时间扫描相一致,在不引入掩码引入的干扰的情况下保持空间连贯性。虽然这种方法已成功应用于自然图像[9, 50, 45],但遥感图像提出了独特的挑战,这些挑战在很大程度上仍未得到解决。我们强调三个关键挑战:(1)遥感图像通常包含在复杂背景中稀疏分布的前景对象。(2)与自然图像中的对象不同,由于重力,自然图像中的对象通常保持固定的方向,而高空遥感图像中的对象具有不同的方向。(3)遥感图像中对象尺寸范围广泛,这使有效表示的提取变得复杂。这些挑战自然会引发一个问题:基于 Mamba 的 RSFMs 是否可以随着模型规模的增加和更大数据量的增加而有效地扩展——这与自我监督预训练 ViT 架构观察到的性能改进相呼应[47, 34]。
为了解决这些挑战,我们提出了旋转感知多尺度自回归学习(RoMA),这是一个框架,它使得基于 Mamba 的 RSFMs 能够使用大规模、多样化的未标记数据进行可扩展的自监督预训练。具体来说,RoMA 通过定制的自回归学习策略增强了高分辨率图像的可扩展性,包括两个关键创新:(1)一种旋转感知预训练机制,结合自适应裁剪和角度嵌入来处理具有任意方向的稀疏分布对象。通过识别旋转增强的关键区域,它增强了旋转不变性表示学习。此外,它在旋转裁剪期间嵌入角度信息,并要求模型在自回归预训练期间预测角度变化,进一步强化旋转不变性视觉表示;(2)多尺度标记预测目标,解决 RS 图像中固有的对象尺度极端变化。通过跨多个空间尺度聚合预测标记信息,这种策略有助于 Mamba 在自回归预训练期间捕获更完整和结构上更稳健的对象表示。
基于 RoMA,我们探讨了其在预训练基于 Mamba 的 RSFM 中的潜力。通过系统性的实证研究,我们证实 Mamba 与 RS 数据和参数缩放定律相一致,随着模型和数据规模的增加,表现出可靠的性能提升。此外,在场景分类、目标检测和语义分割任务上的实验表明,RoMA 预训练的 Mamba 模型在准确性和计算效率方面均优于其基于 ViT 的对应模型。
本研究的贡献如下:
- 我们引入了 RoMA,这是第一个用于遥感中 Mamba 架构的自监督自回归预训练框架,使其能够高效地扩展到高分辨率遥感图像。RoMA 验证了基于 Mamba 的 RSFM 遵循缩放定律,随着模型和数据集的增大,实现了一致的性能提升。
- 我们提出了一种动态旋转感知机制,该机制集成了自适应区域裁剪和角度感知嵌入。通过引导模型在自回归学习过程中预测角度变化,它有效地解决了旋转多样性和稀疏目标分布问题,增强了旋转不变特征学习。
- 我们设计了一种多尺度预测目标,以解决物体尺度极端变化的问题,使模型能够学习到适用于下游任务的鲁棒物体表示。
2 相关工作
图 1:我们自回归预训练方法与 MAE 方法的区别。主要区别:(1)自回归预训练对 Mamba 编码器的所有图像块进行编码,而 MAE 预训练只对 ViT 编码器的随机选择子集进行编码。(2)自回归预训练通过预测下一个标记来学习标记序列的连续性,而 MAE 只重建和预测随机遮蔽的块来计算损失。
2.1 遥感基础模型
尽管存在大量遥感数据,但其中大部分未标注,因此无法用于监督学习[52]。最近,自监督学习框架被用于从未标注的遥感数据中学习表示,用于场景分类、目标检测和语义分割等任务。遥感中的自监督方法主要分为两大类:基于生成的方法和基于对比学习的方法[17]和[4]。作为基于对比学习的方法,GASSL[1]和 CACo[35]使用额外的时空信息,而 SeCo[36]则关注不同时间戳的多个地球位置。最近在遥感领域的大部分工作都集中在基于生成的自监督方法上,如掩码图像建模(MIM)方法,它可以进一步分为以下几类:利用通用图像知识[38]、扩展参数规模[5]、整合时空信息[10]、处理多传感器数据[15, 19, 25, 40]和利用多尺度概念[44, 49, 41]。ScaleMAE[44]、Cross-ScaleMAE[49]和 SatMAE++[41]使用多尺度概念通过 MIM 方法提高性能。 MA3E [26] 将遥感角度因素集成到编码器和解码器的 MIM 训练架构中。
虽然这些方法提高了性能,但它们主要集中于基于 ViT 的 RSFMs 和基于 MIM 的预训练方法。基于 Mamba 的 RSFMs 使用自回归方法进行预训练尚未被遥感社区探索。
2.2 遥感中的视觉 Mamba
最近,Mamba 架构在 NLP 领域表现出色,并被应用于视觉领域以解决视觉问题。视觉 Mamba(Vim)[68]使用由 Mamba 层组成的 Vim 块,通过正向和反向扫描来建模双向表示。Vmamba [31] 结合了视觉状态空间(VSS)块,将 Mamba 和 2D 卷积层相结合,并支持类似 Swin Transformer [32] 的金字塔架构。视觉 Mamba 架构也扩展到遥感领域,产生了各种基于 Mamba 的项目,分为四类:分类、检测、分割和其他。对于分类,SSMamba [22] 和 SpectralMamba [63] 处理高光谱数据,而 RSMamba [8] 专注于可见光。检测方法如 ChangeMamba [6] 和 RSCaMa [27] 专注于变化检测。分割方法包括 Samba [69] 和 RS-Mamba [66],它们仅使用 Mamba。尽管在遥感领域使用 Mamba 的研究越来越多,但当前工作仅限于在小型数据集上的监督训练,并未充分利用遥感数据的巨大潜力。
2.3 视觉中的自监督学习
受自然语言处理中自监督学习成功的影响,视觉自监督学习方法在三个主要类别中蓬勃发展:对比学习[4, 16, 55]、自回归学习[9, 43, 14]和掩码图像建模(MIM)[61, 17]。当前对 MIM 的研究主要集中在回归目标和掩码策略上。各种目标包括离散标记[2]、HOG 特征[57]、深度特征[67]和频率[28],都已经得到了探索。然而,MIM 方法在预训练 Mamba 架构[45]时往往面临训练问题。
近期,视觉领域的自回归预训练得到了探索。大多数工作,如 VAR [50],探讨了自回归在图像生成中的应用。我们更关注自回归在自监督预训练中的应用。iGPT [9] 首次强调了自回归预训练作为通用自监督视觉表示策略的潜力。SAIM [43]、RandSAC [20] 和 AIM [14] 进一步探讨了。这些工作主要关注预训练 ViT 系列,并未探索预训练 Mamba 系列。MAP [30] 首次预训练了混合 Mamba-Transformer 视觉骨干网络。ARM [45] 探讨了自回归预训练与 Mamba 在 ImageNet [12] 数据集上的兼容性,但未考虑 RS 领域的具体问题,如 RS 图像中的旋转不变表示和各种尺寸信息。值得注意的是,虽然 ARM 探讨了自然图像上不同尺寸的模型,但它并未评估 Mamba 自回归预训练在不同数据规模上的性能。在 RS 领域,我们是第一个建立 Mamba 预训练性能与数据量、模型大小之间关系的人。
3 方法
图 2:RoMA 预训练流程概述。首先将输入图像分割成块,然后使用自适应旋转编码策略选择高价值块进行随机旋转。这些块随后被标记化并由 Mamba 编码器处理。编码特征经过自回归的下一个标记预测,随后采用多尺度策略计算不同尺度的损失以进行梯度更新。RoMA 优化了 Mamba 架构以适应遥感,使其编码器成为适用于各种下游任务的鲁棒特征提取器。
3.1 预备知识
3.1.1 自回归模型
考虑一个离散标记序列 x = ( x 1 , x 2 , . . . , x N ) x=(x_{1},x_{2},...,x_{N}) x=(x1,x2,...,xN),其中 x n ∈ [ S ] x_{n}\in[S] xn∈[S] 是大小为 S S S 的词汇表中的一个整数。下一个标记的自回归模型认为观察当前标记 x n x_{n} xn 的概率仅取决于其前面的标记 ( x 1 , x 2 , . . . , x n − 1 ) (x_{1},x_{2},...,x_{n-1}) (x1,x2,...,xn−1) 。这种单向标记依赖假设使得序列 x 的似然分解如下:
p ( x 1 , x 2 , . . . , x N ) = ∏ n = 1 N p ( x n ∣ x 1 , x 2 , . . . , x n − 1 ) p(x_1,x_2,...,x_N)=\prod_{n=1}^Np(x_n\mid x_1,x_2,...,x_{n-1}) p(x1,x2,...,xN)=n=1∏Np(xn∣x1,x2,...,xn−1)
训练自回归模型涉及在数据集上优化。这个过程称为下一个标记预测,允许训练后的模型生成新的序列。
3.1.2 Mamba 的自回归预训练
之前的工作[53, 56, 10, 41, 44]主要使用基于 MAE 的方法进行 RSFM 的预训练。然而,这些方法主要适用于基于 ViT 的 RSFM。如第 1 节所述,高分辨率遥感场景需要具有线性复杂度的 RSFM,而不是 ViT 系列模型的二次复杂度。因此,如图 LABEL:fig:abstract 所示,我们比较了我们的 Mamba 架构与典型 ViT 模型在不同分辨率下的准确性、速度和 GPU 内存使用情况。结果表明,具有线性复杂度的 Mamba 在高分辨率场景中优于基于 ViT 的模型。
此外,之前工作中基于 MAE 的方法对 Mamba-based RSFM 的预训练无效。我们确定了在 RS 中使用 Mamba 架构进行自回归预训练的两个原因:1)自回归的优势,因为其编码与 Mamba 相似,2)MAE 的缺点,会破坏标记序列。
自回归优势:自回归模型和 Mamba 都执行基于补丁的操作(例如,Mamba 扫描单个补丁)并按顺序处理序列。如图 1 所示,自回归建模按顺序构建所有补丁,预测序列中的下一个标记。同样,Mamba 的核心扫描块按顺序处理整个图像。这种一致的编码使得自回归预训练更适合 Mamba 架构。
MAE 对标记序列的破坏:与自回归编码不同,MAE 掩盖部分标记并通过重建被掩盖的标记来学习。掩码是 MAE 的关键操作,破坏了序列标记之间的关系。如图 1 所示,掩码后,MAE 仅保留未连接的标记子集,防止基于 Mamba 的编码器执行线性扫描。Mamba 的线性扫描处理时间相关的标记,而不是随机相关的标记。
鉴于自回归方法的优点和 MAE 的颠覆性,我们倾向于使用自回归方法进行 Mamba 预训练。在理论分析的基础上,比较 MAE 和 Mamba[45]在各种下游任务的实验突出了自回归架构与 Mamba 的强兼容性。在遥感领域,与 ARM[45]在自然图像领域的结论一致。我们希望这将为 Mamba 在遥感领域的预训练建立坚实的基线,并激发进一步的研究。
3.2RoMA
我们提出了 RoMA 自回归预训练框架,用于遥感领域的 Mamba 架构。特别是,如图 2 所示,我们通过基于缓存的预测方法扩展了 iGPT[9]系列。Mamba-Encoder 处理整个图像以计算所有标记的 Key 和 Value 。然后我们从 Key 和 Value 计算可学习的查询向量,并计算 Query 与目标地面真实值之间的损失。基于自然图像的自回归预训练结构,RoMA 引入了两个关键贡献:自适应旋转编码策略和多尺度预测策略。
3.2.1 自适应旋转编码策略
自回归预训练对于自然图像没有考虑遥感图像中信息分布的不均匀、稀疏性和旋转不变性。例如,如图 3 所示,遥感图像包含冗余的机场跑道像素,不同的飞机角度会导致不同的姿态和形状。这些独特的特征促使我们重新思考编码器如何学习具有旋转不变性的高知识密度特征。在 RoMA 中,我们提出了一种自适应旋转编码策略来增强遥感图像的自回归预训练。
给定输入图像 ( x 1 , x 2 , . . . , x n − 1 ) (x_{1},x_{2},...,x_{n-1}) (x1,x2,...,xn−1) ,将其重塑为 N = ( H × W ) / p 2 N~=~(H\times W)/p^{2} N = (H×W)/p2 非重叠块 x p ∈ x^{p}\in xp∈ R N × ( p 2 C ) \mathbb{R}^{N\times(p^{2}C)} RN×(p2C),其中 p p p 是块大小, ( H , W ) (H,W) (H,W) 是输入图像的大小, C C C 是通道数。我们使用传统的特征描述符,如 LBP[18],计算每个块的特性 F ( ⋅ ) F(\cdot) F(⋅) ,并选择具有最高特征值的标记。该过程可以表示为:
t o k e n t o p = { x i p ∣ i = m , m ∈ t o p K ( F ( { x i p } i = 1 N ) ) } , t o k e n_{t o p}=\{x_{i}^{p}|i=m,m\in t o p_{K}(F(\{x_{i}^{p}\}_{i=1}^{N}))\}, tokentop={xip∣i=m,m∈topK(F({xip}i=1N))},
其中 t o k e n t o p t o k e n_{t o p} tokentop 表示选定的标记, t o p K ( ⋅ ) t o p_{K}(\cdot) topK(⋅) 表示选定顶级标记的索引集,数量为 K K K 。然后,以 t o k e n t o p t o k e n_{t o p} tokentop 表示的补丁为中心,将其大小扩展以获得更大、更合适的区域。具体来说,我们选择图像中包含 t o k e n t o p t o k e n_{t o p} tokentop的所有补丁,其固定边缘长度为 L i L_{i} Li 像素,如以下公式定义:
t o k e n L i = { x ( i h , i w ) p ∣ i h = [ m − ( L i / p ) , m + ( L i / p ) ] , i w = [ m − ( L i / p ) , m + ( L / p ) ] , L ( i w ) = L ( i h ) = L i / p } \begin{array}{r}{t o k e n_{L_{i}}=\{x_{(i_{h},i_{w})}^{p}|i_{h}=[m-(L_{i}/p),m+(L_{i}/p)],}\ {i_{w}=[m-(L_{i}/p),m+(L/p)],\mathcal{L}(i_{w})=\mathcal{L}(i_{h})=L_{i}/p\}}\end{array} tokenLi={x(ih,iw)p∣ih=[m−(Li/p),m+(Li/p)], iw=[m−(Li/p),m+(L/p)],L(iw)=L(ih)=Li/p}
其中, ( i h , i w ) (i_{h},i_{w}) (ih,iw) 定义了原始图像中按顺序排列的标记点中所选标记点的水平和垂直范围。 m a t h c a l L mathcal{L} mathcalL 表示根据补丁大小计算的区间长度。在提取边长为 L = { 96 , 64 , 32 } , L i ∈ L : L=\{96,64,32\},L_{i}\in L_{:} L={96,64,32},Li∈L: 的正方形标记区域 t o k e n L i t o k e n_{L_{i}} tokenLi 后,我们会计算其平均特征值,并将其与原始图像中每个补丁的平均特征值进行比较。如果 t o k e n L i t o k e n_{L_{i}} tokenLi 具有较高的平均特征值 a v g a l l = A v g ( F ( { x i p } i = 1 N ) ) \displaystyle a v g_{a l l}=A v g(F(\{x_{i}^{p}\}_{i=1}^{N})) avgall=Avg(F({xip}i=1N)),就会被识别为高值区域,并进入旋转步骤。否则,将选择一个较小的 L i L_{i} Li,并重新应用公式 3。此过程最多重复三次,直到找到平均特征值高于原始图像的区域为止。相应的公式如下
图 3:自适应旋转编码策略的说明。(a)自适应旋转编码策略的流程。(b)随机旋转选择随机补丁,没有自适应选择。在(b)中,随机方法会破坏遥感图像中的物体信息。
t o k e n L = { t o k e n L i , A v g ( F ( t o k e n L i ) ) ⩾ a v g a l l t o k e n L i + 1 , A v g ( F ( t o k e n L i + 1 ) ) ⩾ a v g a l l t o k e n L i + 2 , o t h e r w i s e t o k e n_{L}=\left\{\begin{array}{l l}{t o k e n_{L_{i}},}&{A v g(F(t o k e n_{L_{i}}))\geqslant a v g_{a l l}}\ {t o k e n_{L_{i+1}},}&{A v g(F(t o k e n_{L_{i+1}}))\geqslant a v g_{a l l}}\ {t o k e n_{L_{i+2}},}&{\mathrm{otherwise}}\end{array}\right. tokenL={tokenLi,Avg(F(tokenLi))⩾avgall tokenLi+1,Avg(F(tokenLi+1))⩾avgall tokenLi+2,otherwise
对选中的 t o k e n L t o k e n_{L} tokenL 进行裁剪,生成多种旋转遥感场景。对于边缘长度为 L L L 的正方形区域 t o k e n L token_{L} tokenL,随机旋转可能会导致边缘信息丢失。为了减少这种情况,我们按照 MA3E [26] 的方法进行中心裁剪,在最大的内切圆内保留内切正方形(黄色标记)。该区域朝向任何方向,都会取代原始场景,并引入明确的角度变化。除了位置嵌入外,我们还加入了旋转裁剪区域内各斑块共享的可学习角度嵌入。这些作为隐含线索,帮助模型感知角度变化,同时将其与背景区分开来。
最后,自适应旋转编码策略在将图像输入基于 Mamba 的编码器进行表示学习之前处理图像。RoMA 遵循标准的 Mamba 架构[45]而不做修改,纯粹关注为 RS 领域预训练 Mamba。虽然架构改进可以增强性能和效率,但 RoMA 优先考虑预训练策略,将进一步的 Mamba 优化留给未来的研究。
3.2.2 多尺度预测策略
图像是连续的二维信号。为了通过下一个标记预测进行自回归预训练,需要两个步骤:(1)将图像转换为离散标记。(2)将它们定义为用于单向建模的一维序列。iGPT[9]和 VAR[50]等方法通过将图像切割成段并将它们按指定的一维顺序排列来应对这些挑战。
然而,如第 1 节所述,直接将此方法应用于 RS 图像没有考虑到关键因素。与注重视觉语义理解的自然图像不同,RS 图像注重表面测量信息 [65]。任意破坏 RS 图像中的空间关系会导致根本不同的解释。例如,标记 x ( i , j ) \boldsymbol{x}^{(i,j)} x(i,j) 和它的邻居 x ( i ± 1 , j ) x^{(i\pm1,j)} x(i±1,j), x ( i , j ± 1 ) x^{(i,j\pm1)} x(i,j±1) 由于平面测量而密切相关。如图 2 所示,代表平面部分的标记 x ( i , j ) \boldsymbol{x}^{(i,j)} x(i,j) 与垂直相邻标记和一些较远的垂直标记密切相关。自回归方法的单向扁平化会影响 RS 图像的表面信息表达。因此,我们引入了多尺度预测策略来减轻单向平坦化的影响。
Table 1. The configuration of different architecture variants.
Model | Block | Width | Depth | Param.(M) |
ViT-T Mamba-T | Attention+MLP | 192 | 12 | 5.7 |
Mamba+MLP | 192 | 12 | 5.3 | |
ViT-S Mamba-S | Attention+MLP | 384 | 12 | 22 |
Mamba+MLP | 384 | 12 | 21 | |
ViT-B Mamba-B | Attention+MLP | 768 | 12 | 86 |
Mamba+MLP | 768 | 12 | 85 | |
ViT-L Mamba-L | Attention+MLP | 1024 | 24 | 307 |
Mamba+MLP | 1024 | 24 | 297 |
基于 Mamba 的编码器为每个标记生成 key 和 value 特征表示。在解码过程中,我们应用跨注意力机制和标记级因果掩码,按顺序预测标记,确保每个标记只依赖于之前观察到的标记。解码器在标记级别进行自回归预测。一旦解码器生成预测,自回归过程将它们与原始图像中相应的标记进行比较以进行学习。均方误差(MSE)被用作损失函数。
在 MSE 损失函数的基础上,我们按照预定义的光栅顺序,将每个解码器块的标记表示按更高的比例串联起来。然后,一个完全连接的多层感知器(MLP)会重建下一个区块的像素值。值得注意的是, x k ∈ R 16 × 16 x_{k}\in\mathcal{R}^{16\times16} xk∈R16×16,而在更高的尺度上,空间聚合的结果是 y n ∈ R s × s y_{n}\in\mathcal{R}^{s\times s} yn∈Rs×s。计算公式如下
ℓ ( θ ) = 1 K − 1 ∑ k = 2 K ∥ x ^ k ( θ ; x < k ) − x k ∥ 2 2 + λ N − 1 ∑ n = 2 N ∥ y ^ n ( θ ; y < n ) − y n ∥ 2 2 \begin{array}{r l r}{{\ell(\theta)=\frac{1}{K-1}\sum_{k=2}^{K}\|\hat{\boldsymbol x}_{k}(\theta;\boldsymbol x_{<k})-\boldsymbol x_{k}\|_{2}^{2}}}\ {+\frac{\lambda}{N-1}\sum_{n=2}^{N}\|\hat{\boldsymbol y}_{n}(\theta;\boldsymbol y_{<n})-\boldsymbol y_{n}\|_{2}^{2}}\end{array} ℓ(θ)=K−11∑k=2K∥x^k(θ;x<k)−xk∥22 +N−1λ∑n=2N∥y^n(θ;y<n)−yn∥22
其中, θ \theta θ 表示网络参数, N N N 是图像中的聚类块数量, y n y_{n} yn 是第 n 个聚类块的真实像素值, y ^ n ( θ ; y < n ) \hat{y}_n(\theta;y_{<n}) y^n(θ;y<n) 表示基于 θ \theta θ 和前面的标记 ( y < n ) (y_{<n}) (y<n) 重建的值, K K K 是图像中所有标记的个数, x k x_{k} xk 表示第 k k k -th 个标记的地面真实像素值,并且 x ^ k ( θ ; x < k ) \hat{x}_{k}(\theta;x_{<k}) x^k(θ;x<k) 是根据网络参数 ( θ ) (\theta) (θ) 和序列中前面的标记 ( x < k ) (x_{<k}) (x<k) 重建的值。参数 λ \lambda λ 用于调节高尺度聚类块的 MSE 损失对总体损失的贡献。
3.3 基于 Mamba 的 RSFMs 的扩展
为了研究自监督预训练的 Mamba 架构的扩展潜力,以开发强大的 RSFMs。通过 RoMA,我们分析了 Mamba 的性能与模型参数和数据规模之间的关系。
(a)数据量缩放
(b)模型大小缩放
图 4:数据量和模型大小缩放。 (a) 我们展示了 Mamba-Base 模型在 RoMA 预训练后,使用不同数据规模在三个下游任务上的性能。 (b) 我们比较了各种 Mamba 模型大小在三个下游任务上的性能,所有这些模型都是使用 RoMA 预训练的 400 万数据。预训练和下游任务配置的详细信息请参见第 4.1 节。
ViT 架构使用 MAE 预训练的可扩展性已经得到充分验证,随着数据量和模型规模的增加,性能得到了提升[47, 34]。然而,在遥感领域,还没有先前的作品系统地研究 Mamba 架构是否遵循类似的趋势。首次,我们使用 RoMA 预训练方法,在遥感领域探索 Mamba 的扩展行为。
随数据量扩展:随着预训练数据量的增加,Mamba 在下游任务上表现出明显的性能提升。我们使用 RoMA 在各个数据规模上预训练 Mamba-Base 模型,并评估其在下游任务中的性能。如图 4(a)所示,更大的数据集导致显著的改进。基于 Mamba 的 RSFMs 在从 62.5K 到 4M 的广泛预训练数据规模上表现出没有显著的性能瓶颈,实现了与基于 ViT 的 RSFMs 相当的数据学习能力。我们期待未来遥感领域数据量的进步,通过我们的 RoMA 预训练框架,更大的数据集可以进一步通过我们的 RoMA 预训练框架增强基于 Mamba 的 RSFMs。
随着模型规模的扩大:Mamba 的性能也随着模型规模的增加而提高。我们根据代码中的配置,对四种模型变体——Tiny、Small、Base 和 Large——进行了广泛的预训练。如图 4(b)所示,较大的模型在下游任务上始终取得更优的结果。尽管 Mamba-Large 在 AID 数据集上超过了 Mamba-Base,但其性能提升仍然有限,可能是因为预训练不足。仅在 400 万个样本上训练了 300 个 epoch,对于 297M 参数的模型来说,训练可能不够充分。由于实验限制,我们没有像 MAE 那样将预训练扩展到 800 个 epoch。OSCD 和 SpaceNet 实验正在进行中,后续将进行更新。然而,这些结果并没有改变我们的主要发现:基于 RoMA 预训练的 Mamba RSFMs 随着模型参数的扩大而表现出性能提升。虽然这种增长在更大规模的实验中尚无定论,但我们预计未来的研究将进一步探索 Mamba 的扩展潜力。
Table 2. Results for scene classification, change detection, and semantic segmentation. “TR” represents the ratio of training data. ⋆ \star ⋆ indicates results from MA3E [26] and MTP [54]. † ^\dagger † denotes our reproduction with their official code.
Methods | Publication | Backbone | Params | Scene Classification | Change Detection | |||
AID | UCM | OSCD | SpaceNetv1 | |||||
OA(TR=50%) | OA(TR=50%) | F1 | mF1 | |||||
Natural Image pretraining | ||||||||
MoCo v3 + [16] | ICCV'21 | ViT-B | 86M | 78.72 | 38.34 | |||
DINO + [4] | ICCV'21 | ViT-B | 86M | 78.51 | 40.04 | |||
MAE + [17] | CVPR'22 | ViT-B | 86M | 84.21 | 52.75 | |||
SimMIM+[61] | CVPR'22 | ViT-B | 86M | 83.19 | 51.48 | |||
LoMaR [7] | Arxiv'22 | ViT-B | 86M | 82.26 | 51.89 | |||
MixMAE+[29] | CVPR'23 | Swin-B/W14 | 88M | 81.53 | 50.63 | |||
ARM t[45] | ICLR'25 | Mamba-B | 85M | 81.14 | 50.41 | 47.28 | 77.89 | |
RSImagepretraining | ||||||||
SeCo + [36] | ICCV'21 | ResNet-50 | 25.6M | 78.26 | 47.45 | 47.67 | 77.09 | |
CACo + [35] | CVPR'23 | ResNet-50 | 25.6M | 77.81 | 40.53 | 52.11 | 77.94 | |
SatMAE+[10] | NIPS'22 | ViT-L | 307M | 55.10 | 34.28 | 52.76 | 78.07 | |
ScaleMAE+[44] | ICCV'23 | ViT-L | 307M | 48.46 | 28.19 | |||
GFM + [38] | ICCV'23 | Swin-B | 88M- | 80.58 | 49.73 | |||
RVSA+ [53] | TGRS'23 | ViT-B+RVSA | 86M | 84.06 | 50.86 | 50.28 | 79.56 | |
SatMAE++↑[41] | CVPR'24 | ViT-L | 307M | 85.98 | 55.72 | 53.10 | 79.21 | |
MA3E+[26] | ECCV'24 | ViT-B | 86M | 85.86 | 55.69 | - | - | |
RoMA | Mamba-B | 85M | 87.36 | 59.45 | 55.63 | 79.50 |
我们使用 RoMA 对 Mamba 进行了广泛的预训练,并评估其在各种下游任务中的有效性。最后,我们对 RoMA 的设计选择进行了彻底的消融研究。
4.1 预训练和下游任务
预训练设置。我们的预训练实验设置主要遵循 ARM [45]。我们在 OpticalRS-4M [56]上训练 Mamba-B。我们调整输入图像的大小为 196×196 ,使用 16 个补丁大小,通过 AdamW 优化器和余弦学习率调度器进行训练。初始学习率设置为 1.5e-4,批大小设置为 256,训练 400 个 epoch。
下游任务。我们进一步评估了 RoMA 在三个关键下游任务上的表现:场景分类、变化检测和语义分割。除了与基于 ViT 的 RSFMs(如 SatMAE[10]、SatMAE++ [41]、ScaleMAE[44]、SeCo[36]、CACo [35]、RingMo[48]、CMID[39]、RVSA [53]和 GFM[38])进行基准测试外,我们还比较了 RoMA 与其他自然图像预训练方法。这些方法包括利用对比学习和生成学习的策略,包括 MoCo v3 [16]、DINO [4]、MAE [17]、SimMIM [61]、LoMaR [7]和 MixMAE [29],以及自回归预训练方法 ARM [45]。Mamba-B 架构严格遵循 ARM 中最简单的 Mamba 设计,没有任何修改,使我们能够充分测试 RoMA 预训练框架的优势。
场景分类。我们首先使用线性探测来评估预训练模型在场景分类任务上的性能。通过冻结模型参数,仅微调最终的完全连接(FC)层,线性探测有效地展示了其特征提取能力。由于全参数微调已经在分类数据集(如 AID [59])上达到了超过 99%的性能,我们更倾向于使用线性探测而不是微调。我们使用了两个场景分类数据集:AID [59]和 UCM [37],训练细节,包括训练-测试分割比,遵循[53, 44]。评估基于总体准确率(OA)。表 2 中的结果显示了 RoMA 与其他预训练方法相比具有竞争力的性能。
变化检测。我们使用了 OSCD [11]数据集,该数据集包含 RGB 图像,用于变化检测。遵循之前的文献[54],我们保持了实验设置的连续性,使用 UNet [46]作为解码器。详细的配置在代码中提供,结果总结在表 2 中。在 OSCD 数据集上,我们的方法优于 ARM [45]以及其他忽视遥感(RS)中旋转不变性、信息稀疏性和物体大小变化问题的方法。
语义分割。我们进一步评估了预训练模型在语义分割任务上的表现,使用了常见的遥感数据集:SpaceNetv1 [51]。我们的实现遵循[54],使用 UperNet [60]作为分割框架。表 2 突出了 RoMA 在像素级场景解析方面优于竞争对手。然而,在像素级任务中,与其它下游任务相比,基于 Mamba 的 RSFMs 在像素级理解上的优势并不明显。我们将其归因于 RoSA 的自回归预训练,它优先考虑基于多尺度补丁的目标,而不是像素级预测。虽然这提高了分类和检测中的语义理解,但在像素级理解上预期会有轻微的权衡。
Table 3. Ablation study on the design choices of RoMA with Mamba-B backbone. We report the top-1 accuracy ( % ) (\%) (%) . The default settings o oMA are highlighted in grey. (b) Feature Descriptor in Adaptive Rotation En(a) Main ablation. Adaptive Rotation Encoding coding Strategy. Local Binary Pattern (LBP) mea-© Selecting Patch Size in Adaptive Rotation EnStrategy (ARE) and Multi-scale Prediction Strat- surement outperforms the Wavelet Transform and coding Strategy. Three layers is the most effective egy (MSP) significantly improve RoMA. Histogram of Oriented Gradients (HOG). choice.
Feature Descriptor | AID | |
OA (TR=20%) | OA (TR=50% ) | |
Wavelet | 71.42 | 77.00 |
HOG | 71.94 | 78.32 |
LBP | 71.70 | 78.00 |
ARE | MSP | AID | |
OA (TR=20%) | OA (TR=50%) | ||
69.59 | 76.80 | ||
√ | 71.70 | 78.00 | |
√ | √ | 72.69 | 79.16 |
PatchSize | AID | |
OA (TR=20%) | OA (TR=50%) | |
96 | 70.48 | 76.82 |
96-32 | 71.23 | 77.12 |
96-64-32 | 71.70 | 78.00 |
(d) Threshold for patch selection in the Adaptive (f) Various Scales choices in Multi-scale PredicRotation Encoding Strategy is based on the im-(e) Coefficient λ \lambda λ . The variation of the coefficient tion Strategy. Experiments were conducted using age’s overall average computed ( A v g . ) (A v g.) (Avg.) from the λ \lambda λ in Equation 3 in Multi-scale Prediction Strategy.the standard 16 × 16 16\times16 16×16 patch as a baseline, with addiFeature Descriptor . tional combinations at multiples of 2-6.
Coefficient入 | AID | |
OA (TR=20%) | OA (TR=50% ) | |
0.01 | 71.81 | 78.23 |
1.0 | 70.92 | 77.49 |
0.1 | 72.69 | 79.16 |
Threshold | AID | |
OA (TR=20%) | OA (TR=50% ) | |
1.5×Avg. | 68.33 | 72.39 |
0.5×Avg. | 69.71 | 74.18 |
1.0×Aug. | 71.70 | 78.00 |
Multi-scale Prediction Strategy | AID | |
OA (TR=20%) | OA (TR=50%) | |
2 × +4 × +6 × | 63.17 | 71.34 |
2 × +4 × | 68.06 | 74.74 |
4 × +6 × | 67.81 | 74.32 |
4 × | 72.46 | 78.72 |
6× | 72.69 | 79.16 |
由于资源限制,我们使用 MillionAID [33]数据集进行了消融实验,并训练了 400 个 epoch。对于下游任务,我们在 AID 数据集上展示了两种设置下的线性探测结果。
表 LABEL:ablation-main 展示了 RoMA 的两个主要贡献的性能,以 ARM 作为基线。实验表明,特征提取能力有显著提升。表 LABEL:ablation-b 和 LABEL:ablation-c 在基线中添加了自适应旋转编码策略。表 LABEL:ablation-b 比较了不同特征描述符的效果。我们认为特征描述符方法可以进一步优化,而不会影响自适应旋转编码策略的有效性。表 LABEL:ablation-c 评估了旋转的块大小,显示各种大小都能提高性能。
表格 LABEL:ablation-d、LABEL:ablation-e 和 LABEL:ablation-f 检验了多尺度预测策略。参数和阈值的选择显示在表格 LABEL:ablation-d 和 LABEL:ablation-e 中,而表格 LABEL:ablation-f 展示了从多个尺度聚合空间特征的性能。我们的结果表明,添加过多的多尺度信息并不能保证性能的改善;相反,仅使用大规模聚合信息以及原始 16×16 像素块数据可以获得更好的结果。
5 结论
我们介绍了 RoMA,这是第一个用于遥感(RS)的基于 Mamba 的基座模型的自监督自回归框架。RoMA 解决了两个关键挑战:通过动态角度感知标记化处理任意方向的稀疏分布对象,以及通过多尺度标记预测解决对象尺度极端变化。通过利用大规模、多样化的未标记数据,RoMA 实现了基于 Mamba 的 RS 模型的可扩展自监督预训练。在场景分类、目标检测和语义分割方面的广泛实验表明,RoMA 预训练的 Mamba 模型在性能上始终优于基于 ViT 的对应模型。此外,这些模型还实现了显著的效率提升,将 GPU 内存消耗减少了 78.9%,并将推理速度提高了 1.56 × 在 1,248 × 1,248 分辨率下,同时保持线性计算扩展。我们的发现还为 Mamba 的扩展定律提供了新的见解,证明了随着数据量(6.25M → 400M)和模型大小(5.3M → 297M 参数)的增加,性能持续提升,突显了其在大规模地球观测任务中的潜力。
相关文章:
RoMA: 基于Mamba的遥感基础模型, 已开源, 首次验证mamba的scaling能力
Time: 2025-03-27T15:27:00 github: 链接 HuggingFace: 链接 摘要 近年来,自监督学习在视觉 Transformer(ViT)方面的进展推动了遥感(RS)基础模型的突破。然而,自注意力机制的二次复杂度给可扩展性带来了…...
蓝桥杯(电子类)嵌入式第十一届设计与开发科目模拟试题
一、功能概览 二、分模块实现 1、按键 新建interrupt.h和interrupt.c写中断的代码(写法学习来自定时器-按键单击_哔哩哔哩_bilibili) #ifndef __INTERRUPT_H #define __INTERRUPT_H#include "main.h" #include "stdbool.h"struct…...
CMLINK APN 手动设置
以下是针对 CMLINK 的 APN设置 的详细指南,基于常见配置需求: CMLINK APN 手动设置参数 参数项值说明名称CMLINK (自定义)任意命名(如 CMLINK、CM Internet 等),建议使用ASCII字符,无特殊符号。APNcm.com …...
排序--快排--非递归法
一,引言 快排不管是hoare法还是指针法以及挖坑法,最终都是利用函数递归进行实现的,但是只要是函数递归就会有栈溢出的风险,为此本篇文章讲解快排的非递归法。 二,代码逻辑 首先要了解为什么会使用递归进行调用&…...
02 相机标定相关坐标系
标定相关坐标系 一共四个坐标系 图像像素坐标系: u-v,图像左上角为原点图像物理坐标系: x-y,图像中心为原点...
数学建模:MATLAB卷积神经网络
一、简述 卷积神经网络是一种处理具有网格结构数据的深度学习模型,由输入层、卷积层、池化层、全连接层、输出层组成。 输出层:将图像转换为其对应的由像素值构成的二维矩阵,并存储二维矩阵 卷积层:提取图像的底层特征…...
Android读写权限分析
Android系统使用的是Linux内核,所以Android系统沿用了linux系统的那一套文件读写权限。 目录 1,权限解读1.1,权限分为三种类型:1.2,权限针对的三类对象:1.3,文件和目录的权限区别1.3.1…...
计算机网络基础:量子通信技术在网络中的应用前景
计算机网络基础:量子通信技术在网络中的应用前景 一、前言二、量子通信技术基础2.1 量子通信的基本概念2.2 量子通信的主要原理2.2.1 量子密钥分发(QKD)原理2.2.2 量子隐形传态原理三、量子通信技术的特点3.1 绝对安全性3.2 超高通信速率潜力3.3 抗干扰能力强四、量子通信技…...
【算法学习计划】贪心算法(上)
目录 前言(什么是贪心) leetcode 860.柠檬水找零 leetcode 2208.将数组和减半的最少操作次数 leetcode 179.最大数 leetcode 376.摆动序列 leetcode 300.最长递增子序列 leetcode 334.递增的三元子序列 leetcode 674.最长连续递增序列 leetcode …...
Linux 目录结构(文件系统结构)示例说明
在Linux操作系统中,文件系统的结构是理解系统性能及管理的重要基础。每个目录都有它的特定用途,这使得系统管理更加清晰和高效。本文将带您逐步了解每一个重要目录及其功能。 1. 根目录 / 根目录是Linux文件系统的起点,所有文件和目录均从此…...
Linux下的socket演示程序2
server.cpp #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h>#define SER_PORT 8888 //服务器端口号 #define SER_IP "10.148.4.168" //服…...
TiDB与Doris实操对比:深度剖析数据库选型要点
TiDB与Doris实操对比:深度剖析数据库选型要点 宝子们,在大数据处理的广阔天地里,TiDB和Doris都是备受瞩目的数据库解决方案。它们各自有着独特的优势和适用场景,对于我们开发者来说,深入了解它们的实操特性࿰…...
How to install vmware workstation pro on Linux mint 22
概述 VMware 是一家专注于虚拟化技术和云计算解决方案的全球领先软件公司,成立于1998年,总部位于美国加州。它的核心技术是通过“虚拟化”将一台物理计算机的硬件资源(如CPU、内存、存储等)分割成多个独立的虚拟环境(…...
redis常用部署架构之redis分片集群。
redis 3.x版本后开始支持 作用: 1.提升数据读写速度 2..提升可用性 分片集群就是将业务服务器产生的数据储存在不同的机器上。 redis分片集群的架构 如上图所示,会将数据分散存储到不同的服务器上,相比于之前来说,redis要处…...
vim的一般操作(分屏操作) 和 Makefile 和 gdb
目录 一. vim的基本概念 二. vim基础操作 2.1 插入模式 aio 2.2 [插入模式]切换至[正常模式] Esc 2.3[正常模式]切换至[末行模式] shift ; 2.4 替换模式 Shift R 2.5 视图(可视)模式 (可以快速 删除//注释 或者 增加//注释) ctrl v 三&…...
DeepSeek 为何能在短时间内超过 ChatGPT?—— 技术变革与成本重构的双重胜利
2025 年 1 月 27 日,全球科技圈见证了一个历史性时刻:中国 AI 公司深度求索(DeepSeek)开发的同名应用,首次登顶美国苹果 App Store 免费下载榜,超越了长期霸榜的 ChatGPT。这一突破不仅打破了美国科技公司在…...
Wireshark学习
Wireshark简介 抓包前 1.打开wireshark得到下面的界面 2.选择菜单栏上捕获-> 选项,勾选WLAN网卡(这里需要根据各自电脑网卡使用情况选择,简单的办法可以看使用的IP对应的网卡)。点击开始。启动抓包。 3.wireshark启动后&am…...
我的创作纪念日——三周年
大家好,心心念念的三年之气已到,但是我似乎对于博客专家的身份没有那么渴望了哈哈。虽然最近比较忙,但是看到三周年纪念日的通知,还是想写一点什么,并不是因为三周年有多么值得纪念,而是这段时间确实有一些…...
Softmax 回归 + 损失函数 + 图片分类数据集
Softmax 回归 softmax 回归是机器学习另外一个非常经典且重要的模型,是一个分类问题。 下面先解释一下分类和回归的区别: 简单来说,分类问题从回归的单输出变成了多输出,输出的个数等于类别的个数。 实际上,对于分…...
基于云服务器的数仓搭建-hive/spark安装
mysql本地安装 安装流程(内存占用200M,升至2.1G) # 将资料里mysql文件夹及里面所有内容上传到/opt/software/mysql目录下 mkdir /opt/software/mysql cd /opt/software/mysql/ # 待上传文件 install_mysql.sh mysql-community-client-8.0.3…...
YOLO历代发展 图像增强方式 架构
YOLO1 YOLOV5 数据增强 mosaic 仿射变换(Affine)、透视变换(Perspective) 网络搭建...
Spring AI Alibaba EmbeddingModel使用
一、嵌入模型 (Embedding Model)简介 1、核心概念 嵌入模型(EmbeddingModel)是嵌入过程中采用的模型。 当前 EmbeddingModel的接口主要用于将文本转换为数值向量,接口的设计主要围绕这两个目标展开: 可移植性: 该接口…...
C++入门五式——类和对象(下)
目录 再探构造函数——初始化列表 类型转换 static成员 友元函数 内部类 匿名对象 再探构造函数——初始化列表 之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值,构造函数初始化还有一种方式,就是初始化列表。 //初始化列…...
Spring的SPEL(Spring Expression Language)的使用说明,包含语法、示例和常见场景
以下是Spring的SPEL(Spring Expression Language)的使用说明,包含语法、示例和常见场景: 1. 基本语法 变量引用 表达式:#{变量名}(如#{systemProperties[os.name]})作用域:在Sprin…...
Linux应用:线程进阶
线程同步之信号量 信号量(Semaphore)是一个整型的计数器,用于控制对共享资源的访问。它通过 PV 操作来实现同步,P 操作将信号量的值减 1,如果值小于 0 则线程阻塞;V 操作将信号量的值加 1,如果…...
策略模式 (Strategy)
策略模式 (Strategy) 应用场景:用于处理不同的任务配置参数。在你的任务中,可能会有不同的任务类型,每个任务类型可能有不同的单位(比如米、毫米)或不同的处理方式。策略模式可以让你根据不同的任务类型选择不同的处理…...
【YOLOv8】YOLOv8改进系列(10)----替换主干网络之UniRepLKNet
主页:HABUO🍁主页:HABUO 🍁YOLOv8入门改进专栏🍁 🍁如果再也不能见到你,祝你早安,午安,晚安🍁 【YOLOv8改进系列】: YOLOv8改进系列࿰…...
mathtype一些用法总结
1.一个是公式旁边加入||,一般使用键盘直接打入的会比较小,mathtype中的会好看很多,打开这个栏目,会看到有很多。 2.另外是带^符号,在字符上面带没有办法直接带,所以可以在mathtype中先加帽子,然…...
1、SQL注入攻击的防范
原文地址: SQL注入攻击的防范 更多内容请关注:代码安全 PHP安全编码——书写安全的代码 1、SQL注入攻击的防范 提问 问题1:什么是SQL注入攻击? 问题2:有几种简单方法防范SQL注入攻击? 问题3:mys…...
核心知识——论文总结
引入 本文我们会针对论文中的核心内容进行总结,加深小伙伴对于Spark的理解。而通过Spark的论文,重点需要掌握理解如下内容: Spark 里核心的 RDD 是一个什么概念,它是通过什么方式来优化分布式数据处理的,它的设计思路…...
HTTP 核心知识点整理
1. HTTP 基础 定义:HTTP(HyperText Transfer Protocol)是应用层协议,基于 请求-响应模型,用于客户端(浏览器)与服务器之间的通信。特点: 无状态:每次请求独立&a…...
什么是矩阵账号
矩阵账号是指在同一平台或多个平台上,围绕同一品牌或个人,创建的多个相互关联、协同工作的账号组合。这些账号虽然独立,但在内容定位和运营策略上有所区分,同时又相互引流,共同形成一个网络结构,类似于矩阵…...
【6】VS Code 新建上位机项目---项目分层
【6】VS Code 新建上位机项目---项目分层 1 项目分层(layer)2 项目分层实现数据插入SQL3 项目分层实现 (实体类封装参数)4 项目分层的实现SQL查询数据1 项目分层(layer) 表示层(UI):与用户交互使用。比如按钮,输入信息等;业务层(BLL):传递数据,业务逻辑。根据用户需…...
EspressoSample深度解析:在CircleCI上高效运行Android UI测试
项目背景与简介 EspressoSample项目位于GitHub上的circleci/EspressoSample仓库,该项目旨在展示如何在CircleCI平台上配置和使用Espresso进行Android应用的UI测试。 项目结构与环境准备 项目结构 EspressoSample项目遵循典型的Android项目结构,包含a…...
【每日论文】MetaSpatial: Reinforcing 3D Spatial Reasoning in VLMs for the Metaverse
下载PDF或查看论文,请点击: LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory探索LlamaFactory,为你解读AI前沿技术文章,快速掌握最新技术动态https://www.llamafactory.cn/daily-paper/de…...
mac m4 Homebrew安装MySQL 8.0
1.使用Homebrew安装MySQL8 在终端中输入以下命令来安装MySQL8: brew install mysql8.0 安装完成后,您可以通过以下命令来验证MySQL是否已成功安装: 2.配置mysql环境变量 find / -name mysql 2>/dev/null #找到mysql的安装位置 cd /op…...
Java关于多态
多态 字面意思:对象的多种形态。 Student(子类)<-Person(父类)->Teacher(子类) Student snew Student(); 学生形态 对象 代表用new创建一个学生对象赋值给Student 类型,代表Student类型(学生对象)现在是学生形态。 有了多态之后ÿ…...
K8S学习之基础四十六:k8s中部署Kibana
部署kibana组件 上传kibina镜像到harbor 部署kibana组件,包括svc和deplomentvi kibana.yaml apiVersion: v1 kind: Service metadata:name: kibananamespace: kube-logginglabels:app: kibana spec:ports:- port: 5601selector:app: kibana --- apiVersion: apps/…...
如何快速对比两个不同的excel文件中的单元格的数据是否完全相同 并把不同的单元格的背景颜色更改为红色?
要快速对比两个不同的Excel文件中的单元格数据是否完全相同,并将不同的单元格背景颜色更改为红色,可以使用Excel的以下几种方法: 方法一:使用条件格式 打开两个Excel文件。将一个文件的内容复制到另一个文件的新工作表中&#x…...
基于Python+LanceDB实战向量搜索
本篇实战演示向量搜索的实现和示例。 预期效果 给出一个查询的字符串,通过向量搜索,在下面三个语句中搜索出关联性最大的那句。 "熊猫是中国的国宝,主要栖息在四川山区。","长城是古代中国建造的军事防御工事,全…...
多路转接epoll
目录 一、为什么epoll最高效? 二、epoll的三个系统调用 三、理解epoll模型 四、epoll的优点 五、epoll的使用示例 六、epoll的工作模式 ET模式和LT模式的对比 七、epoll的使用场景 总结 一、为什么epoll最高效? 按照 man 手册的…...
AI编程工具哪家强?对比Cusor、Copilot、Cline
前言 AI最先革谁的命?刚毕业参加工作的那个时候就在想是否可以开发一个程序让它自己写代码,在那个遥远的年代,这种想法仿佛就是天方夜谭。但是今天大模型的出现让理想成为了现实。回答前面的问题,AI最先革谁的命,最聪…...
[FPGA基础学习]实现流水灯与按键暂停
FPGA实现LED流水灯 1.vscode的安装和使用 vscode下载 Visual Studio Code - Code Editing. Redefined vscode插件(Verilog-HDL/SystemVerilog)下载 quartus绑定vscode 2.用6个LED完成周期为1秒的跑马灯效果 流水灯模块设计 时钟输入 DE2-115开发板…...
刷题记录(LeetCode 994.腐烂的橘子)
在给定的 m x n 网格 grid 中,每个单元格可以有以下三个值之一: 值 0 代表空单元格;值 1 代表新鲜橘子;值 2 代表腐烂的橘子。 每分钟,腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格中没有…...
ECharts折线图源码合集1(共18个自定义图表),附视频讲解与代码下载
引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我整理了18个自定义折线图图表,不仅对每个图表代码进行了精简优化,剥离冗余配置项,…...
SQL小菜之TOP N查找问题
前言 SQL的编写是后端面试中非常常见,其中TOP N查找问题也是高频出现的问题,今天我们来看两道SQL TOPN问题。 问题 我们有一张雇员表Employee: CREATE TABLE Employee (id int DEFAULT NULL,salary int DEFAULT NULL,department varchar(…...
蓝桥杯 临时抱佛脚 之 二分答案法与相关题目
二分答案法(利用二分法查找区间的左右端点) (1)估计 最终答案可能得范围 是什么 (2)分析 问题的答案 和 给定条件 之间的单调性,大部分时候只需要用到 自然智慧 (3)建…...
Css环形旋转立体感动画
Css环形旋转立体感动画 index.html <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>Css环形旋转立体感动画</title><link rel"stylesheet" href"./style.css">&l…...
音乐极客指南:Melody高音质私有云音乐平台本地部署方案
文章目录 前言1. 添加镜像源2. 本地部署Melody3. 本地访问与使用演示4. 安装内网穿透5. 配置Melody公网地址6. 配置固定公网地址 前言 嘿,各位音乐爱好者们!今天我要带大家玩个大招——在香橙派Zero3上搭建你的专属在线音乐平台,还能通过cpo…...
Microi吾码界面设计引擎之基础组件用法大全【内置组件篇·中】
🎀🎀🎀 microi-pageengine 界面引擎系列 🎀🎀🎀 一、Microi吾码:一款高效、灵活的低代码开发开源框架【低代码框架】 二、Vue3项目快速集成界面引擎 三、Vue3 界面设计插件 microi-pageengine …...