本文介绍一篇注意力图神经网络用于停车位检测
论文,论文已收录于 RA-L2021。在之前的基于卷积神经网络的停车位检测方法中,很少考虑停车位标记点之间的关联信息,从而导致需要复杂的后处理。在本文中,作者将环视图中的标记点看作图结构数据,使用图神经网络聚合相邻的标记点信息,不需要任何后处理,可以端到端训练
。在ps2.0
和 PSV
停车位数据集上都取得了最优的检测性能。
论文链接为:https://arxiv.org/pdf/2104.02576.pdf
项目链接为:https://github.com/Jiaolong/gcn-parking-slot
1. Method
1.1 Overview
本文提出的基于注意力图神经网络
停车位检测模型结构如下图所示,由三部分组成:Graph feature encoder,Graph feature aggregation,Entrance line discriminator
。停车位一般由四个标记点组成
(
P
1
,
P
2
,
P
3
,
P
4
)
(P_1,P_2,P_3,P_4)
(P1,P2,P3,P4) (四个顶点按照逆时针排序);因此停车位检测问题可以描述为检测车位进入线上顶点
(
P
1
,
P
2
)
(P_1,P_2)
(P1,P2) 的问题。本文提出的停车位检测流程为:
- 给定一张环视图
I
∈
R
H
×
W
×
3
\mathbf{I} \in \mathbb{R}^{H\times W\times 3}
I∈RH×W×3,首先使用卷积神经网络进行特征提取。 然后
标记点检测器
检测标记点,标记点编码网络提取标记点特征。
- 接着使用注意力图神经网络推理标记点之间的关系,本文设计的图神经网络为全连接网络,其中每一个点表示为标记点。
- 最后,使用车位进入线判别器决定两个标记点是否可以形成一个有效的车位进入线。
1.2 Graph Feature Encoder
标价点检测器输出为
S
×
S
×
3
S\times S\times 3
S×S×3 的特征图,其中通道
3
3
3 包含标记点位置
(
x
,
y
)
(x,y)
(x,y) 和置信度
c
c
c。在使用极大值抑制(NMS)后会得到
N
N
N 个标记点。
标记点特征编码器包含
4
4
4 个卷积层,输出特征图为
S
×
S
×
64
S\times S \times 64
S×S×64。对于检测到的
N
N
N 个标记点位置
P
=
(
x
,
y
)
∈
R
N
×
2
P=(x,y) \in \mathbb{R}^{N\times 2}
P=(x,y)∈RN×2,使用双线性插值计算标记点特征。最终得到标记点特征
F
∈
R
N
×
64
\mathbf{F} \in \mathbb{R}^{N\times 64}
F∈RN×64。这里特征图大小
S
=
16
S=16
S=16。
为了增强特征表示,将标记点位置和特征进行融合
:
v
i
=
f
i
+
M
L
P
(
x
i
,
y
i
)
\mathbf{v}_i=\mathbf{f}_i+\mathbf{MLP}(x_i,y_i)
vi=fi+MLP(xi,yi)
其中,
f
i
\mathbf{f}_i
fi 为最初的标记点特征。
1.3 Graph Feature Aggregation
融合后的标记点特征集合
V
\mathbf{V}
V,构造一个全连接的图网络
G
=
(
V
,
E
)
\mathbf{G}=(\mathbf{V},\mathbf{E})
G=(V,E),其中
V
\mathbf{V}
V 表示
N
N
N 个节点
(
x
i
)
(\mathbf{x}_i)
(xi),
E
\mathbf{E}
E 表示
N
×
N
N \times N
N×N 条边。
图神经网络每一层标记点特征更新
方法为:
x
i
l
+
1
=
x
i
l
+
M
L
P
(
[
x
i
l
∥
m
E
i
→
i
l
]
)
\mathbf{x}_{i}^{l+1}=\mathbf{x}_{i}^{l}+\mathbf{M L P}\left(\left[\mathbf{x}_{i}^{l} \| \mathbf{m}_{E_{i} \rightarrow i}^{l}\right]\right)
xil+1=xil+MLP([xil∥mEi→il])
其中
m
E
i
→
i
l
\mathbf{m}_{E_{i} \rightarrow i}^{l}
mEi→il 为第
i
i
i 个节点一阶邻域
E
i
{E}_i
Ei 聚合的信息,由注意力机制计算得来,
[
⋅
∥
⋅
]
[\cdot \| \cdot]
[⋅∥⋅] 为特征结合操作。
对于每一个图节点特征
x
i
l
\mathbf{x}_i^l
xil,query,key,value 计算为:
q
i
=
W
1
l
x
i
l
+
b
1
l
k
j
=
W
2
l
x
j
l
+
b
2
l
v
j
=
W
3
l
x
j
l
+
b
3
l
\begin{aligned} \mathbf{q}_{i} &=\mathbf{W}_{1}^{l} \mathbf{x}_{i}^{l}+\mathbf{b}_{1}^{l} \\ \mathbf{k}_{j} &=\mathbf{W}_{2}^{l} \mathbf{x}_{j}^{l}+\mathbf{b}_{2}^{l} \\ \mathbf{v}_{j} &=\mathbf{W}_{3}^{l} \mathbf{x}_{j}^{l}+\mathbf{b}_{3}^{l} \end{aligned}
qikjvj=W1lxil+b1l=W2lxjl+b2l=W3lxjl+b3l
节点
i
,
j
i,j
i,j 之间的注意力计算为:
α
i
,
j
=
S
o
f
t
m
a
x
(
q
i
T
k
j
)
\alpha_{i,j}=Softmax(\mathbf{q}_i^{T} \mathbf{k}_j)
αi,j=Softmax(qiTkj),则图节点聚合信息为:
m
E
i
→
i
l
=
∑
j
∈
E
i
α
i
,
j
k
v
j
\mathbf{m}_{E_{i} \rightarrow i}^{l}=\sum_{j \in E_{i}} \alpha_{i, j}^{k} \mathbf{v}_{j}
mEi→il=∑j∈Eiαi,jkvj。在本文中,使用多个注意力头,则聚合信息为:
m
E
i
→
i
l
=
W
l
(
m
E
i
→
i
l
,
1
∥
m
E
i
→
i
l
,
2
∥
⋯
∥
m
E
i
→
i
l
,
h
)
\mathbf{m}_{E_{i} \rightarrow i}^{l}=\mathbf{W}^{l}\left(\mathbf{m}_{E_{i} \rightarrow i}^{l, 1}\left\|\mathbf{m}_{E_{i} \rightarrow i}^{l, 2}\right\| \cdots \| \mathbf{m}_{E_{i} \rightarrow i}^{l, h}\right)
mEi→il=Wl(mEi→il,1∥∥∥mEi→il,2∥∥∥⋯∥mEi→il,h)。
1.4 Entrance Line Discriminator
两个图节点特征结合得到一个
1
×
128
1\times 128
1×128 的输入特征,然后输入到线性判别器。最终输出为
K
×
5
K \times 5
K×5 的矩阵,其中
K
=
N
×
N
K=N \times N
K=N×N,表示为标记点对。每一对标记点对包含5个元素:
x
1
,
y
1
,
x
2
,
y
2
,
t
x_1,y_1,x_2,y_2,t
x1,y1,x2,y2,t。其中
(
x
1
,
x
2
,
x
2
,
y
2
)
(x_1,x_2,x_2,y_2)
(x1,x2,x2,y2) 为标记点位置
,
t
t
t 表示形成车位进入线的概率
。
整个损失函数为:
l
o
s
s
=
λ
1
l
o
s
s
p
o
i
n
t
+
λ
2
l
o
s
s
l
i
n
e
loss=\lambda_1 loss_{point} + \lambda_2 loss_{line}
loss=λ1losspoint+λ2lossline
其中标记点损失
l
o
s
s
p
o
i
n
t
loss_{point}
losspoint 为:
los
s
point
=
1
S
2
∑
i
=
1
S
2
{
(
c
i
−
c
i
^
)
2
+
1
i
[
(
x
i
−
x
i
^
)
2
+
(
y
i
−
y
^
i
)
2
]
}
\operatorname{los} s_{\text {point }}=\frac{1}{S^{2}} \sum_{i=1}^{S^{2}}\left\{\left(c_{i}-\hat{c_{i}}\right)^{2}+\mathbb{1}_{i}\left[\left(x_{i}-\hat{x_{i}}\right)^{2}+\left(y_{i}-\hat{y}_{i}\right)^{2}\right]\right\}
losspoint =S21i=1∑S2{(ci−ci^)2+1i[(xi−xi^)2+(yi−y^i)2]}
车位进入线损失
l
o
s
s
l
i
n
e
loss_{line}
lossline 为:
l
o
s
s
l
i
n
e
=
1
N
2
(
−
∑
i
=
1
N
∑
j
=
1
N
l
i
j
^
l
o
g
l
i
j
)
loss_{line} = \frac{1}{N^2} (-\sum_{i=1}^{N}\sum_{j=1}^{N} \hat{l_{ij}}logl_{ij})
lossline=N21(−i=1∑Nj=1∑Nlij^loglij)
2.Experimental Results and Discussion
2.1 Datastes & Setting
ps2.0
停车位数据集包含9827张训练图片(9476个停车位),2338张测试图片(2168个停车位);每一张图片大小为
600
×
600
600 \times 600
600×600,对应物理空间大小为
10
m
×
10
m
10\mathbb{m} \times 10\mathbb{m}
10m×10m。
S
g
\mathbf{S}_g
Sg 表示为停车位真值集合,
S
d
\mathbf{S}_d
Sd 为检测结果集合,如果满足下列条件,则检测结果为真阳性。
∥
(
p
1
g
−
p
1
d
,
p
2
g
−
p
2
d
)
∥
2
<
10
\left\|\left(\mathbf{p}_{1}^{g}-\mathbf{p}_{1}^{d}, \mathbf{p}_{2}^{g}-\mathbf{p}_{2}^{d}\right)\right\|_{2}<10
∥∥(p1g−p1d,p2g−p2d)∥∥2<10
2.2 Results and Discussions
在 ps2.0
和 PSV
数据集上的测试结果如下,同时作者还使用了FCN网络代替图网络,比较了标记点的相似性得分。
2.3 Ablation study
下面是一些对照实验结果,比较了使用不同特征网络的检测性能和时间消耗,位置编码器、图神经网络层数和注意力头个数影响,以及损失函数权重影响。
从中可以看到,标记点损失权重对最终影响是比较大的;不过在ps2.0
数据集上各种特征提取网络的检测性能都已经很高了,后续还需要在更大的数据集上进行测试。