[Paking Slot系列]Vision-based parking-slot A benchmark and a learning-based approach( IEEE TIP2018)

论文链接:Vision-based parking-slot A benchmark and a learning-based approach
展示链接:https://cslinzhang.github.io/deepps/
环境:Win10 64bit, Matlab2017a/b, CUDA8.0
数据集:公开了数据集ps2.0
应该是第一篇公开基于深度学习的停车位检测算法

1. 摘要(Abstract)

各种不可避免的因素,例如地面材料的多样性、照明条件的变化以及附近树木使用的不可预测的阴影,使得基于视觉的停车位检测比看起来要困难得多。在本文中,试图在一定程度上解决这个问题,做出两点贡献:

  • 提出了一种新的基于深度卷积神经网络(DCNN)的停车位检测方法,即DeepPS,该方法以BEV(bird’s eye view,环绕视图)图像为输入。DeepPS中有两个关键步:
    • 识别输入图像上的所有标记点,
    • 对标记点对形成的局部图像模式进行分类。
  • 其次,为了便于基于视觉的停车位检测研究,建立了大规模的标记数据集。该数据集是该领域最大的数据集,包括从典型室内和室外停车场收集的12165幅环绕视图图像。对于每张图片,标记点和停车位都被仔细标记。(https://cslinzhang.github.io/deepps/

2. 相关工作(Relted Work)

2.1. 之前的方法

  • 在车辆行驶过程中感知可用停车位的方法可分为两类:
    • 基于自由空间的方法和基于视觉的方法:通过识别相邻车辆之间的适当空位来指定目标停车位置。这是使用最广泛的方法,因为它可以使用各种测距传感器来实现,例如超声波传感器、激光扫描仪、短程雷达、结构光、深度相机、立体相机。基于自由空间的方法有一个固有的缺点,即它必须依赖已经正确停放的车辆作为参考。在周围没有车辆的情况下不work,并且准确率依赖相邻车辆的位置和姿势
    • 基于视觉的方法的工作:目标是识别和定位由地面上绘制的停车线段定义的停车位。显然,这种的性能并不取决于相邻车辆的存在或姿势。此外,在大多数情况下,停车线段可以提供比“空闲空间”更准确的停车信息,大多数汽车制造商已经开始生产配备宽视野成像传感器的车辆,通常用于AVM(全景监控)系统。
  • 基于视觉的停车位检测方法近年来开始引起人们的广泛关注,这也是本文的研究重点
    在这里插入图片描述
图1

图1显示了一个典型的基于视觉的停车位检测系统的结构,该系统通常由两个独立的模块组成,即环绕视图同步和环绕视图停车位检测:

以往的方法:

  • 1.分割停车线,估计两条垂直线作为标记槽轮廓,这种简单模型的缺点是无法获得停车位的类型(垂直或平行),也无法处理倾斜的停车位。
  • 2.需要手动确定入口线的方法,不是完全自动化的,限制了在实践中的可用性。
  • 3.全自动方法沿着两条主流发展:
    • 基于直线的方法,缺点:
      • 1)只能检测垂直的停车位,但不能检测平行的停车位;
      • 2) 要求标记槽的引导线应可见。
    • 和基于角点的方法:首先通过Harris角点检测器[43]检测角点,然后通过组合这些角点生成连接点;最后,根据连接对推断停车位。缺点:
      • 1)成功率在很大程度上取决于检测器的鲁棒性

《Vision-basedparking-slot detection: A benchmark and a learning-based approach》中数据集是该领域唯一公开的数据集,由8600张带标签的环视图像组成。
在这里插入图片描述

图2

图2显示了我们收集的八幅包含停车位的典型BEV环绕视图图像,可见,停车位的视觉环境变化很大。这种多样性的原因可能包括不同的地面材料、不同的停车位类型(垂直、平行或倾斜)、不同的停车线颜色、停车线的不完整性、照明条件的变化、附近树木或建筑物造成的阴影

2.2. 本文的贡献

在这里插入图片描述
贡献:

  • 方法
    • 首先,使用基于YoloV2[56]的预先训练的标记点检测器在其上标记点(标记点图案是指以两条停车线段的交叉点为中心的局部图像面片)
    • 对检测到的标记点 P 1 P_1 P1 P 2 P_2 P2,DeepPS将决定它们是否可以形成有效的入口线,如果“是”,DeepPS还需要决定该停车位的类型
  • 数据集:
    • 将《Vision-basedparking-slot detection: A benchmark and a learning-based approach》中建立的8600数据集扩展到更大的范围。新的数据集包括12165张环绕视图图像,涵盖了各种真实案例

3. DeepPS(基于DCNN)

在这里插入图片描述

图4 . (a)、(b)、(c)分别显示了垂直、平行和倾斜停车位的理想模型 DEEPPS采取了三个主要步骤:标记点检测、局部图像模式分类和停车位推断。

3.1. 标记点检测(Marking-Point Detection)

  • 标记点检测,采用当时最好的YOLOv2
    在这里插入图片描述
图5. 为了使标记点检测器旋转不变,每个原始标记图像都被旋转生成一组其旋转版本。(a) 是原始的标记图像,(b)通过旋转(a)30度生成。标记点显示为紫色点,关联的边界框显示为黄色方块

为了训练YOLOv2,手动标记标记点,将标记点 P i P_i Pi为中心的固定大小p*p正方形框作为 P i P_i Pi的真值框(ground-truth bounding box)
基于YoloV2的标记点检测器根据VOC数据集上训练的模型进行了微调。对于微调,mini-batch size设置为64;learning rate从0.0001开始,每50000次 iterations除以10。我们使用了0.0005的weight decay和0.9的momentum

  • 解释:下面是YOLOv2的darknet19_exp2.py的参数设置,可见,因为是fine-tuning,learning rate由原来的0.001改为0.0001;VOC2012有11540 张标注图片(27450 个已被标注的 ROI annotated objects),我们是12165标注BEV图,batch由16增大到64,每50000次 iterations除以10即1epoch需要 12165 ∗ 0.8 / ( 64 b a t c h ) = 152 i t e r a t i o n 12165*0.8/(64batch)=152iteration 121650.8/(64batch)=152iteration,那50000/152=33,即lr_decay_epochs={33,66,99},weight decay和momentum都没改
exp_name = 'darknet19_voc12trainval_exp1'

pretrained_fname = 'darknet19.weights.npz'

start_step = 0
lr_decay_epochs = {
    
    60, 90}
lr_decay = 1./10

max_epoch = 160

weight_decay = 0.0005
momentum = 0.9
init_learning_rate = 1e-3

# for training yolo2
object_scale = 5.
noobject_scale = 1.
class_scale = 1.
coord_scale = 1.
iou_thresh = 0.6

# dataset
imdb_train = 'voc_2012_trainval'
imdb_test = 'voc_2012_test'
batch_size = 1
train_batch_size = 16

3.2. 局部图像模式分类(Local Image Pattern Classification)

检测到 p 1 p_1 p1 p 2 p_2 p2后,需要验证 p 1 p 2 → \overrightarrow{p_1p_2} p1p2 是否为入口线(entrance-line),如果 p 1 p 2 → \overrightarrow{p_1p_2} p1p2 是平行停车位的入口线,距离应该满足: t 1 < ∥ p 1 p 2 → ∥ < t 2 t_1<\parallel\overrightarrow{p_1p_2}\parallel<t_2 t1<p1p2 <t2,如果是垂直或倾斜的停车位,应该满足: t 3 < ∥ p 1 p 2 → ∥ < t 4 t_3<\parallel\overrightarrow{p_1p_2}\parallel<t_4 t3<p1p2 <t4
t 1 t_1 t1 t 2 t_2 t2 t 3 t_3 t3 t 4 t_4 t4是先验知识得到的
在这里插入图片描述

图6

然后,我们需要进一步处理满足距离约束的标记点对。首先,对于一对标记点,尽管它可以满足距离约束,但它们仍然很可能无法形成有效的入口线。例如,在图6中, p 1 p_1 p1 p 2 p_2 p2之间的距离满足作为平行停车位入口线的距离约束;然而,很明显 p 1 p 2 → \overrightarrow{p_1p_2} p1p2 不是有效的入口线,因为它通过另一个标记点。另外,假设 p 1 p 2 → \overrightarrow{p_1p_2} p1p2 是有效的入口线。我们需要确定相关的停车位是顺时针还是逆时针,并确定该停车位是直角还是倾斜。所有这些问题都可以通过将 p 1 p_1 p1 p 2 p_2 p2定义的局部图像块( local image pattern )分类到预定义的类中来解决。
在这里插入图片描述

图7

如图7(a)所示,提取由环绕视图图像上的两个标记点p1和p2定义的局部图像块:

  • 首先,建立一个以 P 1 P_1 P1 P 2 P_2 P2的中点为原点的局部坐标系,然后 p 1 p 2 → \overrightarrow{p_1p_2} p1p2 作为其X轴。它的Y轴可以由此确定。
  • 在这个坐标系中,我们定义了一个矩形区域。其沿X轴的边长设置为 ∥ p 1 p 2 → ∥ + Δ x \parallel\overrightarrow{p_1p_2}\parallel + \Delta x p1p2 +Δx,沿Y轴的边长设置为 Δ y \Delta y Δy
  • 然后正则化到 w × h w \times h w×h的大小,作为 P 1 P_1 P1 P 2 P_2 P2的局部图像块( local image pattern )

在训练阶段,基于标签数据,我们可以得到由标记点对定义的所有局部图像块。根据相关停车位的特征,我们将样本分为7类,“逆时针直角”“逆时针倾斜且停车角度锐角”“逆时针倾斜且停车角度钝角”“顺时针直角”“顺时针倾斜且停车角度钝角”“顺时针倾斜且停车角度锐角”和“无效”,分别对应到图7的(b) - (f)

样本不均衡:在我们收集的数据集中,倾斜停车位的数量远小于直角停车位的数量,我们采用SMOTE(《SMOTE: Synthetic minority over-sampling technique》)对少数类进行抽样

在这里插入图片描述

图8 我们的用于局部DCNN结构

与原始的DCNN结构区别在于:

  • 1)我们的输入图像是 48 × 192 48 \times 192 48×192的灰度图,比原始的DCNN结构输入小很多,输出是7类
  • 2)我们的数据集比较小,所以采用小型网络,以AlexNet为模版

网络大小细节如表1:

表1

在这里插入图片描述

3.3. 停车位推理(Parking-Slot Inference)

在这里插入图片描述

图9

在自动停车系统中,停车位通常被认为是一个平行四边形,通常由其四个顶点的坐标表示。在大多数情况下,两个非标记点顶点不可见,只能通过推理获得它们的坐标。为此,我们需要假设停车位的“深度”是已知的先验知识。如图9所示,垂直、平行和倾斜停车槽的深度分别为 d 1 d_1 d1 d 2 d_2 d2 d 3 d_3 d3
假设 P 1 P_1 P1 P 2 P_2 P2是两个检测到的标记点, P 1 P_1 P1 P 2 P_2 P2定义的局部图像模式被分类为“顺时针直角”或“逆时针直角”在这种情况下,可以轻松计算两个非标记点垂直点 P 3 P_3 P3 P 4 P_4 P4的坐标
例如,在图9(a)中,由 P 1 P_1 P1 P 2 P_2 P2定义的局部图像模式为“顺时针直角”,长度为 ∥ p 1 p 2 → ∥ \parallel\overrightarrow{p_1p_2}\parallel p1p2 表明此停车位应为垂直停车位(而非平行停车位),因此其“深度”为 d 1 d_1 d1 。其P3和P4被推断为:
在这里插入图片描述
当由两个标记点 P 1 P_1 P1 P 2 P_2 P2定义的局部图像模式被分类为“倾斜”时,问题将变得更加复杂,因为我们需要估计标记角度,如图9(c)所示。在图9(c)中,由 P 1 P_1 P1 P 2 P_2 P2定义的局部图像块被分类为“具有锐角的逆时针倾斜”;要估计两个非标记点顶点的位置,需要估计驻车角α
为了解决这个问题,我们采用模版匹配( template-matching)方法: T θ j j = 1 M { T_{\theta_j}}^M_{j=1} Tθjj=1M指理想的T型模版,M是模版总数量,每个模版大小是 s × s s \times s s×s,推理的时候两个点一直匹配:
在这里插入图片描述
P 3 P_3 P3 P 4 P_4 P4计算公式如下:
在这里插入图片描述

4.模型效果

在这里插入图片描述
图11 DeepPS检测到6张带有标记停车位的典型图像。(a)∼(f) 分别属于“室内停车场”“室外正常日光”“室外雨天”“室外阴影”“室外路灯”“倾斜”子集

在这里插入图片描述
图12 DeepPS检测到的四个假阳性示例

  • a) p 1 p_1 p1 p 2 p_2 p2定义的“直角顺时针”局部图像模式被分类为“直角逆时针”
  • b) “倾斜”的局部图像模式被错误分类为“直角”
  • c) p 1 p_1 p1 p 2 p_2 p2定义的“逆时针直角”局部图像模式被错误分类为“顺时针直角”
  • d) “无效”局部图像模式被错误分类为“直角顺时针”

猜你喜欢

转载自blog.csdn.net/qq_35759272/article/details/123852878