当前位置: 首页 > news >正文

文献总结:AAAI2025-UniV2X-End-to-end autonomous driving through V2X cooperation

UniV2X

  • 一、文章基本信息
  • 二、文章背景
  • 三、UniV2X框架
    • 1. 车路协同自动驾驶问题定义
    • 2. 稀疏-密集混合形态数据
    • 3. 交叉视图数据融合(智能体融合)
    • 4. 交叉视图数据融合(车道融合)
    • 5. 交叉视图数据融合(占用融合)
    • 6. 规划输出 Planning Output
  • 四、实验
    • 1. 实验设置
    • 2. DAIR-V2X上的实验结果
    • 3. 关于可靠性的消融实验
  • 五、总结

一、文章基本信息

标题End-to-end autonomous driving through V2X cooperation
会议AAAI(Association for the Advancement of Artificial Intelligence)
作者Haibao Yu;Wenxian Yang;Jiaru Zhong;Zhenwei Yang;Siqi Fan;Ping Luo;Zaiqing Nie
主要单位The University of Hong Kong;AI Industry research (AIR), Tsinghua University
日期v1:2024年3月31日;v3:2024年12月24日
论文链接https://arxiv.org/abs/2404.00717
代码链接https://github.com/AIR-THU/UniV2X

摘要: 通过车联网通信来利用自车和路侧传感器的数据已经成为高阶自动驾驶的前景方法。然而,目前的研究主要聚焦于提高单一模块,而不是采用端到端的学习来优化最终规划性能,导致数据潜力未能充分利用。在这篇文章中,作者引入了一个UniV2X的先进协同自动驾驶框架,将不同视角下的所有关键的驾驶模块无缝地融合到一个统一的框架下。作者提出了一个稀疏-密集混合的数据传输和融合机制来促进车辆和基础设施的协同,主要有三个优点:

1. 同时提升了智能体感知、在线地图和占用预测等中间模块性能,最终提高了规划性能
2. 数据传输友好和通信条件限制
3. 具有混合数据可解释性可靠数据融合

作者在真实世界中的协同驾驶数据集——DAIR-V2X上,对UniV2X进行了测试,同时复现了几个基准方法。实验结果证明了UniV2X在显著提升规划性能和所有中间模块的性能方面是有效的。

文章框架:
在这里插入图片描述

二、文章背景

尽管自动驾驶通过深度学习的融合取得了巨大的发展,但由于感知距离受限、感知信息不充分,单车自动驾驶仍面临着巨大的挑战,尤其是对于依赖经济的摄像头作为传感器的车辆。通过车联网通信来利用具有更广阔视野的路侧传感器,在提高高阶自动驾驶方面展示了巨大的潜力。现有的利用额外感知数据来辅助提升感知精度的方法,在目标检测、目标追踪、语义分割、定位等单独的任务上表现较好,但忽视了最终的规划增强。最大的难点在于:单独的任务目标与最终轨迹规划的目标不一致。因此,利用车载和路侧传感器数据直接优化最终规划输出的方法变得必要。在本文中,作者聚焦于车辆基础设施协同自动驾驶(vehicle-infrastructure cooperative autonomous driving, VICAD)。
在这里插入图片描述
车辆基础设施协同自动驾驶问题可以定义为:在带宽限制条件下,采用多视图传感器输入的以规划为主的优化问题。与单车自动驾驶相比,车辆基础设施协同自动驾驶在处理端到端学习时,面临着额外的挑战:

  • 传输的基础设施数据必须是有效的。它应既能增强关键模块的性能,又能提升自动驾驶的最终规划性能。
  • 数据必须是传输友好型的。受实时性要求和有限通信条件的驱动,最小化传输成文对于降低通信带宽消耗和减少延迟直观重要。
  • 传输数据必须是可靠的。车辆需要可解释的信息来有效地避免通信攻击和数据损坏带来的安全问题。

作者对比了一些现有的协同感知方法,并得出了以下判断:这些现有解决方案依赖于一种普通的方法,利用简单的网络来优化规划和控制输出。这种模式缺乏明确的模块,损害了安全保障和可解释性。尤其是在复杂的城市环境中,这种方法在确保驾驶系统的可靠性方面存在不足。

在这里插入图片描述
所以,作者受UniAD的设计理念启发,采用一种模块化的端端自动驾驶范式。除了最终的轨迹规划结果,还能对比和处理以下三个常见的任务:

  • 智能体感知(agent perception): 包括动态障碍物的3D目标检测、追踪及运动预测
  • 语义地图分割(online map):用于在线地图绘制的道路元素检测(尤其是车道)
  • 网格占用预测(grid-occupancy prediction):用于通用障碍物感知的网格占用预测

在传输和跨视图交互中,我们将智能体感知和道路元素检测归类为实例级表示,将占用预测归类为场景级表示。本文传输智能体查询和车道查询,以进行跨视图智能体感知交互和在线地图绘制交互。本文传输占用概率图,考虑到其在场景级占用中的密集特性,用于跨视图占用交互。这种传输方式称为稀疏 - 密集混合传输,分别在空间和特征维度上平衡了稀疏性和密集性。

本文的主要贡献如下:

  • 开发了首个用于车辆与基础设施协同自动驾驶的模块化端到端框架
  • 设计了一种稀疏 - 密集混合传输和跨视图数据交互方法
  • 复现了多种协同方法作为baseline,并用DAIR-V2X呈现了UniV2X

三、UniV2X框架

本部分展示了UniV2X的整体框架:
在这里插入图片描述
自车系统沿用了2023CVPR best paper: UniAD的架构1:包括TrackFormer, Mapformer和OccFormer几个主要的模块。

与UniAD最主要的区别应该是在于如何将路端和车端对齐,为此,作者提出了三个主要的东西分别是:

  • 稀疏密集混合数据: 将agent queries和lane queries作为稀疏数据,将occupied probability map作为密集数据,来进行混合数据传输,降低通信成本
  • 时间同步:采用特征流的概念
  • 空间同步:时间同步采用BEV+坐标变换
  • 自车消除:路侧占用预测中消除自车模块

1. 车路协同自动驾驶问题定义

1.1 系统输入输出

  • 输入:纯视觉输入,包括自车图像 I v ( t ) ∣ t ≤ t v {I_{v}(t)|t\le t_{v}} Iv(t)ttv和车辆在 t v t_{v} tv时刻的位姿 M v ( t v ) M_{v}(t_{v}) Mv(tv);路侧基础设施图像 I i ( t ) ∣ t ≤ t i {I_{i}(t)|t\le t_{i}} Ii(t)tti和基础设施在 t i t_{i} ti时刻的位姿 M i ( t i ) M_{i}(t_{i}) Mi(ti),实践中,时间 t i t_i ti应该比 t v t_v tv更早。
  • 输出:预测自车在未来时间步 t = t v + 1 , … , t p r e d t=t_{v}+1,\dots,t_{pred} t=tv+1,,tpred的坐标

1.2 评价指标

L2误差 (L2 error):用于评估规划的车辆未来轨迹与实际行驶轨迹之间的偏差程度。计算方法是对预测轨迹点和实际轨迹点对应坐标差值的平方和求平方根,其值越小,代表规划轨迹越接近实际轨迹,规划性能越好。

碰撞率 (collision rate):指在一定的测试或行驶场景下,车辆发生碰撞的次数与总行驶次数(或总行驶时间、总行驶里程等相关指标)的比例。该指标反映了车辆在行驶过程中发生碰撞的可能性,碰撞率越低,说明自动驾驶系统在避免碰撞方面的性能越出色.

道路偏离率(off-road rate):表示车辆偏离正常行驶道路区域的频率或比例。通过统计车辆离开可行驶区域(如超出车道范围、驶入禁止区域等)的次数,并与总行驶次数(或总行驶时间等)相除得到。道路偏离率低意味着车辆能较好地保持在规定的行驶区域内,规划路径能有效引导车辆遵守交通规则和维持在安全行驶区域。

每秒传输的比特数量(Bytes Per Second, BPS): 用于量化从基础设施每秒传输到自动驾驶车辆的数据量,它考虑了传输频率

1.3 面临的挑战

  • 受实际通信条件的限制,应向车辆传输更少的基础设施数据,以最小化带宽使用并减少延迟。
  • 无线通信会导致延迟,这可能会在数据融合时造成时间上的不一致。
  • 在的通信攻击和数据损坏可能会使传输的数据不可信。

2. 稀疏-密集混合形态数据

这部分说明了如何在基础设施系统中生成用于传输的稀疏-密集混合数据。作者主要关注车道线和人行横道元素。在传输过程中,我们使用分类解码器生成的边界框过滤掉得分较低的查询,仅传输 N l i n f N_{l}^{inf} Nlinf​个有效的车道查询 { Q L i n f } \{Q_{L}^{inf}\} {QLinf},其特征维度为 256,以及它们相应的参考点。

UniAD中的原始 OccFormer 仅考虑与智能体查询相关的实例级占用情况,并进行多步预测。然而,占用情况是一般障碍物检测中目标感知的补充因素,传输多个概率图会产生巨大的传输成本。为了解决这些挑战,我们保留通过像素级注意力获得的大小为 (200, 200, 256) 的密集特征。

首先,使用多层感知器(MLP)将密集特征转换为大小为 (200, 200) 的 BEV 占用概率图,记为 p i n f p^{inf} pinf
随后,采用特征流预测方法,利用一个额外的概率流模块通过线性运算来表示 T 步的概率图,公式为:
P f u t u r e ( t ) = P 0 + t ∗ P 1 P_{future}(t)=P_{0}+t*P_{1} Pfuture(t)=P0+tP1
其中, P 0 P_{0} P0表示当前的 BEV 概率图, P 1 P_{1} P1表示相应的 BEV 概率流。传输 T 步的占用概率图需要 T × 200 × 200 T×200×200 T×200×200个浮点数,而 UniV2X 仅需要 2 × 200 × 200 2×200×200 2×200×200个浮点数。
在这里插入图片描述
图片来自于原文作者在深蓝学院的课程:链接

3. 交叉视图数据融合(智能体融合)

在车载系统中,首先从车载传感器捕获的图像中提取鸟瞰图(BEV)特征 B v e h B_{veh} Bveh。我们还采用TrackFormer、MapFormer和OccFormer来生成相应的智能体查询 Q A v e h {Q_{A}^{veh}} QAveh、车道查询 Q L v e h {Q_{L}^{veh}} QLveh以及占用概率图 P v e h P_{veh} Pveh。这些模块的网络结构与基础设施系统中的对应模块一致。在本节中,我们将描述如何实现跨视图智能体融合。跨视图智能体融合主要包括

  • 用于补偿延迟的时间同步
  • 统一跨视图坐标的空间同步
  • 数据匹配与融合
  • 针对规划和中间输出的数据适配。

3.1 基于流预测的时间同步

基于流预测的时间同步在无线通信中,由于 t i t_{i} ti早于 t v t_{v} tv,传输延迟在复杂交通系统中十分显著,在繁忙的十字路口场景中更是如此。由于动态物体的移动,在融合不同来源的数据时会出现时间上的不一致。为了解决这个问题,本文根据特征流预测方法,将特征预测融入到基础设施智能体查询中以减少延迟。具体来说,我们将智能体查询 Q A i n f Q_{A}^{inf} QAinf和前一帧相关的查询输入到QueryFlowNet(一个三层的多层感知器)中,生成智能体查询流 Q A F l o w i n f Q_{AFlow}^{inf} QAFlowinf。智能体查询流的维度与智能体查询的维度相匹配。随后,通过线性运算预测未来特征,以此减少 t v − t i t_{v}-t_{i} tvti的延迟,公式表示为:
Q A i n f ( t v ) = Q A i n f ( t i ) + ( t v − t i ) ∗ Q A F l o w i n f Q_{A}^{inf}(t_{v}) = Q_{A}^{inf}(t_{i}) + (t_{v}-t_{i}) * Q_{AFlow}^{inf} QAinf(tv)=QAinf(ti)+(tvti)QAFlowinf
值得注意的是,在UniV2X中,流预测模块的QueryFlowNet并非以端到端的方式进行训练。我们采用了提出的自监督学习方法。

3.2 基于旋转注意查询转换的空间同步(本质是坐标系的转换)

文首先利用基础设施系统和车载系统之间的相对位姿 [ R , T ] [R, T] [R,T],将基础设施智能体查询 Q A i n f Q_{A}^{inf} QAinf的参考点从基础设施坐标系转换到车载坐标系。

这里的相对位姿是由两个系统的全局相对位姿生成的,其中 R R R代表旋转矩阵, T T T表示平移。然而,每个物体本身都具有关于其位置、大小和旋转的三维信息。

在表示三维物体的查询情境中,位置由参考点明确表示,而旋转则隐含地编码在查询的特征中,如图3所示。为了解决这个问题,我们提出了一种称为旋转感知查询变换的解决方案来实现空间同步。这需要将基础设施查询及其相对位姿中的旋转 R R R输入到一个三层的多层感知器(MLP)中,以使特征具备旋转感知能力,从而实现显式的空间同步,公式如下: s p a t i a l _ u p d a t e ( Q A i n f ) = M L P ( [ Q A i n f , R ] ) spatial\_update \left(Q_{A}^{inf}\right)=MLP\left(\left[Q_{A}^{inf}, R\right]\right) spatial_update(QAinf)=MLP([QAinf,R]) 其中旋转矩阵 R R R被重塑为9维。最后,我们将基础设施智能体查询数据转换到车载坐标系中。
在这里插入图片描述

3.3 不同视图查询的匹配融合

跨视图查询匹配与融合。在这一阶段,跨视图的智能体查询已在时间和空间上完成同步。为了匹配来自不同视角的对应查询,我们计算它们参考点的欧氏距离,并采用匈牙利算法进行匹配:

  • 对于匹配上的查询对 Q A i n f Q_{A}^{inf} QAinf Q A v e h Q_{A}^{veh} QAveh ,将它们输入到一个三层的多层感知器中,生成协作查询 Q A Q_{A} QA,用于更新车载智能体查询 Q A v e h Q_{A}^{veh} QAveh

  • 对于基础设施中未匹配上的查询,则将其添加到车载查询中。

  • 最后,我们分配跟踪ID,并过滤掉检测置信度较低的跨视图融合查询,从而得到最终的智能体查询结果。

3.4 消除自车误检问题

该模块用于消除自车区域的误检测问题。从基础设施的视角来看,在智能体感知中,自车可能会被视作一个明显的障碍物,在占用预测中则可能被视为占用区域的一部分。经过跨视图数据融合后,有可能在自车所在区域生成障碍物查询,从而将自车区域标记为被占用。这种情况会严重干扰决策过程,最终影响决策性能。为缓解这一问题,我们将自车区域定义为一个矩形,过滤该区域内的查询,并将此区域指定为未被占用。然而,由于定位和校准不准确,导致基础设施与自车之间存在相对位置误差,这种简单直接的解决方案可能无法始终达到最佳效果。为推动协同自动驾驶发展,进一步探索和优化至关重要。
在这里插入图片描述
图片来自于原文作者在深蓝学院的课程:链接

3.5 用于中间输出的解码器输入增强

通过最终融合的智能体查询与车载TrackFormer中编码器的输出之间的交叉注意力机制,我们可以获得智能体的中间输出,如3D检测输出,以增强UniV2X的可解释性。然而,编码器的输出全部由车载传感器数据信息生成,这使得来自基础设施的查询无法产生相应的智能体输出。为了解决这个问题,我们使用同步的基础设施查询来增强编码器的输出,即车载BEV特征,公式如下:
u p d a t e ( B v e h ) = B v e h + M L P ( s y n c h r o n i z e d ( Q A i n f ) ) update (B^{veh})=B^{veh}+MLP(synchronized (Q_{A}^{inf})) update(Bveh)=Bveh+MLP(synchronized(QAinf))

4. 交叉视图数据融合(车道融合)

车道融合(LaneFusion)模块用于融合来自不同视角的车道查询信息。在此过程中,我们在车道融合时省略了时间同步,因为道路车道元素不受延迟影响,保持稳定。与智能体融合(AgentFusion)类似,车道融合通过旋转感知查询变换实现空间同步。这个过程将包含参考点和查询特征的基础设施车道查询转换到车载坐标系中。然后,我们像在智能体融合中那样,对同步后的基础设施车道查询和车载车道查询进行匹配与融合。为加快训练速度,我们还选择直接将同步后的查询与车载车道查询连接起来。同步后的查询也用于解码器输入增强。

5. 交叉视图数据融合(占用融合)

我们首先通过线性运算生成多步的基础设施占用概率图,并将其与车载多步占用预测进行对齐。利用密集概率图中明确表示的旋转信息,我们使用相对位姿将基础设施占用概率图直接转换到车载系统。

随后,我们使用简单的取最大值运算,将同步后的占用概率图与车载占用概率图进行融合,生成融合概率图 P ^ \hat{P} P^。概率超过特定阈值的网格会被标记为已占用。

6. 规划输出 Planning Output

利用融合后的智能体查询、车道查询和占用特征,我们首先复用UniAD中的方法生成粗略的未来路径点。MotionFormer用于生成一组预测时长为 t p r e d t_{pred} tpred N a N_{a} Na个运动查询。这些查询通过捕捉智能体、车道和目标之间的交互生成。值得注意的是,这些智能体查询包含了自车查询,这使得MotionFormer能够生成具有多模态意图的自车查询。

鸟瞰图(BEV)占用概率图 P ^ \hat{P} P^用于创建二进制占用图 o ^ \hat{o} o^。在规划阶段,从MotionFormer获得的自车查询与指令嵌入相结合,形成一个 “规划查询”。这些指令包括左转、右转和前进。

这个规划查询与BEV特征一起输入到解码器中,以生成未来的路径点。

最终的规划轨迹由以下方式确定:
1)调整道路上的未来路径点,确保遵守交通规则,并利用生成的车道和其他道路元素使车辆保持在驾驶区域内;
2)最小化成本函数,以避免与被占用的网格 o ^ \hat{o} o^发生碰撞。

四、实验

1. 实验设置

实验数据集—DAIR-V2X
DAIR-V2X2数据集包含约100个场景,这些场景拍摄于28个复杂的交通路口,由基础设施传感器和车辆传感器共同记录。每个场景时长在10到25秒之间,以10Hz的频率采集数据,并配备了高清地图。该数据集涵盖了多种驾驶行为,包括前进、左转和右转等动作。为了与nuScenes数据集保持一致,我们将目标类别分为四类:汽车、自行车、行人和交通锥。

实施细节
实施过程。我们将自车的关注范围设定为[-50, 50, -50, 50]米。自车的鸟瞰图(BEV)范围与之相同,也是[-50, 50, -50, 50]米,每个网格大小为0.25米×0.25米。基础设施的BEV范围设置为[0, 100, -50, 50]米,这考虑到了摄像头的前向感知范围,有助于更有效地利用基础设施数据。实验使用8块NVIDIA A100 GPU进行。附录中提供了更多实施细节。

基准算法设置

  • 无融合(No Fusion):方案仅使用自车图像作为传感器数据输入,不输入任何基础设施数据。
  • 普通方法(Vanilla approach):我们使用简单的卷积神经网络(CNN)融合基础设施和自车的鸟瞰图(BEV)特征。融合后的BEV特征被重塑为一维,随后输入到多层感知器(MLP)中以生成规划路径。
  • 在BEV特征融合BEV Feature Fusion)方法:我们使用CNN将两侧的BEV特征融合为新的自车BEV特征,并将这个新特征输入到UniAD中。
  • CooperNaut:最初利用点云的稀疏特性,采用点变换器(Point Transformer)来聚合跨视图特征。

鉴于自车状态(如自车速度)在开环端到端自动驾驶中起着重要作用(Li等人,2024),为了进行公平比较,我们在所有基线设置中都去除了自车速度嵌入。此外,我们在附录中探究了自车速度对UniV2X的作用。

2. DAIR-V2X上的实验结果

端到端自动驾驶最终规划结果,作者认为L2 Error指标似乎不太合理,因此一直讨论的是碰撞率,车道偏离率与传输成本。但我感觉这里的BPS对比好像设置的不是很合理,因为没有和一些专注于提升通信效率的算法相比,而只是证明了通过稀疏-密集混合传输使得传输的数据量减少了。

在这里插入图片描述
感知结果:
主要对比了mAP和AMOTA两个指标。

  • mAP: 平均精度是对目标检测模型在不同类别上的精度进行平均得到的指标,它综合考虑了模型检测出的目标的准确率和召回率。
  • AMOTA:AMOTA 是多目标追踪领域中用于评估模型性能的指标,它综合考虑了目标的检测准确性和轨迹的匹配准确性。

在这里插入图片描述
在线地图结果:
在这里插入图片描述
占用预测结果:
在这里插入图片描述

3. 关于可靠性的消融实验

在评估 UniV2X 时,我们的第一步是在传输过程中随机丢弃 10%、30%、50%、70% 和 100% 的基础设施智能体查询,以此来模拟数据损坏的情况。(这一块感觉论文中也没有详细说明,UniAD中说的是模块化的端到端让该模型变得更加可解释…可能是基于此)
在这里插入图片描述

五、总结

文章总结: 本文提出了UniV2X,这是一种新颖的端到端框架,它将来自不同视角的关键任务集成到单个网络中。该框架采用以规划为导向的方法,在利用原始传感器数据的同时,确保网络在协同自动驾驶中的可解释性。此外,还设计了一种稀疏 - 密集混合数据传输策略,以利用跨视图数据并提高整体规划性能。这种传输方法既便于通信又可靠,符合车联网(V2X)通信的要求。在DAIR-V2X数据集上的实证结果验证了我们所提方法的有效性。

局限性和未来工作。该框架涉及多个模块和不同的智能体视角,导致其复杂程度较高。因此,框架内的几个交互融合模块仍处于初步阶段。进一步优化对于后续框架的内部设计至关重要。在这项工作中,我们仅考虑了端到端自动驾驶的开环评估(open-loop evaluation)。未来我们将进行更多闭环实验(closed-loop experiments),以评估我们的UniV2X框架。

补充:

开环评估和闭环实验是自动驾驶研究中评估系统性能的两种不同方式。

  • 开环评估:在自动驾驶中,开环评估指系统依据输入数据(像传感器数据和地图信息)生成决策或规划,但不考虑这些决策实际执行后的反馈。比如在模拟场景里,系统根据当前感知信息规划行驶路径,却不依据车辆实际行驶轨迹来调整后续规划,类似单向操作,不形成回路,能简单快速地评估系统在特定输入下的规划能力。

  • 闭环实验:闭环实验则不同,系统会把决策执行后的反馈纳入考量。车辆实际行驶过程中,系统持续接收传感器数据,判断规划路径是否合适。若出现偏差,如与预期轨迹不符,就会据此调整后续决策。这就像人开车,时刻根据实际路况调整驾驶行为,形成了感知 - 决策 - 执行 - 反馈的循环


  1. CVPR2023-best paper-UniAD-Planning-oriented Autonomous Driving ↩︎

  2. CVPR2022-DAIR-V2X: A Large-Scale Dataset for Vehicle-Infrastructure Cooperative 3D Object Detection ↩︎

相关文章:

文献总结:AAAI2025-UniV2X-End-to-end autonomous driving through V2X cooperation

UniV2X 一、文章基本信息二、文章背景三、UniV2X框架1. 车路协同自动驾驶问题定义2. 稀疏-密集混合形态数据3. 交叉视图数据融合(智能体融合)4. 交叉视图数据融合(车道融合)5. 交叉视图数据融合(占用融合)6…...

LeetCode --- 444 周赛

题目列表 3507. 移除最小数对使数组有序 I 3508. 设计路由器 3509. 最大化交错和为 K 的子序列乘积 3510. 移除最小数对使数组有序 II 一、移除最小数对使数组有序 I & II 由于数组是给定的,所以本题的操作步骤是固定的,我们只要能快速模拟操作的过…...

单片机Day05---静态数码管

目录 一、原理图:​编辑 二、思路梳理: 三:一些说明: 1.点亮方式: 2.数组: 3.数字与段码对应: 四:程序实现: 一、原理图: 二、思路梳理: …...

kernel32!GetQueuedCompletionStatus函数分析之返回值得有效性

第一部分://#define STATUS_SUCCESS 0x0返回值为0 } else { // // Set the completion status, capture the completion // information, deallocate the associated IRP, and // attempt to write the…...

gazebo 启动卡死的解决方法汇总

1. 排查显卡驱动是否正常安装 nvidia-smi # 英伟达显卡--------------------------------------------------------------------------------------- | NVIDIA-SMI 535.230.02 Driver Version: 535.230.02 CUDA Version: 12.2 | |------------------------…...

硬件设计-MOS管快速关断的原因和原理

目录 简介: 来源: MOS管快关的原理 先简单介绍下快关的原理: 同电阻时为什么关断时间会更长 小结 简介: 本章主要介绍MOS快速关断的原理和原因。 来源: 有人会问,会什么要求快速关断,而…...

塔能科技解节能密码,工厂成本“效益方程式”精准破题

在全球积极推进可持续发展战略的当下,各行业都在努力探索节能减排、绿色发展的新路径,对于工厂而言,节能早已不是锦上添花的选择,而已成为关乎企业生死存亡与长远发展的核心要素,是实现可持续运营的必由之路。塔能科技…...

swift ui基础

一个朴实无华的目录 今日学习内容:1.三种布局(可以相互包裹)1.1 vstack(竖直):先写的在上面1.1 hstack(水平):先写的在左边1.1 zstack(前后)&…...

格式工厂 v5.18最新免安装绿色便携版

前言 用它来转视频的时候,还能顺便给那些有点小瑕疵的视频修修补补,保证转出来的视频质量杠杠的。更厉害的是,它不只是转换那么简单,还能帮你把PDF合并成一本小册子,视频也能合并成大片,还能随心所欲地裁剪…...

CSPM认证对项目论证的范式革新:从合规审查到价值创造的战略跃迁

引言 在数字化转型浪潮中,全球企业每年因项目论证缺陷导致的损失高达1.7万亿美元(Gartner 2023)。CSPM(Certified Strategic Project Manager)认证体系通过结构化方法论,将传统的项目可行性评估升级为战略…...

TcxCustomCheckComboBoxProperties.EditValueFormat 值说明

TcxCheckStatesValueFormat 类枚举复选框状态对 edit 值的可能解释。以下选项可用。 价值 意义 cvf字幕 编辑值是一个字符串,其中包含两个由分号分隔的子字符串。分号前的子字符串包含灰显项目的标题列表。分号后面的子字符串包含已选中项目的标题列表。请注意&a…...

Spring Boot 测试详解,包含maven引入依赖、测试业务层类、REST风格测试和Mock测试

Spring Boot 测试详解 1. 测试依赖引入 Spring Boot 默认通过以下 Maven 依赖引入测试工具&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</s…...

【C语言】预处理(下)(C语言完结篇)

一、#和## 1、#运算符 这里的#是一个运算符&#xff0c;整个运算符会将宏的参数转换为字符串字面量&#xff0c;它仅可以出现在带参数的宏的替换列表中&#xff0c;我们可以将其理解为字符串化。 我们先看下面的一段代码&#xff1a; 第二个printf中是由两个字符串组成的&am…...

IIC通信协议

一、概述 IIC协议&#xff1a;是一种各种电子设备之间进行数据交换和通信的串行&#xff0c;半双工通信协议&#xff0c;主要用于近距离&#xff0c;低速的芯片之间的通信。 I2C协议采用双线结构传输数据&#xff0c;由一个数据线&#…...

SpringBoot原生实现分布式MapReduce计算(无第三方中间件版)

一、架构设计调整 核心组件替换方案&#xff1a; 注册中心 → 数据库注册表任务队列 → 数据库任务表分布式锁 → 数据库行级锁节点通信 → HTTP REST接口 二、数据库表结构设计 -- 节点注册表 CREATE TABLE compute_nodes (node_id VARCHAR(36) PRIMARY KEY,last_heartbea…...

02-libVLC的视频播放器:播放音视频文件以及网络流

libvlc_new(0, nullptr)功能:创建并初始化libVLC的核心实例,是使用所有libVLC功能的前提。 参数:第一个参数:参数数量(通常设为0)第二个参数:参数列表(通常为nullptr,表示使用默认配置)返回值:成功返回libvlc_instance_t*指针,失败返回nullptr。注意事项:可通过参…...

Autoware源码总结

Autoware源码网站 项目简介 教程 Autoware的整体架构如下图&#xff0c;主要包括传感器sensing、高精地图map data、车辆接口vehicle interface、感知perception&#xff08;动态障碍物检测detection、跟踪tracking、预测prediction&#xff1b;交通信号灯检测detection、分类c…...

PowerBI 条形图显示数值和百分比

数据表: 三个度量值 销售额 SUM(销量表[销售量])//注意, 因为Y轴显示的产品&#xff0c;会被筛选&#xff0c;所以用ALLSELECTED来获取当前筛选条件下&#xff0c;Y轴显示的产品 百分比 FORMAT(DIVIDE([销售额],CALCULATE([销售额],ALLSELECTED(销量表[产品编码]))),"0…...

Sa-Token 自定义插件 —— SPI 机制讲解(一)

前言 博主在使用 Sa-Token 框架的过程中&#xff0c;越用越感叹框架设计的精妙。于是&#xff0c;最近在学习如何给 Sa-Token 贡献自定义框架。为 Sa-Token 的开源尽一份微不足道的力量。我将分三篇文章从 0 到 1 讲解如何为 Sa-Token 自定义一个插件&#xff0c;这一集将是前沿…...

基于 Termux 在移动端配置 Ubuntu 系统并搭建工作环境

本套方案主要参考了以下内容&#xff0c;并根据自身体验进行了修改。 【教程】用Termux搭建桌面级生产力环境Termux安装完整版Linux(Ubuntu)详细步骤 前言 自己的电脑太重&#xff0c;有时候外出不想带&#xff0c;平板生产力有有限。所以一直在折腾用平板替代电脑的事情。之前…...

JAVA SDK通过proxy对接google: GCS/FCM

前言&#xff1a;因为国内调用google相关api需要通过代理访问(不想设置全局代理)&#xff0c;所以在代理这里经常遇到问题&#xff0c;先说一下结论 GCS 需要设置全局代理或自定义代理选择器&#xff0c; FCM sdk admin 在初始化firebaseApp时是支持设置的。 GCS: 开始时尝试在…...

JAVA EE_多线程-初阶(三)

我对未来没有底气 我也不知道当下该如何做 那就活着&#xff0c;活着就能把日子过下去 ---------陳長生. 1.多线程案例 1.1.单例模式 单例模式是常见的设计模式之一 设计模式&#xff1a;一些编程大佬制定的一些通用代码&#xff0c;再特定的场景下能套用进去&#xff0c;即…...

@PKU秋招互联网产品经理求职分享

从校园到职场 非常荣幸能够在毕业后两年半再次回到燕园。今天&#xff0c;我主要想和大家分享一下我在互联网行业的求职和工作经验。从最初面对职场的迷茫&#xff0c;到现在能够从容应对职场各种挑战&#xff0c;这一路走来积累了不少心得。互联网行业变化迅速&#xff0c;持续…...

uniapp日常总结--uniapp页面跳转方式

uniapp日常总结--uniapp页面跳转方式_uniapp 跳转-CSDN博客...

【能源节约管理系统行业树组件优化总结】

能源节约管理系统行业树组件优化总结 问题背景 在能源节约管理系统中&#xff0c;我们需要一个行业选择组件&#xff0c;以树形结构展示国民经济行业分类数据。由于行业数据量大且层级多&#xff0c;我们采用了懒加载的方式实现。然而&#xff0c;在编辑和详情模式下&#xf…...

青少年编程考试 CCF GESP图形化编程 二级认证真题 2025年3月

图形化编程 二级 2025 年 03 月 一、单选题&#xff08;共 10 题&#xff0c;每题 3 分&#xff0c;共 30 分&#xff09; 1、2025 年春节有两件轰动全球的事件&#xff0c;一个是 DeepSeek 横空出世&#xff0c;另一个是贺岁片《哪吒 2》票房惊人&#xff0c;入了全球票房榜…...

【Hadoop入门】Hadoop生态之Flume简介

1 什么是Flume&#xff1f; Flume是Hadoop生态系统中的一个高可靠、高性能的日志收集、聚合和传输系统。它支持在系统中定制各类数据发送方&#xff08;Source&#xff09;、接收方&#xff08;Sink&#xff09;和数据收集器&#xff08;Channel&#xff09;&#xff0c;从而能…...

十六、Linus网络编程基础

1、Linux 网络的历史发展 ​早期阶段&#xff08;1991–1995&#xff09;​ ​1991年&#xff1a;Linus Torvalds 发布 Linux 内核的初始版本&#xff08;0.01&#xff09;&#xff0c;此时内核不支持网络功能&#xff0c;仅是一个单机操作系统。​1992年&#xff1a;受 BSD …...

【激活函数:神经网络的“调味料】

1. 激活函数&#xff1a;神经网络的“调味料” 想象你在做菜&#xff1a; 没有激活函数&#xff1a;就像只用水煮食材&#xff0c;味道单调&#xff08;只能拟合线性关系&#xff09;。加入激活函数&#xff1a;像加了盐、糖、辣椒&#xff0c;让菜有酸甜苦辣&#xff08;非线…...

006.Gitlab CICD流水线触发

文章目录 触发方式介绍触发方式类型 触发方式实践分支名触发MR触发tag触发手动人为触发定时任务触发指定文件变更触发结合分支及文件变更触发正则语法触发 触发方式介绍 触发方式类型 Gitlab CICD流水线的触发方式非常灵活&#xff0c;常见的有如下几类触发方式&#xff1a; …...

服务器远程端口详解

服务器远程端口详解 一、服务器远程端口的概念与作用 1. 端口的基本定义 服务器远程端口是计算机网络中用于标识不同应用程序或服务的逻辑接口。通过TCP/IP协议栈的"Socket"机制&#xff0c;计算机可以通过软件方式与其他设备建立通信通道。每个端口对应一个16位无…...

如何在 Vue 3 中实现百度地图位置选择器组件

如何在 Vue 3 中实现百度地图位置选择器组件 前言 在开发前端应用时&#xff0c;地图选择器是一个非常常见的需求。尤其是在一些需要用户选择地址的场景&#xff0c;如电商平台、旅游网站、酒店预定等&#xff0c;百度地图组件能提供准确的地理位置服务。在本文中&#xff0c…...

es6学习02-let命令和const命令

一、let命令 1.let块级作用域&#xff1a; let关键字 VS var关键字 2.for循环计数器很适合let命令 var&#xff1a;整个for循环中一直都是同一个i在做1&#xff0c;最后输出的就是10&#xff1b; let&#xff1a;每循环一次都是多一个i的赋值&#xff0c;最后输出是可以调出…...

电路方案分析(二十)TPS63xxx系列DC/DC电源EMI PCB设计方案

tips&#xff1a;资料来自网络&#xff0c;仅供学习使用。[TOC](TPS63xxx系列DC/DC电源EMI PCB设计方案) 1.概述 通过TPS63xxx系列DC/DC电源模块来分析降低直流/直流降压/升压转换器辐射 EMI 的来源以及相关PCB设计。 下面都以最常用的TPS63070为例说明&#xff1a; 典型应用…...

DeepSeek大语言模型部署指南:从基础认知到本地实现

目录 一、DeepSeek简介&#xff1a;开源领域的新兴力量 1.1 公司背景与发展历程 1.2 核心产品DeepSeek-R1的技术特点 1.3 行业影响与伦理挑战 二、官方资源获取&#xff1a;全面掌握DeepSeek生态 2.1 官方网站与API服务 2.2 开源代码库资源 2.3 模型部署工具Ollama简介…...

09-设计模式 企业场景 面试题-mk

你之前项目中用过设计模式吗? 需求:设计一个咖啡店点餐系统。 设计一个咖啡类(Coffee),并定义其两个子类(美式咖啡【AmericanCoffee】和拿铁咖啡【LatteCoffee】);再设计一个咖啡店类(CoffeeStore),咖啡店具有点咖啡的功能。具体类图设计如下: 上面的对象都是ne…...

达梦数据库-学习-18-ODBC数据源配置(Linux)

一、环境信息 名称值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系统CentOS Linux release 7.9.2009 (Core)内存4G逻辑核数2DM版本1 DM Database Server 64 V8 2 DB Version: 0x7000c 3 03134284194-20240703-234060-20108 4 Msg Versi…...

解决VS2022中scanf报错C4996

这个的原因是因为新版的VS认为scanf不安全&#xff0c;要去使用scanf_s&#xff0c;但在C语言中就需要scanf&#xff0c;所以我们只要以以下步骤解决就可以了。 只要加入宏定义即可 #define _CRT_SECURE_NO_WARNINGS 因为本人已经很少写小案例了&#xff0c;所以就用这个办法…...

Python(11)Python判断语句全面解析:从基础到高级模式匹配

目录 一、条件逻辑的工程价值1.1 真实项目中的逻辑判断1.2 判断语句类型矩阵 二、基础判断深度解析2.1 多条件联合判断2.2 类型安全判断 三、模式匹配进阶应用3.1 结构化数据匹配3.2 对象模式匹配 四、判断语句优化策略4.1 逻辑表达式优化4.2 性能对比测试 五、典型应用场景实战…...

Quartus II的IP核调用及仿真测试

目录 第一章 什么是IP核&#xff1f;第二章 什么是LPM&#xff1f;第一节 设置LPM_COUNTER模块参数第二节 仿真 第三章 什么是PLL&#xff1f;第一节 设置ALTPLL&#xff08;嵌入式锁相环&#xff09;模块参数第二节 仿真 第四章 什么是RAM&#xff1f;第一节 RAM_1PORT的调用第…...

如何修改服务器TTL值

Windows默认返回的TTL值为128&#xff0c;Linux为64&#xff0c;我们怎么修改这个值呢&#xff1f; 目录 一. Windows 二. Linux 临时更改 永久更改 一. Windows WinR输入regedit&#xff0c;打开注册表 路径&#xff1a;计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro…...

大模型LLM表格报表分析:markitdown文件转markdown,大模型markdown统计分析

整体流程&#xff1a;用markitdown工具文件转markdown&#xff0c;然后大模型markdown统计分析 markitdown https://github.com/microsoft/markitdown 在线体验&#xff1a;https://huggingface.co/spaces/AlirezaF138/Markitdown 安装&#xff1a; pip install markitdown…...

劫持SUID程序提权彻底理解Dirty_Pipe:从源码解析到内核调试

DirtyPipe(CVE-2022-0847)漏洞内核调试全流程指南 本文主要面向对内核漏洞挖掘与调试没有经验的初学者,结合 CVE-2022-0847——著名的 Dirty Pipe 漏洞,带你从零开始学习 Linux 内核调试、漏洞复现、原理分析与漏洞利用。该漏洞危害极大,并且概念简单明了,无需复杂前置知…...

React 组件样式

在这里插入图片描述 分为行内和css文件控制 行内 通过CSS中类名文件控制...

嵌入式人工智能应用-第三章 opencv操作3 图像平滑操作 下

5 高斯噪声&#xff08;Gaussian Noise&#xff09; 高斯噪声&#xff08;Gaussian Noise&#xff09;是一种符合正态&#xff08;高斯&#xff09;分布的随机噪声&#xff0c;广泛存在于传感器采集、信号传输等场景中。以下是关于高斯噪声的详细说明、添加方法及滤波方案。 …...

OSPF的接口网络类型【复习篇】

OSPF在不同网络环境下默认的不同工作方式 [a3]display ospf interface g 0/0/0 # 查看ospf接口的网络类型网络类型OSPF接口的网络类型&#xff08;工作方式&#xff09;计时器BMA&#xff08;以太网&#xff09;broadcast &#xff0c;需要DR/BDR的选举hello&#xff1a;10s…...

maven编译jar踩坑[sqlite.db]

背景&#xff1a; 最近在项目中搞多数据源切换的job,在src/resource下有初始化的sqlite默认文件供后续拷贝使用&#xff0c;在测试阶段没有什么问题&#xff0c;但是一部署到服务器上运行就有问题。 报错现象&#xff1a; 找不到这个sqlite.db文件或者文件格式有问题&#x…...

【软考系统架构设计师】软件工程

1、 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过程&#xff0c;任务是确定软件开发工程必须完成的总目标&#xff0c;具体分为问题定义、可行性研究、需求分析等 软件开发时期&#xff1a;软件的设计与实现&#xff0c;分为概要设计、详细设计、…...

蓝桥杯单片机刷题——ADC测量电位器的电压

设计要求 通过PCF8591的ADC通道测量电位器RB2的输出电压&#xff0c;并使用套件上提供的USB转串口功能&#xff0c;完成下列程序设计要求。 串口每次接收包含5个字符的字符串&#xff0c; 1&#xff09;若接收的5个字符中有字符’a’或’A’&#xff0c;则数码管显示一位小数…...

零基础上手Python数据分析 (12):DataFrame 数据清洗与预处理 (下) - 类型转换、格式化、文本与日期处理

写在前面 上一篇博客,我们学习了如何使用 Pandas 处理数据分析中最常见的 “脏数据”:缺失值、重复值和异常值。 这为我们处理数据质量问题打下了坚实的基础。 然而,数据清洗的挑战远不止于此。 在实际数据中,我们还会经常遇到 数据类型不一致、数据格式不规范、文本数据混…...