【论文笔记】Center-based 3D Object Detection and Tracking
bacakbone
本篇CenterPoint是基本沿用了CenterNet的方法,基本上是在CenterNet网络上做一些扩展工作。 主干网络选用的是Pointpillars和VoxelNet的方法
因此本文的效果也是单阶段网络,并且实现了多目标检测的效果。 从实验结果来看,由于PointPillars没有3D conv的模块,因此速度相比较于VoxelNet要更加快,而VoxelNet由于有更丰富的编码信息,因此结果更加精确一些。
由于nuSences数据集和Kitti数据集的不同,nuSences数据集中的检测范围为:X,Y轴:[-51.2,51.2]m Z轴:[-5,3]m kitti为:x,y,z:[(0, 70.4), (-40, 40), (-3, 1)] (车) [(0, 48), (-20,20), (-2.5, 0.5)] (人,自行车)
从对比可以看得出,nuSences的数据集范围更大。
CenterPoint detection head
对比二维目标检测算法的CenterNet的Detection head。最终回归的结果大致可以分为:
- 要检测物体的中心(目标的高斯分布,分类)
- 回归框
最终CenterPoint的回归结果也大致类似:
总共分为四个结果:
- 热力图(高斯分布,表示物体中心)
- 旋转角度( e = ( s i n ( α ) , c o s ( α ) ) e=(sin(alpha),cos(alpha)) e=(sin(α),cos(α)))
- 回归框大小( w w w, h h h, l l l)
- 偏置offset( o x o_x ox, o y o_y oy, o z o_z oz)
Target Heatmap
(用于判断类别)
热力图: Y ∈ [ 0 , 1 ] w ∗ h ∗ K Yin[0,1]^{w*h*K} Y∈[0,1]w∗h∗K K K K表示 K K K个classes,通过高斯核: Y p , k = e x p ( − ( p − q i ) 2 2 σ i 2 ) Y_{p,k}=exp({-(p-q_i)^2 over 2sigma_i^2}) Yp,k=exp(2σi2−(p−qi)2)
高斯核半径 σ sigma σ为: σ = m a x ( f ( w l , r ) , τ ) sigma=max(f(wl,r), au) σ=max(f(wl,r),τ) 定义了 τ = 2 , r = 0.1 au=2,r=0.1 τ=2,r=0.1 f f f为ConerNet中计算高斯核半径的公式 分部于热力图heatmap上。
p p p为像素点(其实是八个角点), q i q_i qi为每个注释的对象中心点,因此可以看出,热力图回归是一个用物体中心点监督的结果。每个高斯峰值可以用来计算出一个物体的中心。
loss使用focal loss来控制,对分类结果的负结果更好抑制。 L h m = − 1 N ∑ p , k { ( 1 − Y ^ p , k ) α log ( Y ^ p , k ) if Y p , k = 1 ( 1 − Y p , k ) β ( Y ^ p , k ) α log ( 1 − Y ^ p , k ) otherwise L_{hm}=-frac{1}{N} sum_{mathbf{p}, k}left{egin{array}{ll} left(1-hat{Y}_{mathbf{p}, k} ight)^{alpha} log left(hat{Y}_{mathbf{p}, k} ight) & ext { if } Y_{mathbf{p}, k}=1 \ left(1-Y_{mathbf{p}, k} ight)^{eta}left(hat{Y}_{mathbf{p}, k} ight)^{alpha} log left(1-hat{Y}_{mathbf{p}, k} ight) & ext { otherwise } end{array} ight. Lhm=−N1p,k∑⎩⎨⎧(1−Y^p,k)αlog(Y^p,k)(1−Yp,k)β(Y^p,k)αlog(1−Y^p,k) if Yp,k=1 otherwise
Detection head
回归框并不是完全平行于坐标轴的,所以backbone需要学习旋转不变性和旋转等变性(rotational invariance and equivariance)文中将这部分Detection head最终的结果分为中心预测和回归预测,他们共用第一层的可变卷积(deformable convolution),
deformable convolution
就是在这些卷积或者ROI采样层上,添加了位移变量,这个变量根据数据的情况学习,偏移后,相当于卷积核每个方块可伸缩的变化,从而改变了感受野的范围,感受野成了一个多边形。
Circular NMS
这部分讲的其实就是以高斯分布的热力图来确定物体中心来做bbox。在得到每个物体的中心点 q i q_i qi后,计算出bbox的大小 S ^ hat{S} S^,使用标准的groud truth s i s_i si作为监督,通过L1 loss计算: L s i z e = 1 N ∑ i = 1 N ∣ S ^ q i − l o g ( s i ) ∣ L_{s i z e}=frac{1}{N} sum_{i=1}^{N}left|hat{S}_{mathbf{q}_{i}}-log({mathbf{s}_{i}}) ight| Lsize=N1i=1∑N∣∣∣S^qi−log(si)∣∣∣
通过这样的做法,可以不用传统的NMS做法,从而减小计算量,能够更快生成bbox。