CVPR2020: 集成全局和局部特征的端到端一阶段停车位检测网络

1 前言

本文重点介绍CVPR2020的一篇文章,该文章针对IPM图进行了泊车位检测和分类,属于端到端的一阶段网络,特此记录本篇读书笔记.

论文标题: End-to-End Trainable One-Stage Parking Slot Detection Integrating Global and Local Information

论文原文地址:

2 摘要

本文针对AVM图提出了一种端到端的单阶段泊车位检测神经网络,该方法通过CNN可以同时获取泊车位的全局语义特征(泊车位入口,类型以及是否被占用)以及局部语义特征(入口角点的位置和方向),利用二者信息的融合可以获取IPM图上泊车位的信息.

该方法将AVM图按行和列划分成网络(grid),对每一个单元格(cell)通过卷积神经网络来提取对应的全局语义特征和局部语义特征,最后的检测结果是综合全局特征和语义特征后经过NMS后进行输出.

该方法通过一个全卷积神经网络直接获取上述信息,属于一个端到端的一阶段网络.在公开的数据集上,实验结果表明该方法具有相当地竞争力,准确率99.77%,召回率99.77%,类型识别率100%,车位占用识别率99.31%,同时检测帧率可以达到60fps.

3 概述

现有方法:

利用深度学习对AVM图进行泊车位检测可以大致分为两类:第一类首先利用神经网络检测出泊车位的入口角点,然后连成入口边通过传统的几何约束进而生成泊车位;第二类直接利用目标检测网络通过RPN来学习泊车位框,该方法虽然是端到端训练的,但是定位不够精确,同时不能给出泊车位的朝向.

创新点:

  • 本文提出的方法可以获取很高的检测率和角点定位的精确性通过综合CNN提取到的全局信息和局部信息.
  • 本文提出的方法为一阶段全卷积神经网络,可以被端到端的训练直接输出泊车位位置朝向信息.
  • 本文提出的方法不需要设置几何约束和对应的参数,因为这些约束直接包含在网络的训练.
  • 本文提出的方法可以获取泊车位的多种特性,包括位置 朝向 是否被占用等.

4 网络结构介绍

4.1 网络结构

本文所述方法的总体结构如下:

解释如下:

  • a) 所提供网络的输入图像,输入尺寸 416X416
  • b) 特征提取主干网络,本文采用VGG16作为主干网络.更加复杂和最近几年的主干测试后在车位检测任务上性能和VGG16类似,当然该网络主干也可以根据具体应用场景进行相应地替换.
  • c) 这里VGG16在pool5进行输出,所以我们在c中得到的特征图的大小为13X13X512.
  • d) 表示两个全局特征和局部特征提取器,为了减少计算量,本文采用1层卷积来提取特征图上的全局语义信息和局部语义信息.全局信息提取分支共包含9个3X3X512的filter, 局部信息提取分支共包含5个3X3X512的filter.关于这两个分支的详细解释在下节进行详细介绍.
  • e) 表示全局语义提取分支的输出为13X13X9,相应的局部语义特征提取分支的输出为13X13X5
  • f) 表示对全局语义输出和局部语义输出进行NMS
  • g) 表示可视化后的输出结果.蓝色紫色和红色线分别代表垂直平行和斜向车位.实线表明该车位未被占用同时虚线表明该车为被占用.同时该网络可以从一张AVM图像上获得泊车位的位置 朝向 类型以及车位占用情况.

4.2 全局特征提取分支

全局信息提取分支网络结构如下:

解释如下:

全局语义提取分支的输出为13X13X9 , 被分为了四个部分(13X13X1, 13X13X4,13X13X3,13X13X1) 如上图第二行所示.

  • a) 代表每个cell是否为车位内部单元格,通过使用一个3X3X512的filter对图2(c)中fetaure map进行卷积操作后接sigmoid激活函数得到,所以其大小为13X13X1;
    上图可视化绿色cell表示该cell位于车位内部,灰色cell表示该cell不在车位内部
  • b) 代表一个车位入口两个角点相对于车位内部每个cell中心点的偏移量,这里通过使用四个3X3X512的filter对图2(c)中feature map进行卷积操作后接sigmoid激活函数得到,所以其大小为13X13X4.
  • 上图可视化车位入口两个角点想对于车位内部cell中心点的偏移.红色箭头起点为车位内部cell的中心点,箭头终点指向车位入口角点.为了表示两个2D向量,所以我们的tensor的维度为13X13X4如上文所述.
  • c)代表车位内部cell预测输出泊车位的类型,这里通过使用三个3X3X512的filter对图2(c)中的feture map进行卷积后接sigmoid激活函数得到,所以其大小为13X13X3. 上图可视化车位内部的cell所预测的车位的类型,垂直车位用蓝色表示,平行车位用紫色表示,斜向车位用红色表示.这里支持三种类型车位的预测,所以我们的tensor的维度为13X13X3如上所述.
  • d)代表车位内部cell预测泊车位是否被它车占用,这里通过使用一个3X3X512的filter对图2(c)中的feture map进行卷积后接sigmoid激活函数得到,所以其大小为13X13X1. 上图可视化黄色cell预测所属泊车位没有被占用,灰色cell表示所属车位被它车占用.
  • e)代表通过融合全局信息后,输出泊车位检测的中间结果.蓝色紫色和红色分别表示垂直平行和斜向车位,实线表示泊车位未被占用,虚线分别泊车位被它车占用.上图中红色和蓝色泊车位各有两个,表示有两个cell在对应车位的内部,紫色车位有三个候选输出表示有三个cell在该平行车位内部

本文所提出的方法针对每个cell产生一个车位的候选车位,同时我们需要注意通过全局语义提取分支得到的type和车位是否占用信息是准确的,但是预测车位入口边就不一定准确了,这是因为不同车位不同位置处的cell距离车位入口角点的远近距离不同所导致的,为了进一步提升车位入口角点的定位准确性,我们还需要利用泊车位的局部语义信息.

4.3 局部特征提取分支

局部信息提取分支网络结构如下:

解释如下:

局部语义提取分支的输出为13X13X5 , 被分为了三个部分(13X13X1, 13X13X2,13X13X2)如上图第二行所示.

  • a)代表每个cell是否包含车位入口角点,通过使用一个3X3X512的filter对图2(c)中fetaure map进行卷积操作后接sigmoid激活函数得到,所以其大小为13X13X1; 上图可视化绿色cell表示该cell包含车位入口角点,灰色cell表示该cell内不含车位入口角点.
  • b)代表一个车位入口角点相对于所属cell中心点的偏移量,这里通过使用两个3X3X512的filter对图2(c)中feature map进行卷积操作后接sigmoid激活函数得到,所以其大小为13X13X2. 上图可视化车位入口角点的位置图, 这里采用蓝色箭头表示,其中蓝色箭头起点为包含车位入口角点cell的中心点,箭头终点指向车位入口角点. 这里采用1个2D向量进行表示,所以我们的tensor的维度为13X13X2如上文所述.
  • c)代表泊车位线的方向,这里通过使用两个3X3X512的filter对图2(c)中的feture map进行卷积后接sigmoid激活函数得到,所以其大小为13X13X2. 上图可视化车位角点所属cell所预测的车位线的方向,这里采用红色箭头表示,其中红色箭头起点为包含车位入口角点cell的中心点,终点为车位线方向的单位向量,所以我们的tensor的维度为13X13X2如上文所述.
  • d)代表通过融合局部语义信息后,输出泊车位检测的中间结果.其中紫色x表示车位角点的预测位置,紫色线表示该cell所预测的车位线的方向.

这里通过融合局部语义信息后,预测得到的车位角点的位置相对于利用全局语义信息得到的位置更加精确,这是因为该位置是通过局部信息所得到的包含车位角点的cell所预测的.

4.4 全局局部特征融合

解释如下:

这里通过使用NMS方法对上述利用全局和局部信息得到的候选车位进行过滤,首先利用全局信息得到候选车位的角点,接着利用角点在局部特征图上的位置获得更加精确的利用局部信息预测得到的角点位置,然后将局部信息得到的车位角点的位置替代全局信息得到的车位角点的位置,此时得到结果如图c所示.最后以车位为单位进行NMS操作,得到最终的输出车位检测输出结果,图d所示.

5 loss设计

5.1 总loss

本文训练所使用的总的loss由全局特征loss和局部特征loss加权后得到,相应的计算公式如下:

需要注意的是,我们网络的输出的值的范围均在[0,1]之间. 接下来分别对上述7个loss进行讲解.

5.2 全局特征loss

a) possibility to be within parking slot

预测cell是否位于泊车位内部,这里的计算公式如下:

上式中:

  • 对于13X13的网格来说,如果某个cell在泊车位内部,则 [公式]

否则为0.

  • [公式] 表明第i个cell的中心点是否位于某个泊车位的内部, 如果在泊车位的内部则取值为1,否则为0.
  • 为了平衡位于泊车位内部cell的loss 以及不属于泊车位内部cell的loss的量纲,这里 [公式] 对不属于泊车位内部cell的loss进行加权,该值取值为0.2

b) Location of paired junction

上式中:

  • [公式]  [公式] 表示从第i个cell的中心点到相应的车位的两个角点的二维向量. 我们将其除以 [公式] 将其归一化到(-1,1)之间. 这里 [公式] 代表数据集里泊车位线的最大长度.
  • [公式]  [公式] 表示神经网络的预测值,这里由于sigmoid输出的值位于[0,1]之间,这里将预测值减去0.5后乘以2后转化到(-1,1)之间.

c) Type of parking slot

这里采用交叉熵损失函数来计算每个cell预测泊车位所属类别的loss,这里c=1,2,3分别代表垂直 平行和斜向泊车位

d) Occupancy of parking slot

使用上式来计算每个cell预测所属泊车位是否被占用的loss,

  • [公式] 表示第i个cell预测所属泊车位如果被它车占用,值为1;否则,其值为0.
  • [公式] 表示预测泊车位被占用的loss的权重
  • [公式] 表示预测泊车位空闲的loss的权重.
  • 如果第i个cell所属泊车位如果被占用,则 [公式]取值为1,此时 [公式] 取值为0.

5.3 局部特征loss

a) Possibility to include junction

使用上式来计算每个cell是否包含泊车位角点的loss,其中:

  • [公式] 表示第i个cell是否包含泊车位角点,如果包含则值为1,否则值为0
  • [公式]  [公式] 的网络输出预测值
  • 如果第i个cell内包含泊车位角点,则 [公式] 取值为1,否则取值为0.

b) Location of Junction

使用上式来计算每个cell到车位角点向量的loss,其中:

  • [公式] 表示起点为第i个cell的中心点, 终点为车位入口角点的向量.
  • [公式] 表示每个cell的宽和高,这里为32X32
  • [公式]  [公式] 的网络输出预测值,这里减去0.5将其归一化到(-0.5到0.5)之间

c) Orientation of Junction

使用上式来计算每个cell预测所属车位方向的loss,其中:

  • [公式] 表示起点为第i个cell所属车位的单位方向向量.
  • [公式]  [公式] 的网络输出预测值,这里减去0.5,乘以2将其归一化到(-1到1)之间

6 结果分析

6.1 定量分析

a) 在ps2.0公开数据集上,准确率和召回率结果如下:

b) 车位入口角点定位误差和方向预测误差如下:

c) 车位类别预测结果如下:

d) 车位是否被占用预测结果如下:

6.2 定性分析

定性分析结果如下:

7 总结

本文提出了一种综合全局语义特征和局部语义特征来对AVM图进行泊车位检测的神经网络模型,可同时支持车位角点检出,车位类型,是否被它车占用,车位朝向等特性输出,并在公开数据集上达到了SOTA,值得一读.