纯视觉SOTA!华科小米推出ReCogDrive:结合VLM和强化学习的端到端自动驾驶框架

摘要

端到端自动驾驶的研究目前越来越火热,现有方法通过视觉语言模型(VLM)来解决其在长尾场景中性能降低的问题,但是仍然存在一些局限性。本文提出了ReCogDrive,它将VLM与基于扩散的轨迹规划器相结合,并且采用三阶段训练范式。在NAVSIM上的大量实验表明,ReCogDrive在没有激光雷达输入的情况下实现了最先进的闭环指标。

©️【深蓝AI】编译

尽管端到端自动驾驶已经取得了显著进展,但是其性能在罕见和长尾场景中显著降低。最近的方法尝试通过利用视觉语言模型(VLM)的丰富世界知识来应对这一挑战,但这些方法存在一些局限性:(1VLM的预训练数据和现实世界驾驶数据之间存在显著的域差异;2)离散语言空间和连续行为空间之间维度不匹配3)模仿学习倾向于捕获数据集中存在的平均行为,这可能是次优甚至危险的。本文提出了ReCogDrive,这是一种将VLM与扩散规划器相结合的自动驾驶系统,采用三阶段范式进行训练。在第一阶段,使用大规模的驾驶问答数据集来训练VLM缓解通用内容和现实世界驾驶场景之间的域差异。在第二阶段,采用基于扩散的规划器进行模仿学习,将潜在语言空间的表示映射为连续驾驶行为。最后,NAVSIM非反应式仿真器中使用强化学习对扩散规划器进行微调,使模型能够生成更安全、更类人的驾驶轨迹。本文面向规划的NAVSIM基准上评估了所提出的方法,结果表明,本文方法实现了89.6PDMS并且建立了一个新的基准先前纯视觉的SOTA方法提高了5.6 PDMS

1|ReCogDrive概览©️【深蓝AI】编译

自动驾驶旨在为车辆预测平稳、舒适、无碰撞的轨迹,目前已经取得了重大进展。最近的端到端自动驾驶系统将感知、预测和规划模块统一到一个联合优化的流程中在开环评估下展现出令人印象深刻的性能。然而,这些系统往往无法泛化到长尾场景场景数据非常有限驾驶条件与训练过程中遇到的驾驶条件存在显著差异

最近的研究通过引入VLM来解决长尾挑战,VLM在大规模互联网数据集上进行预训练,展现出很强的泛化能力和丰富的世界知识。值得注意的是,一些研究(例如DriveVLMEMMA利用预训练的VLM以文本形式预测未来轨迹,从而将运动规划任务重新表述为语言建模问题。这些方法利用VLM的自回归特性,通过逐步生成下一个标记来预测未来轨迹。具体而言,VLM在自动驾驶中的应用可以分为两种主要方法:(1)双系统方法,通过VLM生成低频轨迹或者高级命令来引导端到端驾驶系统;(2)单系统方法,其中独立的VLM直接预测未来轨迹,并且能够以端到端的方式进行优化。

然而,将在通用域数据预训练的VLM直接应用于自动驾驶会带来一些局限性:(1VLM通常是在互联网上的图像-文本数据集上预训练的,这些数据集缺乏对特定驾驶场景和知识的覆盖2)潜在语言空间和运动规划所需的连续行为空间之间存在很大差异。此外,自回归解码过程偶尔会导致输出崩溃,生成不连贯或者无效的轨迹3)大多数现有方法严重依赖于行为克隆,倾向于记忆训练数据并且优化为平均行为方式。

本文提出了ReCogDrive,这是一种新型的端到端自动驾驶系统,将来自VLM的认知与强化学习增强的扩散规划器相结合。与先前的单系统方法不同,本文方法将VLM的强大泛化能力与扩散模型的生成能力相结合,以预测平滑连续的轨迹。首先从开放数据集和自动标注流程采集并且构建310万个高质量的驾驶问答对。本文使用此数据集在驾驶域VLM进行预训练,以促进其适应现实世界驾驶场景。随后,本文引入了一种扩散规划器,它缩小了潜在语言空间和连续行为空间之间的差异,将高级表示映射低级驾驶行为。这种设计有效地保留了VLM的泛化能力。为了进一步提高轨迹质量,本文通过仿真器辅助的强化学习对扩散模型进行微调。与仅仅复现专家演示的模仿学习不同,强化学习使模型能够在NAVSIM仿真器辅助主动探索驾驶行为,并且生成更安全、更稳定、更舒适的轨迹。

本项工作的主要贡献如下:

1)本文提出了ReCogDrive,这是一种新型的端到端自动驾驶系统,三个方面具备了驾驶认知功能:(1VLM中的固有世界认知2)从构建的高质量驾驶数据中获得的驾驶域认知3)通过强化学习从多轨迹探索中获得的泛化认知

2)本文提出了一种三阶段训练框架。首先,VLM在大规模驾驶问答数据集上进行微调,以适应驾驶场景。接着,通过行为克隆训练扩散模型以生成高保真轨迹。最后,提出了仿真器辅助强化学习来生成更安全、更稳定的轨迹

3)本文在NAVSIM基准进行大量的实验。结果表明,本文方法实现了最先进的PDMS得分89.6突出了其有效性和现实世界可行性。

3.1 问题定义

给定自车状态S_{ego}例如,自车速度和自车加速度)、传感器输入I_{cam}和导航信息L_{nav},自动驾驶任务旨在预测未来几秒内平滑且无碰撞的轨迹。传统的端到端驾驶算法\Phi表述为:

V_{traj} = \Phi(I_{cam}, L_{nav}, S_{ego}) \qquad (1)

其中,V_{traj} \in \mathbb{R}^{T \times 3}为未来路径点和航向的序列。尽管一些方法已经展现出很强的有效性,但是其黑盒性质阻碍了模型的可解释性,并且它们往往无法泛化到现实世界驾驶场景中罕见的极端情况。

最新的工作利用了视觉语言模型的丰富世界知识和强大因果推理能力来实现自动驾驶。VLMs以文本形式输出轨迹,并且生成显式推理过程:

T_{traj}, T_{reason} = VLM(I_{cam}, L_{nav}, S_{ego}) \qquad (2)

然而,观察到语言格式的轨迹空间和连续行为空间之间存在固有的不匹配,并且自回归解码过程可能会出现输出崩溃,导致生成错误的轨迹。

 3.1 扩散策略

去噪扩散概率模型(DDPM通过反向一个固定的马尔可夫噪声过程来学习生成模型,该过程逐步使用高斯噪声破坏数据。给定一条清晰的轨迹\mathbf{x}_0,正向过程定义为:

q(\mathbf{x}_t | \mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t; \sqrt{1 - \sigma_t^2} \mathbf{x}_{t-1}, \sigma_t^2 \mathbf{I}), \quad t = 1, \dots, T \qquad (3)

其中,为时刻的噪声标准差。在推理过程中,通过初始化\mathbf{x}_T \sim \mathcal{N}(\mathbf{0}, \mathbf{I})并且迭代去噪来生成轨迹:

\mathbf{x}_{t-1} = \frac{1}{\sqrt{1 - \sigma_t^2}} (\mathbf{x}_t - \sigma_t^2 \epsilon_\theta(\mathbf{x}_t, t)) + \sigma_t \mathbf{z}, \quad \mathbf{z} \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) \qquad (4)

将轨迹路径点表示为\mathbf{x}_0,该框架自然地扩展到轨迹级策略生成,其中去噪网络\epsilon_\theta学习将带有噪声的运动规划优化为平滑轨迹。

本节介绍ReCogDrive架构,并且提出了三阶段训练范式,如图2所示

2|模型架构和训练流程©️【深蓝AI】编译

首先,构建了一个包含310万个高质量问答对的驾驶数据集,以预训练视觉语言模型,将驾驶特定的认知注入模型中。接着,将预训练的VLM与基于扩散的轨迹规划器相结合,以实现稳定的语言到行为的映射,将潜在语言空间转换为连续行为空间。最后,本节引入了仿真辅助强化学习,将通过多轨迹探索获得的泛化驾驶认知集成到扩散规划器中。

 4.1 驾驶特定的视觉语言预训练 

高质量驾驶数据构建为了使通用VLM适应自动驾驶,采集了各种开源驾驶问答数据集,包括DriveLMLingoQADRAMA和其九个驾驶数据集。为了确保数据集之间的一致性,将所有边界框标注结果标准化为InternVL3格式,并且引入视图特定的标记来区分不同的相机视角。一些数据集(例如,DRAMAnuInstruct)依赖于模板化回答,导致语言差异有限。为了提高数据集的质量,使用Qwen2.5-VL重新标注回答,根据建立的标准对每个问答对进行评分,并且删除得分较低的示例,最终获得230万个高质量的问答对。为了提高在各种驾驶场景中的泛化性,本文构建了一个自动标注流程利用VLM和人工标注结果为场景描述、关键目标描述、规划解释等任务生成高质量的问答。此外,还加入665KLLaVA指令调整数据,以保持VLM的指令遵循能力。

驾驶自适应的视觉语言模型:本文采用InternVL3-8B作为基础模型,该模型采用一种多模态预训练范式,并且在各种基准上展现出令人印象深刻的性能。每帧图像被划分为448×448个图像块和一个448×448个缩略图,并且由InternViT进行编码。像素重组操作和MLP投影器将图像特征压缩为每个图像块包含256个视觉标记,然后将其与文本标记连接并且传入语言头。本文在310万个高质量的驾驶问答对和指令调整数据集上对该模型进行微调。经过训练后,该模型能够生成文本轨迹T_{traj}、推理轨迹T_{reason}和场景描述T_{desc}

T_{traj}, T_{reason}, T_{desc} = VLM(S_{ego}, L_{nav}, I_{cam}) \qquad (5)

其中,T_{reason} 和 T_{desc}为驾驶决策过程提供了可解释性。

4.2 基于扩散的轨迹规划器

尽管自回归范式提供了一种直接使用VLM生成轨迹的方法,但由于结构化行为空间和语言表示之间的固有差异,方法存在根本的局限性。由于浮点离散化约束,语言空间固有地受到了数值表示中精度限制。更重要的是,VLM展现出幻觉伪影问题,这降低了它们在安全关键驾驶场景中的可靠性。为此,本文采用基于扩散的规划器作为行为解码器,高维语言空间中解码出平滑轨迹。

给定从高斯分布中获取的带有噪声的轨迹样本 \mathbf{x}_t \in \mathbb{R}^{N \times 3}, 其中N 表示时间轨迹点的数量, 列方向的维度对应于平面坐标(x, y) \in \mathbb{R}^2  以及航向角\theta \in \mathbb{S}^1 , 最初通过行为编码器E_{act}: \mathbb{R}^{N \times 3} \rightarrow \mathbb{R}^{N \times D} 将该低维表示嵌入到高维特征空间中。为了结合语义先验, 从 VLM 中提取最后一层的隐藏状态 \mathbf{F}_h \in \mathbb{R}^{L \times D}, 其中L 表示序列长度。通过平均池化操作, 获得了保留全局上下文信息的压缩语义嵌入\mathbf{F}_h \in \mathbb{R}^{1 \times D} 。为了确保轨迹的平滑性, 通过 E_{his}将历史轨迹编码为高维嵌入\mathbf{e}_{hist} \in \mathbb{R}^{1 \times D} 。然后, 将这些嵌入沿着通道维度连接, 作为 DiT 块的输入\mathbf{z}_t :

\mathbf{z}_t = \text{concat}(E_{act}(\mathbf{x}_t), E_{his}(\mathbf{x}_{hist}), \mathbf{F}_h) \qquad (6)

DiT 块架构包括两个核心组件: 自注意力层和交叉注意力层。自注意力机制实现了路径点查询之间的成对交互, 同时通过自适应层归一化 (AdaLayerNorm) 来动态调节其表示, 这显式地结合了自车状态和时间信息。随后, 交叉注意力层在路径点查询和 VLM 最后一层生成的潜在特征\mathbf{F}_h 之间建立一座上下文桥梁。这种分层融合机制有助于高级语义理解与轨迹优化约束的系统结合。最后, 行为解码器生成去噪的连续轨迹:

\mathbf{x}_{t-1} = D_{act}(\text{DiT}_\theta(\mathbf{z}_t; \mathbf{F}_h; S_{ego}; t)) \qquad (7)

本文采用 DDPM 调度器作为扩散策略。该基于扩散的机制将离散的语义标记映射到行为空间中, 从而生成平滑且连续的轨迹。本文最小化扩散策略的预测噪声 (\epsilon_\pi) 和真值噪声 (\epsilon) 之间的均方误差。损失函数定义如下:

\mathcal{L}_{dif} = \mathbb{E}_{\mathbf{z}_t, c} ||\epsilon - \epsilon_\pi(\mathbf{z}_t, c)||^2 \qquad (8)

其中, \epsilon \sim \mathcal{N}(\mathbf{0}, \mathbf{I}) 并且 c表示条件。此外,没有使用无分类器的引导,以确保生成稳定的轨迹。

4.3 仿真器辅助的强化学习

仅仅依靠模仿学习的方法展现出根本上的局限性,这是因为专家演示可能是多模态的,导致生成冲突的优化结果。如图3(a)所示,当在这种罕见的交叉路口转弯场景中使用多条专家轨迹进行训练时,该模型会采用学习平均轨迹来实现全局最优,这可能会导致不正确或者不安全的操作。因此,即使通过模仿学习训练的扩散规划器在位移方面与专家轨迹非常匹配,它仍然容易发生碰撞或者驶出可行驶区域。

图3|训练范式的比较©️【深蓝AI】编译

一种更直观的方法是让模型通过在仿真环境中驾驶来探索,从而模仿现实世界学习。然而,构建一个完全交互式的闭环仿真器极具挑战性,因此使用 NAVSIM 的非反应式仿真器来评估碰撞、舒适性和其它强化学习指标,如图3(b)所示。扩散策略 \pi_\theta可以被作为一种内部的马尔可夫决策过程,它从高斯噪声开始,并且逐步去噪来生成行为序列。具体而言,对轨迹进行采样,并且获取其扩散链。单条轨迹的扩散链表示为:

\mathbf{x} = (x_T, x_{T-1}, ..., x_0) \qquad (9)

其中,T为去噪步骤的总数。对于该扩散链:

x_T \sim \mathcal{N}(0, \mathbf{I}), \quad x_{t-1} \sim \pi_\theta(x_{t-1}|x_t), \quad t = T, T-1, ..., 1 \qquad (10)

这些轨迹在 NAVSIM 仿真器中进行模拟,它评估了每条轨迹推演的碰撞、可行驶区域合规性和驾驶舒适性,并且返回作为奖励 $r_i$ 的预测驾驶员模型得分 (PDMS)。然后计算组间标准化差异:

\hat{A}_i = \frac{r_i - \text{mean}(r_{1..G})}{\sqrt{\text{var}(r_{1..G})}}, \quad i = 1, ..., G \qquad (11)

扩散链中的每个条件步骤均为高斯策略:

\pi_\theta(x_{t-1}|x_t) = \mathcal{N}(x_{t-1}; \mu_\theta(x_t, t); \sigma_t^2 \mathbf{I}) \qquad (12)

其中,\mu_\theta(x_t, t)为模型预测的均值,\sigma_t^2 \mathbf{I}为(固定的)方差。

因此,整个扩散链 \mathbf{x}_{0:T}\pi_\theta 下的概率密度为:

\log \pi_\theta(\mathbf{x}_{0:T}) = \sum_{t=1}^T \log \pi_\theta(x_{t-1}|x_t) \qquad (13)

最后,计算策略损失,同时加入行为克隆损失以防止探索过程中崩溃:

L = \underbrace{-\frac{1}{G} \sum_{i=1}^{G} \frac{1}{T} \sum_{t=1}^{T} \gamma^{t-1} log \pi_\theta(x_{t-1}^{(i)} | x_t^{(i)}) \hat{A}_i}_{L_{RL}} - \lambda \underbrace{\frac{1}{G} \sum_{i=1}^{G} \frac{1}{T} \sum_{t=1}^{T} log \pi_\theta(\tilde{x}_{t-1}^{(i)} | \tilde{x}_t^{(i)})}_{L_{BC}} \qquad (14)

其中,\gamma为早期去噪步骤中缓解不稳定性影响的折扣系数,\lambda为行为克隆损失的权重,\tilde{x}_{t-1}\tilde{x}_t 为从参考策略\pi_{ref} 中采样的值。通过仿真辅助的强化学习,扩散规划器能够学习通过探索来预测安全且舒适的轨迹,这超越了单纯的模仿,并且将认知注入本文框架中。

5.1 实现细节

本文选择InternVL3-8B作为基础模型,该模型包括一个300M参数的InternViT视觉编码器和一个7B参数的Qwen2.5大型语言模型,这是因为它在多个评估基准上均实现了很好的性能。初始时通过动态分辨率预处理策略对图像进行处理。在第一阶段,使用混合的3.1M高质量驾驶数据集对VLM进行监督微调(SFT)。在第二阶段,在VLM参数冻结的情况下,通过DDPM训练扩散模型。在第三阶段,使用强化学习进一步优化扩散模型

5.2 数据集和评估指标

数据集NAVSIM是一个基于OpenScene的面向规划的自动驾驶数据集。它提供了8分辨率为1920×1080相机和一个融合的激光雷达点云,点云由当前和前三帧的五个传感器聚合而成。数据集分为navtrain1192个训练场景)和navtest136个评估场景)。本实验将来自navtrain85109个基于轨迹的问答对与12个开源驾驶问答数据集进行混合用于训练,12开源数据集包括Talk2CarSUTDDRAMANuScenes QADriveGPT4LingoQADriveLMMAPLMNuInstructCODA-LMMOmniDriveSenna,涵盖了从感知和预测到推理和规划的任务。

指标: NAVSIM 基准提供了一个非反应式仿真环境,并且采用预测驾驶员模型
得分 (PDMS) 作为其闭环规划指标:

其中, PDMS 集成了五个子指标: 无过失碰撞 (NC)、可行驶区域合规性 (DAC)、碰撞时间 (TTC)、舒适度 (Comf) 和自车进程 (EP), 以生成一个综合的闭环规划得分。

5.3 主要结果和消融研究

NAVSIM基准上的实验1展示ReCogDriveNAVSIM数据集上现有方法的比较结果。ReCogDrivePDMS89.6建立了新的基准。值得注意的是,尽管仅依赖相机数据,但它分别比使用相机和激光雷达输入的DiffusionDriveWoTE高出1.51.2 PDMS。此外,与在NAVSIM轨迹上直接训练的InternVL3QwenVL2.5基线相比,ReCogDrivePDMS提高了6.3证明了本文三阶段训练范式的有效性。此外,它比先前最先进的纯视觉PARA-Drive高出5.6 PDMS

表格1|使用闭环指标在NAVSIM navtest上进行性能比较©️【深蓝AI】编译

ReCogDrive上的消融研究:表格2展示对于ReCogDrive组件的消融研究。当仅在NAVSIM轨迹数据上训练InternVL3时,该模型的PDMS83.3。通过大规模驾驶问答数据使VLM适应驾驶场景,PDMS提高2.9。引入扩散规划器以实现连续轨迹预测进一步将PDMS提高了0.6。最后,仿真器辅助强化学习实现了89.6PDMSPDMS提高了2.8证明了所提出的强化学习方案在生成更安全的驾驶行为方面的价值。

表格2|对于ReCogDrive提出组件的消融研究©️【深蓝AI】编译

问答数据对规划性能的缩放律:本文采集了一个大规模、高质量的驾驶问答数据集,以使VLM适应现实世界驾驶场景。如表格3所示,问答对的数量从85k增加到3.2M可以PDMS83.3增加到85.3,这证明了驾驶特定预训练的必要性,并且确认了在本文条件下缩放律成立。此外,对整个3.2M数据集进行过滤和重构可以进一步PDMS提高0.9,达到86.2突显了数据质量的重要性。

表格3|问答数据集规模和质量对规划的影响©️【深蓝AI】编译

不同折扣系数的影响:表格4展示了折扣系数\gamma对强化学习微调的影响。当\gamma = 1.0时,所有时间步长对策略梯度的贡献都是相等的,这会放大高度可变的噪声并且破坏学习的稳定性。相比之下,设置\gamma = 0.6可以将更新集中在更可靠的后续步骤上,并且实现89.6的最佳PDMS。

表格4|不同折扣因子γ的影响 ©️【深蓝AI】编译

不同行为克隆损失权重的影响: 表格 5 研究了行为克隆损失权重\lambda 的影响。当\lambda = 0.001 时, 行为克隆项太弱, 以至于无法稳定学习, 从而导致训练崩溃。相比之下, 设置 \lambda = 0.1 则过于着重于模仿学习, 这限制了策略的改进。最佳折衷是在 \lambda = 0.01 时达到, 从而获得最高的 PDMS。

表格5|不同行为克隆损失权重λ的影响 ©️【深蓝AI】编译

不同最小采样值的影响: 本实验将余弦调度应用于扩散噪声方差\sigma_k 并且将其裁剪到最小值\sigma_{min}^{exp} 。将\sigma_k 裁剪到非零最小值会鼓励扩散策略来采样更多样化的轨迹, 但是过大的\sigma_{min}^{exp} 会使训练不稳定。设置\sigma_{min}^{exp} = 0.02 实现了 89.6 的 PDMS, 如表格 6 所示。

表格6|不同最小采样值的影响©️【深蓝AI】编译

定性结果:如4所示本实验可视化了ReCogDriveNAVSIM的感知和规划过程。除了平滑的轨迹预测外,ReCogDrive还生成描述性的场景摘要和高级驾驶指令。它能够准确检测出租车和交通信号灯等关键目标并且利用这些信息为其规划决策提供信息。

图4|ReCogDrive在NAVSIM上的定性结果©️【深蓝AI】编译

本项工作提出了ReCogDrive,这是一个端到端自动驾驶系统,它将VLM与基于扩散的轨迹规划器相结合并且采用了三阶段训练范式。首先,构建并且整理了一个310高质量驾驶问答对数据集,将驾驶特定的认知注入到预训练的VLM中。其次,通过DDPM训练一个基于扩散的轨迹规划器,将离散的语言表示映射平滑、连续的轨迹,同时保留VLM固有的世界认知和驾驶特定的认知。最后,本文强化了扩散策略,泛化驾驶认知集成到扩散规划器中。NAVSIM上的大量实验表明,ReCogDrive在没有激光雷达输入的情况下实现了最先进的闭环指标。

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

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

相关文章

MySQL慢SQL优化全攻略:从诊断到调优

目录 慢SQL日志分析与诊断 开启慢查询日志 慢查询日志分析工具 慢SQL优化策略 1. 避免SELECT * 查询 2. 创建高效索引 索引选择原则 索引使用注意事项 3. 使用EXPLAIN分析执行计划 4. 优化排序操作 5. 解决深分页问题 6. 避免全表扫描 7. 优化JOIN操作 8. 合理使用…

OPENPPP2 VMUX 技术探秘(高级指南)

🚀 VMUX技术分析:OPENPPP2中的虚拟多路复用技术 🌟 一、技术目标 🔗 连接多路复用 通过单个或多个物理链路,承载多个逻辑TCP连接。 🚀 高性能传输 支持数据包乱序重组实现动态流量控制(拥塞检测…

Linux系统时间不对导致mysql初始化失败:Data Dictionary initialization failed.(数据字典版本验证失败)

文章目录 问题描述分析**问题原因分析****解决方案****1. 修正系统时间****2. 检查数据目录完整性****3. 重新初始化数据目录****4. 调整 MySQL 配置** **验证与后续步骤****注意事项** 其他说明 问题描述 mysql数据初始化失败,发现系统时间是1970年,我…

有趣的python程序Part1:如何根据记忆曲线使用python编写一个单词记忆默写程序

目录 前言 1. 数据管理模块 2. 记忆算法实现 3. 持久化存储 4. 用户界面实现 5.整合与测试 前言 此篇文章为“有趣的python程序”专栏的第一篇文章,本专栏致力于分享一些有趣的编程作品,如果能够使您产生兴趣,不妨来动手改编使之成为更好…

【案例】性能优化在持续集成与持续交付中的应用

【案例】性能优化在持续集成与持续交付中的应用 为了更好地理解性能优化在CI/CD流程中的实际应用,本节将结合一个典型案例,从代码提交到部署上线的完整流程中,讲解如何嵌入性能检测与自动化优化机制,并使用结构化流程图直观展示关…

P7 QT项目----会学天气预报(完结)

7.8 QMap 在 Qt 中,如果你想要将 JSON 数据解析到一个 QMap 中,你可以遍历 JSON 对象的所有键值对,并将它们添加到 QMap 里。这个方法特别适合于当你的 JSON 对象是一个简单的键值对集合时。以下是一个如何实现这一点的示例。 示例&#…

操作系统笔记(关于进程引入和状态的切换)

1.前言 今天下午结束了英语的四六级考试,终于是结束了,最近的这个考试太密集,周四的专业基础课考试,周五的这个线性代数的考试和这个周六的英语四六级考试,吧我都要烤焦了,最近也是疲于应对这个考试&#…

M1芯片macOS安装Xinference部署大模型

如果你看的是官方手册:安装 — Xinference 千万不要直接运行: pip install "xinference[all]" 会遇到几个问题: 1)Python版本如果太新可能安装失败 2)全量安装会失败 3)未科学上网可能会time…

【ONNX量化实战】使用ONNX Runtime进行静态量化

目录 什么是量化量化实现的原理实战准备数据执行量化 验证量化结语 什么是量化 量化是一种常见的深度学习技术,其目的在于将原始的深度神经网络权重从高位原始位数被动态缩放至低位目标尾数。例如从FP32(32位浮点)量化值INT8(8位…

【量子计算】格罗弗算法

文章目录 🔍 一、算法原理与工作机制⚡ 二、性能优势:二次加速的体现🌐 三、应用场景⚠️ 四、局限性与挑战🔮 五、未来展望💎 总结 格罗弗算法(Grover’s algorithm)是量子计算领域的核心算法之…

C++ 互斥量

在 C 中,互斥量(std::mutex)是一种用于多线程编程中保护共享资源的机制,防止多个线程同时访问某个资源,从而避免数据竞争(data race)和不一致的问题。 🔒 一、基础用法:s…

CSS Content符号编码大全

资源宝整理分享:​https://www.httple.net​ 前端开发中常用的特殊符号查询工具,包含Unicode编码和HTML实体编码,方便开发者快速查找和使用各种符号。支持基本形状、箭头、数学符号、货币符号等多种分类。 前端最常用符号 图标形状十进制十…

RPC常见问题回答

项目流程和架构设计 1.服务端的功能: 1.提供rpc调用对应的函数 2.完成服务注册 服务发现 上线/下线通知 3.提供主题的操作 (创建/删除/订阅/取消订阅) 消息的发布 2.服务的模块划分 1.网络通信模块 net 底层套用的moude库 2.应用层通信协议模块 1.序列化 反序列化数…

【JavaEE】(3) 多线程2

一、常见的锁策略 1、乐观锁和悲观锁 悲观锁:预测锁冲突的概率较高。在锁中加阻塞操作。乐观锁:预测锁冲突的概率较低。使用忙等/版本号等,不产生阻塞。 2、轻量级锁和重量级锁 重量级锁:加锁的开销较大,线程等待锁…

创客匠人服务体系解析:知识 IP 变现的全链路赋能模型

在知识服务行业深度转型期,创客匠人通过 “工具 陪跑 圈层” 的三维服务体系,构建了从 IP 定位到商业变现的完整赋能链条。这套经过 5 万 知识博主验证的模型,不仅解决了 “内容生产 - 流量获取 - 用户转化” 的实操难题,更推动…

国产ARM/RISCV与OpenHarmony物联网项目(六)SF1节点开发

一、终端节点功能设计 1. 功能说明 终端节点设计的是基于鸿蒙操作系统的 TCP 服务器程序,用于监测空气质量并提供远程控制功能。与之前的光照监测程序相比,这个程序使用 E53_SF1 模块(烟雾 / 气体传感器),主要功能包…

Plotly图表全面使用指南 -- Displaying Figures in Python

文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。 在 Python 中显示图形 使用 Plotly 的 Python 图形库显示图形。 显示图形 Plotly的Python图形库plotly.py提供了多种显示图形的选项和方法…

getx用法详细解析以及注意事项

源码地址 在 Flutter 中,Get 是来自 get 包的一个轻量级、功能强大的状态管理与路由框架,常用于: 状态管理路由管理依赖注入(DI)Snackbar / Dialog / BottomSheet 管理本地化(多语言) 下面是 …

深度学习:人工神经网络基础概念

本文目录: 一、什么是神经网络二、如何构建神经网络三、神经网络内部状态值和激活值 一、什么是神经网络 人工神经网络(Artificial Neural Network, 简写为ANN)也简称为神经网络(NN),是一种模仿…

Unity2D 街机风太空射击游戏 学习记录 #12环射道具的引入

概述 这是一款基于Unity引擎开发的2D街机风太空射击游戏,笔者并不是游戏开发人,作者是siki学院的凉鞋老师。 笔者只是学习项目,记录学习,同时也想帮助他人更好的学习这个项目 作者会记录学习这一期用到的知识,和一些…