技术领域
[0001] 本发明属于目标检测技术领域,具体涉及一种基于柱体序列注意力和空洞扩张卷积的3D目标检测方法。
相关背景技术
[0002] 基于激光雷达点云的3D目标检测有着广泛的应用场景,如自动驾驶感知、机器人技术等,因此备受关注。与2D目标检测类似,3D目标检测任务需要从指定的三维空间中精确定位出目标位置,并且确定目标的类别,然而这两种检测任务也存在着差异,在2D目标检测任务中,待检测场景通常为稠密规则的RGB图像数据,可以直接使用CNN进行处理,而3D目标检测任务的待检测场景由稀疏且不规则的点云数据构成,这样的数据形式使得3D目标检测充满了挑战。
[0003] 目前已有许多研究在利用点云数据进行3D目标检测方面取得了巨大成就,这些方法可以分为基于原始点的方法和基于规则化处理的方法。先前的研究通常认为,基于原始点的方法能够充分利用完整的原始点云信息取得更好的表现效果,但由于处理原始点云数据的复杂性,这一类模型的检测速度较低,且难以应用于大规模点云场景的检测。而基于规则化处理的方法则是将点云数据处理为体素或者柱体的表示形式,尽管这一过程会损失部分原始信息,但规则化之后的数据能够利用卷积模块提高模型特征提取的效率,从而提升模型检测速度,而考虑到自动驾驶感知模块的实时性需求,因此更适于采用基于柱体的检测方法。
[0004] 基于柱体的检测方法通常包括以下几个基本流程:柱体特征编码,骨干网络特征提取,颈部网络特征聚合以及检测头进行检测。然而在柱体特征编码阶段,通常采用取均值法或取最值法以柱体内部原始点云特征作为柱体特征,没有对原始点云特征挖掘和学习,得到的柱体特征较为粗糙;在骨干网络特征提取阶段,先前的方法通常使用稀疏卷积进行多级特征提取,但由于柱体尺寸以及稀疏卷积核尺寸的限制,这样的骨干网络感受野难以满足精确检测的需求。
[0005] 针对柱体特征编码阶段的编码方式粗糙以及编码信息局限问题,可通过采用自注意力机制来建立场景内部点与点之间的关联信息,然而,在全局场景直接应用自注意力还存在一些问题:1.计算成本高昂;2.导致大量冗余的注意力特征。为了解决上述问题,可以选择在局部区域内进行注意力建模,以获取柱体内部点与点之间的关注特征信息,但这一操作面临着不定长序列难以并行进行注意力建模的挑战。
[0006] 针对骨干网络特征提取阶段感受野不足的问题,可通过VoxelNext采用增加下采样层数策略来弥补这一不足,然而,这种方法会导致特征图分辨率过低,对预测结果不利,此外,增加下采样次数也提高了计算开销。或者也可采用VoTr和SST使用Transformer作为骨干网络来增大模型感受野,然而,这种方法需要设计复杂的结构来查询数目众多的非空样本,并且对于非空样本进行注意力建模,大大增加了模型规模和复杂性。
[0007] 因此,现在需要一种能够解决编码方式粗糙以及编码信息局限问题、有效增加模型感受野的同时保持柱体模型简洁性与高效性的基于柱体序列注意力和空洞扩张卷积的3D目标检测方法。
具体实施方式
[0090] 下面结合实施例对本发明做进一步详细说明:
[0091] 如图1和图2所示,一种基于注意力和空洞扩张卷积的的3D目标检测方法,包括以下步骤:
[0092] 步骤S1:数据预处理:将训练所需数据集中所有文件夹的点云场景裁剪成固定大小,点云场景中X、Y和Z轴方向上的检测范围分别设置为[0,70.4]m、[‑40,40]m以及[‑3,1]m,然后对裁剪后的数据集生成对应的bin文件;
[0093] 步骤S2:构建网络模型并进行模型训练:首先准备好训练使用的点云数据,数据包括点云场景数据和目标标签数据;接着构建网络模型,并且设置好每个模块的超参数;然后将训练数据送入网络模型进行训练,整个训练过程中通过降低网络的损失函数来优化模型,从而得到表现最好的网络模型权重;最后保存好网络模型权重;
[0094] 步骤S3:模型测试:使用测试集数据验证模型效果,通过加载步骤S2中表现最好的网络模型权重来测试检测目标效果,以实现精确实时的3D目标检测。
[0095] 具体的,步骤S1的操作步骤如下:
[0096] 步骤S101:将训练所需的KITTI数据集中点云场景数据进行裁剪;
[0097] 步骤S102:将X、Y和Z轴方向上的检测范围分别设置为[0,70.4]m、[‑40,40]m以及[‑3,1]m,柱体尺寸设置为(0.05m,0.05m),每个柱体内部最大采样点数目设置为5,得到分辨率为[1600,1480]尺寸的BEV特征图。
[0098] 步骤S2的操作步骤如下:
[0099] 步骤S201:构建网络模型,网络整体结构如图2所示,网络模型包括4部分,即用于柱体特征编码的柱体序列注意力特征编码器、用于在大范围感受野区域特征提取的空洞扩张卷积网络、用于特征融合的颈部网络以及用于目标分类与回归的分类回归子网络;如图3和图4所示,柱体序列注意力特征编码器包括柱体序列注意力模块与柱体特征软聚合模块;空洞扩张卷积感受野如图5所示,如图6所示,空洞扩张卷积网络包括稀疏空洞扩张卷积模块和稠密空洞扩张卷积模块;
[0100] 步骤S202:柱体序列注意力模块通过以两级交叉注意力的方式实现自注意力的效果,使用柱体内部点间关注信息对原始点云数据进行特征增强;
[0101] 具体的,点云数据首先经过柱体序列注意力模块,将裁剪后训练集点云数据送入柱体序列注意力特征编码器的柱体序列注意力模块中,该柱体序列注意力模块主要解决柱体特征编码过程中编码信息局限问题,先前柱体编码器存在编码信息局限的问题,问题主要体现在编码器仅仅编码点云原始固有信息,没有对点云信息进行挖掘和拓展,考虑到自注意力机制能够获取到样本之间的关注信息,因此利用自注意力机制挖掘局部区域内原始点云之间注意力特征信息,以丰富和增强原始点云特征;
[0102] 柱体序列注意力模块包含两级交叉注意力,其中第一级交叉注意力为编码器,第二级交叉注意力为解码器;原始点云特征数据通过编码器中第一级交叉注意力得到交叉注意力特征,完成柱体序列长度统一任务,交叉注意力特征通过解码器中第二级交叉注意力间接得到点间自注意力特征信息,柱体序列注意力模块能够在不改变特征维度的前提下对于点特征进行增强;
[0103] 在编码器中,首先获得输入点云特征信息Fin,Fin由点云特征信息和点云相对网格位置信息组成,前者由原始点云特征信息F=(x,y,z,r)经过MLP初始化编码得到,后者由各个点对应其所在网格左上角偏移信息R=(x’,y’,z’)经过PE位置编码得到,这里使用的位置编码操作PE与DeTR中采用的位置编码操作类似,操作过程如下:
[0104] Fin=MLP(F)+PE(R)
[0105] R=(Pi‑(Ci×Psize))/Psize
[0106] 式中,Pi表示第i个点相对检测场景的全局偏移距离,Ci表示第i个点所在的网格索引,Psize表示柱体网格尺寸;
[0107] 接下来,点云特征Fin通过MLP得到K向量和V向量,使用可学习的定长虚拟点集合特征Fv作为Q向量进行交叉注意力建模,得到虚拟点集合特征对于柱体内部各个点之间的注意力特征信息,这里虚拟点集合特征由单层线性层构成,可以视为若干个固定维度特征维度的虚拟点云点,交叉注意力使用scatter_softmax函数计算各个点权重,该函数作为cuda核心库函数,能够高效并行实现散射相关操作;
[0108] 以各个点所在的柱体序号为索引,通过散射softmax操作能够将各个虚拟点对于原始点的注意力权重限制在各个柱体内部,得到特征维度相同的关注特征信息,称为交叉注意力特征(CAF),以特征维度相同的交叉注意力特征作为柱体序列特征,此时交叉注意力特征维度即为序列长度,从而解决了先前以原始点云特征作为柱体序列特征产生的注意力建模序列长度不一致问题,操作过程如下:
[0109] Q=Fv,K=MLP(Fin),V=MLP(Fin)
[0110] CAF=CrossAttention(Q,K,V)
[0111] CrossAttention=SoftMaxscatter(QKT)V
[0112] 式中,Q、K、V分别表示进行注意力建模的查询向量、键向量和值向量;Fv表示虚拟in点集合特征,F 表示原始点云特征;MLP表示线性层;CrossAttention表示交叉注意力操作;
CAF表示得到的交叉注意力特征;SoftMaxscatter表示散射SoftMax操作;
[0113] 柱体序列注意力模块解码器以交叉注意力特征(CAF)作为K向量和V向量,以原始点云特征信息作为Q向量,再次进行交叉注意力建模,从而间接得到原始点云各个柱体内部点与点之间的自注意力特征信息(SF),操作过程如下:
[0114] Q=MLP(Fin),K=CAF,V=CAF
[0115] SF=CrossAttention(Q,K,V)
[0116]
[0117] 式中,Q、K、V分别表示进行注意力建模的查询向量、键向量和值向量;MLP表示线性in层,CAF表示编码器得到的特征维度相同的交叉注意力特征,F 表示原始点云特征;SF表示解码器得到的自注意力特征,CrossAttention表示交叉注意力操作;d表示特征序列长度,SoftMax表示普通SoftMax操作;
[0118] 解码器一方面对于交叉注意力特征再次进行增强,间接得到柱体序列内部点与点之间的自注意力特征;另一方面将自注意力特征的维度恢复到原始输入点云特征维度,在保证原始输入维度不变的情况下更新原始输入点云特征,这样的操作使得柱体序列注意力模块模块能够同Transformer一样在不改变输入数据特征维度的情况下进行多次堆叠,不断增强数据的表示能力;
[0119] 步骤S203:通过柱体特征软聚合模块对柱体序列注意力模块输出的点云特征进行精细化处理,利用散射SoftMax得到每个点在柱体内部的权重信息,并以此对点云特征进行加权,最终得到更具表示能力的柱体特征信息;
[0120] 具体的,将步骤S202中得到的具有强大表示能力的点特征信息送入柱体序列注意力特征编码器的柱体特征软聚合模块,柱体特征软聚合模块主要解决柱体特征编码阶段的编码方式粗糙问题,柱体特征软聚合模块充分利用点之间注意力特征信息,以更加精细的方式将柱体内部点特征聚合成为柱体特征以更加精细的方式完成柱体特征聚合任务;
[0121] 以柱体序列注意力模块点云特征作为柱体特征软聚合模块的输入,利用散射SoftMax得到各个点在对应的柱体内部的权重信息,之后柱体序列注意力模块点云特征与各个点权重信息进行点乘完成加权操作,操作过程如下:
[0122] WP=SoftMaxscatter(FPSA)
[0123] FPFSA=FPSA*WP
[0124] PFPFSA=Addscatter(FPFSA)
[0125] 式中,FPSA表示柱体序列注意力模块点云特征,Wp表示各个点在其所在柱体内部的PFSA权重信息,SoftMaxscatter表示散射SoftMax操作,F 表示加权后各个点云特征信息,PFSA
Addscatter表示散射相加操作,PF 表示最终得到的柱体特征;
[0126] 柱体序列注意力模块点云特征代表着柱体内部点与点之间的关注程度,其中前景点特征强度更高,这样的加权方式降低了背景点在柱体特征中的贡献,提高了前景点在柱体特征中的贡献,最后柱体特征软聚合模块以散射相加的方式聚合柱体内部所有点的信息得到柱体特征信息;
[0127] 柱体特征软聚合模块对柱体序列注意力模块提供的点间关注信息进行了精细化的处理,通过过滤筛选机制对于点云特征信息进行了进一步的精炼与融合,充分利用了柱体序列注意力模块提供的表达能力强大的点云特征信息得到了表示能力强大的柱体特征信息,有效解决了聚合方式粗糙的问题;
[0128] 步骤S204:使用多层由稀疏空洞扩张卷积模块构成的SDEC层处理稀疏2D特征数据,在大范围感受野内对稀疏特征图进行特征提取;
[0129] 具体的,将步骤S203中得到的柱体特征信息送入空洞扩张卷积网络的稀疏空洞扩张卷积模块,在大范围感受野区域对稀疏特征进行特征提取,稀疏空洞扩张卷积主要解决骨干网络在稀疏特征图特征提取过程中感受野不足问题;
[0130] 先前在语义分割和目标检测领域,如Deeplabv3和YOLOF模型,为了有效扩大模型感受野并捕获更广泛的上下文信息,广泛采用了空洞卷积,这种卷积通过在标准卷积核中引入间隔步长,实现了在不增加额外参数的情况下扩大感受野,同时保持了与标准卷积相同的计算复杂度,然而随着间隔步长的增加,卷积模块将忽略卷积核中心区域特征,先前的研究已经表明,为了有效地提升模型的检测性能,感受野的大小需要与目标尺寸相匹配,因此,卷积模块不仅应该具备足够的感受野,还能够保留中心区域的卷积特征;
[0131] 由于空洞率为1的卷积能够处理中心局部信息,空洞率大于1的卷积能够增大感受野范围,因此采用Inception类似结构将不同空洞率卷积核的卷积结果进行结合,这样既保留了原先模型的感受野范围以覆盖尺寸较小待检测目标,又充分利用大空洞率的卷积扩张了感受野范围,这样的结构为空洞扩张卷积,空洞扩张卷积感受野如图5所示,空洞扩张卷积感受野以及空洞扩张卷积块实际卷积核大小如下所示:
[0132] RFl+1=RFl+(K‑1)×Si
[0133]
[0134] 式中,RFl+1表示当前层感受野,RFl表示上一层感受野,K表示实际卷积核大小,n表示结合的不同空洞率卷积块个数,Si表示之前所有层步长的乘积;
[0135] 实际卷积核大小随着空洞卷积空洞率d的增大而增大,空洞扩张卷积结合n个不同空洞率的卷积块,进一步增大实际卷积核大小;
[0136] SDEC处理稀疏2D特征数据,由4层稀疏空洞扩张卷积层构成,每层包括一个稀疏卷积块和两个稀疏空洞扩张卷积块,其中稀疏卷积块由步长为2的普通2D稀疏卷积、批归一化以及ReLu激活函数构成,主要用于稀疏2D特征图的下采样,稀疏空洞扩张卷积块由两层多个并联的子流型稀疏卷积构成;
[0137] 输入的稀疏特征图首先分别在不同感受野范围进行稀疏卷积操作,之后将多尺寸感受野卷积特征图与原始输入特征图结合在一起,得到空洞扩张特征图,该操作为空洞扩张卷积处理,接下来对空洞扩张特征图再次进行空洞扩张卷积处理,进一步对稀疏特征进行提取;
[0138] 在卷积块宽度方面,利用了不同空洞率的空洞卷积形成扩张结构,聚合局部和大范围感受野特征信息,在卷积块深度方面,进行多次多尺寸稀疏特征提取,进一步对大范围感受野内特征进行学习;
[0139] 步骤S205:将稀疏特征图稠密化后,通过由稠密空洞扩张卷积块构成的DDEC层在大范围感受野内对稠密特征图特征提取,最终得到2级浓密特征图;
[0140] 具体的,将步骤S204中得到的稀疏特征图稠密化,之后送入空洞扩张卷积网络的稠密空洞扩张卷积中,在大范围感受野内对稠密的特征图进行特征提取;
[0141] DDEC结构同SDEC类似,由于处理稠密2D特征数据,DDEC块由传统的2D卷积构成,DDEC中首先使用一个步长为2的2D卷积块对普通2D特征图进行下采样操作,之后使用两个稠密空洞扩张卷积块对普通2D特征图进行局部和大范围感受特征提取,稠密空洞扩张卷积块采用与稀疏空洞扩张卷积块相同的结构,将子流型稀疏卷积替换了普通的卷积,在不同感受野范围进行2D卷积操作;
[0142] 步骤S206:将2级稠密特征图输入颈部网络进行特征融合,通过转置卷积和普通卷积操作调整特征图的通道数和尺寸,最终堆叠处理后的特征图,得到具有强大表示能力的特征图,以供检测头使用;检测头得到预测结果与真实结果之间类别、位置以及方向上的损失,以此优化模型参数;
[0143] 具体的,将步骤S205中产生的2级稠密特征图送入颈部网络进行特征融合,取得骨干网络部分下采样步长为8、16的浓密特征图,其张量维度分别是[batch_size,256,w/8,h/8]以及[batch_size,256,w/16,h/16];
[0144] 对于下采样步长为8的特征图,使用转置卷积减小其通道数到128维,不改变特征图尺寸,处理之后特征图张量维度为[batch_size,128,w/8,h/8];对于下采样步长为16的特征图,首先使用普通卷积进行特征更新,期间不改变特征图的通道数和特征尺寸,之后使用转置卷积使得特征通道维度减半,特征图尺寸加倍,处理后得到特征图张量维度也为[batch_size,128,w/8,h/8];
[0145] 最后在通道维度堆叠两个处理之后的特征图,得到张量维度为[batch_size,256,w/8,h/8]的特征图;
[0146] 颈部网络聚合了骨干网络产生的深层整体抽象特征信息以及浅层局部精细信息,为检测头提供了表示能力更加强大的特征信息;
[0147] 步骤S207:输入处理好的点云数据集数据,针对网络模型进行训练;
[0148] 具体的,检测头和损失函数部分采用经典的基于锚框的检测头;损失函数包括由Focal loss构成的分类损失Lcls、由平滑L1损失构成的回归损失Lreg以及由交叉熵损失构成的方向损失Ldir;
[0149] 其中回归损失Lreg计算预测目标中心点、预测框长宽高以及预测偏移角度与真实标签之间的偏差,即[xa,ya,za,la,wa,ha,θa]与[xg,yg,zg,lg,wg,hg,θg]之间的回归值,回归值公式定义如下:
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156] Δθ=sin(θg‑θa)
[0157] 回归损失公式定义如下:
[0158]
[0159] 分类损失公式定义如下:
[0160] Lcls=‑αt(1‑Pt)γlog(Pt)
[0161] 式中,Pt表示模型对该预测框得到的置信度信息,α和γ表示超参数,分别设置α=0.25,γ=2;
[0162] 总体训练损失函数如下所示:
[0163] L=βclsLcls+βregLreg+βdirLdir
[0164] 分别设置三个损失在总体损失中的占比βcls=1、βreg=2以及βdir=0.2。
[0165] 综上所述,本申请基于柱体的3D目标检测器能够高效快速地完成场景感知任务,符合自动驾驶感知模块的实时检测的基本需求。由于柱体模型的先天特性,其检测精度不如基于体素和基于点的3D目标检测模型,于是针对柱体模型提出柱体序列注意力编码器和空洞扩张卷积网络,前者解决柱体编码阶段编码方式硬性以及编码信息局限等问题,后者解决骨干网络感受野不足问题。具体而言,柱体序列注意力编码器使用柱体序列注意力模块(PSA)获取柱体局部区域点间关注信息,使用柱体特征软聚合模块(PFSA)精细化聚合柱体内部点信息;空洞扩张卷积网络利用空洞卷积获取大范围感受野稀疏和稠密的特征信息。
[0166] 在KITTI数据集上进行实验验证了模型的性能以及模块的有效性,在汽车类别上的平均准确率为81.48%,比基线模型高出3.12%,同时推理时间仅仅增加了约10ms。
[0167] 具体的,采用KITTI官网提供的数据集进行训练和测试,根据KITTI数据集的评测工具,测试该方法的训练效果,如表1所示,是在KITTI测试数据集上不同算法的结果对比图,由表1中的对比结果可知,本申请所提出的3D目标检测算法PAEN在BEV指标中对于车类别在简单、中等和困难级别的检测结果中都取得了最好的表现效果,模型表现的提升也证实了本申请提出组件的有效性。
[0168] 表1PAEN在KITTI测试集中车类别目标BEV指标目标检测结果
[0169]
[0170] 如表2所示,体现了本申请的模型与先前实时检测模型在推断时间上的比较结果。在一张NVIDIA RTX4090进行实验,相比于柱体模型PointPillar以及Pillarnet在精度上取得了更好的效果,同时推断速度仅仅增加了约10ms,相比于体素模型SECOND,本申请的模型在精度上取得了较好的成绩,同时有着更快的推断速度。
[0171] 表2PAEN在KITTI测试集推断速度对比结果
[0172]
[0173] 在3D目标检测领域,先前基于处理的模型在规则化特征编码模块仅仅采用了简单的聚合策略,如使用取均值的方法以网格内部点的特征均值作为网格特征,又如使用类似最大池化的方法以网格内部点各个维度特征的特征最大值作为网格各个维度的特征。上述方法我们称为硬性特征聚合,虽然能够完成规则化特征编码的任务,但是获取到的特征是较为粗糙的,因为其存在聚合方式硬性和聚合信息局限两个问题。聚合方式硬性体现在聚合信息完全由原始点信息线性变化而来,没有进行挖掘和学习,如使用门单元对信息进行过滤,使用非线性操作对特征进行学习。聚合信息局限体现在聚合信息为原始点固有信息,没有进行拓展和延伸,如点数目信息,点密度信息以及点之间关注信息等,并且在后续模块特征提取的过程中,模型直接处理的是经过编码的网格特征,而原始点的隐性信息在后续特征提取过程中将被永久忽视。本发明提出了柱体序列注意力特征编码器,一方面通过柱体序列注意力特征编码器的柱体序列注意力模块得到柱体内部点与点之间的注意力特征信息,解决了传统柱体编码器编码信息局限问题,另一方面使用柱体特征软聚合模块以更加精细化的的形式充分利用点间注意力特征信息进行柱体特征编码,解决的传统柱体编码器编码方式硬性问题。
[0174] 针对骨干网络特征提取阶段感受野不足问题,先前的研究已经表明,为了有效地提升模型的检测性能,感受野的大小需要与目标尺寸相匹配。空洞率为1的卷积能够处理中心局部信息,空洞率大于1的卷积能够增大感受野范围,因此我们提出的方法采用Inception类似结构将不同空洞率卷积核的卷积结果进行结合,这样既保留了原先模型的感受野范围以覆盖尺寸较小待检测目标,又充分利用大空洞率的卷积扩张了感受野范围。我们将这样的结构称为空洞扩张卷积,其中空洞扩张卷积网络包括稠密4层稀疏空洞扩张卷积层和1层稠密空洞扩张卷积层,分别在稀疏特征图和稠密特征图中提取大范围感受野内的特征信息。堆叠多层空洞扩张卷积形成的空洞扩张卷积网络有效地解决了骨干网络感受野不足问题。
[0175] 可以理解,本发明是通过一些实施例进行描述的,本领域技术人员知悉的,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明所保护的范围内。