准确检测3D点云中的目标是许多应用中的核心问题,例如自主导航、家政机器人和增强/虚拟现实。为了将高度稀疏的LiDAR点云与区域proposal网络 (RPN) 连接起来,现有的大多数工作都集中在手工制作的特征表示上,例如鸟瞰图投影。在这项工作中,我们消除了对3D点云的手动特征工程的需要,并提出了VoxelNet,这是一种通用的3D检测网络,它将特征提取和边界框预测统一到单阶段、端到端可训练的深度网络中。具体来说,VoxelNet将点云划分为等间距的3D体素,并通过新引入的体素特征编码 (VFE) 层将每个体素内的一组点转换为统一的特征表示。通过这种方式,点云被编码为描述性的体积表示,然后连接到RPN以生成检测。在KITTI汽车检测基准上的实验表明,VoxelNet大大优于基于LiDAR的最先进的3D检测方法。此外,我们的网络学习了具有各种几何形状的目标的有效判别表示,从而在仅基于LiDAR的行人和骑自行车者的3D检测方面取得了令人鼓舞的结果。
基于点云的3D目标检测是各种现实世界应用的重要组成部分,例如自主导航[11、14]、家政机器人[26]和增强/虚拟现实[27]。基于点云的3D目标检测是各种现实世界应用的重要组成部分,例如自主导航[11、14]、家政机器人[26]和增强/虚拟现实[27]。与基于图像的检测相比,LiDAR提供了可靠的深度信息,可用于准确定位目标并表征其形状[21, 5]。为了应对这些挑战,许多方法为点云手动制作了特征表示,这些特征表示针对3D目标检测进行了调整。几种方法将点云投影到透视图中并应用基于图像的特征提取技术[28,15,22]。其他方法将点云光栅化为3D体素网格,并用手工制作的特征对每个体素进行编码[41,9,37,38,21,5]。然而,这些手动设计选择引入了信息瓶颈,阻碍了这些方法有效利用3D形状信息和检测任务所需的不变性。图像识别[20]和检测[13]任务的重大突破是由于从手工制作的特征转向机器学习的特征。
最近,Qi等人[29]提出了PointNet,一个端到端的深度神经网络,直接从点云中学习逐点特征。这种方法在3D目标识别、3D目标部分分割和逐点语义分割任务上展示了令人印象深刻的结果。在[30]中,引入了PointNet的改进版本,使网络能够学习不同尺度的局部结构。为了获得令人满意的结果,这两种方法在所有输入点(~1k点)上训练了特征变换器网络。由于使用LiDAR获得的典型点云包含∼10万个点,像[29,30]中那样训练架构会导致高计算和内存要求。将3D特征学习网络扩展到更多数量级的点和3D检测任务是我们在本文中解决的主要挑战。
区域proposal网络(RPN)[32]是一种高度优化的算法,用于高效的目标检测[17、5、31、24]。然而,这种方法要求数据密集并以张量结构(例如图像、视频)进行组织,而典型的LiDAR点云并非如此。在本文中,我们填补了点集特征学习和三维检测任务的RPN之间的差距。
我们提出了VoxelNet,这是一个通用的3D检测框架,它同时以端到端的方式从点云中学习判别特征表示并预测准确的3D边界框,如图2所示。我们设计了一种新颖的体素特征编码(VFE)层,通过将逐点特征与局部聚合特征相结合,可以实现体素内的点间交互。堆叠多个VFE层允许学习用于表征局部3D形状信息的复杂特征。具体来说,VoxelNet将点云划分为等间距的3D体素,通过堆叠的VFE层对每个体素进行编码,然后3D卷积进一步聚合局部体素特征,将点云转化为高维体积表示。最后,RPN使用体积表示并产生检测结果。这种高效的算法受益于稀疏点结构和体素网格上的高效并行处理。
图2、VoxelNet架构。特征学习网络将原始点云作为输入,将空间划分为体素,并将每个体素内的点转换为表征形状信息的向量表示。该空间表示为稀疏的4D张量。卷积中间层处理4D张量以聚合空间上下文。最后,RPN生成3D检测。
我们在KITTI基准[11]提供的鸟瞰图检测和完整的3D检测任务上评估VoxelNet。实验结果表明,VoxelNet大大优于最先进的基于LiDAR的3D检测方法。我们还证明了VoxelNet在从LiDAR点云中检测行人和骑自行车的人方面取得了令人鼓舞的结果。
3D传感器技术的快速发展促使研究人员开发有效的表示来检测和定位点云中的目标。一些早期的特征表示方法是 [39, 8, 7, 19, 40, 33, 6, 25, 1, 34, 2]。当有丰富而详细的3D形状信息可用时,这些手工制作的特征会产生令人满意的结果。然而,它们无法适应更复杂的形状和场景,也无法从数据中学习所需的不变性,导致在自主导航等不受控制的场景中取得有限的成功。
鉴于图像提供了详细的纹理信息,许多算法从2D图像中推断出3D边界框[4, 3, 42, 43, 44, 36]。然而,基于图像的3D检测方法的准确性受限于深度估计的准确性。
几种基于LIDAR的3D目标检测技术利用体素网格表示。[41, 9]用6个统计量对每个非空体素进行编码,这些统计量源自体素中包含的所有点。[37]融合了多个局部统计数据来表示每个体素。[38]计算体素网格上截断的有符号距离。[21]对3D体素网格使用二进制编码。[5]通过计算鸟瞰视图中的多通道特征图和正面视图中的圆柱坐标,引入了 LiDAR 点云的多视图表示。其他几项研究将点云投影到透视图上,然后使用基于图像的特征编码方案[28、15、22]。
还有几种多模态融合方法可以结合图像和激光雷达来提高检测精度[10,16,5]。与仅使用LiDAR的3D检测相比,这些方法提供了改进的性能,特别是对于小物体(行人、骑自行车的人)或当物体很远时,因为相机提供的测量值比LiDAR多一个数量级。然而,需要一个与LiDAR时间同步和校准的额外摄像头,这限制了它们的使用,并使该解决方案对传感器故障模式更加敏感。在这项工作中,我们专注于仅LiDAR检测。
我们提出了一种新颖的端到端可训练深度架构,用于基于点云的3D检测VoxelNet,它直接对稀疏 3D 点进行操作,避免了手动特征工程引入的信息瓶颈。
我们提出了一种实现 VoxelNet 的有效方法,该方法既受益于稀疏点结构,又受益于体素网格上的高效并行处理。
我们在KITTI基准上进行了实验,结果表明,在基于LiDAR的汽车、行人和自行车检测基准中,VoxelNet产生了最先进的结果。
在本节中,我们将解释VoxelNet的架构、用于训练的损失函数以及实现网络的有效算法。
提出的VoxelNet由三个功能块组成:(1)特征学习网络,(2)卷积中间层,和(3)区域proposal网络[32],如图2所示。在接下来的章节中,我们将详细介绍VoxelNet。
体素分区(Voxel Partition) 给定一个点云,我们将3D空间细分为等间距的体素,如图2所示。假设点云包含3D空间,范围为D、H、W,分别沿Z、Y、X轴。我们相应地定义大小为 v D v_{D} vD、 v H v_{H} vH和 v W v_{W} vW的每个体素。生成的3D体素网格的大小为 D ′ = D / v D D^{\prime}=D / v_{D} D′=D/vD, H ′ = H / v H H^{\prime}=H / v_{H} H′=H/vH, W ′ = W / v W W^{\prime}=W / v_{W} W′=W/vW。在这里,为简单起见,我们假设D、H、W是 v D v_{D} vD、 v H v_{H} vH、 v W v_{W} vW的倍数。
分组(Grouping) 我们根据这些点所在的体素对它们进行分组。由于距离、遮挡、物体的相对姿态和非均匀采样等因素,LiDAR点云是稀疏的,并且在整个空间中具有高度可变的点密度。因此,分组后,一个体素将包含可变数量的点。图2显示了一个示例,其中Voxel-1的点明显多于Voxel-2和Voxel-4,而Voxel-3不包含任何点。
随机抽样(Random Sampling) 通常,高清LiDAR点云由10万个点组成。直接处理所有点不仅会增加计算平台的内存/效率负担,而且整个空间中高度可变的点密度可能会使检测产生偏差。为此,我们从包含超过 T T T个点的体素中随机抽取一个固定数量的点 T T T。这种抽样策略有两个目的,(1)节省计算量(详见第 2.3 节); (2) 减少体素之间的点不平衡,从而减少采样偏差,并为训练增加更多变化。
堆叠体素特征编码(Stacked Voxel Feature Encoding) 关键的创新是VFE层。为简单起见,图2说明了一个体素的分层特征编码过程。不失一般性,我们在下一段中使用VFE Layer-1来描述细节。图3显示了VFE第1层的架构。
将 V = { p i = [ x i , y i , z i , r i ] T ∈ R 4 } i = 1 … t \mathbf{V}=\left\{\mathbf{p}_{i}=\left[x_{i}, y_{i}, z_{i}, r_{i}\right]^{T} \in \mathbb{R}^{4}\right\}_{i=1 \ldots t} V={pi=[xi,yi,zi,ri]T∈R4}i=1…t表示为包含 t ≤ T t ≤ T t≤T个LiDAR点的非空体素,其中 p i p_{i} pi包含第 i i i个点的XYZ坐标, r i r_{i} ri是接收到的反射率。我们首先将局部均值计算为 V \mathbf{V} V中所有点的质心,记为 ( v x , v y , v z ) \left(v_{x}, v_{y}, v_{z}\right) (vx,vy,vz)。然后我们用相对于质心的相对偏移量来增加每个点 p i p_{i} pi并获得输入特征集 V in = { p ^ i = [ x i , y i , z i , r i , x i − v x , y i − v y , z i − v z ] T ∈ R 7 } i = 1 … t \mathbf{V}_{\text {in }}=\left\{\hat{\mathbf{p}}_{i}=\left[x_{i}, y_{i}, z_{i}, r_{i}, x_{i}-v_{x}, y_{i}-v_{y}, z_{i}-v_{z}\right]^{T} \in \mathbb{R}^{7}\right\}_{i=1 \ldots t} Vin ={p^i=[xi,yi,zi,ri,xi−vx,yi−vy,zi−vz]T∈R7}i=1…t。接下来,每个 p i p_{i} pi通过全连接网络(FCN)转换到特征空间,在该空间中,我们可以聚集来自点特征 f i ∈ R m \mathbf{f}_{i} \in \mathbb{R}^{m} fi∈Rm的信息,以对体素内包含的表面形状进行编码。FCN由线性图层、批量归一化(BN)图层和校正线性单位(ReLU)图层组成。在获得逐点特征表示后,我们在与 V \mathbf{V} V关联的所有 f i \mathbf{f}_{i} fi上使用逐元素MaxPooling来获得 V \mathbf{V} V的局部聚合特征 f ~ ∈ R m \tilde{\mathbf{f}} \in \mathbb{R}^{m} f~∈Rm。最后,我们用 f ~ \tilde{\mathbf{f}} f~增加每个 f i \mathbf{f}_{i} fi以形成逐点连接特征 f i out = [ f i T , f T ] T ∈ R 2 m \mathbf{f}_{i}^{\text {out }}=\left[\mathbf{f}_{i}^{T}, \mathbf{f}^{T}\right]^{T} \in \mathbb{R}^{2 m} fiout =[fiT,fT]T∈R2m。因此我们得到输出特征集 V out = { f i out } i … t \mathbf{V}_{\text {out }}=\left\{\mathbf{f}_{i}^{\text {out }}\right\}_{i \ldots t} Vout ={fiout }i…t。所有非空体素都以相同的方式编码,并且它们在FCN中共享相同的参数集。
我们使用VFE-i( c i n c_{in} cin, c o u t c_{out} cout)来表示第i个VFE层,它将维度 c i n c_{in} cin的输入特征转换为维度 c o u t c_{out} cout的输出特征。线性层学习大小为 c in × ( c out / 2 ) c_{\text {in }} \times\left(c_{\text {out }} / 2\right) cin ×(cout /2)的矩阵,逐点连接产生维度 c o u t c_{out} cout的输出。
因为输出特征结合了逐点特征和局部聚合特征,堆叠VFE层对体素内的点交互进行编码,并使最终特征表示能够学习描述性形状信息。如图2所示。通过FCN将VFE- n n n的输出转换为 R C \mathbb{R}^{C} RC,并应用element-wise最大池化(Maxpool),获得体素式特征,其中 C C C是体素式特征的维度,如图2所示。
稀疏张量表示 通过仅处理非空体素,我们获得了体素特征的列表,每个体素特征唯一地与特定非空体素的空间坐标相关联。所获得的体素特征列表可以表示为稀疏的4D张量,大小为 C × D ′ × H ′ × W ′ C \times D^{\prime} \times H^{\prime} \times W^{\prime} C×D′×H′×W′,如图2所示。尽管点云包含约100k点,但超过90%的体素通常是空的。将非空体素特征表示为稀疏张量大大降低了反向传播期间的内存使用和计算成本,这是我们高效实现的关键步骤。
我们使用 Conv M D ( c i n , c out , k , s , p ) \operatorname{Conv} M \mathrm{D}\left(c_{i n}, c_{\text {out }}, \mathbf{k}, \mathbf{s}, \mathbf{p}\right) ConvMD(cin,cout ,k,s,p)来表示多维卷积算子,其中 c i n c_{in} cin和 c o u t c_{out} cout是输入和输出通道的数量, k \mathbf{k} k, s \mathbf{s} s和 p \mathbf{p} p是分别对应于内核大小、步长大小和填充大小的M维向量。当M维上的大小相同时,我们使用标量来表示大小,例如 k k k表示 k = ( k , k , k ) \mathbf{k}=(k, k, k) k=(k,k,k)。每个卷积中间层依次应用3D卷积、BN层和ReLU层。卷积中间层在逐渐扩大的感受野内聚集了体素特征,为形状描述增加了更多的上下文。卷积中间层中滤波器的详细尺寸在第3节中解释。
最近,区域proposal网络[32]已成为性能最佳的目标检测框架[38、5、23]的重要组成部分。在这项工作中,我们对[32]中提出的RPN架构进行了几项关键修改,并将其与特征学习网络和卷积中间层相结合,形成端到端的可训练pipeline。
我们的RPN的输入是卷积中间层提供的特征图。该网络的架构如图4所示。该网络具有三个完全卷积层块。每个块的第一层通过步长为2的卷积对特征图进行减半下采样,之后是步长为1的卷积序列(×q表示滤波器的q次应用)。在每个卷积层之后,应用BN和ReLU操作。然后,我们将每个块的输出上采样到固定大小,并连接以构建高分辨率特征图。最后,该特征图被映射到期望的学习目标:(1)概率得分图和(2)回归图。
设 { a i pos } i = 1 … N pos \left\{a_{i}^{\text {pos }}\right\}_{i=1 \ldots N_{\text {pos }}} {aipos }i=1…Npos 为 N P O S N_{POS} NPOS positive锚集合, { a j neg } j = 1 … N neg \left\{a_{j}^{\text {neg }}\right\}_{j}=1 \ldots N_{\text {neg }} {ajneg }j=1…Nneg 为 N n e g N_{neg} Nneg negative锚集合。我们将一个3D ground truth框参数化为 ( x c g , y c g , z c g , l g , w g , h g , θ g ) \left(x_{c}^{g}, y_{c}^{g}, z_{c}^{g}, l^{g}, w^{g}, h^{g}, \theta^{g}\right) (xcg,ycg,zcg,lg,wg,hg,θg),其中 x c g , y c g , z c g x_{c}^{g}, y_{c}^{g}, z_{c}^{g} xcg,ycg,zcg表示中心位置, l g , w g , h g l^{g}, w^{g}, h^{g} lg,wg,hg是框的长度、宽度、高度, θ g \theta^{g} θg是绕Z轴的偏航旋转。为了从参数化为 ( x c a , y c a , z c a , l a , w a , h a , θ a ) \left(x_{c}^{a}, y_{c}^{a}, z_{c}^{a}, l^{a}, w^{a}, h^{a}, \theta^{a}\right) (xca,yca,zca,la,wa,ha,θa)的匹配的positive锚中检索出ground truth框,我们定义了包含对应于中心位置 Δ x , Δ y , Δ z \Delta x, \Delta y, \Delta z Δx,Δy,Δz,三个维度 Δ l , Δ w , Δ h \Delta l, \Delta w, \Delta h Δl,Δw,Δh和旋转 Δ θ \Delta \theta Δθ的7个回归目标的残差向量 u ∗ ∈ R 7 \mathbf{u}^{*} \in \mathbb{R}^{7} u∗∈R7,其计算方法为:
Δ x = x c g − x c a d a , Δ y = y c g − y c a d a , Δ z = z c g − z c a h a Δ l = log ( l g l a ) , Δ w = log ( w g w a ) , Δ h = log ( h g h a ) Δ θ = θ g − θ a ( 1 ) \begin{aligned} &\Delta x=\frac{x_{c}^{g}-x_{c}^{a}}{d^{a}}, \Delta y=\frac{y_{c}^{g}-y_{c}^{a}}{d^{a}}, \Delta z=\frac{z_{c}^{g}-z_{c}^{a}}{h^{a}} \\ &\Delta l=\log \left(\frac{l^{g}}{l^{a}}\right), \Delta w=\log \left(\frac{w^{g}}{w^{a}}\right), \Delta h=\log \left(\frac{h^{g}}{h^{a}}\right) \\ &\Delta \theta=\theta^{g}-\theta^{a} \end{aligned} \quad\quad \quad\quad(1) Δx=daxcg−xca,Δy=daycg−yca,Δz=hazcg−zcaΔl=log(lalg),Δw=log(wawg),Δh=log(hahg)Δθ=θg−θa(1)
其中 d a = ( l a ) 2 + ( w a ) 2 d^{a}=\sqrt{\left(l^{a}\right)^{2}+\left(w^{a}\right)^{2}} da=(la)2+(wa)2是锚框底部的对角线。这里,我们的目的是直接估计定向的3D框,并且用对角线 d a d_{a} da均匀地归一化 Δ x \Delta x Δx和 Δ y \Delta y Δy,这不同于[32,38,22,21,4,3,5]。我们将损失函数定义如下:
L = α 1 N p o s ∑ i L c l s ( p i p o s , 1 ) + β 1 N n e g ∑ j L c l s ( p j n e g , 0 ) + 1 N p o s ∑ i L r e g ( u i , u i ∗ ) ( 2 ) \begin{aligned} L &=\alpha \frac{1}{N_{\mathrm{pos}}} \sum_{i} L_{\mathrm{cls}}\left(p_{i}^{\mathrm{pos}}, 1\right)+\beta \frac{1}{N_{\mathrm{neg}}} \sum_{j} L_{\mathrm{cls}}\left(p_{j}^{\mathrm{neg}}, 0\right) \\ &+\frac{1}{N_{\mathrm{pos}}} \sum_{i} L_{\mathrm{reg}}\left(\mathbf{u}_{i}, \mathbf{u}_{i}^{*}\right) \end{aligned} \quad\quad \quad\quad(2) L=αNpos1i∑Lcls(pipos,1)+βNneg1j∑Lcls(pjneg,0)+Npos1i∑Lreg(ui,ui∗)(2)
其中, p i p o s p_{i}^{\mathrm{pos}} pipos和 p j n e g p_{j}^{\mathrm{neg}} pjneg分别代表positive锚 a i pos a_{i}^{\text {pos }} aipos 和negative锚 a j n e g a_{j}^{\mathrm{neg}} ajneg的softmax输出,而 u i ∈ R 7 \mathbf{u}_{i} \in \mathbb{R}^{7} ui∈R7和 u i ∗ ∈ R 7 \mathbf{u}_{i}^{*} \in \mathbb{R}^{7} ui∗∈R7是positive锚 a i pos a_{i}^{\text {pos }} aipos 的回归输出和ground truth。前两项是 { a i pos } i = 1 … N pos \left\{a_{i}^{\text {pos }}\right\}_{i=1 \ldots N_{\text {pos }}} {aipos }i=1…Npos 和 { a i neg } i = 1 … N neg \left\{a_{i}^{\text {neg}}\right\}_{i=1 \ldots N_{\text {neg}}} {aineg}i=1…Nneg的归一化分类损失,其中 L c l s L_{cls} Lcls代表二元交叉熵损失, α , β \alpha, \beta α,β是平衡相对重要性的系数。最后一项 L r e g L_{reg} Lreg是回归损失,我们使用SmoothL1函数[12,32]。
GPU 针对处理密集张量结构进行了优化。直接使用点云的问题是点在空间上稀疏分布,每个体素都有可变数量的点。我们设计了一种将点云转换为密集张量结构的方法,其中堆叠的VFE操作可以跨点和体素并行处理。
该方法总结在图5中。我们初始化一个 K × T × 7 K × T × 7 K×T×7维张量结构来存储体素输入特征缓冲区,其中 K K K是非空体素的最大数量, T T T是每个体素的最大点数,7是每个点的输入编码维度.这些点在处理之前是随机的。对于点云中的每个点,我们检查相应的体素是否已经存在。该查找操作在O(1)中使用哈希表有效地完成,其中体素坐标用作哈希键。如果体素已经初始化,我们将点插入到体素位置(如果点少于 T T T),否则忽略该点。如果体素没有被初始化,我们就初始化一个新的体素,将它的坐标存储在体素坐标缓冲区中,并将点插入到这个体素位置。体素输入特征和坐标缓冲区可以通过单次遍历点列表来构建,因此其复杂度为O(n)。为了进一步提高内存/计算效率,可以只存储有限数量的体素( K K K),并忽略来自点数很少的体素的点。
构建体素输入缓冲区后,堆叠VFE仅涉及点级和体素级密集操作,可在GPU上并行计算。请注意,在VFE中的连接操作之后,我们将对应于空点的特征重置为零,这样它们就不会影响计算的体素特征。最后,使用存储的坐标缓冲区,我们将计算的稀疏体素结构重新组织到密集体素网格。以下卷积中间层和RPN操作在密集体素网格上工作,可以在GPU上有效实现。
在本节中,我们将解释VoxelNet的实现细节和训练过程。
我们的实验设置基于KITTI数据集[11]的LiDAR规范。
汽车检测 对于此任务,我们分别考虑沿Z、Y、X轴在 [ − 3 , 1 ] × [ − 40 , 40 ] × [ 0 , 70.4 ] [-3,1] \times[-40,40] \times[0,70.4] [−3,1]×[−40,40]×[0,70.4]米范围内的点云。投影在图像边界之外的点被移除[5]。我们选择 v D = 0.4 , v H = 0.2 , v W = 0.2 v_{D}=0.4, v_{H}=0.2, v_{W}=0.2 vD=0.4,vH=0.2,vW=0.2米的体素大小,这导致 D ′ = 10 , H ′ = 400 , W ′ = 352 D^{\prime}=10, H^{\prime}=400, W^{\prime}=352 D′=10,H′=400,W′=352。我们将 T = 35 T = 35 T=35设置为每个非空体素中随机采样点的最大数量。我们使用两个VFE层VFE-1(7, 32)和VFE-2(32, 128)。最终的FCN将VFE-2输出映射到 R 128 \mathbb{R}^{128} R128。因此,我们的特征学习网络生成了一个形状为 128 × 10 × 400 × 352 128 × 10 × 400 × 352 128×10×400×352的稀疏张量。为了聚集基于体素的特征,我们采用三个卷积中间层,依次为 C o n v 3 D ( 128 , 64 , 3 , ( 2 , 1 , 1 ) , ( 1 , 1 , 1 ) ) Conv3D(128,64,3,(2,1,1),(1,1,1)) Conv3D(128,64,3,(2,1,1),(1,1,1))、 C o n v 3 D ( 64 , 64 , 3 , ( 1 , 1 , 1 ) , ( 0 , 1 , 1 ) ) Conv3D(64,64,3,(1,1,1),(0,1,1)) Conv3D(64,64,3,(1,1,1),(0,1,1))和 C o n v 3 D ( 64 , 64 , 3 , ( 2 , 1 , 1 ) , ( 1 , 1 ) Conv3D(64,64,3,(2,1,1),(1,1) Conv3D(64,64,3,(2,1,1),(1,1),这产生大小为 64 × 2 × 400 × 352 64 × 2 × 400 × 352 64×2×400×352的4D张量。变形后,RPN的输入是大小为 128 × 400 × 352 128 × 400 × 352 128×400×352的特征图,其中尺寸对应于3D张量的通道、高度和宽度。图4说明了此任务的详细网络架构。与[5]不同的是,我们仅使用一种锚尺寸, l a = 3.9 , w a = 1.6 , h a = 1.56 l^{a}=3.9, w^{a}=1.6, h^{a}=1.56 la=3.9,wa=1.6,ha=1.56米,以 z c a = − 1.0 z_{c}^{a}=-1.0 zca=−1.0米为中心,旋转两次,0度和90度。我们的锚匹配标准如下:如果锚具有与ground truth的并集(IoU)的最高交集或者其与ground truth的IoU高于0.6(鸟瞰视图),则锚被认为是正的(positive)。如果锚和所有ground truth框之间的IoU小于0.45,则锚被认为是负的(negative)。如果他们在区间0.45≤IoU≤0.6的任何ground truth,我们把锚忽略。我们在公式2中设置 α = 1.5 \alpha=1.5 α=1.5和 β = 1 \beta=1 β=1。
行人和自行车检测 输入范围(我们的经验观察表明,超出这个范围,来自行人和骑自行车的人的激光雷达返回变得非常稀疏,因此检测结果将不可靠。)分别为沿Z、Y、X轴的 [ − 3 , 1 ] × [ − 20 , 20 ] × [ 0 , 48 ] [-3,1] \times[-20,20] \times[0,48] [−3,1]×[−20,20]×[0,48]米。我们使用与汽车检测相同的体素大小,得到 D = 10 , H = 200 , W = 240 D=10, H=200, W=240 D=10,H=200,W=240。我们设置 T = 45 T = 45 T=45以获得更多的LiDAR点以更好地捕获形状信息。特征学习网络和卷积中间层与汽车检测任务中使用的网络相同。对于RPN,我们通过将第一个2D卷积中的步幅大小从2更改为1,对图4中的块1进行了修改。这允许更精细的锚匹配分辨率,这对于检测行人和骑自行车的人是必要的。我们使用锚尺寸 l a = 0.8 , w a = 0.6 , h a = 1.73 l_{a} = 0.8, w_{a} = 0.6, h_{a} = 1.73 la=0.8,wa=0.6,ha=1.73米,以 z c a = − 0.6 z_{c}^{a}=-0.6 zca=−0.6米为中心,旋转0度和90度进行行人检测,并使用锚尺寸 l a = 1.76 , w a = 0.6 , h a = 1.73 l_{a} = 1.76,w_{a} = 0.6,h_{a} = 1.73 la=1.76,wa=0.6,ha=1.73米,以 z c a = − 0.6 z_{c}^{a} = −0.6 zca=−0.6,旋转0度和90度用于骑车人检测。具体的锚匹配标准如下:如果锚具有最高的IoU和ground truth,或者其IoU和ground truth高于0.5,则我们将该锚指定为正(postive)。如果一个锚与每个ground truth的IoU小于0.35,则该锚点被认为是负(negative)。对于任何一个ground truth为 0.35 ≤ I o U ≤ 0.5 0.35 ≤ IoU ≤ 0.5 0.35≤IoU≤0.5的锚点,我们都忽略。
在训练期间,我们使用随机梯度下降(SGD),前150个epoch的学习率为0.01,最后10个epoch的学习率降低到0.001。我们使用16个点云的批大小。
在少于4000个训练点云的情况下,从头开始训练我们的网络将不可避免地遭受过拟合。为了减少这个问题,我们引入了三种不同形式的数据增强。增强的训练数据是即时生成的,无需存储在磁盘上[20]。
定义集合 M = { p i = [ x i , y i , z i , r i ] T ∈ R 4 } i = 1 , … , N \mathbf{M}=\left\{\mathbf{p}_{i}=\left[x_{i}, y_{i}, z_{i}, r_{i}\right]^{T} \in \mathbb{R}^{4}\right\}_{i=1, \ldots, N} M={pi=[xi,yi,zi,ri]T∈R4}i=1,…,N为整个点云,由N个点组成。我们将3D边界框 b i \mathbf{b}_{i} bi参数化为 ( x c , y c , z c , l , w , h , θ ) \left(x_{c}, y_{c}, z_{c}, l, w, h, \theta\right) (xc,yc,zc,l,w,h,θ),其中 x c , y c , z c x_{c}, y_{c}, z_{c} xc,yc,zc是中心位置, l , w , h l, w, h l,w,h是长度、宽度、高度, θ \theta θ是yaw绕Z轴旋转。我们定义 Ω i = { p ∣ x ∈ [ x c − l / 2 , x c + l / 2 ] , y ∈ [ y c − w / 2 , y c + w / 2 ] , z ∈ [ z c − h / 2 , z c + h / 2 ] , p ∈ M } \Omega_{i}=\left\{\mathbf{p} \mid x \in\left[x_{c}-l / 2, x_{c}+l / 2\right], y \in\left[y_{c}-w / 2, y_{c}+\right.\right.\left.w / 2], z \in\left[z_{c}-h / 2, z_{c}+h / 2\right], \mathbf{p} \in \mathbf{M}\right\} Ωi={p∣x∈[xc−l/2,xc+l/2],y∈[yc−w/2,yc+w/2],z∈[zc−h/2,zc+h/2],p∈M}作为包含 b i \mathbf{b}_{i} bi内所有LiDAR点的集合,其中 p = [ x , y , z , r ] \mathbf{p}=[x, y, z, r] p=[x,y,z,r]表示整个集合M中的一个特定LiDAR点。
第一种形式的数据增强将扰动独立地应用于每个ground truth 3D边界框以及框内的那些LiDAR点。具体来说,围绕Z轴,我们通过均匀分布的随机变量 Δ θ ∈ [ − π / 10 , + π / 10 ] \Delta \theta \in[-\pi / 10,+\pi / 10] Δθ∈[−π/10,+π/10]相对于 ( x c , y c , z c ) \left(x_{c}, y_{c}, z_{c}\right) (xc,yc,zc)旋转 b i \mathbf{b}_{i} bi和相关的 Ω i \Omega_{i} Ωi。然后我们将平移(Δx, Δy, Δz)添加到 b i \mathbf{b}_{i} bi的XYZ分量和 Ω i \Omega_{i} Ωi中的每个点,其中Δx、Δy、Δz独立于均值为零和标准差1.0的高斯分布。为了避免物理上不可能的结果,我们在扰动后在任何两个框碰撞测试,如果检测到碰撞,则恢复到原始状态。由于扰动被独立地应用于每个ground truth框和相关联的激光雷达点,网络能够从比原始训练数据多得多的变化中学习。
其次,我们将全局缩放应用于所有ground truth框 b i \mathbf{b}_{i} bi和整个点云M。具体来说,我们将每个 b i \mathbf{b}_{i} bi的XYZ坐标和三维,以及M中所有点的XYZ坐标与从均匀分布[0.95,1.05]中抽取的随机变量相乘。如基于图像的分类[35,18]和检测任务[12,17]所示,引入全局尺度增强提高了用于检测具有各种尺寸和距离的物体的网络的鲁棒性。
最后,我们将全局旋转应用于所有ground truth框 b i \mathbf{b}_{i} bi和整个点云M。旋转沿Z轴和(0,0,0)周围应用。全局旋转偏移量是通过从均匀分布 [ − π / 4 , + π / 4 ] [-\pi / 4,+\pi / 4] [−π/4,+π/4]中采样确定的。通过旋转整个点云,我们模拟车辆转弯。
[1] P . Bariya and K. Nishino. Scale-hierarchical 3d object recognition in cluttered scenes. In 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, pages 1657–1664, 2010. 2
[2] L. Bo, X. Ren, and D. Fox. Depth Kernel Descriptors for Object Recognition. In IROS, September 2011. 2
[3] X. Chen, K. Kundu, Z. Zhang, H. Ma, S. Fidler, and R. Urtasun. Monocular 3d object detection for autonomous driving. In IEEE CVPR, 2016. 2, 5, 6, 7
[4] X. Chen, K. Kundu, Y . Zhu, A. Berneshawi, H. Ma, S. Fidler, and R. Urtasun. 3d object proposals for accurate object class detection. In NIPS, 2015. 2, 5, 6, 7
[5] X. Chen, H. Ma, J. Wan, B. Li, and T. Xia. Multi-view 3d object detection network for autonomous driving. In IEEE CVPR, 2017. 1, 2, 3, 4, 5, 6, 7, 8
[6] C. Choi, Y . Taguchi, O. Tuzel, M. Y . Liu, and S. Ramalingam. V oting-based pose estimation for robotic assembly using a 3d sensor. In 2012 IEEE International Conference on Robotics and Automation, pages 1724–1731, 2012. 2
[7] C. S. Chua and R. Jarvis. Point signatures: A new representation for 3d object recognition. International Journal of Computer Vision, 25(1):63–85, Oct 1997. 2
[8] C. Dorai and A. K. Jain. Cosmos-a representation scheme for 3d free-form objects. IEEE Transactions on Pattern Analysis and Machine Intelligence, 19(10):1115–1130, 1997. 2 [9] M. Engelcke, D. Rao, D. Z. Wang, C. H. Tong, and I. Posner. V ote3deep: Fast object detection in 3d point clouds using efficient convolutional neural networks. In 2017 IEEE International Conference on Robotics and Automation (ICRA), pages 1355–1361, May 2017. 1, 2
[10] M. Enzweiler and D. M. Gavrila. A multilevel mixture-ofexperts framework for pedestrian classification. IEEE Transactions on Image Processing, 20(10):2967–2979, Oct 2011. 3
[11] A. Geiger, P . Lenz, and R. Urtasun. Are we ready for autonomous driving? the kitti vision benchmark suite. In Conference on Computer Vision and Pattern Recognition (CVPR), 2012. 1, 2, 5, 6
[12] R. Girshick. Fast r-cnn. In Proceedings of the 2015 IEEE International Conference on Computer Vision (ICCV), ICCV ’15, 2015. 5, 6
[13] R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 580–587, 2014. 1
[14] R. Gomez-Ojeda, J. Briales, and J. Gonzalez-Jimenez. Plsvo: Semi-direct monocular visual odometry by combining points and line segments. In 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), pages 4211–4216, Oct 2016. 1
[15] A. Gonzalez, G. Villalonga, J. Xu, D. V azquez, J. Amores, and A. Lopez. Multiview random forest of local experts combining rgb and lidar data for pedestrian detection. In IEEE Intelligent V ehicles Symposium (IV), 2015. 1, 2
[16] A. Gonzlez, D. Vzquez, A. M. Lpez, and J. Amores. Onboard object detection: Multicue, multimodal, and multiview random forest of local experts. IEEE Transactions on Cybernetics, 47(11):3980–3990, Nov 2017. 3
[17] K. He, X. Zhang, S. Ren, and J. Sun. Deep residual learning for image recognition. In 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 770– 778, June 2016. 2, 6
[18] A. G. Howard. Some improvements on deep convolutional neural network based image classification. CoRR, abs/1312.5402, 2013. 6
[19] A. E. Johnson and M. Hebert. Using spin images for efficient object recognition in cluttered 3d scenes. IEEE Transactions on Pattern Analysis and Machine Intelligence, 21(5):433– 449, 1999. 2
[20] A. Krizhevsky, I. Sutskever, and G. E. Hinton. Imagenet classification with deep convolutional neural networks. In F. Pereira, C. J. C. Burges, L. Bottou, and K. Q. Weinberger, editors, Advances in Neural Information Processing Systems 25, pages 1097–1105. Curran Associates, Inc., 2012. 1, 6
[21] B. Li. 3d fully convolutional network for vehicle detection in point cloud. In IROS, 2017. 1, 2, 5, 7
[22] B. Li, T. Zhang, and T. Xia. V ehicle detection from 3d lidar using fully convolutional network. In Robotics: Science and Systems, 2016. 1, 2, 5, 7
[23] T. Lin, P . Goyal, R. B. Girshick, K. He, and P . Dollár. Focal loss for dense object detection. IEEE ICCV, 2017. 4
[24] W. Liu, D. Anguelov, D. Erhan, C. Szegedy, S. Reed, C.-Y . Fu, and A. C. Berg. Ssd: Single shot multibox detector. In ECCV, pages 21–37, 2016. 2
[25] A. Mian, M. Bennamoun, and R. Owens. On the repeatability and quality of keypoints for local feature-based 3d object retrieval from cluttered scenes. International Journal of Computer Vision, 89(2):348–361, Sep 2010. 2
[26] Y .-J. Oh and Y . Watanabe. Development of small robot for home floor cleaning. In Proceedings of the 41st SICE Annual Conference. SICE 2002., volume 5, pages 3222–3223 vol.5, Aug 2002. 1
[27] Y . Park, V . Lepetit, and W. Woo. Multiple 3d object tracking for augmented reality. In 2008 7th IEEE/ACM International Symposium on Mixed and Augmented Reality, pages 117– 120, Sept 2008. 1
[28] C. Premebida, J. Carreira, J. Batista, and U. Nunes. Pedestrian detection combining RGB and dense LIDAR data. In IROS, pages 0–1. IEEE, Sep 2014. 1, 2
[29] C. R. Qi, H. Su, K. Mo, and L. J. Guibas. Pointnet: Deep learning on point sets for 3d classification and segmentation. Proc. Computer Vision and Pattern Recognition (CVPR), IEEE, 2017. 1
[30] C. R. Qi, L. Yi, H. Su, and L. J. Guibas. Pointnet++: Deep hierarchical feature learning on point sets in a metric space. arXiv preprint arXiv:1706.02413, 2017. 1
[31] J. Redmon and A. Farhadi. YOLO9000: better, faster, stronger. In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2017. 2
[32] S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn: Towards real-time object detection with region proposal networks. In Advances in Neural Information Processing Systems 28, pages 91–99. 2015. 2, 3, 4, 5
[33] R. B. Rusu, N. Blodow, and M. Beetz. Fast point feature histograms (fpfh) for 3d registration. In 2009 IEEE International Conference on Robotics and Automation, pages 3212– 3217, 2009. 2
[34] J. Shotton, A. Fitzgibbon, M. Cook, T. Sharp, M. Finocchio, R. Moore, A. Kipman, and A. Blake. Real-time human pose recognition in parts from single depth images. In CVPR 2011, pages 1297–1304, 2011. 2
[35] K. Simonyan and A. Zisserman. V ery deep convolutional networks for large-scale image recognition. CoRR, abs/1409.1556, 2014. 6
[36] S. Song and M. Chandraker. Joint sfm and detection cues for monocular 3d localization in road scenes. In IEEE Conference on Computer Vision and Pattern Recognition (CVPR), pages 3734–3742, June 2015. 2
[37] S. Song and J. Xiao. Sliding shapes for 3d object detection in depth images. In European Conference on Computer Vision, Proceedings, pages 634–651, Cham, 2014. Springer International Publishing. 1, 2
[38] S. Song and J. Xiao. Deep Sliding Shapes for amodal 3D object detection in RGB-D images. In CVPR, 2016. 1, 2, 4, 5
[39] F. Stein and G. Medioni. Structural indexing: efficient 3-d object recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 14(2):125–145, 1992. 2
[40] O. Tuzel, M.-Y . Liu, Y . Taguchi, and A. Raghunathan. Learning to rank 3d features. In 13th European Conference on Computer Vision, Proceedings, Part I, pages 520–535, 2014. 2
[41] D. Z. Wang and I. Posner. V oting for voting in online point cloud object detection. In Proceedings of Robotics: Science and Systems, Rome, Italy, July 2015. 1, 2
[42] Y . Xiang, W. Choi, Y . Lin, and S. Savarese. Data-driven 3d voxel patterns for object category recognition. In Proceedings of the IEEE International Conference on Computer Vision and Pattern Recognition, 2015. 2
[43] M. Z. Zia, M. Stark, B. Schiele, and K. Schindler. Detailed 3d representations for object recognition and modeling. IEEE Transactions on Pattern Analysis and Machine Intelligence, 35(11):2608–2623, 2013. 2
[44] M. Z. Zia, M. Stark, and K. Schindler. Are cars just 3d boxes? jointly estimating the 3d shape of multiple objects. In 2014 IEEE Conference on Computer Vision and Pattern Recognition, pages 3678–3685, June 2014. 2