深度学习视觉BEV 3D目标检测算法综述

embedded/2025/3/24 8:10:47/

目录

一、基于深度估计的BEV方法

1.1 LSS算法(Lift, Splat, Shoot,2020)

1.2 BEVDet算法(High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View,2022)

1.3 BEVDet4D算法(Exploit Temporal Cues in Multi-camera 3D Object Detection,2022)

二、基于2D图像检测方法

2.1 FCOS3D(Fully Convolutional One-Stage Monocular 3D Object Detection,2020)

2.2 DETR3D(Object Detection from Multi-View Images via 3D Box Queries,2021)

2.3 DETR4D(Direct Multi-View 3D Object Detection with Sparse Attention,2022)

2.4 PETR(Position Embedding Transformation for Multi-View 3D Object Detection,2022)

2.5 PETRV2(Position Embedding Transformation for Multi-View 3D Object Detection,2022)

2.6 Stream PETR (Stream PETR: Efficient Multi-Frame 3D Object Detection,2023)

2.7 FAR3D(Fast and Robust 3D Object Detection from Multi-View Camera Images,2023)

2.8 SparseBEV(High-Performance Sparse 3D Object Detection from Multi-Camera Videos,2023)

三、基于3D栅格检测方法

3.1 BEVFormer(Learning Bird's-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers,2022)

四、总结

4.1 挑战

4.1.1. 深度信息缺失

4.1.2. 多摄像头几何对齐问题

4.1.3. 时间一致性和运动建模

4.1.4. 计算效率问题

4.2 未来提升

4.2.1. 改进深度估计,增强 BEV 3D 表达能力

4.2.2 多模态融合(视觉 + LiDAR / 雷达 / HD-Map)

4.2.3 高效 BEV 计算架构

4.2.4 端到端 BEV 任务学习

4.2.5 BEV 视觉大模型


Bird’s Eye View (BEV) 3D 目标感知算法是当前自动驾驶、智能交通和机器人领域的重要研究方向。BEV 表示能够将 2D 视觉信息转换为鸟瞰视角,使得 3D 目标检测、跟踪和场景理解更符合自动驾驶的需求。作者研究领域为自动驾驶方向,这里主要介绍基于深度学习(主要是transformer)的多视角3D目标检测算法。3D目标检测算法主要包括3类:

基于深度估计的BEV方法:

通过估计每个像素的深度信息(通常是概率分布)将其变换到BEV视图,这是一种比较直观的视图变换方式,LSS和BEVDet都属于这种方式。

基于2D图像检测方法:

另外一种方式是直接在 2D 视图中进行操作,跳过显式 BEV 特征生成,直接输出 BEV 下的 3D 感知结果。这种方法避免了 BEV 变换过程中的信息损失和计算冗余,提高了计算效率,但同时也面临深度估计和几何对齐的挑战,主要算法包括FCOS3D、DETR3D、PETR、Stream PETR以及FAR3D等。

基于3D栅格检测方法:

还有一类方法通过定义3D栅格来建立BEV视图和图像的联系,比如BEVFormer和BEVFusion。这类方法通过3D到2D的映射,将3D栅格上的深度信息隐含的附加到图像像素之上。

下面是nuscences数据集基于纯视觉的3D目标检测排名。

一、基于深度估计的BEV方法

1.1 LSS算法(Lift, Splat, Shoot,2020)

LSS算法是BEV下检测的开山之作,论文通过Lift(升维,主要是2D图像到3D伪点云)、Splat(投影,将3D信息转换到BEV网格)和Shoot(推理,在BEV空间进行推理)完成BEV下的目标检测。具体的算法流程是:多帧图像经过CNN生成图像特征F [B, C, H, W],C是图像的特征维度,将纵向深度划分为K个离散的深度 bin,对于每个像素(u,v)预测该像素属于每个深度 bin 的概率P=Softmax(W⋅F),维度变化为[B, K, H, W],K表示离散的深度。将三维空间划分为体素网格[X, Y, Z],数量为[H', W', D],根据相机投影模型,将2D像素坐标(u,v)和预测的离散深度dk计算为3D体素坐标(X,Y,Z),然后将投影到每个体素网格内的图像特征进行加权,获取3D空间的特征表示,具体公式为V_{\text{feat}}(i_x, i_y, i_z) = \sum_{k=1}^{K} P(d_k | u, v) \cdot I_{\text{feat}}(u, v)。获得的3D空间特征维度为[B, C, H', W', D],向XY平面投影(Splat),也就是聚合Z方向的特征,采用最大池化或者加权平均,最终获得BEV特征,其维度为[B, C, H', W'],然后以BEV特征进行检测。

1.2 BEVDet算法(High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View,2022)

BEVDet以LSS中的视图转换为基础,但是在BEV视图下采用了额外的网络来进一步提取特征,并在此BEV特征的基础上进行3D目标检测。该方法在nuScenes基准测试上取得了非常好的效果,也进一步验证了利用深度估计进行视图转换以及在BEV视图下设计感知算法的有效性。

BEVDet主要包括四个部分。首先是提取图像特征的编码器,可以采用经典的ResNet或者基于注意力的Swin-Trainsformer结构。然后,多幅图像的特征通过LSS中提出的方法转换到BEV视图,在该视图下进行再一次的特征提取。最后,采用CenterPoint中的Head结构来完成3D目标检测任务。

1.3 BEVDet4D算法(Exploit Temporal Cues in Multi-camera 3D Object Detection,2022)

BEVDet4D在BEVDet的基础上扩充了时序融合的功能,其他子模块的实现细节保持与BEVDet一致。为了利用时间信息,BEVDet4D通过保留上一帧中视图转换器生成的BEV特征来扩展BEVDet,上一帧中保留的特征将与当前帧中的特征合并,合并的方式是Concat操作。在合并前,上一帧的特征需要先对齐到当前帧,实验表明,精确的对齐操作有助于提高速度预测的精度。由于视图转换器生成的特征比较稀疏,这对于后续模块来说过于粗糙以至于无法利用时间信息。因此,在时序融合前使用了一个额外的BEV编码器来调整候选特征。这个BEV编码器由两个残差单元组成,其通道数与输入特征的通道数相同。

二、基于2D图像检测方法

2.1 FCOS3D(Fully Convolutional One-Stage Monocular 3D Object Detection,2020)

FCOS3D采用与FCOS完全相同的网络结构,直接在 2D 视图下预测 3D 目标的边界框(3D BBox)以及速度、朝向和尺寸等信息。虽然算法可以端到端输出3D信息,结构简单明了,但是这种直接基于2D图像进行3D深度估计精度不高,尤其是远距离误差较大,难以处理遮挡等复杂场景。

2.2 DETR3D(Object Detection from Multi-View Images via 3D Box Queries,2021)

DETR3D基本上属于基于transformer的3D检测的开山之作,奠定了后续算法的基本框架。与DETR算法类似,首先由骨干网络对每个图像进行特征提取,然后由query随机生成N(300)个查询点,维度为D,表示3D信息,例如x,y,z,w,h,v等。N*D是嵌入向量,在训练过程中逐渐优化,在推理阶段query是固定的,代表在数据集中这些位置出现障碍物的概率很大,需要重点关注这些区域的特征(与2D检测中锚点类似,但是数量会大大减少)。然后通过物理世界(x,y,z)转换到相机坐标(u,v),通过(u,v)查询到目标点对应不同相机不同尺度的特征信息,基于特征信息进行attention,最终输出目标的3D信息。

2.3 DETR4D(Direct Multi-View 3D Object Detection with Sparse Attention,2022)

DETR4D采用与DETR3D类似的架构,但在query生成、query投影方式以及时序融合三个方面进行了提升。首先query生成时,在 3D 空间中,构建一个固定尺寸的体素网格 (X,Y,Z),每个点代表空间中的坐标点(x,y,z),数量为(H×W×D),HWD为XYZ方向上分布的个数,将这些坐标点(x,y,z)通过物理世界到相机的坐标变换,映射回图像(u,v)并采用双线性插值获取特征层的特征,然后将特征采用池化或者加权平均的方式压缩到BEV上(即将Z方向进行压缩),获得BEV特征,维度是C×H×W,C是CNN特征维度,将BEV特征送到一个MLP网络获取热图,热图的尺寸为1×H×W,代表在该位置有目标存在的概率,然后选取最大的N个作为query的初始化,query的维度为N×M,其中M为256,形状为[x,y,z,v,θ,w,h,l,fbev],其中x,y即BEV的坐标,z是物体的高度,通过对D个高度特征进行融合获取,v,θ,w,h,l为嵌入线性,fbev为BEV特征,维度为248维。然后在query投影时,参考deformable detr,学习(x,y,z)的几个偏移量,并把偏移后的坐标点映射会特征中获取多个点的特征,相比detr的单点特征更加鲁棒。最后在进行cross attention过程中不止考虑当前的图像特征,也记忆了上一帧的图像特征和query,通过两帧query拼接以及前后帧图像特征投影,使得模型对于物体特征识别的更加准确。

3d038.png" width="1308" />

2.4 PETR(Position Embedding Transformation for Multi-View 3D Object Detection,2022)

PETR与前序算法相比,没有显式使用世界坐标到图像坐标的转换,而是将3维空间进行栅格化,然后经过MLP对栅格点进行编码,将空间位置编码与图像特征直接相加,作为特征输入到transformer中进行encoder,同样query生成900*256的900个查询点,最终输出目标的属性信息。PETR没有复杂的坐标转换过程,直接将空间信息进行编码输入网络,但是需要进行全局注意力计算,计算速度与detr3d相比没有太大优势,同时由于没有进行显式的特征关联,精度会略低。

2.5 PETRV2(Position Embedding Transformation for Multi-View 3D Object Detection,2022)

PETR针对三维空间直接进行编码,没有与图像特征进行匹配,PETRV2对此进行了改进。首先引入相机视锥(Frustum Transformation),将 2D 图像特征转换到 3D 空间。其次在query生成查询点时,不采用随机生成的方式,而是采用层次化 BEV Query的方式。相比于PETR中直接将3D编码与图像特征直接相加,PETRV2将3D编码通过自注意力模块生成Query。同时,为了使用历史帧信息,PETRV2将历史帧的BEV特征进行记录,然后通过时空对比进入当前帧计算,具体是由解码器中的时序 Transformer完成。解码器是自注意力、时空Transformer、交叉注意力交替进行,自注意力KQV依然是编码器生成的query信息,时序Transformer的Q是自注意力输出的Query,KV是叠加的历史BEV特征,交叉注意力Q是时序Transformer输出的Q,KV是图像特征。PETRV2虽然算力需求有所增加,但是检测精度和运动目标的稳定性都有不少提升。

2.6 Stream PETR (Stream PETR: Efficient Multi-Frame 3D Object Detection,2023)

Stream PETR 为稀疏BEV的方法提供了一个新的长时序建模框架,之前稠密BEV的方法记录完整BEV,当时序较长时计算量非常大。Stream PETR建立了一个循序记忆队列,队列大小为N*K(一般N为4,K为256),其中N表示N帧序列,采用先进先出的方式进行循环更新;K表示前序帧置信度最高的K个目标,每个目标的维度为D(例如256),以256为例包括了目标的中心坐标Qp(3)、速度V(3)、ego pose 变换E(16)、时间间隔δt(1)以及目标特征Qc(233),记忆队列和图像特征会送到propagation transformer模块中进行计算。

propagation transformer模块主要包括三个部分:MLN模块(Motion-Aware Layer Normalization,运动感知层归一化),Hybrid Attention模块和CrossAttention模块。Transformer的query包括了Propagated query和Initial query,query的维度与目标的维度D是一致的,例如256,所包括的Qc、Qp、速度、变换E和时间间隔。其中Propagated query来自循环记忆队列,Qp根据自身运动变换矩阵E进行了更新,其他的不变,数量为256。Initial query是补充的目标查询点,Qc、Qp以及速度V随机生成,变换E和时间间隔根据里程计进行计算,数量为644,两个query数量合起来为900。

三个模块的含义:MLN是对目标特征Qc进行归一化和基于运动补偿的变换,MLN只对Qc进行处理,其他query参数保持不变。Hybrid Attention模块首先对Propagated Query和Initial Query做self-attention获得Q',主要是对Propagated Query和Initial Query进行充分融合,生成新的查询充分考虑了当前时刻新的目标信息和历史时刻的目标信息。然后将Memory Queue中的目标信息经过MLN后与生成的新查询Q'进行cross attention,生成新的查询点Q''。将图像特征Ft与Q''送入到CrossAttention模块进行cross attention,其中K叠加了3D position embedding。下图展示的t-1到t是指时间顺序执行。

3d3fa5aeb14e1aa570b4da395d4bdd.png" width="1261" />

2.7 FAR3D(Fast and Robust 3D Object Detection from Multi-View Camera Images,2023)

纯视觉方案成本低、适用性广,但一般感知距离较近,因为无论稠密bev或者稀疏bev,如果距离从50m增加到150m,势必会导致查询点大量增加,其计算成本会极剧增加。FAR3D采用稀疏query 的检测框架,利用高质量的2D object prior来生成 3D adaptive query,从而扩大三维检测的感知范围。首先将环视图像输入主干网络和 FPN 层,编码得到 2D 图像特征。随后,利用2D目标检测器(2D Detector)和深度估计网络(DepthNet)生成可靠的2D目标框(2D Box Proposals)及其对应的深度信息(Depth)。这些信息被拼接(Concatenation)后投影到3D空间中,生成3D自适应查询(3D Adaptive Queries),2D目标检测器和深度估计网络采用独立的yolox和轻量级深度估计网络 。

生成的 3D 查询点与初始的 3D 全局查询点(Initial 3D Global Queries) 结合,形成transformer的查询点。与deformable detr(深度学习视觉2D检测算法综述)采取类似的方法,在3D查询点处进行偏移获取图像特征区域,然后与对应的特征进行cross attention,减少计算量。另外,不同距离的 3D query 具有不同的回归难度,难度差异来自于 query 匹配密度和误差传播。一方面,与远处物体相对应的 query 匹配度低于近处物体。另一方面,在 3D adaptive query 中引入二维先验时,2D 物体框的微小误差会被放大,这种影响会随着物体距离的增加而增大。通过同时添加正样本和负样本组来构建基于 GT 的 noisy queries,对于这两种类型,都会根据物体的位置和大小应用随机噪声,以促进远距离感知中的去噪学习。形式上,正样本定义在 3D 框内的随机点,而负样本则在 GT 施加更大的偏移,范围随着物体的距离变化。这种方式可以在训练过程中模拟有噪声的候选正样本和 false postive 样本。

2.8 SparseBEV(High-Performance Sparse 3D Object Detection from Multi-Camera Videos,2023)

SparseBEV采用与DETR3D相似的流程,避免了全局注意力,因此速度上相对较快,可以达到23.5FPS。此外,与DETR4D的想法类似,SparseBEV也对物体的中心点进行了扩展。通过对每个中心点预测一组offset,一个中心点可以被扩展成多个采样点。除了空间上的采样,SparseBEV也在时序上进行了采样,以达到时序融合的效果。

SparseBEV中还有一些特殊的操作,可以带来性能的提升。比如在计算query之间的自注意力时,除了query的特征相似度,query之间的距离也被考虑进来,而距离的权重则是自适应学习得到的。这个操作被用来替代稠密query中BEV特征编码器的作用。此外,在解码阶段,MLP-Mixer被用来对采样点和特征通道进行处理(对比DETR3D中采用注意力的方式)。

实验结果表明,上述改进都可以带来性能的提高。其中,时序融合起到的作用最大,NDS的提升可以超过10个百分点。其次,自适应的Mixing也可以将NDS提高6个百分点左右。最后,query的自适应自注意力也可以将NDS提高2个百分点。

3d80700bc84ccd64fd.png" width="1250" />

三、基于3D栅格检测方法

3.1 BEVFormer(Learning Bird's-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers,2022)

BEVFormer其实与LSS方式较为类似,不同点LSS是通过离散深度概率估计将2D特征投射到3D空间,生成类似伪点云的数据,然后在投影到BEV空间。BEVFormer 通过提取环视相机采集到的图像特征,并将提取的环视特征通过transformer模型的方式转换到 BEV 空间。首先是对BEV空间进行网格划分,例如 BEV 范围是 [−50m,50m]×[−50m,50m],BEV网格大小为0.5m*0.5m,则网格数量为200*200,初始BEV Queries Q为200*200*256。模型主要包括两个主要部分,Temporal Self-Attention和Spatial Cross-Attention。Temporal Self-Attention是将历史的BEV特征与当前的BEV特征进行时序上的self-attention,为了减少算力需求,self-attention的计算采用 与deformable detr(深度学习视觉2D检测算法综述)类似的稀疏注意力方法,如果多个历史帧就同时获取多个BEV的特征进行注意力计算。Spatial Cross-Attention是将self-attention输出的query与图像特征进行交叉注意力,也是采用与deformable detr类似的稀疏注意力方法,最终输出BEV特征,BEV特征尺寸与BEV Query保持一直。检测头也是与deformable detr,最终端到端输出物体3D信息。

四、总结

随着自动驾驶、机器人和智能交通的发展,基于视觉的 BEV(Bird’s Eye View,鸟瞰视角)3D 目标检测 成为一个重要的研究方向。相比于 LiDAR 方案,纯视觉 BEV 方法更具成本优势,并且在感知、检测和地图构建等方面有着巨大的应用潜力。尽管当前的 BEV 视觉方法取得了一定进展,但仍然面临诸多挑战。

4.1 挑战
4.1.1. 深度信息缺失

视觉相机只能捕获 2D 图像,而 3D BEV 需要精确的深度信息。现有的方法(如 BEVFormer、PETR)依赖 Transformer 进行 BEV 变换,但深度估计仍是主要瓶颈。

4.1.2. 多摄像头几何对齐问题

BEV 需要融合多个摄像头的视角,但由于相机的内外参误差,投影到 BEV 空间可能会存在对齐偏差。需要更好的几何校正方法,提高多视角特征对齐精度。

4.1.3. 时间一致性和运动建模

目标检测任务不仅需要当前帧的 BEV 特征,还需要结合历史信息以提高检测的稳定性。运动补偿和时序 Transformer 如何更有效地建模时间信息,仍是一个重要研究方向。

4.1.4. 计算效率问题

BEV 变换和 Transformer 计算量较大,难以在实时系统中部署。需要更高效的 BEV 特征提取方法,例如基于 CNN 的轻量级 BEV 网络。

4.2 未来提升

基于上述挑战,未来 BEV 视觉 3D 目标检测可以从以下几个方面进行优化和创新:

4.2.1. 改进深度估计,增强 BEV 3D 表达能力

由于视觉 BEV 方法缺乏直接的 3D 深度信息,未来可以采用:

  • 自监督 / 半监督深度估计

    • 结合光流、双目视觉和自监督学习,优化 BEV 深度估计,提高 3D 精度。
    • 利用大规模 BEV 数据集(如 nuScenes、Waymo Open Dataset)进行端到端训练。
  • 基于神经辐射场(NeRF)的方法

    • NeRF 可通过学习场景的 3D 结构,增强 BEV 视角的 3D 表达能力。
    • 未来可能会结合 NeRF 和 Transformer,提高 BEV 3D 目标检测的鲁棒性。
4.2.2 多模态融合(视觉 + LiDAR / 雷达 / HD-Map)

纯视觉 BEV 方法在 3D 精度方面仍然落后于 LiDAR 方案,未来可以通过 多模态融合 进行优化:

  • 视觉 + LiDAR 组合

    • 使用 LiDAR 提供 3D 先验信息,优化 BEV 特征学习。
    • 采用 BEV Feature Fusion 或 Transformer Cross-Attention 融合多模态信息。
  • 视觉 + HD-Map

    • 利用高清地图(HD-Map)提供静态环境信息,提高 BEV 检测的可靠性。
    • 结合 BEV 检测结果与高精地图(如 OpenDrive 格式),进行更稳定的 3D 目标检测
  • 视觉 + 毫米波雷达

    • 毫米波雷达可以提供低成本的深度信息,与视觉 BEV 方法互补。
    • 未来可能会出现 Radar+Vision 的 BEV Transformer 结构,提高 3D 目标检测的稳健性。
4.2.3 高效 BEV 计算架构

当前 BEV 方法普遍采用 Transformer 结构,但计算复杂度较高,未来可能的优化方向:

  • 轻量级 BEV 变换(如 BEVDet)

    • 采用更高效的 BEV 变换方法,如 Hybrid CNN + Transformer 结构,降低计算开销。
    • 使用动态 BEV 采样策略,仅关注 ROI 目标区域,减少冗余计算。
  • 稀疏 BEV 特征学习

    • 目前 BEV 方法通常在规则网格上计算特征,而 3D 目标主要集中在道路区域。
    • 未来可能会出现 基于稀疏 BEV Grid 的方法,减少计算量,提高实时性。
  • 基于 Transformer 量化和蒸馏

    • 采用模型剪枝、知识蒸馏等技术,提高 BEV Transformer 的计算效率,适配低功耗自动驾驶芯片。
4.2.4 端到端 BEV 任务学习

目前 BEV 目标检测往往是多个模块串联(如 Backbone、BEV 变换、检测头等),未来可以优化为 端到端的 BEV Transformer 结构

  • 端到端 BEV Transformer

    • 采用 end-to-end BEV 表示学习方法,提高检测的可解释性。
    • 例如:使用 BEV Query 直接回归 3D 目标框,而不是基于网格特征计算。
  • 基于 Diffusion Model 的 BEV 生成

    • 未来可能会使用扩散模型(Diffusion Model)来生成 BEV 视角的 3D 表示,提高 BEV 检测的泛化能力。
4.2.5 BEV 视觉大模型
  • 未来 BEV 3D 目标检测可能会出现 基于大规模 BEV 预训练模型

    • 采用 自监督 BEV 预训练方法,从大规模无人车数据集中学习通用 BEV 表示。
    • 例如 BEV-CLIP、BEV-GPT 这样的通用视觉 BEV 预训练模型。
  • 可能的发展路径:

    • 第一阶段:基于 BEV 视觉数据进行自监督学习。
    • 第二阶段:结合时序信息,进行端到端 BEV 预测。
    • 第三阶段:引入强化学习或神经渲染,提高 BEV 检测的泛化性。

http://www.ppmy.cn/embedded/175015.html

相关文章

HTTPS 加密过程详解

HTTPS 详解及其加密过程流程框架 HTTPS(Hypertext Transfer Protocol Secure)是一种基于 HTTP 协议的安全通信协议,通过 SSL/TLS 协议对传输数据进行加密和身份验证,解决了 HTTP 明文传输的安全隐患。以下是其核心原理和加密流程的…

python 游戏开发cocos2d库安装与使用

Cocos2d-x 是一个广泛使用的开源游戏开发框架,支持多种编程语言,包括 Python。对于 Python 开发者来说,通常使用的是 Cocos2d-py 或者更现代的 Cocos2d-x 的 Python 绑定版本。这里我将指导你如何安装和开始使用 Cocos2d-py。 安装步骤 安装…

接口自动化测试框架详解

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 接口自动化测试是指通过编写程序来模拟用户的行为,对接口进行自动化测试。Python是一种流行的编程语言,它在接口自动化测试中得到了广泛…

【el-upload】el-upload组件 - list-type=“picture“ 时,文件预览展示优化

目录 问题图el-upload预览组件 PicturePreview效果展示 问题图 el-upload <el-uploadref"upload"multipledragaction"#":auto-upload"false":file-list"fileList"name"files":accept".png,.jpg,.jpeg,.JGP,.JPEG,.…

基于springboot的企业客户管理系统(024)

摘 要 本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述企业客户管理系统的当前背景以及系统开发的目…

leetcode106 从中序与后序遍历序列构造二叉树

中序遍历的根节点左侧是左子树&#xff0c;右侧是右子树&#xff0c;后序遍历的最后一个元素为根节点。 在中序遍历中找到根节点&#xff0c;从而找到左右子树&#xff0c;知道左右子树的范围&#xff0c;从而后序遍历中的左右子树也就确定好了。 然后分别对左右子树用同样的…

实战指南:智慧水厂管理平台搭建全流程解析(二)

【上期内容】我们重点解析了智慧水务管理平台的五大核心模块&#xff1a;管理驾驶舱、资产管理、库存管理、水质分析、能耗分析。 【本期内容】我们将继续深入探讨智慧水务管理平台的进阶功能模块&#xff1a;工艺流程图、系统配电、电器设备状态、监控查看、GIS地图。 ⬇️智慧…

Spark 中agg的用法

在 Spark 中&#xff0c;agg 是用于对 DataFrame 进行聚合操作的函数。它可以同时对多个列应用多个聚合函数&#xff0c;并返回一个新的 DataFrame。agg 通常与 groupBy 结合使用&#xff0c;用于对分组后的数据进行聚合操作。 以下是 agg 的详细用法和示例。 1. agg 的基本用…