声明:此翻译仅为个人学习记录
文章信息
- 标题:SECOND: Sparsely Embedded Convolutional Detection (Sensors 2018)
- 作者:Yan Yan, Yuxing Mao*, Bo Li
- 文章链接:https://www.researchgate.net/publication/328158485_SECOND_Sparsely_Embedded_Convolutional_Detection
- 文章代码:https://github.com/traveller59/second.pytorch
基于LiDAR或RGB-D的目标检测被用于从自动驾驶到机器人视觉的许多应用中。基于体素的3D卷积网络已被用于在处理点云LiDAR数据时增强信息的保留。然而,问题仍然存在,包括推理速度慢和方向估计性能低。因此,我们研究了一种用于此类网络的改进的稀疏卷积方法,该方法显著提高了训练和推理的速度。我们还引入了一种新的角度损失回归形式来提高方向估计性能,并引入了一个新的数据增强方法来提高收敛速度和性能。所提出的网络在KITTI 3D目标检测基准上产生最先进的结果,同时保持快速推断速度。
近年来,基于卷积神经网络(CNN)的目标检测[1,2]、实例分割[3]和关键点检测[4]取得了巨大进展。这种形式的检测可用于基于单目[5]或立体图像[6]的自动驾驶。然而,用于处理图像的方法不能直接应用于激光雷达数据。这对于自动驾驶和机器人视觉等应用来说是一个很大的限制。现有技术的方法可以实现2D汽车检测的90%的平均精度(AP),但基于3D图像的汽车检测的AP仅为15%[7]。为了克服仅由图像提供的空间信息的不足,点云数据在3D应用中变得越来越重要。点云数据包含精确的深度信息,可由LiDAR或RGB-D相机生成。
许多当前的3D检测器使用融合方法,利用图像和点云数据。点云数据被转换成2D鸟瞰图像[8]或被投影到图像[9,10]上。然后使用卷积网络提取特征,并应用融合过程来映射图像和其他视图之间的特征。在[11]中,最初使用2D检测器生成的边界框过滤点云数据,然后使用卷积网络直接处理点。在其他方法中,如[12-15]的方法,通过量化将点云数据分配给体积网格单元,然后应用3D CNN。
最近,一种名为VoxelNet[14]的新方法被开发出来。该方法在单级端到端网络中结合了原始点云特征提取和基于体素的特征提取。它首先将点云数据分组为体素,然后逐个体素应用线性网络,然后将体素转换为密集的三维张量,用于区域建议网络(RPN)[16]。目前,这是一种最先进的方法。然而,其计算成本使其难以用于实时应用。在本文中,我们提出了一种称为SECOND(稀疏嵌入卷积检测)的新方法,通过最大限度地利用点云数据中丰富的3D信息,解决了基于3D卷积的检测中的这些挑战。该方法结合了对现有卷积网络架构的若干改进。空间稀疏卷积网络被引入用于基于LiDAR的检测,并用于在3D数据被下采样为类似于2D图像数据之前从z轴提取信息。我们还使用基于GPU(图形处理单元)的稀疏卷积规则生成算法来提高速度。与密集卷积网络相比,我们基于稀疏卷积的检测器在KITTI数据集的训练过程中实现了4倍的速度增强,推理速度提高了3倍。作为进一步的测试,我们设计了一个用于实时检测的小模型,在GTX1080 Ti GPU上运行时间约为0.025s,性能略有下降。
使用点云数据的另一个优点是,通过对目标上的特定点应用直接变换,可以非常容易地缩放、旋转和移动对象。SECOND结合了基于这种能力的新型数据增强。生成包含目标属性和关联点云数据的真值数据库。然后在训练期间将从该数据库采样的目标引入点云。这种方法可以大大提高网络的收敛速度和最终性能。
除上述之外,我们还引入了一种新的角度损失回归方法,以解决当真值和预测之间的方向差等于π时产生的大损失问题,这产生了与真实边界框相同的边界框。这种角度回归方法的性能超过了我们所知的任何当前方法,包括AVOD[9]中可用的方向向量回归函数。我们还引入了辅助方向分类器来识别目标的方向。
在提交时,我们的方法在基于KITTI的3D检测的所有类别中产生了最先进的结果[7],而大模型的运行速度为20fps,小模型的运行频率为40fps。
我们工作的主要贡献如下:
我们在基于LiDAR的目标检测中应用稀疏卷积,从而大大提高了训练和推理的速度。
我们提出了一种改进的稀疏卷积方法,使其运行速度更快。
我们提出了一种新的角度损失回归方法,该方法显示出比其他方法更好的方向回归性能。
我们为LiDAR-only学习问题引入了一种新的数据增强方法,大大提高了收敛速度和性能。
下面,我们简要回顾了基于点云数据和图像的3D目标检测的现有工作。
使用RGB-D数据的2D表示的方法可以分为两类:基于鸟瞰图(BEV)的方法和基于前视图的方法。在典型的基于图像的方法[5]中,首先生成2D边界框、类语义和实例语义,然后使用手工方法生成特征图。另一种方法[17]使用CNN从图像中估计3D边界框,并使用专门设计的离散连续CNN来估计目标的方向。使用LiDAR[18]的方法涉及将点云转换为前视2D图,并应用2D检测器定位前视图图像中的目标。与其他方法相比,这些方法在BEV检测和3D检测方面表现不佳。
MV3D[8]是将点云数据转换为BEV表示的第一种方法。在该方法中,将点云数据转换为多个切片以获得高度图,然后将这些高度图与强度图和密度图连接以获得多通道特征。ComplexYOLO[19]使用YOLO(你只看一次)[20]网络和复杂的角度编码方法来提高速度和方向性能,但它在预测的3D边界框中使用固定的高度和z位置。在[21]中,设计了一种快速单级无建议检测器,该检测器利用特定高度编码的BEV输入。然而,所有这些方法的一个关键问题是,在生成BEV图时会丢失许多数据点,导致垂直轴上的信息大量丢失。这种信息丢失严重影响了这些方法在3D边界框回归中的性能。
大多数基于3D的方法要么直接使用点云数据,要么需要将这些数据转换为3D网格或体素,而不是生成BEV表示。在[12]中,将点云数据转换为包含特征向量的体素,然后使用一种新的基于卷积的投票算法进行检测。参考文献[13]通过利用以特征为中心的投票方案来实现新颖的卷积,从而提高了计算速度,从而利用了点云数据中的稀疏性。这些方法使用手工制作的特征,虽然它们在特定数据集上产生了令人满意的结果,但它们无法适应自动驾驶中常见的复杂环境。在一种独特的方法中,[22,23]的作者开发了一种系统,该系统可以通过基于CNN的新架构直接从点云学习逐点特征,而参考文献[24]使用k邻域方法和卷积从点云中学习局部空间信息。这些方法直接处理点云数据以对k邻域点执行1D卷积,但不能应用于大量点;因此,需要图像检测结果来过滤原始数据点。一些基于CNN的检测器将点云数据转换为体素。在[15]中提出的方法中,将点云数据离散为两值体素,然后应用3D卷积。[14]的方法将点云数据分组为体素,提取体素特征,然后将这些特征转换为密度张量,以使用3D和2D卷积网络进行处理。这些方法的主要问题是3D神经网络的高计算成本。不幸的是,3D CNN的计算复杂性随着体素分辨率的增加而增加。在[25,26]中,设计了一种空间稀疏卷积,以提高3D卷积速度,而参考文献[27]提出了一种新的3D卷积方法,其中输出的空间结构保持不变,这大大提高了处理速度。在[28]中,子流形卷积被应用于3D语义分割任务;然而,没有已知的方法将稀疏卷积用于检测任务。
与所有这些方法类似,我们的方法使用了3D卷积架构,但它包含了一些新的改进。
有些方法将相机图像与点云相结合。例如,[29]的作者使用具有不同接收场的两个尺度的3D RPN来生成3D提议,然后将每个3D提议的深度数据中的3D体积输入到3D CNN中,并将相应的2D色块输入到2D CNN中,以预测最终结果。在[8]中提出的方法中,将点云数据转换为前视图和BEV,然后将从两个点云图中提取的特征图与图像特征图融合。带有图像的MV3D网络在很大程度上优于仅BEV网络,但这种架构对小对象不太适用,运行缓慢,因为它包含三个CNN。[9]的作者将图像与BEV相结合,然后使用一种新的架构来生成高分辨率特征图和3D目标建议。在[11]中,2D检测结果用于过滤点云,从而PointNet[22]可用于预测3D边界框。然而,基于融合的方法通常运行缓慢,因为它们需要处理大量的图像输入。具有LiDAR能力的时间同步和校准相机的额外要求限制了此类方法的使用环境,并降低了其鲁棒性。相比之下,我们的方法仅使用LiDAR数据即可实现最先进的性能。
在本节中,我们描述了所提出的SECOND检测器的架构,并介绍了有关训练和推理的相关细节。
图1所示的SECOND检测器由三个部件组成:
(1)体素特征提取器;(2) 稀疏卷积中间层;以及(3)RPN。
图1. 我们提出的SECOND检测器的结构。检测器将原始点云作为输入,将其转换为体素特征和坐标,并应用两个VFE(体素特征编码)层和一个线性层。然后,应用稀疏CNN。最后,RPN生成检测。
这里,我们遵循[14]中描述的简单过程来获得点云数据的体素表示。我们首先基于体素数量的指定限制来预分配缓冲区;然后,我们对点云进行迭代,并将点分配给它们的相关体素,然后保存体素坐标和每个体素的点数。我们在迭代过程中基于哈希表检查体素的存在。如果与点相关的体素还不存在,我们在哈希表中设置相应的值;否则,我们将体素的数量增加1。一旦体素的数量达到指定的限制,迭代过程将停止。最后,我们获得所有体素、它们的坐标和实际体素数量的每个体素点数。为了检测相关类别中的汽车和其他物体,我们基于z×y×x轴上[−3,1]×[−40,40]×[0,70.4]m处的真值分布裁剪点云。对于行人和骑车人检测,我们使用[−3,1]×[−20,20]×[0,48]m处的裁剪点。对于我们的较小模型,我们只使用[−1,1]×[-32,32]×[0,52.8]m范围内的点来提高推断速度。需要基于体素大小稍微调整裁剪区域,以确保生成的特征图的大小可以在后续网络中正确地向下采样。对于所有任务,我们使用的体素大小为vD=0.4×vH=0.2×vW=0.2m。用于汽车检测的每个空体素中的最大点数设置为T=35,这是基于KITTI数据集中每个体素点数的分布来选择的;行人和骑车人检测的相应最大值被设置为T=45,因为行人和骑车者相对较小,因此需要更多的点来进行体素特征提取。
如[14]所述,我们使用体素特征编码(VFE)层来提取体素特征。VFE层将同一体素中的所有点作为输入,并使用由线性层、批归一化(BatchNorm)层和校正线性单元(ReLU)层组成的全连接网络(FCN)来提取逐点特征。然后,它使用元素最大池来获得每个体素的局部聚集特征。最后,它平铺获得的特征,并将这些平铺的特征和逐点特征连接在一起。我们使用VFE(cout)来表示一个VFE层,它将输入特征转换为cout维输出特征。类似地,FCN(cout)表示Linear-BatchNorm-ReLU层,该层将输入特征转换为cout维输出特征。作为一个整体,体素特征提取器由几个VFE层和一个FCN层组成。
稀疏卷积网络回顾
参考文献[25]是第一篇引入空间稀疏卷积的论文。在这种方法中,如果没有相关的输入点,则不计算输出点。这种方法在基于LiDAR的检测中提供了计算优势,因为KITTI中点云的分组步骤将生成5k–8k体素,稀疏度接近0.005。作为正常稀疏卷积的替代,子流形卷积[27]限制输出位置为活动的,当且仅当对应的输入位置为活动时。这避免了生成过多的活动位置,这会导致后续卷积层中由于大量活动点而导致速度降低。
稀疏卷积算法
让我们首先考虑2D密集卷积算法。我们使用Wu,v,l,m表示滤波元素,使用Du,v,l表示图像元素,其中u和v是空间位置索引,l表示输入通道,m表示输出通道。函数P(x,y)在给定所提供的输出位置的情况下生成需要计算的输入位置。因此,Yx,y,m的卷积输出由以下公式给出:
其中x和y是输出空间索引,u−u0和v−v0表示内核偏移u和v坐标。基于通用矩阵乘法(GEMM)的算法(也称为基于im2col的算法[30])可用于收集构建矩阵所需的所有数据 D ~ P ( x , y ) , l \tilde{D}_{P(x,y),l} D~P(x,y),l,然后执行GEMM本身:
其中,W*,l,m对应于Wu−u0,v−v0,l,m,但采用GEMM形式。对于稀疏数据 D i , l ′ D^{'}_{i,l} Di,l′和相关输出 Y j , m ′ Y^{'}_{j,m} Yj,m′,直接计算算法可以写成如下:
其中P’(j)是用于获得输入索引i和滤波器偏移的函数。下标k是与方程(1)中的u−u0和v−v0相对应的1D内核偏移量,下标i与方程(2)中的u和v相对应。方程(3)的基于GEMM的版本由以下公式给出:
稀疏数据的集合矩阵 D ′ ~ P ′ ( j ) , l \tilde{D^{'}}_{P^{'}(j),l} D′~P′(j),l仍然包含许多不需要计算的零。为了解决这个问题,我们不直接将方程(3)转换为方程(4),而是将方程(3)重写如下:
其中,Rk,j,也称为规则,是一个矩阵,它指定给定内核偏移k和输出索引j的输入索引i。公式(5)中的内部和不能通过GEMM计算,因此我们需要收集必要的输入来构造矩阵,执行GEMM,然后将数据散射回去。在实践中,我们可以使用预构造的输入输出索引规则矩阵从原始稀疏数据中直接收集数据。这会提高速度。详细地,我们构造了一个规则矩阵表Rk,i,t=R[k,i,t],其维数为k×Nin×2,其中k是内核大小(表示为体积),Nin是输入特征的数量,t是输入/输出索引。元素R[:,:,0]存储用于收集的输入索引,元素R[,:,1]存储用于散射的输出索引。图2的顶部显示了我们提出的算法。
图2. 稀疏卷积算法如上图所示,GPU规则生成算法如下图所示。Nin表示输入特征的数量,Nout表示输出特征的数量。N是聚集特征的数量。Rule是规则矩阵,其中Rule[i,:,:]是与卷积核中的第i个核矩阵相对应的第i条规则。除白色外的颜色框表示具有稀疏数据的点,白色框表示空点。
规则生成算法
当前实现[31]面临的主要性能挑战与规则生成算法有关。通常使用使用哈希表的基于CPU的规则生成算法,但这种算法速度慢,并且需要CPU和GPU之间的数据传输。一种更直接的规则生成方法是迭代输入点,以找到与每个输入点相关的输出,并将相应的索引存储到规则中。在迭代过程中,需要一个表来检查每个输出位置的存在,以决定是否使用全局输出索引计数器来累积数据。这是阻碍在算法中使用并行计算的最大挑战。
在我们的案例中,我们设计了一种基于GPU的规则生成算法(算法1),该算法在GPU上运行得更快。图1的底部显示了我们提出的算法。首先,我们收集输入索引和相关的空间索引,而不是输出索引(算法1中的第一个循环)。在此阶段获得重复的输出位置。然后,我们对空间索引数据执行唯一的并行算法,以获得输出索引及其关联的空间索引。从先前的结果生成具有与稀疏数据的空间维度相同的空间维度的缓冲器,用于下一步骤中的表查找(算法1中的第二个循环)。最后,我们对规则进行迭代,并使用存储的空间索引来获得每个输入索引的输出索引(算法1中的第三个循环)。表1显示了我们的实现和现有方法之间的性能比较。
表1. 各种卷积实现的执行速度的比较。SparseConvNet是子流形卷积的正式实现[27]。所有基准测试均在GTX 1080 Ti GPU上运行,数据来自KITTI数据集。
稀疏卷积中间提取器
我们的中间提取器用于学习关于z轴的信息,并将稀疏的3D数据转换为2D BEV图像。图3显示了中间提取器的结构。它由稀疏卷积的两个阶段组成。每个相位包含几个子流形卷积层和一个正常稀疏卷积,以在z轴上执行下采样。在z维度被下采样到一个或两个之后,稀疏数据被转换成密集的特征图。然后,数据被简单地重塑为类似2D数据的图像。
图3. 我们提出的稀疏中间特征提取器的结构。黄色框表示稀疏卷积,白色框表示子流形卷积,红色框表示稀疏到密集层。图的上部显示了稀疏数据的空间维度。
RPN[1]最近开始在许多检测框架中使用。在这项工作中,我们使用类似于[32]的单镜头多盒检测器(SSD)架构来构建RPN架构。RPN的输入包括来自稀疏卷积中间提取器的特征图。RPN架构由三个阶段组成。每个阶段从下采样卷积层开始,然后是几个卷积层。在每个卷积层之后,应用BatchNorm和ReLU层。然后,我们将每个阶段的输出上采样到相同大小的特征图,并将这些特征图连接到一个特征图中。最后,将三个1×1卷积应用于类别、回归偏移和方向的预测。
因为要检测的对象具有近似固定的大小,所以我们使用基于KITTI训练集中所有真值的大小和中心位置的平均值确定的固定大小锚,旋转角度为0和90度。对于汽车,我们使用尺寸为w=1.6×l=3.9×h=1.56 m的锚,以z=−1.0 m为中心。对于行人,我们使用的锚尺寸为w=0.6×l=0.8×h=1.73 m,对于骑自行车的人,锚尺寸为w=0.6×l=1.76×h=1.76 m;两者均以z=−0.6 m为中心。
每个锚被分配一个分类指标的one-hot向量、一个盒回归指标的7向量和一个方向分类指标的one-hot向量。不同的类具有不同的匹配和不匹配阈值。对于汽车,锚点使用0.6的联合交叉点(IoU)阈值分配给真值目标,如果它们的IoU小于0.45,则锚点分配给背景(负)。IoU在0.45和0.6之间的锚在训练期间被忽略。对于行人和骑车人,我们使用0.35作为非匹配阈值,0.5作为匹配阈值。
对于回归指标,我们使用以下框编码函数:
其中x、y和z是中心坐标;w、 l和h分别为宽度、长度和高度;θ是围绕z轴的偏航旋转;下标t、a和g分别表示编码值、锚点和真值; d a = ( w a ) 2 + ( l a ) 2 {d^a=\sqrt {(w^a)^2+(l^a)^2}} da=(wa)2+(la)2是锚框底部的对角线。
角度回归的正弦误差损失
以前的角度回归方法,包括角点编码、直接编码和矢量编码,通常表现出较差的性能。拐角预测方法[8]不能确定物体的方向,也不能用于行人检测,因为BEV框几乎是正方形的。矢量编码方法[9,19]保留了冗余信息,并导致难以基于LiDAR检测远处的物体。VoxelNet[14]直接预测弧度偏移,但在0和π弧度的情况下会遇到一个对立的示例问题,因为这两个角度对应于同一个框,但当一个角度被错误识别为另一个角度时会产生很大的损失。我们的架构通过引入新的角度损失回归来解决这个问题:
其中下标p指示预测值。这种角度损失方法有两个优点:(1)它解决了0和π方向之间的对抗性示例问题,以及(2)它自然地根据角度偏移函数对IoU进行建模。为了解决这种丢失将具有相反方向的框视为相同的问题,我们在RPN的输出中添加了一个简单的方向分类器。该方向分类器使用软最大损失函数。我们使用以下方法来生成方向分类器指标:如果围绕真值的z轴的偏航旋转大于零,则结果为正;否则为负。
分类的焦点损失
我们的网络通常在KITTI点云中生成~70k个锚点。不幸的是,通常只有几个真值,每一个都只能产生4-6个积极的结果。这导致前景类和背景类之间的极度不平衡。RetinaNet的作者[33]介绍了一种有效的单级损失,称为焦点损失,可以解决这个问题;因此,我们在架构中使用这种损失。分类损失的形式如下:
其中pt是模型的估计概率,α和γ是焦点损失的参数。我们在训练过程中使用α=0.25和γ=2。
训练总损失
通过组合上述损失,我们可以获得多任务损失的最终形式如下:
其中Lcls是分类损失,Lreg−other是位置和维度的回归损失,Lreg-θ是我们的新角度损失,Ldir是方向分类损失。β1=1.0、β2=2.0和β3=0.2是我们损失公式的常数系数。我们使用相对较小的β3值来避免网络难以识别物体方向的情况。
数据库中的真值样本
我们在训练中遇到的主要问题是真值太少,这严重限制了网络的收敛速度和最终性能。为了解决这个问题,我们引入了一种数据增强方法。首先,我们从训练数据集生成了一个数据库,其中包含所有真值的标签及其关联的点云数据(地面真相的3D边界框内的点)。然后,在训练期间,我们从这个数据库中随机选择了几个真值,并通过串联将它们引入到当前的训练点云中。使用这种方法,我们可以大大增加每个点云的真值数量,并模拟不同环境中存在的物体。为了避免物理上不可能的结果,我们在采样真值后进行了碰撞测试,并移除了与其他物体碰撞的任何采样物体。
目标噪声
为了考虑噪声,我们采用了VoxelNet[14]中使用的相同方法,其中每个真值及其点云都是独立和随机变换的,而不是用相同的参数变换所有点云。具体而言,我们使用从均匀分布∆θ∈[-π/2,π/2]采样的随机旋转和从平均值为零、标准偏差为1.0的高斯分布采样的随机线性变换。
全局旋转和缩放
我们将全局缩放和旋转应用于整个点云和所有真值框。缩放噪声来自均匀分布[0.95,1.05],[-π/4,π/4]用于全局旋转噪声。
所提出的SECOND检测器使用随机梯度下降(SGD)进行训练。我们使用了在GTX 1080 Ti GPU上运行的Adam优化器,每个小批量总共有三个点云。所有模型都经过了160个时期(200k次迭代)的训练。初始学习率为0.0002,指数衰减因子为0.8,每15个周期衰减一次。使用0.0001的衰变权重、0.9的beta1值和0.999的beta2值。用单个GTX 1080 Ti GPU训练大型汽车检测网络需要19小时,而训练较小的模型只需要9小时。
我们建议使用两个网络:一个大网络和一个小网络。需要删除位于相机视图平截头体外部的点。
对于车辆检测,在SECOND中使用两个VFE层,即大网络的VFE(32)和VFE(128)以及小网络的VFF(32)、VFE(64),遵循线性(128)层。因此,对于大网络,输出稀疏张量的维数为128×10×400×352,而对于小网络,输出稀疏张量的维数则为128×100×320×264。然后,我们使用两阶段稀疏CNN进行特征提取和降维,如图3所示。每个卷积层遵循BatchNorm层和ReLU层。所有稀疏卷积层都具有64输出特征图,内核大小为(3,1,1)内核大小,步长为(2,1,1)。对于大型网络,中间块的输出尺寸为64×2×400×352。一旦输出被重塑为128×400×352,就可以应用RPN网络。图4显示了RPN的体系结构。我们使用Conv2D(cout,k,s)表示Conv2D-BatchNorm-ReLU层,使用DeConv2D(cout,k,s)表示DeConv2D-BatchNorm-ReLU层,其中cout是输出通道的数量,k是内核大小,s是步长。因为所有层在所有维度上具有相同的大小,所以我们对k和s使用标量值。所有Conv2D层具有相同的填充,所有DeConv2D图层具有零填充。在RPN的第一阶段,应用了三个Conv2D(128,3,1(2))层。然后,在第二和第三阶段中分别应用五个Conv2D(128,3,1(2))层和五个Conv2D(256,3,1(2))层。在每个阶段中,仅对于第一卷积层,s=2;否则,s=1。我们为每个阶段中的最后一个卷积应用单个DeConv2D(128,3,s)层,三个阶段依次为s=1,2和4。对于行人和骑车人检测,与汽车检测的唯一区别是RPN中第一卷积层的步长是1而不是2。
图4. RPN的详细结构。蓝色框表示卷积层,紫色框表示级联层,天蓝色框表示跨步2下采样卷积层,棕色框表示转置卷积层。
我们在KITTI数据集[34]上训练了我们的网络,并根据KITTI基准[7]评估了我们的3D目标检测器,用于3D目标检测和BEV目标检测,包括汽车、行人和自行车运动员基准。对于每个类别,检测器都要评估三个难度等级:容易、中等和难。难度评估基于2D结果中的物体高度、遮挡和截断。我们遵循[8]中提出的方法,将提供的7481个训练示例分成3712个样本的训练集和3769个样本的评估集。由于对测试服务器的访问有限,我们仅使用测试集评估了较大的模型,因此只能为较小的模型提供验证集性能评估。根据AP评估BEV和3D检测结果。我们将我们提出的方法与几种最先进的方法进行了比较。这里,我们重点关注汽车检测结果,因为行人和骑车人检测可能需要图像来获得更好的结果,如第4.3节所述。我们的推理计算环境包括Core-i5 6500 CPU(4核)、16 GB DDR4内存和GTX 1080 Ti GPU。
表2显示了我们的3D检测器在KITTI测试集上的性能。我们的方法仅使用LiDAR数据获得了最先进的结果,并在很大程度上优于原始VoxelNet[14],而AVOD-FPN[9]同时使用图像和LiDAR的数据,并使用定制的85/15训练/验证划分(与我们的50/50划分相反)和地面估计来改进结果。F-PointNet[11]使用了一个2D检测器,该检测器使用ImageNet权重进行了微调,而我们的网络是从头开始训练的,仅使用LiDAR数据。对于行人和骑车人的检测,我们的结果与最先进的结果相当。表3显示了我们的3D BEV目标定位方法的性能。我们的方法比最先进的方法性能稍差,但仍能获得类似的结果,并且比LiDAR-only的VoxelNet[14]网络性能更好。
我们在图5中展示了几个3D检测结果。3D边界框已投影到相机坐标系中。总体而言,该评估表明,我们的网络能够以快速的推理速度产生高精度的结果。
表2. 3D检测性能:KITTI测试集中3D框的平均精度(AP)(%)。在AVOD和AVOD-FPN[9]中,采用了定制的85/15训练/验证划分和地面估计来改进结果。对于F-PointNet[11],使用GTX 1080 GPU进行推断,其峰值性能为GTX 1080Ti(用于我们的方法)或Titan Xp(用于AVOD)的67%。粗体数字表示表格中的最佳结果。
图5. KITTI测试集的3D检测结果。为了更好地可视化,使用LiDAR检测到的3D框被投影到左摄像头的图像上。
表3. 鸟瞰检测性能:KITTI测试集中BEV框的平均精度(AP)(%)。
由于除了VoxelNet[14]之外,目前没有发表的方法显示了行人和自行车检测的验证结果,因此我们只显示了我们的汽车检测验证结果,以与其他方法进行比较。
我们在表4和表5中报告了KITTI验证集的性能。我们的大型和小型网络在所有难度级别上都优于所有竞争方法,而我们的小型网络保持着特别快的推理速度。
表4. 3D检测性能:KITTI验证集中3D框的平均精度(AP)(%)。
表5. 鸟瞰图检测性能:KITTI验证集中BEV框的平均精度(AP)(%)。
图6显示了点云和相关图像的一些检测结果。
图6. KITTI验证集的检测结果。在每个图像中,绿色框表示检测成功,红色框表示检测精度低,灰色框表示假阴性,蓝色框表示假阳性。每个框旁边的数字和字母分别表示实例ID和类别,“V”表示汽车,“P”表示行人,“C”表示骑自行车的人。在点云中,绿色框表示地面真相,蓝色框表示检测结果。
图6中的前四幅图像和相关点云显示为典型的汽车检测示例。我们的网络可以为中距离和近距离的汽车提供卓越的结果。对于距离较远的汽车,尽管可用点很少,但我们的网络仍能产生良好的结果,这使得在图像中检测此类物体非常具有挑战性。此外,我们的网络可以意外地检测到强烈重叠的汽车,对于这些汽车,点云仅包含原始汽车点云的一小部分。通常,这些结果证明了我们网络的3D方面的有效性。
另一方面,对于点云中只有几个点的情况,可以观察到汽车检测中的一些主要故障,包括不准确的旋转和尺寸估计。我们的网络错过了许多距离激光雷达更远的汽车,通常包含少于10个点。还有一个明显的标签缺失:一些距离较远或被严重遮挡的汽车根本没有标签,尽管网络确实成功地检测到了这些车辆。
图6中的最后四幅图像和相关点云显示了行人和骑自行车者的检测结果。这里的假阳性和假阴性比汽车多。一些误报出现在图像中不合理的位置。与汽车相比,行人和骑自行车者的实例密度通常更高,每个实例的点数更少,这导致行人和骑自行车者更容易与其他点群和噪声混淆。此外,行人和骑自行车的人数相对较少,导致他们的体素较少,这限制了神经网络的能力。然而,这一发现的一个有希望的方面是,如果可以使用来自这些图像的信息,则可以简单地过滤不相关的点,并且可以基于2D检测结果容易地确定对象的位置,这应该使得该问题易于消除。
表1显示了我们改进的稀疏卷积方法的性能,并将其与SparseConvNet中的原始实现进行了比较[31]。可以看出,我们的稀疏卷积方法比原始实现更快,因为它的规则生成更快。
表6显示了不同角度编码方法在KITTI验证集上的性能。可以看出,我们的角度处理方法比AVOD[9]和ComplexYOLO[19]中使用的角度矢量编码性能更好。在我们的方法中,可以控制方向分类权重,以使网络更加关注重叠最大化,而不是在困难情况下费力地进行方向识别。
表6. 对Car类的KITTI验证集上不同角度编码方法的性能进行比较。
为了纠正训练过程中正负示例之间的极端数据不平衡,我们引入了一种采样真值及其相关点云数据的技术,以实时构建更好的训练数据。图7显示了在Car类的KITTI验证集上使用和不使用真值采样进行训练的性能曲线。该图表明,我们的采样方法大大提高了收敛速度并增强了最终结果。
图7. KITTI验证集3D地图评估的采样与非采样方法(Car类,中等难度)。
用于3D目标检测的大多数现有方法将点云数据转换为2D表示,例如BEV和前视图表示,并因此丢失原始点云中包含的大部分空间信息。在本文中,我们介绍了一种新的角度损失回归方法,成功地在基于LiDAR的网络中应用了稀疏卷积,并提出了一种充分利用点云优势的数据增强新方法。在KITTI数据集上的实验表明,所提出的网络优于其他最先进的方法。此外,所提出的架构已显示为实时运行。然而,我们的网络在行人和自行车检测以及BEV检测方面表现出较低的性能。未来的工作将包括研究基于相机和激光雷达的联合检测方法,例如图像特征与激光雷达体素特征的融合,以提高检测性能,以及使用弱监督训练来利用KITTI数据集的大量未标记部分。
作者贡献:Y.Y.进行了本文报告的主要部分工作,包括提出主要思想、进行训练、分析结果和撰写论文。B. L.帮助实现了稀疏卷积,并回顾了论文。Y.M.提供全面监督。所有作者都参与了修改手稿。
Funding: This work was supported by a project of the National Natural Science Foundation of China (61571068) and the Innovative Research Projects of Colleges and Universities in Chongqing (12A19369).
Conflflicts of Interest: The authors declare no conflflict of interest.