文章目录
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
Y\in[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 2\sigma_i^2})
Yp,k=exp(2σi2−(p−qi)2)
高斯核半径
σ
\sigma
σ为:
σ
=
m
a
x
(
f
(
w
l
,
r
)
,
τ
)
\sigma=max(f(wl,r),\tau)
σ=max(f(wl,r),τ)
定义了
τ
=
2
,
r
=
0.1
\tau=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\{\begin{array}{ll} \left(1-\hat{Y}_{\mathbf{p}, k}\right)^{\alpha} \log \left(\hat{Y}_{\mathbf{p}, k}\right) & \text { if } Y_{\mathbf{p}, k}=1 \\ \left(1-Y_{\mathbf{p}, k}\right)^{\beta}\left(\hat{Y}_{\mathbf{p}, k}\right)^{\alpha} \log \left(1-\hat{Y}_{\mathbf{p}, k}\right) & \text { otherwise } \end{array}\right.
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}})\right|
Lsize=N1i=1∑N∣∣∣S^qi−log(si)∣∣∣
通过这样的做法,可以不用传统的NMS做法,从而减小计算量,能够更快生成bbox。
Experiments