在图1中,Botton-up 3D proposal generation可以译为自底向上的3D预选目标框的生成。Canonical是形容词,翻译为“正规的”。Canonical 3D Box按字面意思,似乎要翻译为“正规的3D框”,但是这种翻译结果有点让我摸不着头脑。简单起见,Canonical 3D Box Refinement就译为3D目标框的精细优化吧。
2.2 3D预选目标框的生成流程
从图1可见,原始点云经过一个面向点云的编码器和解码器架构(Point Cloud Encoder-Decoder),获取点云中各个点的特征(Point-wise Feature vector),统称为点云特征。Point-wise是逐点或每个点的意思。后缀wise表示“每个”的含义。在阅读文献的时候,还会碰到类似pixel-wise词,指每个像素。点云特征先经过前景点分割框架(Foreground Point Segmentation)获取前景点,在图1中用蓝色点标出。前景点指属于目标类别的点,而地面点或者灌木点或者房屋点属于背景点。然后,前景点的点云特征经过基于框的3d预目标生成网络(Bin-based 3D Box Generation)获取预目标的3d框。如图1的英文标注所示,每一个前景点都会回归一个3D目标框。
我初次看图1会有一种错觉,会以为Foreground Point Segmentation和Bin-based 3D Box Generation是同时工作的。其实不是的。先预测前景点,然后根据前景点做3d目标框回归。Bin-based我译为基于框的,可能不是很贴合语境。论文作者指出Point Cloud Encoder-Decoder是基于PointNet++实现的,获取每一个点的特征。同时也保留了每个点的xyz位置信息。前景点分类是一个分类问题。考虑到原始点云中,背景点的数量远远大于前景点数量,即正负样本不均衡,所以分类误差损失函数选择使用交叉熵损失函数的改进版Focal loss。Focal指关注焦点,Focal loss的目的是让正样本的误差比重更大一点。有关Focal loss的知识可参考这篇博客。Bin-based 3D Box Generation的网络结构比较简单,把每个前景点的特征输入到MLP层中,回归出一个
7
×
1
7\times 1
7×1向量表示3d框(
7
7
7的原因在2.3节讲解)。假设前景点数目是
M
M
M个,那么预选3d框的数目也是
M
M
M个。最后对这
M
M
M个预选3d框进行非极大值抑制(NMS),得到一批抑制后端预选3d框。Bin-based 3D Box Generation的误差损失函数将在下一节讨论。
2.3 对基于区间的3d框误差函数的理解
一般而言,会使用七个参数刻画一个3d框,即
(
x
,
y
,
z
,
h
,
w
,
l
,
θ
)
(x,y,z,h,w,l,\theta)
(x,y,z,h,w,l,θ)。
(
x
,
y
,
z
)
(x,y,z)
(x,y,z)表示3d框的中心点在雷达坐标系的位置。
(
h
,
w
,
l
)
(h,w,l)
(h,w,l)表示3d框的高度,宽度和长度。
θ
\theta
θ表示3d框在俯视图下的旋转角度。为了让Bin-based 3D Box Generation回归出精度更高的3d框,作者设计了一个基于Bin的3d框误差函数。我首先来看看作者画的一张描述Bin的示意图,如图2所示。这里把bin译为区间比较合适。在一个雷达坐标系中,
x
z
xz
xz轴组成的平面平行于地面,而
y
y
y轴垂直于地面。考虑到3d目标一般是在地上运动,同一类别的目标中心在
y
y
y轴上的坐标值不会相差很多。比如轿车,地面到车心的距离大概在1.3米左右。此外,同一类别目标的长宽高也基本上差不多。因此3d框的
y
,
h
,
w
,
l
y,h,w,l
y,h,w,l可以很精确地被回归预测。直接使用smooth L1损失函数就足够了。实际情况下,
x
,
z
,
θ
x,z,\theta
x,z,θ的差异比较大,做回归预测的精度也会差一些。于是,PointRCNN采用一种基于区间的误差函数来跟精确地刻画
x
,
z
,
θ
x,z,\theta
x,z,θ的误差。来看看图2。
图2:描述区间的示意图
对于一个预选3d框,蓝色的点表示Foreground Point Segmentation预测的前景点,即目标中的点。紫色点表示特别前景点(interest foreground point),它是预选3d框的中心。对于一个预选3d框(称为proposal),特别前景点的坐标记为
(
x
(
p
)
,
y
(
p
)
,
z
(
p
)
)
(x^{(p)},y^{(p)},z^{(p)})
(x(p),y(p),z(p)),而其他前景点坐标
(
x
p
,
y
p
,
z
p
)
(x^p,y^p,z^p)
(xp,yp,zp)。这里记号
p
p
p表示proposal的含义。
A. 先考虑参数
x
,
z
x,z
x,z的损失函数。
把一个3d预选框对应的前景点投影在
x
z
xz
xz轴组成的平面上,预测的框中心的坐标是
(
x
(
p
)
,
z
(
p
)
)
(x^{(p)},z^{(p)})
(x(p),z(p)),而其他前景点的坐标则是
(
x
p
,
z
p
)
(x^p,z^p)
(xp,zp)。记这个3d预选框的中心真值坐标是
(
x
~
(
p
)
,
z
~
(
p
)
)
(\widetilde{x}^{(p)}, \widetilde{z}^{(p)})
(x(p),z(p))。对一般的目标检测算法,关于
x
,
z
x,z
x,z的损失函数可能直接设计为:
L
u
∈
{
x
,
z
}
=
∑
p
P
r
s
m
o
o
t
h
_
L
1
(
u
(
p
)
−
u
~
(
p
)
)
L_{u\in \{x,z\}} =\sum_{p}^{Pr} smooth\_L1(u^{(p)} - \widetilde{u}^{(p)})
Lu∈{x,z}=∑pPrsmooth_L1(u(p)−u(p))
其中
P
r
Pr
Pr表示所有的3d预选框。但是作者认为实践过程中平滑
L
1
L1
L1范数还是对点云噪声比较敏感。作者借鉴了F-PointNet中回归问题转换为分类问题的思想。什么是回归问题转换为多分类问题?举个例子,比方说我需要回归参数
w
w
w,目标物体的宽度,考虑到这个物体可能是人也可能是车,
w
∈
[
0.4
m
,
1.4
m
]
w\in [0.4m, 1.4m]
w∈[0.4m,1.4m]。如果使用误差函数
∣
w
e
s
t
−
w
∣
1
\vert w_{est}-w\vert_1
∣west−w∣1效果很差,可以把
w
w
w分成若干个区间(bin),比如
(
0.4
m
,
0.5
m
)
,
(
0.5
m
,
0.6
m
)
,
.
.
.
,
(
1.3
m
,
1.4
m
)
(0.4m,0.5m),(0.5m,0.6m),...,(1.3m,1.4m)
(0.4m,0.5m),(0.5m,0.6m),...,(1.3m,1.4m),回归
w
w
w就变为预测
w
w
w在哪一个区间的问题,即一个分类问题。一般使用one_hot向量对分类问题编码,然后使用交叉熵(cross-entropy)表示分类问题的损失函数。但是这样做,即便分类对了,
w
w
w的误差还是在
0.1
m
0.1m
0.1m以内。在F-PointNet中,混合使用了平滑
L
1
L1
L1误差和交叉熵误差函数(这种混合式的做法也逐渐成为主流,交叉熵误差函数用于估计一个大概的区间,而平滑
L
1
L1
L1误差做更加细致的误差分析):
L
w
=
S
m
o
o
t
h
_
L
1
(
w
e
s
t
,
w
)
+
E
n
t
r
o
p
y
(
o
h
(
w
r
e
s
)
,
o
h
(
w
)
)
L_w = Smooth\_L1(w_{est},w) + Entropy(oh(w_{res}),oh(w))
Lw=Smooth_L1(west,w)+Entropy(oh(wres),oh(w))
其中
E
n
t
r
o
p
y
(
⋅
)
Entropy(\cdot)
Entropy(⋅)表示交叉熵函数。
o
h
(
⋅
)
oh(\cdot)
oh(⋅)表示变量的one_hot编码。讲解完回归问题转换为分类问题的思想,再回到PointRCNN的论文中。类比于上述的例子,我想回归
x
x
x和
z
z
z,也可以使用回归问题转换为分类问题的思想。如果把
x
z
xz
xz平面硬生生的划分为很多小方格(500平方米,每个方格0.05平方米,需要一万个小区间呀),再使用one_hot编码会耗费很多的计算空间。
于是作者换了一个角度,以3d预选框的中心点
(
x
(
p
)
,
z
(
p
)
)
(x^{(p)},z^{(p)})
(x(p),z(p))为中心划分小方格。对于一个预选框内的前景点
(
x
p
,
z
p
)
(x^p,z^p)
(xp,zp),它到中心点的坐标是
(
x
p
−
x
(
p
)
,
z
p
−
z
(
p
)
)
(x^p - x^{(p)},z^p - z^{(p)})
(xp−x(p),zp−z(p))。如果
(
x
(
p
)
,
z
(
p
)
)
(x^{(p)},z^{(p)})
(x(p),z(p))越接近于真值
(
x
~
(
p
)
,
z
~
(
p
)
)
(\widetilde{x}^{(p)}, \widetilde{z}^{(p)})
(x(p),z(p)),那么有
(
x
p
−
x
(
p
)
)
−
(
x
p
−
x
ˉ
(
p
)
)
→
0
(x^p - x^{(p)}) - (x^p-\bar{x}^{(p)}) \rightarrow 0
(xp−x(p))−(xp−xˉ(p))→0
(
z
p
−
z
(
p
)
)
−
(
z
p
−
z
ˉ
(
p
)
)
→
0
(z^p - z^{(p)}) - (z^p-\bar{z}^{(p)}) \rightarrow 0
(zp−z(p))−(zp−zˉ(p))→0
以3d预选框的中心点
(
x
(
p
)
,
z
(
p
)
)
(x^{(p)},z^{(p)})
(x(p),z(p))为中心划分小方格。设小方格的边长为
δ
\delta
δ。上式可以推出一个弱结论(Weak Conclusion):
⌊
(
x
p
−
x
(
p
)
)
/
δ
⌋
−
⌊
(
x
p
−
x
~
(
p
)
)
/
δ
⌋
→
0
\lfloor(x^p - x^{(p)})/\delta\rfloor - \lfloor(x^p-\widetilde{x}^{(p)})/\delta\rfloor \rightarrow 0
⌊(xp−x(p))/δ⌋−⌊(xp−x(p))/δ⌋→0
⌊
(
z
p
−
z
(
p
)
)
/
δ
⌋
−
⌊
(
z
p
−
z
~
(
p
)
)
/
δ
⌋
→
0
\lfloor(z^p - z^{(p)})/\delta\rfloor - \lfloor(z^p-\widetilde{z}^{(p)})/\delta\rfloor \rightarrow 0
⌊(zp−z(p))/δ⌋−⌊(zp−z(p))/δ⌋→0
其中
⌊
(
x
p
−
x
(
p
)
)
/
δ
⌋
\lfloor(x^p - x^{(p)})/\delta\rfloor
⌊(xp−x(p))/δ⌋表示
x
p
x^p
xp在第几个小方格上,或者说是在
x
(
p
)
x^{(p)}
x(p)下
x
p
x^p
xp在
x
x
x轴方格索引,记为
b
i
n
x
(
p
)
bin_x^{(p)}
binx(p)。符号
⌊
x
⌋
\lfloor x \rfloor
⌊x⌋表示对
x
x
x做向下取整,比如
⌊
3.72
⌋
=
3
\lfloor 3.72 \rfloor = 3
⌊3.72⌋=3(使用向下取整是有意义的,它在第3.72个格子上相当于它在第3个格子上)。而
⌊
(
x
p
−
x
ˉ
(
p
)
)
/
δ
⌋
\lfloor(x^p-\bar{x}^{(p)})/\delta\rfloor
⌊(xp−xˉ(p))/δ⌋记为
b
i
n
~
x
(
p
)
\widetilde{bin}_x^{(p)}
binx(p)。上式将变为:
b
i
n
x
(
p
)
−
b
i
n
~
x
(
p
)
→
0
bin_x^{(p)} - \widetilde{bin}_x^{(p)} \rightarrow 0
binx(p)−binx(p)→0
b
i
n
z
(
p
)
−
b
i
n
~
z
(
p
)
→
0
bin_z^{(p)} - \widetilde{bin}_z^{(p)} \rightarrow 0
binz(p)−binz(p)→0
其中
b
i
n
x
(
p
)
∈
[
−
N
,
−
(
N
−
1
)
,
.
.
.
,
0
,
.
.
.
,
N
−
1
,
N
]
bin_x^{(p)}\in [-N,-(N-1),...,0,...,N-1,N]
binx(p)∈[−N,−(N−1),...,0,...,N−1,N]。使用
b
i
n
bin
bin后,回归问题变成分类问题。紧接着,作者使用one_hot对
b
i
n
bin
bin进行编码,表示为一个
(
2
N
+
1
)
×
1
(2N+1)\times 1
(2N+1)×1的向量
o
h
(
b
i
n
)
oh(bin)
oh(bin)。使用交叉熵,上式将被改写为:
E
n
t
r
o
p
y
(
o
h
(
b
i
n
x
(
p
)
)
−
o
h
(
b
i
n
~
x
(
p
)
)
)
→
0
Entropy(oh(bin_x^{(p)}) - oh(\widetilde{bin}_x^{(p)})) \rightarrow 0
Entropy(oh(binx(p))−oh(binx(p)))→0
E
n
t
r
o
p
y
(
o
h
(
b
i
n
z
(
p
)
)
−
o
h
(
b
i
n
~
z
(
p
)
)
)
→
0
Entropy(oh(bin_z^{(p)}) - oh(\widetilde{bin}_z^{(p)})) \rightarrow 0
Entropy(oh(binz(p))−oh(binz(p)))→0
记
F
c
l
s
(
b
i
n
x
(
p
)
,
b
i
n
~
x
(
p
)
)
=
E
n
t
r
o
p
y
(
o
h
(
b
i
n
x
(
p
)
)
−
o
h
(
b
i
n
~
x
(
p
)
)
)
F_{cls}(bin_x^{(p)}, \widetilde{bin}_x^{(p)}) = Entropy(oh(bin_x^{(p)}) - oh(\widetilde{bin}_x^{(p)}))
Fcls(binx(p),binx(p))=Entropy(oh(binx(p))−oh(binx(p)))。上式相当于:
u
∈
{
x
,
z
}
,
F
c
l
s
(
b
i
n
u
(
p
)
,
b
i
n
~
u
(
p
)
)
→
0
u\in\{x,z\},F_{cls}(bin_u^{(p)}, \widetilde{bin}_u^{(p)}) \rightarrow 0
u∈{x,z},Fcls(binu(p),binu(p))→0
PointRCNN作者想采用F-PointNet的模式,想混合使用了平滑
L
1
L1
L1误差和交叉熵误差函数。交叉熵误差函数就是
F
c
l
s
(
b
i
n
x
(
p
)
,
b
i
n
~
x
(
p
)
)
F_{cls}(bin_x^{(p)}, \widetilde{bin}_x^{(p)})
Fcls(binx(p),binx(p))。那么平滑
L
1
L1
L1误差函数是怎么定义的呢?我举个例子,比如
(
x
p
−
x
(
p
)
)
/
δ
=
3.72
(x^p - x^{(p)})/\delta=3.72
(xp−x(p))/δ=3.72,而
(
x
p
−
x
~
(
p
)
)
/
δ
)
=
3.58
(x^p-\widetilde{x}^{(p)})/\delta)=3.58
(xp−x(p))/δ)=3.58。经过向下取整后,
b
i
n
x
(
p
)
=
b
i
n
~
x
(
p
)
=
3
bin_x^{(p)}=\widetilde{bin}_x^{(p)}=3
binx(p)=binx(p)=3,那么
F
c
l
s
(
⋅
)
=
0
F_{cls}(\cdot)=0
Fcls(⋅)=0。使用交叉熵误差函数已经不能使
x
x
x预测的更加精确了。实际上它们还相差了
0.14
0.14
0.14。自然是希望把这一点误差考虑进去:
[
(
x
p
−
x
(
p
)
)
/
δ
−
b
i
n
x
(
p
)
]
−
[
(
x
p
−
x
~
(
p
)
)
/
δ
−
b
i
n
~
x
(
p
)
]
=
0.14
[(x^p - x^{(p)})/\delta - bin_x^{(p)}] - [(x^p-\widetilde{x}^{(p)})/\delta-\widetilde{bin}_x^{(p)}] = 0.14
[(xp−x(p))/δ−binx(p)]−[(xp−x(p))/δ−binx(p)]=0.14
希望这个误差尽可能为零:
[
(
x
p
−
x
(
p
)
)
/
δ
−
b
i
n
x
(
p
)
]
−
[
(
x
p
−
x
~
(
p
)
)
/
δ
−
b
i
n
~
x
(
p
)
]
→
0
[(x^p - x^{(p)})/\delta - bin_x^{(p)}] - [(x^p-\widetilde{x}^{(p)})/\delta-\widetilde{bin}_x^{(p)}] \rightarrow 0
[(xp−x(p))/δ−binx(p)]−[(xp−x(p))/δ−binx(p)]→0
对上式做个等价变形:
1
C
[
(
x
p
−
x
(
p
)
)
−
(
δ
⋅
b
i
n
x
(
p
)
+
1
2
δ
)
]
−
1
C
[
(
x
p
−
x
~
(
p
)
)
−
(
δ
⋅
b
i
n
~
x
(
p
)
+
1
2
δ
)
]
→
0
\frac{1}{C}[(x^p - x^{(p)}) - (\delta \cdot bin_x^{(p)}+\frac{1}{2}\delta)] - \frac{1}{C}[(x^p-\widetilde{x}^{(p)})- (\delta\cdot \widetilde{bin}_x^{(p)} + \frac{1}{2}\delta)] \rightarrow 0
C1[(xp−x(p))−(δ⋅binx(p)+21δ)]−C1[(xp−x(p))−(δ⋅binx(p)+21δ)]→0
记
r
e
s
x
(
p
)
=
1
C
[
(
x
p
−
x
(
p
)
)
−
(
δ
⋅
b
i
n
x
(
p
)
+
1
2
δ
)
]
res_x^{(p)}=\frac{1}{C}[(x^p - x^{(p)}) - (\delta \cdot bin_x^{(p)}+\frac{1}{2}\delta)]
resx(p)=C1[(xp−x(p))−(δ⋅binx(p)+21δ)]。 记
r
e
s
~
x
(
p
)
=
1
C
[
(
x
p
−
x
~
(
p
)
)
−
(
δ
⋅
b
i
n
~
x
(
p
)
+
1
2
δ
)
]
\widetilde{res}_x^{(p)}=\frac{1}{C}[(x^p-\widetilde{x}^{(p)})- (\delta\cdot \widetilde{bin}_x^{(p)} + \frac{1}{2}\delta)]
resx(p)=C1[(xp−x(p))−(δ⋅binx(p)+21δ)]
上式简写为:
r
e
s
x
(
p
)
−
r
e
s
~
x
(
p
)
→
0
res_x^{(p)} - \widetilde{res}_x^{(p)} \rightarrow 0
resx(p)−resx(p)→0
对回归问题会使用平滑
L
1
L1
L1损失函数。于是记
F
r
e
g
(
r
e
s
x
(
p
)
,
r
e
s
~
x
(
p
)
)
=
S
m
o
o
t
h
_
L
1
(
r
e
s
x
(
p
)
−
r
e
s
~
x
(
p
)
)
F_{reg}(res_x^{(p)} , \widetilde{res}_x^{(p)})=Smooth\_L1(res_x^{(p)} - \widetilde{res}_x^{(p)})
Freg(resx(p),resx(p))=Smooth_L1(resx(p)−resx(p))。因此,对
x
x
x和
z
z
z的回归误差函数是:
u
∈
{
x
,
z
}
,
F
r
e
g
(
r
e
s
u
(
p
)
,
r
e
s
~
u
(
p
)
)
→
0
u\in\{x,z\},F_{reg}(res_u^{(p)}, \widetilde{res}_u^{(p)}) \rightarrow 0
u∈{x,z},Freg(resu(p),resu(p))→0
为了规范化整数索引(让它们从
0
,
1
,
.
.
.
,
2
N
−
1
0,1,...,2N-1
0,1,...,2N−1,而不是
−
N
,
.
.
.
,
N
-N,...,N
−N,...,N),给
b
i
n
u
(
p
)
bin_u^{(p)}
binu(p)做了修改,添加一个搜索范围标量
S
S
S(有关于
S
S
S的例子可以看
B
部
分
B部分
B部分),这时候
b
i
n
u
(
p
)
bin_u^{(p)}
binu(p)的定义如下所示:
u
∈
{
x
,
z
}
,
b
i
n
u
(
p
)
=
⌊
(
u
p
−
u
ˉ
(
p
)
+
S
)
/
δ
⌋
u\in\{x,z\},bin_u^{(p)}=\lfloor(u^p-\bar{u}^{(p)}+S)/\delta\rfloor
u∈{x,z},binu(p)=⌊(up−uˉ(p)+S)/δ⌋
同时对
r
e
s
u
(
p
)
res_u^{(p)}
resu(p)做了重新的定义:
u
∈
{
x
,
z
}
,
r
e
s
u
(
p
)
=
1
C
[
(
u
p
−
u
(
p
)
)
+
S
−
(
δ
⋅
b
i
n
u
(
p
)
+
1
2
δ
)
]
u\in\{x,z\}, res_u^{(p)}=\frac{1}{C}[(u^p - u^{(p)}) + S - (\delta \cdot bin_u^{(p)}+\frac{1}{2}\delta)]
u∈{x,z},resu(p)=C1[(up−u(p))+S−(δ⋅binu(p)+21δ)]
对
b
i
n
θ
(
p
)
bin_{\theta}^{(p)}
binθ(p)进行one_hot编码,然后使用交叉熵损失函数,得到
F
c
l
s
(
b
i
n
θ
(
p
)
,
b
i
n
~
θ
(
p
)
)
F_{cls}(bin_{\theta}^{(p)}, \widetilde{bin}_{\theta}^{(p)})
Fcls(binθ(p),binθ(p))。
同样,当
θ
=
2
5
π
\theta=\frac{2}{5}\pi
θ=52π,真值
θ
~
=
3
5
π
\widetilde\theta = \frac{3}{5}\pi
θ=53π时,
b
i
n
θ
(
p
)
=
b
i
n
~
θ
(
p
)
=
3
bin_{\theta}^{(p)}=\widetilde{bin}_{\theta}^{(p)}=3
binθ(p)=binθ(p)=3。这个时候
F
c
l
s
(
⋅
)
=
0
F_{cls}(\cdot)=0
Fcls(⋅)=0,不能起到指导作用。但是角度误差还差了
1
5
π
\frac{1}{5}\pi
51π。和A部分讨论的方式一样,构造一个
r
e
s
θ
(
p
)
=
θ
−
δ
⋅
b
i
n
θ
(
p
)
res_{\theta}^{(p)} = \theta -\delta \cdot bin_{\theta}^{(p)}
resθ(p)=θ−δ⋅binθ(p)。同样构造,
r
e
s
~
θ
(
p
)
=
θ
−
δ
⋅
b
i
n
~
θ
(
p
)
\widetilde{res}_{\theta}^{(p)} = \theta -\delta \cdot \widetilde{bin}_{\theta}^{(p)}
resθ(p)=θ−δ⋅binθ(p)。在这个例子中:
r
e
s
θ
(
p
)
−
r
e
s
~
θ
(
p
)
=
−
1
5
π
res_{\theta}^{(p)} - \widetilde{res}_{\theta}^{(p)} = -\frac{1}{5}\pi
resθ(p)−resθ(p)=−51π
自然希望误差尽可能地小:
r
e
s
θ
(
p
)
−
r
e
s
~
θ
(
p
)
→
0
res_{\theta}^{(p)} - \widetilde{res}_{\theta}^{(p)} \rightarrow 0
resθ(p)−resθ(p)→0
因此设计了针对角度的回归误差
F
r
e
g
(
r
e
s
θ
(
p
)
,
r
e
s
~
θ
(
p
)
)
=
S
m
o
o
t
h
_
L
1
(
r
e
s
θ
(
p
)
−
r
e
s
~
θ
(
p
)
)
F_{reg}(res_{\theta}^{(p)}, \widetilde{res}_{\theta}^{(p)})=Smooth\_L1(res_{\theta}^{(p)} - \widetilde{res}_{\theta}^{(p)})
Freg(resθ(p),resθ(p))=Smooth_L1(resθ(p)−resθ(p))。
C. 最后考虑参数
y
,
w
,
l
,
h
y,w,l,h
y,w,l,h的损失函数
在2.3节开头讨论过,对于同一类目标目标而言,参数
y
,
w
,
l
,
h
y,w,l,h
y,w,l,h变换范围不大,于是可以设置一个先验值
y
0
,
w
0
,
l
0
,
h
0
y_0,w_0,l_0,h_0
y0,w0,l0,h0。这些参数在先验值附近小范围地波动,于是误差函数可以简单设置为
F
r
e
g
(
r
e
s
u
(
p
)
,
r
e
s
~
u
(
p
)
)
F_{reg}(res_{u}^{(p)}, \widetilde{res}_{u}^{(p)})
Freg(resu(p),resu(p)):
u
∈
{
y
,
w
,
l
,
h
}
,
r
e
s
u
(
p
)
=
(
u
−
u
0
)
,
r
e
s
~
u
(
p
)
=
(
u
~
−
u
0
)
u\in\{y,w,l,h\}, res_{u}^{(p)}=(u-u_0), \widetilde{res}_{u}^{(p)}=(\widetilde{u}-u_0)
u∈{y,w,l,h},resu(p)=(u−u0),resu(p)=(u−u0)
F
r
e
g
(
r
e
s
u
(
p
)
,
r
e
s
~
u
(
p
)
)
=
S
m
o
o
t
h
_
L
1
(
r
e
s
u
(
p
)
−
r
e
s
~
u
(
p
)
)
F_{reg}(res_{u}^{(p)}, \widetilde{res}_{u}^{(p)}) = Smooth\_L1(res_{u}^{(p)} - \widetilde{res}_{u}^{(p)})
Freg(resu(p),resu(p))=Smooth_L1(resu(p)−resu(p))
这里
F
r
e
g
(
r
e
s
u
(
p
)
,
r
e
s
~
u
(
p
)
)
F_{reg}(res_{u}^{(p)}, \widetilde{res}_{u}^{(p)})
Freg(resu(p),resu(p))只是形式上跟前面的误差函数保持一致罢了。它等价于:
F
r
e
g
(
r
e
s
u
(
p
)
,
r
e
s
~
u
(
p
)
)
=
S
m
o
o
t
h
_
L
1
(
u
−
u
~
)
F_{reg}(res_{u}^{(p)}, \widetilde{res}_{u}^{(p)}) = Smooth\_L1(u-\widetilde u)
Freg(resu(p),resu(p))=Smooth_L1(u−u)
D. 总误差损失函数
对于每一个预选3d框(proposal),总误差函数是(公式太多字了,这次我直接截图):
因为每一个前景点产生一个预选3d框,所以预选3d框的总数等于前景点的数目
N
p
o
s
N_{pos}
Npos。
3. 思考
写到这里基本上对基于Bin的误差机制弄清楚了。对于一个回归问题,先把真值范围划分为若干个区间,使回归问题变成“归属于哪个区间”的分类问题,使用one_hot编码和交叉熵损失函数,回归到一个正确的区间之后,再使用平滑
L
1
L1
L1范数做细粒度的回归。