技术领域
[0001] 本发明属于自动驾驶技术领域,特别是涉及一种基于3D高斯溅射的周视3D占用预测方法。
相关背景技术
[0002] 当前3D占用预测方法主要利用3D体素真值对模型进行监督学习。然而,对3D体素进行标注成本高昂且极具挑战性。相关研究表明,采用预先标注的激光雷达数据生成初步的3D体素真值后,完成这些真值的后处理仍需要约4000小时的人工劳动。这些问题限制了3D占用预测方法的可用性和可扩展性。鉴于周视相机的成本优势以及图像具有丰富语义信息的特点,采用2D真值来监督3D占用预测模型的方法逐渐受到更多关注。
[0003] 在最近的研究中,基于2D真值监督的3D占用预测方法多采用NeRF的体渲染技术,将3D占用预测结果渲染为2D语义与深度图。这类方法通过最小化渲染图与2D真值的损失来优化模型。
[0004] 然而,这种监督方式也继承了NeRF体渲染的局限性。每个2D像素真值仅对应从相机光线出发的,经过该像素中心的单一光线,离相机光心较远的3D占用因为其尺度较小,NeRF模型在该区域的采样点较少,导致无法对其进行有效监督。此外NeRF采用均匀采样策略,远处物体的细节解析度远不如近处物体,使得模型在尺度变化较大的场景中表现不佳。此外,每个真值像素均对应于一条光线,故体渲染的计算开销与真值像素密度相关,通常需要对光线数量设置上限,从而影响了真值利用率与模型性能。
[0005] 同时训练3D占用预测模型时一种直观的方法是将多帧LiDAR点云直接转换到统一的坐标系进行加密,然后将得到的密集点云投影到相机视角以生成密集2D真值,这种简单的解决思路仅适合于静态场景,而场景中的的车辆、行人等往往是动态变化的,其在不同帧中的位置会有所不同,会导致前景目标真值在出现重叠、模糊或其他错误的情况,进而产生错误的2D真值。
[0006] 因此针对上述技术问题仍未有有效的技术方案。
具体实施方式
[0039] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 本发明的一种基于3D高斯溅射的周视3D占用预测方法,结合图1,包括以下步骤:
[0041] 步骤1、利用2D图像特征提取网络对多视角RBG图像进行2D特征提取:具体可选择利用Swin Transformer进行图像特征提取,获得2D图像特征;所述Swin Transformer对输入图像进行分层特征提取,每个阶段应用不同的步长,以提取更高级别的特征,并加入过去两帧数据作为输入,引入时序数据;特征层将被分割成大小为 的块, =4,每个块作为线性嵌入层的输入,展平后被映射到一个固定维度的向量空间,即embedding向量,公式如下所示:
[0042] ;
[0043] 其中, 为展平的块, 为 维的投影矩阵, 为通道数, 为嵌入维度,设置为128,为偏置项;
[0044] 多头自注意力机制公式如下所示:
[0045]
[0046] 其中,MHA表示多头自注意力结果, 为输入特征, 为不同的查询, 为键, 为值, 为 投影到不同的查询、键和值的空间, 为键的点积, 为键向量的维度的平方根, 为权重矩阵。
[0047] 步骤2、通过深度预测网络将所述2D图像特征转换为3D特征;具体的可以选择通过LSS网络将所述2D图像特征转换为3D特征;
[0048] 所述2D图像特征首先将被送入深度预测网络为每个像素预测深度分布向量, =41,定义为从距离相机光心4米出发,每间隔1米存在一个特征平面,总共41个平面,深度范围为[4m,45m],结合图5,其在相机坐标系下表示为一个视锥体;
[0049] 在深度分布预测过程中,首先需要确定深度搜索的中心 和范围 ,这两个参数基于单帧的深度预测来初始化,确保搜索过程集中在最有可能的深度区域,为了精细调整深度中心 和范围 参数,模型采用了期望最大化(EM)算法,所述深度中心 的公式如下所示:
[0050] ;
[0051] 其中, 表示第 个深度候选, 表示该深度候选的概率;
[0052] 根据模型预测得到的深度分布,将2D特征值转换为3D视锥特征;
[0053] 同时3D体素特征的坐标系通常为自车坐标系,则还需要完成视锥特征到3D特征的转换。
[0054] 步骤3、利用3D特征提取网络提取所述3D特征;结合图6,具体的可以选择利用3D残差网络对3D特征做特征提取,所述3D残差网络通过引入3D卷积层处理3D特征:利用多尺度分层特征提取特征并构建特征金字塔,获取上下文信息,并通过结合池化和上采样,所述特征金字塔编码了来自输入数据的多层次信息;
[0055] 所述3D卷积使用的卷积核是一个立方体或体素,在进行3D卷积时,卷积核会在输入数据的三个维度上滑动,计算覆盖区域内的加权和,公式如下所示:
[0056] ;
[0057] 其中 为输出数据, 为输入数据, 为3D卷积核, 为体素的坐标,depth,height,width表示输入数据的三个维度。
[0058] 步骤4、将所述3D特征进行3D高斯溅射,后渲染到最后的2D图像;
[0059] 步骤4.1:设置参数并将3D特征转换为3D高斯表示:利用两个MLP完成3D高斯的不透明度与3D高斯语义的预测,并设置3D高斯的缩放矩阵参数、旋转矩阵参数及中心坐标参数;体素大小预定义为0.4m,设置3D高斯的缩放矩阵 的三个维度上的值设置为0.15m;3D高斯的中心点 固定为在自车坐标系中每个体素的中心坐标;3D高斯的旋转矩阵 将固定不进行优化;后根据场景中的3D高斯参数执行3D高斯溅射;
[0060] 步骤4.2:将3D高斯投影为图像平面上的2D高斯,获得2D渲染所需的信息,结合图2;
[0061] 步骤4.2.1:将3D高斯中心点投影到像素坐标系;
[0062]
[0063] 其中, 为相机的外参, 为相机的内参矩阵, 为归一化的像素坐标,为四维向量,其中 需要变换为1保持齐次性, 为实际的像素坐标,为外参变化后的点坐标, 为3D高斯的中心点, 为输出图像宽度,为输出图像高度,( ,)为主点坐标。
[0064] 步骤4.2.2:利用缩放矩阵和旋转矩阵计算3D协方差矩阵;
[0065] 3D高斯使用四元数表示,从而避免了欧拉角表示法中的万向节锁问题;所述四元数(a,b,c,d)表示的旋转矩阵 的公式如下所示:
[0066] ;
[0067] 计算协方差矩阵:
[0068] ;
[0069] 其中,为缩放矩阵,其为3x3的对角阵,主对角线上的元素表示3个维度上的缩放参数, 为 的转置, 为 的转置。
[0070] 步骤4.2.3:将所述3D协方差矩阵转换为2D协方差矩阵,最终获得所述2D渲染所需的信息;
[0071] 为了在图像平面上获得一个合理的高斯近似,设置仿射变换矩阵 :
[0072] ;
[0073] 其中, 和 分别为相机在 和 方向上的焦距, 是通过变换矩阵和投影矩阵 从世界坐标系到相机坐标系的点的齐次坐标;
[0074] 2D协方差矩阵 的公式如下所示:
[0075] ;
[0076] 其中, 为外参旋转矩阵, 为3D协方差矩阵, 为 的转置, 为 的转置。
[0077] 步骤4.3:将所述2D高斯渲染到2D图像,结合图3;
[0078] 步骤4.3.1:为每个2D高斯覆盖的所有区块都生成一个唯一的交互ID并排序;
[0079] 所述交互ID是区块序号与2D高斯中心点,即区块ID,的深度组合得到的64位整数,具体的:所述区块ID被左移32位,为深度值留出了低32位的位置,然后所述区块ID与所述深度值按位进行或操作,合并成64位的整数;
[0080] 在渲染过程中可通过所述交互ID快速定位到2D高斯覆盖的具体区块,同时,通过对所述交互ID执行升序排序,可以将相同或相近的区块分组在一起,这有助于在图形处理或渲染过程中进行数据合并和批处理操作,减少处理时间和提高效率,更重要的是,还确保了图像能够按正确的视觉深度顺序进行渲染。
[0081] 步骤4.3.2:根据不透明度与颜色进行渲染;
[0082] 对于图像中的每个像素,需要将其对应光锥内所有3D高斯的颜色进行加权,以此作为其渲染结果。计算像素i的颜色 的公式如下所示:
[0083] ;
[0084] 其中,为第v个2D高斯的颜色,N为对应光锥内2D高斯的数量, 为其对应的渲染时实际的不透明度, 为相关的所有高斯对当前高斯透明度的累积影响,其公式如下所示:
[0085] ;
[0086] 其中, 表示第m个高斯的不透明度;
[0087] 所述渲染时实际的不透明度 计算公式如下所示:
[0088] ;
[0089] 其中, 为根据2D高斯的协方差矩阵 和像素中心与高斯中心之间的偏移 计算出的衰减项,所述衰减项 考虑了像素与高斯中心的相对距离;当距离越远时,衰减项 越大, 的值越小,不透明度越低,即2D高斯在该像素的视觉上越透明;
[0090] 最后根据所述不透明度 ,将其像素点相关高斯的深度进行加权求和得到最终的深度渲染结果,公式如下所示:
[0091] ;
[0092] 其中, 是第v个3D高斯的深度, 为相关的所有高斯对当前高斯透明度的累积影响。
[0093] 步骤5、设置损失函数,利用2D真值进行监督:所述损失函数包括交叉熵损失函数、SILog 损失函数;
[0094] 所述SILog 损失函数公式如下式所示:
[0095] ;
[0096] 其中, 为第 个像素的预测深度, 为第 个像素的真实深度, 为总像素点数。
[0097] 步骤6、构建密集2D语义与深度真值数据集;为基于nuScenes数据集提出一种密集2D语义与深度真值数据集的构建方法,通过结合现有的3D检测框和3D激光雷达点云语义分割标签,生成密集2D语义与深度真值,用于训练3D占用预测模型,结合图4,将前景目标与背景目标进行拆分,分别进行多帧拼接,同时还处理了前景目标的遮挡问题;
[0098] 步骤6.1:对前景与背景分别聚合当前场景点云,得到所述场景的全部前景目标点云与全部背景点云;
[0099] 步骤6.1.1:从当前场景提取第一帧样本数据,包括LiDAR数据、LiDAR语义标签、车辆自身位置信息、LiDAR传感器校准数据、下一帧样本的索引;
[0100] 步骤6.1.2:创建初始化列表LIST_static与字典LIST_dym,进入循环后,持续处理当前场景中的所述LiDAR数据;所述循环中,首先获取当前帧中的3D标注框真值,再提取所述标注框内的点云,并为所述点云分配所述LiDAR语义标签;这部分数据随后用于创建掩码,以分离背景点云和前景目标的点云;背景点云被转换到第一帧样本的LiDAR坐标系下并添加进所述初始化列表LIST_static;前景目标点云将根据其在本场景内唯一的标识(token)存储并添加到所述字典LIST_dym中;如果所述当前帧有后续帧,则加载下一帧继续处理;否则,结束循环;
[0101] 步骤6.1.3:聚合背景点云列表得到背景密集点云;最终得到所述场景的所述前景点云字典与所述背景密集点云,为后续生成每帧的密集真值提供数据基础。
[0102] 步骤6.2:分发所述点云到各帧生成的3D密集点云:利用相机内外参将当前帧的密集点云投影到图像平面得到密集的2D真值;
[0103] 步骤6.2.1:将所述背景密集点云从场景的第一帧LiDAR坐标系转换到当前帧LiDAR坐标系,同时根据当前帧前景目标的标识,在前景点云字典提取对应点云;
[0104] 步骤6.2.2:将前景点云与背景点云融合,得到当前帧的密集点云真值,并且剔除不属于预定义的体素空间范围内的点,即水平方向不超过40米,垂直方向的范围为‑1m‑5.4m;
[0105] 步骤6.2.3:利用相机内外参将所述当前帧的密集点云投影到图像平面获得密集的2D真值,具体的:所述密集点云先从所述LiDAR坐标系转换到相机坐标系,然后通过相机的内参矩阵将所述相机坐标下的密集点云投影到图像平面,结合图7;这一映射过程同时对深度信息和语义标签信息进行,结合图8。
[0106] 步骤6.3:结合图9,消除所述2D真值中的歧义;
[0107] 步骤6.3.1:利用相机内外参矩阵,将3D标注框的八个顶点从世界坐标系投影到2D图像平面上,此时所述顶点的z坐标为正;
[0108] 步骤6.3.2:所述世界坐标系投影完成后,得到不规则的多边形,为简化其在图像上的表示,则计算所述多边形中2D点的凸包,即包含所有投影点的最小凸多边形;
[0109] 步骤6.3.3:计算所述凸包与图像边界的交集,以确定3D框的哪些部分实际上可见,后计算所述交集的边界,获得2D标注框;
[0110] 步骤6.3.4:结合图10,利用所述2D标注框过滤框内的背景像素,得到无歧义的密集2D真值。
[0111] 新得到的一帧周视6张相机图像上的真值点数从200000到400000个点不等。对于模型输出尺寸为900 1600的渲染图而言,真值像素总数占比为13.89%到27.78%。同时本申请在训练过程中使用相邻7帧真值作为监督,经过测试,7帧2D真值像素的总数平均为250万左右,具体数量存在差异是因为是各帧样本中有效点云数量不同。
[0112] 与同样使用2D真值的基线模型RenderOcc相比,本申请提出的框架在平均IoU指标上提高了7.7%,其中汽车类别的IoU指标提升了35.5%。在小目标类别的IoU指标上,如行人类别,有40.7%的提升,这表明像素级2D语义真值能够得到更好的语义监督效果。在公交汽车语义类别的IoU指标上,也有43.9%的明显的提升。这表明本申请在动态目标的3D占用预测上有相对更好的效果,能够监督到更多的场景细节。
[0113] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0114] 尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。