MambaMOS:基于激光雷达的三维运动物体分割与运动感知状态空间模型

MambaMOS:基于激光雷达的三维运动物体分割与运动感知状态空间模型

  • 摘要
  • INTRODUCTION
  • Related Work
  • Method

MambaMOS: LiDAR-based 3D Moving Object Segmentation with Motion-aware State Space Model

摘要

激光雷达基于的运动目标分割(MOS)旨在利用之前扫描的运动信息在当前扫描的点云中定位并分割运动目标。

尽管之前的MOS方法取得了令人鼓舞的结果,但诸如时间信息和空间信息耦合较弱等几个关键问题仍需进一步研究。在本文中,作者提出了一种新颖的激光雷达基于的三维运动目标分割方法,名为MambaMOS,该方法具有运动感知的状态空间模型。

首先,作者开发了一个新颖的嵌入模块,时间线索引导嵌入(TCBE),以增强点云中时间和空间信息的耦合,并减轻忽视时间线索的问题。

其次,作者引入了运动感知状态空间模型(MSSM),使模型能够理解不同时间步中同一目标的时序相关性。具体来说,MSSM通过两个不同的时间建模和关联步骤强调不同时间步中同一目标的运动状态。

作者利用改进的状态空间模型来表示这些运动差异,显著地建模运动状态。

最后,在SemanticKITTI-MOS和KITTI-Road基准上的大量实验表明,所提出的MambaMOS达到了最先进的表现。

这项工作的源代码将在https://github.com/Terminal-K/MambaMOS。

INTRODUCTION

基于激光雷达的移动对象分割(MOS)任务对于准确描绘当前激光雷达扫描中的移动实体(如汽车或行人)至关重要,它是自动驾驶系统感知功能的基础组件[5, 46]。MOS在两个方面做出贡献。

首先,它通过提供准确的3D动态语义场景理解来确保自动驾驶系统的稳定运行[8, 39];其次,它有助于消除在同时定位与地图构建过程中由于对象移动引起的“幽灵效应”,从而产生一个干净的静态地图[7, 24]。

Chen等人[5]提出了一种基于学习的MOS方法,该方法将点云投影到平面表示上,并利用这些表示的序列来融入时间信息进行MOS。类似的范式如实现了低延迟,但由于投影引入了几何损失,因此在准确性和泛化方面还有改进的空间。非投影方法[29, 41]直接在3D空间中执行特征提取,并取得了精确的分割结果和优秀的泛化能力。

然而,这些方法无法充分耦合多扫描点云的时间-空间特征,并受到“时间与空间信息弱耦合”问题的影响。具体来说,由于移动对象随时间变化的空间位置,聚合点云中会形成尾迹伪影。

如果没有融入时间戳信息来区分聚合点云中的每个扫描,这些伪影可能会与外观相似的大对象(例如,移动的汽车和停放的卡车)混淆。时间戳信息的演变反映了对象的运动,移动对象也可以通过其时间戳信息的演变来识别。

基于上述观察,我们假设对象的时态信息是决定其运动的主导信息,加强对象时态和空间信息的耦合将有助于移动对象的分割。然而,上述方法[29, 41]直接将每个点的时间戳信息与空间占据信息连接起来,形成一个包含时态-空间特征的4D点云,并使用卷积神经网络(CNN)来学习这些时态-空间特征,如图1(a)所示。尽管它们有效,但忽略了时间戳信息的主导作用以及时态和空间信息之间更深层次的耦合,这阻碍了它们在分割性能上的进一步改进。

在这项工作中,我们重新思考了有效编码浅层时态和空间特征以及促进深层时态和空间特征之间充分交互的问题。对于简单地将时间戳信息与空间信息连接起来无法突出时间信息重要性的情况,我们提出了一种有效的嵌入方法,名为时间线索引导嵌入(TCBE),它通过注意力机制强调时间信息的表达力,并通过将时间信息作为一个独立于空间信息的通道来增强时态和空间信息之间的相互耦合。

尽管与先前的嵌入方法相比,TCBE可以在一定程度上增强时态和空间信息之间的耦合,但它只能应用于浅层,无法进一步深化时态和空间信息之间的耦合。最近,[23]的工作引入了一种基于投影的方法,并首次将变压器[40]的自注意力机制核心纳入MOS,实现了优于同类方法的更好性能。然而,研究[10, 15]表明,变压器模型在处理大输入序列时具有二次计算复杂度,这为实现训练成本和准确性之间的平衡带来了挑战。

幸运的是,Mamba[15]引入的状态空间模型(SSM)提供了一个有前途的解决方案,使我们有机会在保持线性时间复杂度的情况下,实现与变压器[40]相当的长距离上下文建模能力。受这一进展的启发,我们继续开发了运动感知空间状态模型(MSSM)。

在我们设计的MSSM中,我们将聚合点云特征解耦为多个单扫描特征,并分别学习单扫描特征表达的外观特征和聚合特征表达的动特征。然后,通过在这两个特征之间使用叉积注意力,我们实现了从单扫描特征到多扫描特征的时态信息补充,从而实现了时态和空间信息的深层耦合,并借助SSM实现了线性复杂度。

通过大量实验,作者证明了TCBE和MSSM的结合可以有效实现时间和空间信息的强烈耦合,并在SemanticKITTI-MOS(Shi et al., 2017; Chen et al., 2018)和KITTI-Road(Mamba, 2017)基准上达到了最先进的表现。作者的贡献总结如下:

  1. 作者重新思考了之前方法中存在的时空信息耦合较弱的问题,并提出了一种新颖的基于激光雷达的运动目标分割框架,即MambaMOS。据作者所知,这项工作是首次在MOS中利用SSM,为未来在MOS领域中扩展SSM指明了方向。
  2. 引入了一种有效的时间线索引导嵌入方法(TCBE),在一定程度上增强了时间和空间信息的耦合能力,提高了运动目标特征的表达力。
  3. 提出了一种基于SSM的新型时空信息耦合模块(MSSM),它实现了时序和空间特征的深层耦合,并通过单次扫描和多次扫描特征的互补性增强了运动目标的感知。

Related Work

现有MOS方法可以分为两类:基于投影的方法(Chen等,2018;Chen等,2018;Wang等,2018;Wang等,2018)和非基于投影的方法(Wang等,2018;Wang等,2018;Wang等,2018;Wang等,2018)。基于投影的方法涉及将三维点云投影到紧凑的二维平面上作为模型输入,而非基于投影的方法则直接在三维点云空间内进行处理。

Projection-based methods
基于投影的MOS方法可以分为范围视图(RV)方法(Chen等人,2018;Wang等人,2018;Wang等人,2018;Wang等人,2018)和鸟瞰视图(BEV)方法(Wang等人,2018;Wang等人,2018)。在3D激光雷达数据中的目标检测和分割领域已有大量工作使用了RV图像(Chen等人,2018;Wang等人,2018;Wang等人,2018),这些方法通过球形投影(Wang等人,2018)使用原始的单扫描点云获取2D RV图像作为模型输入。在运动感知任务中,感知运动所需的时间信息通常由当前扫描和过去几扫描的RV图像的残差处理获得的残差图像提供(Chen等人,2018;Wang等人,2018;Wang等人,2018;Wang等人,2018)。Chen等人(Chen et al., 2018)直接将RV图像和相应的多扫描残差图像拼接作为输入,而Sun等人(Sun et al., 2018)提出了一种双分支模型结构,使用两个编码器分别从RV图像和多扫描残差图像中提取特征。与(Sun et al., 2018)不同,Kim等人(Kim et al., 2018)在其模型中使用了一个分支,通过附加的语义标签将可移动目标分解为运动目标和静止目标,这增强了模型理解动态场景的能力。程等人(Cheng et al., 2018)更关注运动特征的特征提取,这与作者的观点和谐一致,并通过附加的语义标签取得了领先性能。

与上述基于RV的方法不同,BEV方法从俯视角度呈现点云特征,这保持了点云中目标尺度的一致性,使理解和处理特征更容易(Wang等人,2018)。Mohapatra等人(Mohapatra et al., 2018)首次提出了BEV中的移动目标分割,其运行速度更快,但准确性低于基于RV的方法。周等人(Zhou et al., 2018)使用极坐标将点云转换为鸟瞰视图(BEV)表示。他们利用双分支CNN从多个BEV扫描中提取外观和运动特征,从而提高了准确性和效率。尽管上述基于投影的方法效率很高,但在将最终结果返回到3D点云空间的过程中,存在几何信息的丢失,这限制了这些方法的性能。

图1. 其他非投影方法(子图(a))与作者的方法(子图(b))的简要比较。以前的方法对时间信息和空间占用信息同等对待,没有深入整合它们。相比之下,作者的方法通过作者设计的TCBE更多地强调了每个点的时间信息的重要性,并通过MSSM实现了时间和空间信息的更深层次的耦合,这更符合运动识别的基本原则。
在这里插入图片描述
Non-projection-based methods
非基于投影的方法,直接在3D空间中对点云进行操作,绕过了基于投影方法中固有的几何信息损失。因此,这些方法理论上具有实现更优分割性能的优势。4DMOS(Song等人,2017年)将多次扫描的点云 Voxel 化叠加表示输入到稀疏4D CNN中,并通过二进制贝叶斯滤波器作为额外的后处理融合了移动目标多个不同扫描的预测结果,这提高了判断当前扫描中移动目标的置信度,并取得了出色的分割结果。同样,InsMOS(Song等人,2017年)也是基于4D点云作为输入,但它们通过融合包含不同分辨率目标实例信息的BEV表示来辅助分割移动目标。Li等人(Li et al., 2019)提出了一种双分支模型,该模型集成了3D点云和2D图像,并采用Transformer(Vaswani et al., 2017)来融合多尺度点云和图像特征,旨在增强时间和空间特征的耦合。Li等人(Li et al., 2019)使用柱状坐标对聚合点云输入进行 Voxel 化,并使用CNN获取移动目标分割结果,进一步在LiDAR基于定位的任务中应用MOS,以提高其在动态场景中的鲁棒性。MapMOS(Wang et al., 2019)改进了选择固定过去扫描会导致一些由于遮挡而未被感知的移动目标的问题。因此,提出了一种基于由过去扫描构建的局部地图的移动目标感知策略,并在SemanticKITTI-MOS基准的验证集上实现了最先进的表现。除了上述基于学习的方法外,还有许多非学习方法,包括地图清理方法和基于地图的方法。地图清理方法通过目标的几何信息离线移除移动目标。另一方面,基于地图的方法需要预先构建的地图,以移除在映射过程中移动的目标为。

总的来说,现有的MOS方法尚未彻底探索时间和空间特征之间的耦合,这限制了它们对运动状态的理解。相比之下,作者的方法在嵌入阶段实现了时间和空间特征的浅层耦合,并在模型的每个阶段实现了深层耦合。这种深层耦合在时间和空间线索之间建立了稳健的相关性,增强了模型对运动场景的理解。重要的是,作者的方法在没有任何后处理模块的情况下,在MOS任务上实现了最先进的表现。

Method

方法部分描述了作者在研究中采用的方法和技术。作者概述了人工智能模型的框架以及用于手头任务的特定算法。该部分还讨论了用于训练和评估的数据集,以及为适应作者的目的对现有方法所做的任何修改。
EF
状态空间模型。SSM (Li等人, 2019年)是一种序列模型,它可以将一维输入列 x ( t ) ∈ R x(t) \in \mathbb{R} x(t)R映射到输出序列 y ( t ) ∈ R y(t) \in \mathbb{R} y(t)R。这个过程由一列连续的隐藏状态 h ( t ) ∈ R N h(t) \in \mathbb{R}^N h(t)RN示,状态大小为N。通常,连续时间系统的SSM可以由以下线性常微分方程(ODE)示,如方程(1)所示,
h ′ ( t ) = A h ( t ) + B x ( t ) h'(t) = Ah(t) + Bx(t) h(t)=Ah(t)+Bx(t)
y ( t ) = C h ( t ) y(t) = Ch(t) y(t)=Ch(t)
其中参数 A ∈ R N × N A \in \mathbb{R}^{N \times N} ARN×N B ∈ R N × 1 B \in \mathbb{R}^{N \times 1} BRN×1 C ∈ R 1 × N C \in \mathbb{R}^{1 \times N} CR1×N建立了状态和输出变之间的相关性。

离散化。将原始SSM方程转换为离散形式以适应任务中的离散数据是至关重要的。离散化的SSM可以写成方程(2)的形式,
h t = A h t − 1 + B x t h_t = Ah_{t-1} + Bx_t ht=Aht1+Bxt
y t = C h t y_t = Ch_t yt=Cht
离散化参数A,可以通过零阶保持(ZOH)规则与时间尺度参数△进行描述,
A = e A Δ , B = ( A − I ) − 1 ( e A Δ − I ) Δ B A = e^{A\Delta}, \quad B = (A - I)^{-1}(e^{A\Delta} - I) \Delta B A=eAΔ,B=(AI)1(eAΔI)ΔB

选择性扫描机制。Mamba (Mamba, 2017年)提出了一种选择性扫描机制,该机制通过输入序列的参数化投影有效地调整参数,使SSM能够选择性地过滤输入序列特征。这推进了SSM在时变领域的研究。

MambaMOS原则。为了解决现有MOS方法中时间信息和空间信息耦合不足的问题,作者尝试将Mamba从自然语言处理(NLP)领域适应到MOS任务。一个有趣的发现出现了: MOS任务本质上涉及从无序集中选择移动的子集,类似于NLP中的选择性复制机制(Bach等人,2017年; Mamba,2017年)。利用这一洞见,作者基于选择性复制机制引入了MambaMOS。这种增强使Mamba能够有效地处理MOS任务,同时使模型能够自适应地选择移动月标.隆低操作成本。
MambaMOS
总体架构概述。所提出的MambaMOS采用了如图2所示的U-Net(Mamba,2017)风格的总体架构。首先,经过序列化处理后,输入的4D点云集合将被转换成一个有序序列。
在这里插入图片描述
与此同时,它们通过精心设计的TCBE(第3.3节)进行编码。接下来,点云被送入编码器解码器结构中,以建模深层特征。这包括具有[2, 2, 2, 6, 2]五阶段块深度的编码器,以及具有[2, 2, 2, 2]四阶段块深度的解码器。要注意的是,除了第一阶段外,所有阶段的编码器中都使用了点云池化策略。通过池化层的点云的尺度变化因子为2。此外,在块开始处,采用了高效的位置编码块,以捕获特征的局部注意力,这一想法遵循大多数点变换工作(Li et al., 2019; Li et al., 2019; Li et al., 2019)。

经过层归一化处理后的点云特征将通过MSSM(第3.4节),这是整个块的核心洞察,中将增强目标的运动特征。块的最终输出是层归一化和多层感知器。在作者的每个块中广泛应用残差连接,以避免梯度消失(Mamba, 2017)。后,可以通过线性层获得每个点的logits,并将点反序列化以提取分割结果。

输入表示。在当前时间(t = 0),给定一个激光雷达扫描 S t = { p i ∈ R 4 } i S_t = \{p_i \in \mathbb{R}^4\}_i St={piR4}i,包含N个点 p i = [ x i , y i , z i , 1 ] T p_i= [x_i, y_i, z_i, 1]^T pi=[xi,yi,zi,1]T,这些点由齐次坐标表示。目标是使用连续点云集合 S = { S t } t = 1 E S= \{S_t\}_{t=1}^E S={St}t=1E中的当前扫描 S 0 S_0 S0及过去 F − 1 F - 1 F1次扫描中的移动点进行分割。为了将F次扫描的点云数据聚合到一个包含时间-空间信息的4D点云输入中,并消除自身运动,作者需要将过去的 F − 1 F-1 F1次扫描转换到当前扫描的视角,分别将齐次坐标转换为笛卡尔坐标。给定从扫描 t t t到当前扫描的位姿转换矩阵 T t T_t Tt,从时间的点云到当前点云的视角转换可以表示为方程(4)。
S o = { p i o = T ′ − 1 p i ∣ p i ∈ S t } S^o = \{p_i^o = T'^{-1} p_i \mid p_i \in S_t\} So={pio=T1pipiSt}, i = 0 , 1 , … , N − 1 i=0,1,\dots,N-1 i=0,1,,N1, 因此,4D点云集合 S ′ = { p i ∈ R 4 } i = 0 N − 1 S' = \{p_i \in \mathbb{R}^4\}_{i=0}^{N-1} S={piR4}i=0N1,包含 N = 2 E − 1 N=2E-1 N=2E1个点,可以表示为方程(5)。为了在4D点云中区分每个扫描,作者添加了每个扫描对应的时间步作为点的附加维度,并获得时空点表示 p i = [ x i , y i , z i , t i ] T p_i = [x_i, y_i, z_i, t_i]^T pi=[xi,yi,zi,ti]T

S ′ = { S 0 , S r → o , … , S t 0 } S' = \{S_0, S_{r\rightarrow o}, \dots, S_{t_0}\} S={S0,Sro,,St0}

序列化。作为MambaMOS核心的SSM通常接受一系列数据,如自然语言。因此,需要通过序列化从无序的4D点云集 S ′ S' S中获得序列 S % S\% S%。序列化可以理解为一个投影函数 Φ \Phi Φ,它将无序集 S ′ S' S转换为序列 S % S\% S%。因此,序列化和反序列化的过程可以描述为方程(6),其中 Φ − 1 \Phi^{-1} Φ1是逆投影函数。序列化点云的一种方法是按每个点的坐标排序[27]。然而,这种序列化方法不能充分保留目标的局部空间关系,可能导致在最终序列中空间上接近的点云相隔甚远。

空间填充曲线是一种数学曲线,能够将N维空间中的数据投影到一维连续空间: Z N → Z ZN \rightarrow Z ZNZ,这已在最近的3D场景理解工作中得到应用[42, 43]。受到它们的启发,作者的序列化过程利用了莫尔斯曲线[33]和希尔伯特曲线[17],它们有效地保持了原始3D点云中的邻域关系。

S ′ = Φ ( S ′ ) S' = \Phi(S') S=Φ(S) S ′ = Φ − 1 ( S ′ ) S' = \Phi^{-1}(S') S=Φ1(S)
Time Clue Bootstrapping Embedding
先前的方法(Zhu等人,2017;Wang等人,2018;Wang等人,2019)未有效地强调每个点的时间信息的主导地位。这可以从他们对来自激光雷达的空间占用信息和来自扫描聚合过程的相应时间戳信息的平等处理中看出。然而,对于属于不同模态的时间和空间信息的直接叠加,并没有充分利用一种模态对另一种模态的监督作用。因此,作者提出了时间线索引导嵌入(TCBE)。它基于时间演变驱动物体运动的原理,强调时间信息胜过空间信息,从而增强时间和空间信息的耦合。

TCBE的结构如图2右下所示。具体来说,TCBE使用1D卷积在有序点云序列 S ′ S' S中嵌入每个点的空间和时间信息,以获得嵌入维度中的相应空间特征 f s f_s fs和时间特征 f t f_t ft,两者都具有局部特性。首先,通过将时间特征 f t f_t ft与空间特征 f s f_s fs相加,获得初始耦合的时间空间特征 f c o u f_{cou} fcou,这作为先前嵌入方法的另一种实现。然后,为了强调时间信息相对于空间信息的主导地位,通过不改变其通道的1D卷积获得反映局部时间演变趋势的 f t f_t ft,再与 f s f_s fs逐元素相乘。接着,将时间引导的空间特征 f t c f_{tc} ftc添加到初始耦合的时间空间特征 f c o u f_{cou} fcou中,得到增强的时间空间耦合信息 f c o n e f_{cone} fcone。在经过1D卷积、批量归一化和激活函数处理后, f c f_c fc作为TCBE的输出。
Motion-aware State Space Model
尽管在NLP中的选择性复制任务(Bang et al., 2018; Wang et al., 2018)与前面提到的MOS任务在形式上有某些相似性,但直接应用Mamba(Wang et al., 2018)不能有效地利用时间特征。这归因于原始的Mamba(Wang et al., 2018)是为具有某种因果关系的二维自然语言设计的。然而,序列化的多扫描点云序列不能反映强烈的因果关系。因此,作者提出MSSM来弥补Mamba(Wang et al., 2018)在MOS上的不足。
MSSM的主要设计思想是通过单扫描特征与多扫描特征之间的交叉乘积注意力来增强原始Mamba对移动目标时间特征的感知。如图2左上所示,它主要由线性层、激活函数和具有选择性扫描机制的自适应状态机(SSM)组成。令输入具有批大小 B B B、例长度 N N N和通道数 C C C的点云特征表示为 f i ∈ R B × N × C f_i \in \mathbb{R}^{B \times N \times C} fiRB×N×C,该特征将通过三个分支。作者从Mamba(Wang等人,2018)的主分支导出作者的MambaMOS的上部和中部分支。上部分支用于提取单扫描点云中每个目标的表观特征。该部分更多地关注4D点云中移动目标的时间特征。对于MOS任务,更关注移动目标,作者希望MSSM对道路或树干等不动的目标分配较低的注意力。因此,需要一个特征加权过程。受到注意力控制单元(Kumar等人,2018)的启发,作者在MSSM的底部分支采用了一个简单的门控机制为每个隐藏状态中的特征分配权重,从而确定特征是否被表达。

具体来说,为了获得此时具有 B ′ = B × F B' = B \times F B=B×F的单扫描特征 f s ∈ R B × N ′ × C f_s \in \mathbb{R}^{B \times N' \times C} fsRB×N×C,上部分支首先执行反转聚合(RA),它将 S ′ S' S的每个扫描分离并经过零填充到 N p N_p Np后作为单独的批处理进行连接。然后通过1D卷积和单扫描聚合的过程获得单扫描的表观特征 f A f_A fA。这个过程可以写为:
f A = σ ( C o n v 1 d ( R A ( f ) ) ) f_A = \sigma(Conv1d(RA(f))) fA=σ(Conv1d(RA(f)))
中部分支使用1D卷积获得多个扫描中移动目标的时序和表观特征。此过程的输出表示为 f M f_M fM
随后, f M f_M fM通过交叉乘积注意力与上部分支的输出 f A f_A fA融合,得到 f M G f_{MG} fMG。融合过程可以描述如下:
f u c = Sigmoid ( f A ⊗ f M ) ⊙ f A + f h r f_{uc} = \text{Sigmoid}(f_A \otimes f_M) \odot f_A + f_{hr} fuc=Sigmoid(fAfM)fA+fhr
在后续设计中,作者遵循原始Mamba的思想,即块的最终输出 f ′ f' f是通过主分支的结果与经过线性投影的门控分支结果 f c f_c fc的逐元素乘积得到的。这个过程描述如下:
f ′ = S S M ( o ( f M G ) ) ⊙ f c f' = SSM(o(f_{MG})) \odot f_c f=SSM(o(fMG))fc
在执行损失计算之前,作者首先将获得的列分割结果反序列化,以对应初始的无序点云集,如方程6所示。之后,遵循大多数3D分割方法,作者采用交叉熵损失( L c e L_{ce} Lce)和Lovasz-Softmax损失(Louis等人,2017)( L l s L_{ls} Lls)的组合作为联合损失 L = L c e + L l s L = L_{ce} + L_{ls} L=Lce+Lls用于监督训练。

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

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

相关文章

106短信群发平台:拓客拉新、商品促销,效果究竟如何?一试便知!

106短信群发平台在拓客拉新和商品促销方面的效果是非常显著的。 首先,从发送速度和到达率来看,106短信平台表现优秀。无论是节假日还是平日,其发送速度都能保持在一个较快的水平,这对于需要及时到达的营销信息尤为重要。同时&…

STM32学习笔记--疑问篇

STM32学习笔记–疑问篇 GPIO是什么的缩写通用寄存器的缩写和全程 3.、这是什么的缩写 不同输出模式之间的差异 PB是GPIOB的缩写? 怎样知道端口应该设置成输入模式还是设置成输出模式

【强训笔记】day11

NO.1 思路&#xff1a;枚举&#xff0c;设一号大礼包的数量为x&#xff0c;二号大礼包的数量为y&#xff0c;用循环枚举一号大礼包的个数得到二号大礼包的数量&#xff0c;使得某一时刻axby的值最大。 代码实现&#xff1a; #include<iostream>using namespace std;lo…

Node.js里面 Path 模块的介绍和使用

Node.js path 模块提供了一些用于处理文件路径的小工具&#xff0c;我们可以通过以下方式引入该模块&#xff1a; var path require("path") 方法描述 序号方法 & 描述1path.normalize(p) 规范化路径&#xff0c;注意.. 和 .。2path.join([path1][, path2][,…

Web开发小知识点(一)

1.input不支持自动换行解决办法 input不支持换行&#xff1b; textarea&#xff1a;支持换行&#xff1b; 设置提示文案的css 用&#xff1a;&#xff1a;placeHolder 2.textarea禁止拖拽、去掉右下角三角&#xff08;css下&#xff09; textarea{resize:none; } 3.用户对访…

中学数学重大错误:射线A沿其正向平移非0距离就变为其真子集了

黄小宁 射线A沿其射出的方向平移非0距离变为B≌A&#xff0c;中学数学一直认定B是A的一部分&#xff0c;其实这是将两异射线&#xff08;函数&#xff09;误为同一射线&#xff08;函数&#xff09;的肉眼直观错觉。设“点集A&#xff5b;点p&#xff5d;”表示A的元素是点p&a…

【分享】基于集成成像的悬浮光场3D显示系统

摘要: 悬浮显示技术是一种非常具有发展前景的显示技术&#xff0c;它可以将图像显示在空中&#xff0c;给观看者带来沉浸感和临场感的体验。目前国内悬浮3D显示技术研究还处于初级阶段。文章提出基于集成成像的悬浮3D显示系统&#xff0c;系统由集成成像3D显示器、半透半反镜和…

Cordova 12 Android 不支持 http 原因探索

最近在升级 Cordova 到最新版本&#xff0c;升级完成后发现无法请求网络&#xff0c;研究了两次最终发现解决方案。 发现控制台中有日志输出&#xff0c;提示当前是 https &#xff0c;无法直接访问 http。 [INFO:CONSOLE(225)] "Mixed Content: The page at https://lo…

第11篇:创建Nios II工程之控制多个七段数码管

Q&#xff1a;DE2-115开发板上有8个七段数码管&#xff0c;如何用PIO IP并设计Nios II工程控制呢&#xff1f; A&#xff1a;基本思路&#xff1a;DE2-115上有8个7位七段数码管&#xff0c;而一个PIO最多可配置为32位&#xff0c;如此就可以添加2个PIO都配置为28位output。 Ni…

大数据掌控秘籍:一步步教你安装和驾驭Cloudera的无限潜力

Cloudera是一家提供大数据解决方案的公司&#xff0c;主要产品是Cloudera Enterprise&#xff0c;它是一个基于Apache Hadoop、Apache Spark和其他开源技术的大数据平台。Cloudera Enterprise提供了一个完整的大数据生态系统&#xff0c;包括数据存储、数据处理、数据分析和数据…

机器学习批量服务模式优化指南

原文地址&#xff1a;optimizing-machine-learning-a-practitioners-guide-to-effective-batch-serving-patterns 2024 年 4 月 15 日 简介 在机器学习和数据分析中&#xff0c;模型服务模式的战略实施对于在生产环境中部署和操作人工智能模型起着至关重要的作用。其中&…

Android中对MVC,MVP,MVVM架构的理解

博主前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住也分享一下给大家&#xff0c; &#x1f449;点击跳转到教程 以下是主流的对MVC,MVP,MVVM架构理解的图示 一、对于MVC架构的理解&#xff1a; 1、首先编写Model&#…

Python密码测试程序

下面是一个简单的 Python 密码测试程序&#xff0c;用于检查用户输入的密码是否符合一些基本的安全要求&#xff0c;如长度、包含字母和数字等。这个程序可以作为一个基本的密码验证器&#xff0c;你可以根据需要进行修改和扩展。 1、问题背景 我们正在编写一个程序&#xff0…

数据结构:线性表(详解)

线性表 线性表的知识框架&#xff1a; 线性表的定义&#xff1a; 线性表是具有相同数据类型的n(n > 0)个数据元素的有限序列&#xff0c;当n 0时线性表为一个空表。 若用L命名为线性表&#xff0c;则数据集合为L {a1,a2,…,an}&#xff0c;其中a1称为表头元素&#xff0c…

从零开始搭建Springboot项目脚手架1:新建项目

1、技术栈 SpringBoot 3.2.5&#xff1a; 2、 新建项目 使用SpringInitializr 选择Lombok、Configuration Processor、Spring Web&#xff0c;同时IDEA也要安装Lombok插件 删除多余的Maven目录、Maven文件&#xff0c;把HELP.md改成README.md。 当然前提是已经安装好Maven和配…

力扣70 爬楼梯 C语言 动态规划 递归

题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;2 解释&#xff1a;有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2…

Java多线程:常见的线程的创建方法及Thread类详解

目录 一.并发编程相关概念 线程与进程 多线程 Java中线程的状态 二.线程的创建方法 方法一&#xff1a;继承Thread类 方法二&#xff1a;实现Runnable接口 其他方法 三.Thread类详解 Thread常见构造方法 Thread常见属性 Thread常见方法 start() 与 run() sleep(…

Redis教程——主从复制

在上篇文章我们学习了Redis教程——管道&#xff0c;这篇文章学习Redis教程——主从复制。 主从复制 为了数据更加安全可靠&#xff0c;在实际的项目中&#xff0c;肯定是有多个Redis服务&#xff0c;主机Redis以写为主&#xff0c;从机Redis以读为主&#xff0c;当主机Redis…

长难句打卡5.7

In December 2010 America’s Federal Trade Commission (FTC) proposed adding a “do not track” (DNT) option to Internet browsers, so that users could tell advertisers that they did not want to be followed. 2010年12月&#xff0c;美国美国联邦贸易委员会(FTC)提…

在数字化转型的浪潮中,CBDB百数服务商如何破浪前行?

在信息化时代&#xff0c;传统咨询企业面临着数字化转型的挑战与机遇。如何利用数字化技术提升业务效率、增强客户黏性&#xff0c;成为了行业关注的焦点。云南析比迪彼企业管理有限公司&#xff08;CBDB&#xff09;作为云南地区的企业咨询服务提供商&#xff0c;率先与百数展…