CornerNet是一种一阶段的anchor free方法,主要通过检测一对关键点(左上角+右下角)来进行目标的检测。还提出了corner pooling,这是一种新型的池化方法,可以帮助网络更好的定位边界框的角点。
1、anchor的缺点
(1)造成正负样本不平衡
(2)引入许多超参数和设计选择,anchor的数量和大小,宽高比。
2、CornerNet
将目标物体检测为一对关键点(边界框的左上和右下),使用卷积网络来预测同一物体类别的所有实例的左上角的热图和右下角热图,以及每个检测到的角点的嵌入向量。嵌入向量用于对属于同一目标的一对角点进行分组,训练网络预测类似的嵌入。
卷积网络输出一个左上角热图和一个右下角热图,并输出每个检测到的角点的嵌入矢量。 训练网络以预测属于同一目标的角点的类似嵌入。
3、Corner pooling
CenterNet:Objects as Points
本文将目标检测建模为一个点——边界框的中心点。使用关键点估计来找到中心点,并回归到对象的其他属性,比如:大小,3D位置,方向甚至是姿势。
1、Introduction
目前目标检测的一阶段检测算法或者二阶段的检测算法都依赖于大量的anchor,几乎枚举了所有潜在的边界框,这是非常浪费的。并且生成的潜在边界框需要依赖后处理操作——非极大值抑制,来进行筛选。后处理操作往往是难以训练的,这就使得目标检测算法不是端到端的。
本文提出了一个更加简单有效的方法。CentreNet实现目标检测功能通过预测一个边界框的中心点实现,目标的其他属性比如大小等都直接通过从中心位置的图像特征中回归得到。
目标检测问题的一个关键估计的问题。直接将输入图像送入全卷积网络中生成一个heatmap。heatmap中的最高点(Peaks)就是目标的中心点。heatmap中的每一个peak对应一个目标的中心点。每个Peak的图像特征预测目标边界框的宽高。网络使用标准的监督训练,推理是一个单独的前向过程,不需要非极大值抑制后处理。
本文提出的CenterNet与一阶段的目标检测非常类似,但是有几点重要的不同:
(1)CenterNet分配“anchor”是根据位置,而不是box重叠。不需要手动设计前景背景阈值。
(2)每个目标只有一个正“anchor”,所有不需要非极大值抑制的后处理。只需要简单的提取heatmap中的局部峰值。
(3)CenterNet使用了更大的输出分辨率(输出步长为4),传统的输出步长为16,这减少了对多个anchor的需要。
2、Preliminary
输入图像
I
∈
R
W
×
H
×
3
I \in R^{W\times H \times 3}
I∈RW×H×3,目标是生成关键点heatmap
Y
^
∈
[
0
,
1
]
W
R
×
H
R
×
C
\hat{Y} \in [0,1]^ {\frac W R \times \frac H R \times C}
Y^∈[0,1]RW×RH×C,在这里
R
R
R是输出步长,
C
C
C是关键点类型数量。在论文中使用
R
=
4
R=4
R=4 。如果预测对应一个检测到的关键点,则
Y
^
x
,
y
,
c
=
1
\hat{Y}_{x,y,c}=1
Y^x,y,c=1,如果是背景,则
Y
^
x
,
y
,
c
=
0
\hat{Y}_{x,y,c}=0
Y^x,y,c=0。
对于Ground-truth的处理:对于每一个类别
c
c
c的ground-truth关键点
p
∈
R
2
p\in R^2
p∈R2计算一个低分辨率
p
~
=
⌊
p
R
⌋
\widetilde p=\lfloor \frac p R \rfloor
p
=⌊Rp⌋。然后将ground-truth关键点使用Gaussian核
Y
x
y
c
=
e
x
p
(
−
(
x
−
p
~
x
)
2
+
(
y
−
p
~
y
)
2
2
σ
p
2
Y_{xyc}=exp(-\frac{(x-\widetilde p_x)^2+(y-\widetilde p_y)^2}{2\sigma^2_p}
Yxyc=exp(−2σp2(x−p
x)2+(y−p
y)2分解到heatmap上
Y
∈
[
0
,
1
]
W
R
×
H
R
×
C
Y\in [0,1]^{\frac W R \times \frac H R \times C}
Y∈[0,1]RW×RH×C,其中
σ
p
\sigma_p
σp是对象大小自适应标准差。如果说相同类别的两个Gaussians重叠,选择行最大。训练目标使用focal loss在pixel-wise logistic regression:
K
k
=
−
1
N
∑
x
y
c
{
(
1
−
Y
^
x
y
c
)
α
l
o
g
(
Y
^
x
y
c
)
i
f
Y
x
y
c
=
1
(
1
−
Y
x
y
c
)
β
(
Y
^
x
y
c
)
α
l
o
g
(
1
−
Y
^
x
y
c
)
o
t
h
e
r
w
i
s
e
K_k=\frac {-1}{N} \sum_{xyc}\left\{ \begin{aligned} (1-\hat Y_{xyc})^\alpha log(\hat Y_{xyc}) \ \ \ \ \ \ \ \ \ \ if \ Y_{xyc}=1\\ (1-Y_{xyc})^\beta(\hat Y_{xyc})^\alpha log(1-\hat Y_{xyc})\ \ \ \ otherwise \end{aligned} \right.
Kk=N−1xyc∑{(1−Y^xyc)αlog(Y^xyc) if Yxyc=1(1−Yxyc)β(Y^xyc)αlog(1−Y^xyc) otherwise
其中
α
\alpha
α和
β
\beta
β都是focal loss的超参数,
N
N
N是图像
I
I
I中关键点的个数。
为了恢复输出步长引起的离散化误差,还为每一个关键点预测了一个局部偏移。所有的类别共享同一个偏移预测,偏移量使用L1 loss 进行训练:
L
o
f
f
=
1
N
∑
p
∣
O
^
p
~
−
(
p
R
−
p
~
)
∣
L_{off}=\frac 1 N \sum_p|\hat O_{\widetilde p}-(\frac p R - \widetilde p)|
Loff=N1p∑∣O^p
−(Rp−p
)∣
此监督信息只在关键点
p
~
\widetilde p
p
处起作用,在其他的位置被忽略。
假设类别为
c
k
c_k
ck的目标
k
k
k的边界框为
(
x
1
(
k
)
,
y
1
(
k
)
,
x
2
(
k
)
,
y
2
(
k
)
)
(x^{(k)}_1,y^{(k)}_1,x^{(k)}_2,y^{(k)}_2)
(x1(k),y1(k),x2(k),y2(k)),中心点可以被表示为
p
k
=
(
x
1
(
k
)
+
x
2
(
k
)
2
,
y
1
(
k
)
+
y
2
(
k
)
2
)
p_k=(\frac {x_1^{(k)}+x_2^{(k)}}{2},\frac {y_1^{(k)}+y_2^{(k)}}{2})
pk=(2x1(k)+x2(k),2y1(k)+y2(k))。使用关键点估计
Y
^
\hat Y
Y^去预测所有的中心点。此外回归每一个目标
k
k
k的目标大小
s
k
=
(
x
1
(
k
)
−
x
2
(
k
)
,
y
1
(
k
)
−
y
2
(
k
)
)
s_k=(x^{(k)}_1-x^{(k)}_2,y^{(k)}_1-y^{(k)}_2)
sk=(x1(k)−x2(k),y1(k)−y2(k))。为了限制计算压力,对于所有的目标类别使用单个大小预测器
S
^
∈
R
W
R
×
W
R
×
2
\hat S \in {R^{\frac W R \times \frac W R \times 2}}
S^∈RRW×RW×2。使用L1 loss 计算中心点与目标之间的相似性:
L
s
i
z
e
=
1
N
∑
k
=
1
N
∣
S
^
p
k
−
s
k
∣
L_{size}=\frac 1 N \sum^N_{k=1}|\hat S_{pk}-s_k|
Lsize=N1k=1∑N∣S^pk−sk∣
总损失为:
L
d
e
t
=
L
k
−
λ
s
i
z
e
L
s
i
z
e
+
λ
o
f
f
L
o
f
f
L_{det}=L_k-\lambda_{size}L_{size}+\lambda_{off}L_{off}
Ldet=Lk−λsizeLsize+λoffLoff
使用单个网络预测关键点
Y
^
\hat Y
Y^,偏移量
O
^
\hat O
O^,大小
S
^
\hat S
S^。对于每一个位置网络预测
C
+
4
C+4
C+4个值。
推理阶段
首先提取每个类别heatmap的峰值。heatmap的峰值计算方式:≥其8个邻居的值,并且选择前100个峰值。类别
c
c
c的中心点集合
P
^
=
(
x
^
i
,
y
^
i
)
i
=
1
n
\hat P={(\hat x_i,\hat y_i)^n_{i=1}}
P^=(x^i,y^i)i=1n。使用关键点的值
Y
^
x
i
y
i
c
\hat Y_{x_iy_ic}
Y^xiyic作为检测置信度,并且生成边界框的坐标。
(
x
^
i
+
δ
x
^
i
−
w
^
i
/
2
,
y
^
i
+
δ
y
^
i
−
h
^
i
/
2
)
(
x
^
i
+
δ
x
^
i
+
w
^
i
/
2
,
y
^
i
+
δ
y
^
i
+
h
^
i
/
2
)
(\hat x_i+\delta \hat x_i-\hat w_i/2,\hat y_i+\delta \hat y_i-\hat h_i/2)\\ (\hat x_i+\delta \hat x_i+\hat w_i/2,\hat y_i+\delta \hat y_i+\hat h_i/2)
(x^i+δx^i−w^i/2,y^i+δy^i−h^i/2)(x^i+δx^i+w^i/2,y^i+δy^i+h^i/2)
CenterNet: Keypoint Triplets for Object Detection