OccLLaMA:首个结合3D占用预测、语言、行为构建的生成式世界模型

news2024/9/27 21:21:14

导读:

OccLLaMA是首个结合3D占用预测作为视觉表征的生成式世界模型。大量实验表明,OccLLaMA在多个任务上实现了不错的性能,包括4D占用预测、运动规划和视觉问答,展示了其作为自动驾驶基础模型的潜力。©️【深蓝AI】编译

1. 研究背景

多模态大型语言模型(Multimodal Large Language Models,MLLMs)的兴起促进了它们在自动驾驶中的应用。目前基于MLLMs的方法是通过学习感知与动作之间的直接映射来执行动作,忽略了世界的动态性以及动作与世界动态之间的关系。因此,探索如何构建智能体的世界模型对于具身智能(Embodied AI)的进步至关重要。

以自动驾驶为代表的具身智能应用,也不乏有对世界模型的研究。目前,自动驾驶的世界模型主要集中在诸如视频预测、点云预测和占用预测等传感器预测任务上。然而,现有模型无法同时实现场景演变的预测、语言推理和与真实世界的交互。相比之下,本文作者提出了一种能够统一视觉、语言和行动建模(VLA)的模型。然而,构建VLA世界模型面临两个关键挑战,亟待解决:

  • 第一个是构建一种通用的三维视觉表征,以促进理解和生成;
  • 第二个是开发一种能够容纳VLA模态的多模态框架。

基于上述背景,本文提出OccLLaMA框架用于解决上述两个关键挑战,该模型是一种统一的三维占用-语言-行动生成世界模型,并且统一了与VLA相关的任务,包括但不限于场景理解、规划和4D占用预测,如图1所示。

本文主要贡献如下:

1)本文提出一种占用-语言-行动生成世界模型OccLLaMA,它使用Occ作为视觉表征,通过基于LLaMA的统一多模态词汇和增强的自回归模型涉及多个任务。

2)该模型利用一种新型场景分词器,能够高效地离散化和重构Occ场景,同时考虑稀疏性和类别不平衡。

3)在与最先进的方法进行了对比实验,在多个任务(包括4D占用预测、运动规划和视觉问答)中,表现超过现有方法。

图1|OccLLaMA框架示例©️【深蓝AI】编译

2. 相关工作

2.1 MLLMs in Autonomous Driving

大语言模型(LLMs)在自动驾驶的应用包括场景理解和端到端决策制定。基于LLM的决策制定方法在解决基于学习的系统中的可解释性和推广性挑战方面有很大潜力,通过在文本空间中进行推理。在自动驾驶场景中,LLMs主要任务是将环境信息传达给模型,以及研究如何更有效地扩展输入模态。例如,基于模板的自然语言场景描述、与语言提示结合的向量嵌入输入、基于相机感知的图像嵌入等。

2.2 World Model in Autonomous Driving

世界模型旨在基于动作和观察预测未来场景。在自动驾驶中,世界模型通常用于数据生成和决策制定。各种模型以不同的方式表示场景,可以分为2D图像表示、3D点云表示和3D占用表示。使用2D图像表示的视觉世界模型由于传感器的灵活性提供了可扩展性,但缺乏3D场景理解。虽然3D点云表示解决了这个问题,但它们缺乏语义信息。一些研究关注多模态表示,但生成的不同模态的结果之间的特征对齐仍然困难。因此,整合3D场景表示和语义理解是建模场景演变的一种有前景的方法。

2.3 Autoregressive Visual Generation

自回归(AR)视觉生成是指使用自回归方法生成图像的模型。早期模型如VQVAE、VQGAN和Dalle将图像转换为离散标记并顺序生成,面临输出性能和可扩展性方面的限制。随后,扩散模型(Diffusion Models)因其独特的范式主导了视觉生成领域。最近,自回归模型的简洁性使得统一理解和生成成为可能,能有效扩展大数据。VAR模型使得基于GPT的自回归模型在图像生成方面超越了扩散模型。Llama-Gen在条件图像生成方面超越了扩散模型,表明纯自回归模型可以作为没有视觉信号归纳偏差的图像生成基础。将AR语言模型与视觉生成整合仍然具有挑战性,特别是在为语言和视觉任务创建统一模型方面。

图2|OccLLaMA框架概览©️【深蓝AI】编译

3. 方法精析

3.1 方法概述

如图2所示,OccLLaMA作为一个统一的占用-语言-动作框架,它的核心组件包括场景分词器(Scene Tokenizer)和占用-语言-动作生成世界模型。为了实现多任务,作者引入了一个三阶段的训练方案,用于场景分词器的训练、占用-语言-动作预训练和指令调优。

3.2 场景分词器

本方法采用类似于VQVAE的架构,通过使用离散标记(Discrete Tokens)来表示场景。然而,占用中的网格大约90%都充斥着空气,导致显著的稀疏性。现有的方法对空气类别应用密集卷积运算既昂贵又效率低下。此外,各类别之间的不平衡进一步也阻碍了学习效率。为了解决这些问题,本文在编码器中引入了一种稀疏编码策略(一种类似于点云处理技术)。同时,将非占用类别与其他语义类别解耦,从而实现更高效的场景重建。

编码器(Encoder):原始场景表示为 x ∈ R H × W × D x \in \mathbb{R}^{H \times W \times D} xRH×W×D,其中3D空间被划分为密集的$H \times W \times D
体素,每个体素被分配一个语义标签 体素,每个体素被分配一个语义标签 体素,每个体素被分配一个语义标签l \in \mathbb{R} 。将 。将 。将x 进行稀疏化处理,得到 进行稀疏化处理,得到 进行稀疏化处理,得到y \in P^{H \times W} ,通过丢弃空气体素,并将语义占用体素表示为沿 B E V 方向排列的 1 D 伪点云集 ,通过丢弃空气体素,并将语义占用体素表示为沿BEV方向排列的1D伪点云集 ,通过丢弃空气体素,并将语义占用体素表示为沿BEV方向排列的1D伪点云集P = {p_i}_{i=1}^{N} ,其中 ,其中 ,其中N 是当前支柱内的非空气体素的数量。每个点 是当前支柱内的非空气体素的数量。每个点 是当前支柱内的非空气体素的数量。每个点p_i 是一个向量 是一个向量 是一个向量(d,l) ,其中 ,其中 ,其中d 是高度, 是高度, 是高度,l 是语义标签。然后,利用支柱嵌入 ( p i l l a r s e m b e d d i n g ) 聚合伪点云特征,并使用 s w i n − t r a n s f o r m e r 块获得 B E V 特征图 是语义标签。然后,利用支柱嵌入(pillars embedding)聚合伪点云特征,并使用swin-transformer块获得BEV特征图 是语义标签。然后,利用支柱嵌入(pillarsembedding)聚合伪点云特征,并使用swintransformer块获得BEV特征图z = E(y) \in \mathbb{R}^{H_r \times W_r \times c} ,其中是下采样率, ,其中是下采样率, ,其中是下采样率,c$是潜在特征维度。

量化(Quantification):为了获得离散表示,通过向量量化将 z z z转换为一组字典条目 z ^ \hat z z^。可学习的字典 Z = { z ^ i } i = 1 K Z = \{ \hat{z}_i \}_{i=1}^{K} Z={z^i}i=1K由个向量组成,每个向量的维度为 c c c。量化过程 Q ( ⋅ ) Q(\cdot) Q()用其最近的字典条目 z ^ k \hat z_k z^k替换每个 z i z_i zi,表示为:

z ^ i = Q ( z i ) : = arg ⁡ min ⁡ z ^ k ∈ Z ∥ z i − z ^ k ∥ 2 ( 1 ) \hat{z}_i = Q(z_i) := \arg \min_{\hat{z}_k \in Z} \parallel z_i - \hat{z}_k \parallel_2\qquad(1) z^i=Q(zi):=argz^kZminziz^k2(1)

解码器(Decoder):由于在量化后BEV特征图中高度信息丢失,解码器通过堆叠卷积块和上采样层恢复密集的3D体素特征。具体来说,为了解决类别不平衡问题,作者分别实例化轻量体素头(voxel head)和类别头(class head),以解码占用的几何和语义信息。其中,体素头为类别头提供了一个占用掩码,允许仅监督占用体素的语义就行。

损失(Loss):要训练这个场景分词器,作者参考OccWorld的做法,利用三种损失函数进行优化,其中合成交叉熵损失 L c \mathcal{L}_c Lc和Lovasz-softmax损失 L l \mathcal{L}_l Ll用于几何 g e ge ge和语义 s e se se的重建学习,以及嵌入损失 L e \mathcal{L}_e Le用于字典学习。

L = λ 1 L c g e + λ 2 L l g e + λ 3 L c s e + λ 4 L l s e + λ 5 L e ( 2 ) \mathcal L = \lambda_1\mathcal L_c^{ge} + \lambda_2\mathcal L_l^{ge} + \lambda_3\mathcal L_c^{se} + \lambda_4\mathcal L_l^{se} + \lambda_5\mathcal L_e\qquad(2) L=λ1Lcge+λ2Llge+λ3Lcse+λ4Llse+λ5Le(2)

3.3 生成世界模型

统一词汇(Unified Vocabulary):通过使用场景分词器,占用场景可以被映射并展平为一个序列 z ^ 1 : L ∈ R c \hat{z}^{1:L} \in \mathbb{R}^c z^1:LRc,其中 L = H r × W r L = \frac{H}{r} \times \frac{W}{r} L=rH×rW,这允许与原始大型语言模型中的相似语言词汇 V t = { v i t } i = 1 K t V_t = \{v_{i}^{t}\}_{i=1}^{K_t} Vt={vit}i=1Kt进行联合表示。具体而言,首先将场景标记 z ^ 1 : L \hat{z}^{1:L} z^1:L表示为一个索引序列 s 1 : L = { s i } i = 1 L s^{1:L} = \{s_i\}_{i=1}^{L} s1:L={si}i=1L,其中 s i s^i si对应于场景标记 z ^ 1 : L \hat{z}^{1:L} z^1:L的代码索引编号。因此,通过构建一个场景词汇 V s = { v i s } i = 1 K s V_s = \{v_{i}^{s}\}_{i=1}^{K_s} Vs={vis}i=1Ks,它与场景字典 Z Z Z保持顺序一致。由于一般的大型语言模型很难输出细粒度的数值,本文根据轨迹集的统计经验性地将航点的坐标划分为 N N N个区间,并将航点映射到最近的区间,以构建一个动作词汇 V a = { v i a } i = 1 K a V_a = \{v_{i}^{a}\}_{i=1}^{K_a} Va={via}i=1Ka。此外,作者还添加了若干特殊的功能标记 { v i f } i = 1 K f \{v_{i}^{f}\}_{i=1}^{K_f} {vif}i=1Kf,如 <occ></occ><act></act> 来表示模态边界;<que_i> 用于辅助下一个场景预测。因此,最后构建一个统一的占用-语言-动作词汇 V = { V s , V t , V a , { v i f } i = 1 K f } V = \{V_s, V_t, V_a, \{v_{i}^{f}\}_{i=1}^{K_f}\} V={Vs,Vt,Va,{vif}i=1Kf},以生成格式表述多种任务,其中输入和输出可以是这三种模态之一或混合,具体取决于要解决的任务。

下一个标记/场景预测(Next Token / Scene Prediction):由于语言和动作都是时间序列,这使得这些序列中的标记自然适合使用原始因果掩码和下一个标记预测机制进行时间注意力。然而,场景序列中的标记并不固有地遵循时间顺序,并且序列长度往往大于语言和动作。如果在场景中逐行执行下一个标记预测,它无法捕捉空间关系,并会产生高计算成本。为了解决这些问题,本文引入了下一个场景预测,同时保留下一个标记预测。

如图2所示,在与场景标记对应的位置上实现空间注意力,以更好地捕捉场景内的空间关系。相应地,通过初始化可学习的场景查询,以在一次前向步骤中预测整个场景,从而使场景内标记之间的交互更好,并显著减少推理时间。标记/场景预测的机制如算法1所示:

算法1|标记/场景预测的机制©️【深蓝AI】编译

3.4 训练过程

整个框架训练包括三个阶段:

1)场景分词器的训练:首先专注于学习场景字典,以将占用表示为离散标记,使用在公式2中定义的目标函数。一旦优化,场景分词器在后续阶段的管道中保持不变。

2)3D占用-语言-动作预训练: 在这个阶段,对占用、语言和动作模态进行对齐。通过使用世界模型目标和场景描述目标进行全面的参数预训练,前者监督占用和动作之间的对齐,以学习世界的演变,后者监督占用和语言之间的对齐,以学习3D场景的语义理解。

3)指令调优:在这个阶段,通过LoRA基于提示的指令对模型进行微调,以应对不同的场景理解和规划任务。

4. 实验分析

4.1 实验设置

数据集:NuScenes是自动驾驶领域广泛认可的基础数据集。该数据集包含700个训练视频和150个验证视频,每个视频长度为20秒,关键帧率为2Hz。Occ3D是一个基于NuScenes的大规模3D占用数据集,为每一帧提供语义占用表示。NuScenes-QA是一个基于NuScenes的多模态视觉问答数据集。它包含五类问题:存在性、计数、查询对象、查询状态和比较,这些问题又根据复杂性进一步细分为零跳和一跳。为了对齐占用和语言模态,作者收集了一个基于NuScenes的大型描述数据集。具体来说,这个数据集将占用帧与出现的对象的位置、类别、状态和未来轨迹进行匹配。

实现细节:在大多数比较中,将语言模型基础设为LLaMA-3.1-8b,场景分词器参数设为50× 256×2048。对于视觉问答(VQA)比较,将语言模型基础设为LLaMA-2-7b,场景分词器的分辨率设为25×25,以确保公平性。对所有训练使用AdamW优化器。场景分词器的训练使用学习率 1 0 − 4 10^{-4} 104,批量大小为4, λ 1 = λ 3 = 10 λ_1=λ_3=10 λ1=λ3=10 λ 2 = λ 4 = 5 λ_2=λ_4=5 λ2=λ4=5,以及 λ 5 = 5 λ_5=5 λ5=5,而生成模型在预训练阶段使用学习率 1 0 − 4 10^{-4} 104和批量大小为1,在指令调优阶段使用学习率 5 × 1 0 − 5 5×10^{-5} 5×105和批量大小为4。

4.2 结果分析

4D占用预测:该任务旨在给定少量历史占用输入预测未来的3D占用场景。具体来说,通过使用2秒的历史帧来预测随后的3秒,同时使用mIoU和IoU作为主要评估指标。如表1所示,在两种设定下比较OccLLaMA与最先进的方法OccWorld:使用真实的3D占用(-O),使用基于相机数据的FBOCC预测结果(-F)。

表1|4D占用预测定量实验结果©️【深蓝AI】编译

实验结果表明,本文设计的场景分词器在场景重建能力上表现出色。此外,OccLLaMA在1秒内实现了具有竞争力的预测结果,并在较长时间内显著超越OccWorld,突显了其增强的长期预测能力。此外,OccLLaMA-F可以被视为一个端到端的管道,因为它以相机作为输入。尽管任务复杂,OccLLaMA始终表现出强大的预测性能。图3中为可视化结果。

图3|4D占用预测定性实验结果©️【深蓝AI】编译

运动规划:如表2所示,研究者们将OccLLaMA的运动规划能力与几种利用各种输入和监督的强基线进行比较,以及与4D占用预测任务相同的设置下将OccLLaMA与OccWorld进行比较。

表2|运动规划定量实验结果©️【深蓝AI】编译

视觉问答:作者使用占用数据与文本指令作为输入,并在自动驾驶中实施一系列3D任务的多模态大型语言模型(MLLM),然后选择LiDAR-LLM,作为比较基线。此外,还分别使用深度图像和原始图像作为输入,对NuScenes-QA基准测试中的一个强大的2D LLM进行了评估。Top-1准确率作为评估模型性能的指标,并对不同问题类型进行单独评估。

表3|NuScenes-QA定量实验结果©️【深蓝AI】编译

如表3所示。与LiDAR-LLM相比,OccLLaMA能够更好地捕捉3D空间中的语义信息,这对和对象相关的问题至关重要。此外,OccLLaMA将空间信息作为输入,自然地对齐语义和空间数据,这对涉及空间关系的问题是有益的。

4.3 消融实验

场景分词器参数: 表4比较了不同超参数对场景分词器重建性能的影响,包括潜在空间分辨率、特征维度和字典大小。结果表明,更大的字典会导致过拟合和字典利用效率低下。较小的字典和特征维度无法有效建模场景分布。分辨率与重建能力正相关,并且对重建性能有最显著的影响。然而,更大的分辨率会导致重建一个场景所需的标记数量增加,从而增加了预测的负担。

表4|分词器参数消融实验结果©️【深蓝AI】编译

生成模型组件:本文还比较了生成模型中不同组件对预测和规划性能的影响。如表5所示,缺少空间注意力意味着一个场景中的标记根据扁平化序列顺序维持其原始的因果注意力。缺少动作标记化意味着航点是通过连接原始语言词汇的标记形成的。实验结果显示,使用特定于动作的标记而不是依赖语言词汇,能够提高预测和规划的性能。此改进可以归因于:特定动作的标记保留了航点的物理先验,同时避免了语言词汇中的归纳偏差。此外,实验还表明使用空间注意力来建模场景内的空间依赖关系对于预测至关重要。然而,这会导致规划性能的轻微下降,这可能是由于空间注意力在局部上干扰了全局因果注意力。

表5|模型组件消融实验结果©️【深蓝AI】编译

预训练的好处:表6对比了不同训练设置对问答(QA)性能的影响,从预训练开始的指令微调与从零开始的指令微调。实验结果显示,为模态对齐进行的预训练总体上改善了视觉问答(VQA)性能。这表明,当OccLLaMA对基本3D场景和世界动态有更深入的理解时,它能够更好地完成高级QA任务。

表6|描述预训练消融实验结果©️【深蓝AI】编译

5. 总结展望

本文提出的OccLLaMA框架是一个用于自动驾驶的3D占用-语言-动作生成世界模型。作者通过引入了一种特殊的场景分词器,以高效地离散化和重构语义占用场景。此外,还构建了一个统一的多模态标签(multi-modal vocabulary),涉及占用、语言和动作模态。在这个词汇的基础上,增强了LLM,特别是LLaMA,使其能够在统一词汇上执行下一个标记/场景预测,从而完成自动驾驶中的多个任务。研究者们还对4D占用预测、运动规划和视觉问答进行了广泛的验证实验,实验展示了OccLLaMA的多任务有效性。

未来,作者希望增加数据多样性,进一步增强OccLLaMA的能力,并探索模型量化和蒸馏,以解决因参数数量庞大而导致的推理延迟问题。
©️【深蓝AI】

编译|巴巴塔
审核|Los

本文首发于微信公众号【深蓝AI】,移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态👇

深蓝AI·赋能自动驾驶+机器人+AI

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

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

相关文章

如何在谷歌浏览器上玩大型多人在线游戏

在如今的数字时代&#xff0c;谷歌浏览器已经成为了许多人上网冲浪的首选工具。除了浏览网页、观看视频之外&#xff0c;你还可以在谷歌浏览器上畅玩各种大型多人在线游戏。本文将为你详细介绍如何在谷歌浏览器上玩大型多人在线游戏的步骤。 &#xff08;本文由https://chrome…

【Java代码审计】敏感信息泄露篇

【Java代码审计】敏感信息泄露篇 1.敏感信息泄露概述2.TurboMail 5.2.0 敏感信息泄露3.开发组件敏感信息泄露1.敏感信息泄露概述 敏感信息是业务系统中对保密性要求较高的数据,通常包括系统敏感信息以及应用敏感信息 系统敏感信息指的是业务系统本身的基础环境信息,例如系统…

望繁信科技CTO李进峰受邀在上海外国语大学开展流程挖掘专题讲座

2023年&#xff0c;望繁信科技联合创始人兼CTO李进峰博士受邀在上海外国语大学国际工商管理学院&#xff08;以下简称“上外管院”&#xff09;开展专题讲座&#xff0c;畅谈流程挖掘的发展及对企业数字化转型的价值。演讲吸引了上外教授和来自各行各业的领军企业学员百余人。 …

句子成分——每日一...

一、 "Who made you read so many books and realize that there is a bigger world beyond Shuangshui Village..." If you have been working from sunrise to sunset in this world since childhood, you will have the same ideal as many villagers: after a …

嵌入式硬件工程师与嵌入式软件工程师的区别(详细版)

嵌入式硬件工程师与嵌入式软件工程师的区别&#xff08;详细版&#xff09; 这里写目录标题 嵌入式硬件工程师与嵌入式软件工程师的区别&#xff08;详细版&#xff09;什么是嵌入式硬件工程师&#xff1f;什么是嵌入式软件工程师&#xff1f;嵌入式硬件工程师与嵌入式软件工程…

关于vue2+uniapp+uview+vuex 私募基金项目小程序总结

1.关于权限不同tabbar处理 uniapp 实现不同用户展示不同的tabbar(底部导航栏)_uniapp tabbar-CSDN博客 但是里面还有两个问题 一个是role应该被本地存储并且初始化 第二个问题是假设我有3个角色 每个角色每个tabbar不一样的&#xff0c;点击tabbar时候会导致错乱 第三个问题…

webpack使用

一、简介 概述 本次使用webpack4进行构建打包 二、webpack 安装webpack、webpack-cli npm install webpack4.2.0 webpack-cli4.2.0 -D 三、loader 加载器概述 raw-loader&#xff1a;加载文件原始内容&#xff08;utf-8&#xff09; file-loader&#xff1a;把文件输出…

【深度学习】(4)--卷积神经网络

文章目录 卷积神经网络一、画面不变性二、图像识别三、卷积网络结构1. 原理2. 卷积层3. 池化层4. 全连接层 四、感受野 总结 卷积神经网络 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;简称CNN&#xff09;是一种深度学习模型&#xff0c;特别适用于处理…

探索 Snowflake 与 Databend 的云原生数仓技术与应用实践 | Data Infra NO.21 回顾

上周六&#xff0c;第二十一期「Data Infra 研究社」在线上与大家相见。活动邀请到了西门子数据分析师陈砚林与 Databend 联合创始人王吟&#xff0c;为我们带来了一场关于 Snowflake 和 Databend 的技术探索。Snowflake&#xff0c;这个市值曾超过 700 亿美元的云原生数据仓库…

20240926 关于Goland处理wsl-GOROOT原理猜测

GOROOT的原理 go sdk与java jdk类似&#xff0c;是go的编译工具链的集合。 在windows上&#xff0c;我们通过在系统环境变量中添加GOROOT并设置为go sdk地址&#xff0c;使得命令行可以访问到go sdk并执行go test、build等命令&#xff0c;这样设置的变量是全局生效的&#x…

zico2打靶记录

一、环境搭建 下载地址&#xff1a;https://download.vulnhub.com/zico/zico2.ova 直接双击下载的.ova文件即可在VMware中打开 设置好保存路径后在虚拟机的设置中删除仅主机这个网卡 然后启动靶机 二、信息收集 扫描靶机ip arp-scan -l 扫描一下开放的端口 nmap -p- -sV…

C++面向对象基础

目录 一.函数 1.内联函数 2.函数重载 3.哑元函数 二.类和对象 2.1 类的定义 2.2 创建对象 三. 封装&#xff08;重点&#xff09; 四. 构造函数 constructor&#xff08;重点&#xff09; 4.1 基础使用 4.2 构造初始化列表 4.3 构造函数的调用方式&#xff08;掌握…

如何守护变美神器安全?红外热像仪:放开那根美发棒让我来!

随着智能家电市场的迅速发展&#xff0c;制造商们越来越关注生产过程中效率和质量的提升。如何守护变美神器安全&#xff1f;红外热像仪&#xff1a;放开那根卷发棒让我来&#xff01; 美发棒生产遇到什么困境&#xff1f; 美发棒生产过程中会出现设备加热不均情况&#xff0c…

【pytorch】pytorch入门4:神经网络的卷积层

文章目录 前言一、定义概念 缩写二、性质三、代码总结参考文献 前言 使用 B站小土堆课程的笔记 一、定义概念 缩写 卷积层是神经网络中用于突出特征来进行分类任务的层。 二、性质 卷积核例子&#xff1a;vgg16 model 三、代码 添加库 python代码块import os import …

无线领夹麦克风哪个牌子好,2024年新款领夹麦克风推荐

在短视频和直播风靡的当下&#xff0c;音频质量成为了衡量内容品质的重要标尺。市面上琳琅满目的无线领夹麦克风产品&#xff0c;却让许多创作者陷入了选择困难中&#xff0c;高昂的价格、复杂的操作、以及参差不齐的音质表现&#xff0c;让不少人在追求专业音频的道路上交了“…

Excel中用位置筛选解法

有 2022 年 1 月的日销售额统计表如下所示&#xff1a; 筛选出偶数日的销售额&#xff1a; spl("E(?1).select(#%20)",A1:B32)#表示当前行号 免费课程、软件免费下载

智慧公厕:引领公共卫生新潮流@卓振思众

随着科技的不断进步&#xff0c;智慧公厕应运而生&#xff0c;为人们带来了全新的如厕体验。作为智慧公厕厂家&#xff0c;我们致力于打造更加舒适、便捷、环保的公共厕所。智慧公厕究竟有哪些神奇之处呢&#xff1f;让我们一起来揭开它的神秘面纱。【卓振思众】 一、环境监测&…

基于SpringBoot + Vue的轿车数字化管理系统

文章目录 前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S 四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论 五、项目代码参考六、数据库代码参考七、项目论文示例结语 前言 &#x1f49b;博主介绍&a…

餐厅包厢预订小程序

餐厅包间预订小程序的功能可以包括以下几个方面&#xff1a; 用户注册与登录&#xff1a; 用户可以通过手机号、微信等方式注册和登录。 包间展示&#xff1a; 提供各类包间的详细信息&#xff0c;包括图片、容纳人数、设施、装修风格等。 实时预订&#xff1a; 用户可以选择日…

QT开发:详解 Qt 多线程编程核心类 QThread:基本概念与使用方法

1. 引言 在现代应用程序开发中&#xff0c;多线程编程是一个关键技术&#xff0c;能够显著提高程序的效率和响应速度。Qt 是一个跨平台的 C 框架&#xff0c;其中 QThread 类是实现多线程编程的核心类。本文将深入详解 QThread 的基本概念、使用方法及其在实际应用中的重要性。…