自动泊车车位检测
著者 | 机器学习 AI算法工程 校者为汽车人
原文链接:https://mp.weixin.qq.com/s/JaPUiKv_F9RObJKimg_7dQ
APA 自动泊车相关的车位检测算法。
一、背景介绍
自动泊车大体可分为4个等级:
说明
第2级,RPA 远程泊车:驾驶员在车外,通过手机APP的方式控制泊车。
第3级高级泊车辅助(HPA)技术:在开始阶段利用SLAM技术对场景进行建模,并记住常见的停车位置。当执行泊车任务时,在固定位置为起始点的基础上完成操作,并确保车辆能够自主选择并停入预先记录的有效停车位位置。
第四级自动驾驶泊车功能:在执行泊车操作前通过对场景进行SLAM建模并记住常见的停车路径。停车起始位置不具有固定性,并可在停车场内的任意区域启动操作。该功能需依赖室内定位技术辅助完成。
本文分享第1级相关的车位检测算法。

图2 自动泊车
1.1自动泊车
在当今21世纪末期, 自动泊车作为一种先进的 parking 技术, 成为智能出行与辅助驾驶系统中的关键组成部分。从鲁棒性与安全性的角度来看, 该技术主要可分为两部分协同工作: 视觉感知系统与雷达测距装置. 其中, 视觉感知系统自然采用深度学习技术进行图像识别, 而雷达则负责距离测量. 当车辆用于寻找停车位时, 视觉感知系统占据主要作用; 当车辆需倒车入库时, 则依赖于雷达测距技术的支持.
1.2 车位检测
通常情况下,车辆定位主要应用于地下停车场及城市公共区域。相较于其他场所,在大型购物中心地下停车场及城市 public outdoor spaces 中进行自动泊车操作具有较高的实用价值。这不仅能够节省停车时间,还能提升整体出行体验。当车辆进入具备停车位的区域后,在缓缓行驶的过程中启动车辆定位系统进行探测。

图3 检测可以停车的车位
1.3 鱼眼相机
通常配置有四组鱼眼摄像头:前后左右各一组。这些设备主要用于采集周边环境的画面信息。如图所示的是右侧摄像头捕捉的画面。其获取的照片通常不直接用于停车位识别,但可用于后续进行障碍物探测。

图4 鱼眼相机

图5 4路鱼眼相机
1.4 AVM
通过 Around View Monitor (AVM) 进行初步处理后生成拼接后的鸟瞰图。值得注意的是,在 AVM 处理后的照片上完成的车位检测将是后续的重要环节。对于 4 幅存在畸变的照片来说,在执行融合操作之前必须先对它们进行去畸变处理。值得注意的是,在当前的技术条件下我认为车位检测的质量完全受限于 upstream 的 AVM 处理效果这一点非常关键甚至可以说达到了自动泊车的核心地位。另外一种有效的方法是在每幅图像去畸变后单独输入到车位检测网络中分别进行分析处理而不是将所有图像整合在一起一次性完成工作流程。在实际应用中我们发现如下的宽高比是我们在实际工程实践中确定的标准具体尺寸则需根据硬件性能和实际应用需求来确定

图6 AVM鸟瞰图成像
1.5 工程化
开发出车位检测算法后,工程化的实施才刚刚起步,后续的工作依然繁重,离不开团队的协作配合。本文就不涉及这一技术领域相关的讨论和展开。
二、车位检测算法的相关工作
车位检测算法,从21世纪开始说起,那一定是由传统的视觉过渡到深度视觉。
2.1 传统视觉的车位检测
传统视觉的介绍,这里用一些示意图来展示:

第7幅图:基于传统视觉的车位检测示例(2000年代初),基于视觉引导的智能汽车自动泊车技术

图片7:经典的视觉技术用于识别停车线标记,在自动泊车辅助系统领域具有重要的应用价值
如上两图所示,在图像处理领域中采用若干算子及图像处理技术的基础上,在提取特征的基础上进行后续处理。接下来将介绍一种较为复杂但具有代表性的方法(发表于2012年的相关文献):基于AVM视图的多标记停车位自动识别系统。该系统首先定位停车位角点位置,并通过配对算法建立停车位连接关系。随后实施多步骤滤波与矫正措施。如图所示:

图8 车位类型对应的不同角点类型

图9 角点类型。多吧,不多,还有更多的... 这是模板匹配的难以穷尽之处

图10 后处理
于2016年提出的DBSCAN方法。英文全名为Density-based spatial clustering of applications with noise(DSCA),由Martin Ester、Hans-Peter Kriegel、Jörg Sander及Xiaowei Xu提出。该算法以密度为基础:给定一个空间中的点集合,在此空间内将相近的点归为一组(即具有较多邻近点的点),并识别出位于低密度区域的噪声点(即其邻近区域内的最近点十分遥远)。作为聚类分析领域的重要方法之一,DBSCAN因其对噪声敏感的特点而备受关注;它也是被广泛引用的经典方法之一。于2014年该算法在数据挖掘领域的顶级会议KDD上获得了Test of Time奖。
实在难以理解这个解释的内容,请直接参考示意图进行分析。对于非深度方法而言,在实际操作中往往显得异常繁琐。该方法采用了线段检测技术,在这一过程中能够提取的有效特征数量显著提升。整体看来似乎变得更加复杂。

图表11展示了2016年对DBSCAN方法的分析结果:基于聚类方法的Directional-DBSCAN停车槽检测。

图表12显示了经过线段检测后的结果于2016年提出的基于方向的DBSCAN停车槽检测方法,并采用聚类技术实现。
看到上图中的线段检测结果,广大网友有没有人给我点个赞呢(滑稽...):) 实在不行我也帮不了忙。
传统视觉的车位检测介绍就到这儿,方法还有很多,其实不必太关心。

图13 传统视觉的车位检测
但是可用于深度学习参考的是:首先包含关键点识别;其次是边缘检测;接着是去噪处理以及配对优化;然后是基于前后帧信息结合分析车辆运动轨迹的方法;之后采用俯视图视角下的数据处理以简化计算复杂度;此外还涉及各类停车场景类型划分以及基于特征的关键点与边缘分类方法;最后还包括穷举法的应用策略
2.2 深度时代的车位检测
我们可以基于传统视觉处理方法,在现有视觉算子框架上进行技术升级与优化。具体而言,我们可以通过将传统视觉算子替换成深度学习相关的网络组件来进行特征提取,从而实现从传统视觉系统向深度学习框架的有效过渡(如RCNN(提特征+SVM分类)演进至Fast RCNN(端到端+ROI检测)再到Faster RCNN(RPN+[性能]强劲+快)等)。在这个过程中,我们将逐步拿掉传统的处理逻辑,并逐步进行深度学习模块的设计与集成工作,最终从双阶段优化过渡至单阶段设计(如YOLO->SSD->RetinaNet等)。经过一系列技术迭代后,我们最终将构建出一套完整的基于深度学习技术实现车位自动检测功能的核心方案)。

通用车位检测算法效果1
让我们欣赏一下实测效果视频吧!为了节省您的时间与精力,请您集中注意力观看我们展示的这一版本——一款初步版本的设备。本次实测采用了一款单路鱼眼相机进行畸变校正处理,并将输入信号调整至384x384和128x128分辨率水平输出。该设备采用了单阶段图像处理方案,在实际应用中表现尚可。值得注意的是,在AVM图处理方面存在一定的工程难度限制——目前仅实现了基础功能(即无需NMS处理)。后续优化工作暂不展开重点讨论。本节内容主要围绕车位检测这一通用技术展开介绍,请您配合理解我们的实验设计思路。关于运算能力与资源配置的具体方案设计,请根据实际需求自行调整并实施

图14 运算量
回顾过往工作内容。该研究主要涵盖三个核心领域:第一部分聚焦于目标检测技术;第二部分深入探索语义分割方法;第三部分则研究了两者之间的融合应用;此外,在第四部分中我们重点分析了基于Transformer模型的信息检索机制。
目标检测的过程通常涉及识别车辆的位置信息、分析停车位的包围框以及评估停车位的边界特征。
检测车位角点的paper比较多,取3个方法来图示说明。

第15页 PS 2.0 数据集的来源方法,在2018年提出Vision-based parking-slot detection: 基于卷积神经网络的方法和大规模基准数据集

第16页进一步细分了角点分类,并在该研究中使用了PSDet作为基础算法,在该算法基础上开发出了高效的停车槽检测方法:Psdet: Efficient and universal parking slot detection。

图17 角点配对示意,DMPS-PR,2019年
DMPR-PS: 一种创新性方法用于停车位检测, 采用基于方向标记的点回归方法
角点检测通常会携带类别标签以及具体旋转角度等额外信息。经典模板匹配算法在深度学习框架下进行分类处理时展现出显著性能优势,在这一演变过程中逐渐揭示了其在计算机视觉领域的应用潜力。
使用bounding box的方法更为普遍。由于这种方法的主要优势在于直接利用目标检测中的bounding_box框来定位停车位的应用极为便捷。

图18 PIL_park数据集出处,bounding_box检测示意
Context-Based Parking Slot Detection With a Realistic Dataset
上图展示了回归一个bounding_box框的方法,在图像中包含角度信息。该框的处理形式可为任意四边形,并非必须为矩形;可采用不同夹角(均小于90度),有趣之处在于其操作相对较为复杂;伴随较为简单的后续优化步骤。
典型的回归框设计具有很强的代表性。为了简化讨论,在本研究中仅采用其中一种方案进行分析;然而不同细节的处理方法也会存在多样性。

图19 方法截图示意

图20 https://github.com/lymhust/awesome-parking-slot-detection
看看吧,不少21年没整理完的文章就不再分享了。接下来来分享一下这个语义分割方法的示意图。

图21 VH-HFCN,2018年
基于VH-HFCN的全景周围视图中停车位与车道标线检测
语义分割,采用这种方法的童鞋可能纠结于后处理吧。

图 2 有效果似乎是还有更好的结果出现。

图23 global信息

图24 接上图23,local信息
图23和图24是2021年的一篇文章:
An end-to-end trainable one-stage parking slot detection model incorporating both global and local contextual information is proposed.
如果基于端到端单阶段的方法,则必须承担这种看似复杂但必要的后续处理步骤;这一发现确实让人钦佩作者的专业素养。

图25 它的效果还是可以的。
这里介绍个2021年的别出心裁的方法:

图26 2021年,Attentional Graph Neural Network for Parking Slot Detection
Visit GitHub at [Jiaolong]'s gcn-parking-slot project on GitHub.
Transformer带来创新:2021年提出了一种基于形状相似度的order-agnostic停车槽检测方法。
[该会议论文集](论文标题)
用Transformer(DETR)来做,实在没必要。

图27 没必要1

图28 没必要2
效果也没见到好到哪里去,难度车位图也没贴。此条路,工程化不容易的。
三、我们的方法
花了大量篇幅介绍前人的工作,无外乎是为了引出我们的工作。
先贴下图吧:

图29 效果图1

图30 效果图2
再来个视频:

基于车位检测技术实现我们的方法研究与开发,在此基础上我们特地定名为通用停车位检测系统(GPSD)。为便于后续介绍和引用,请提前了解该系统的命名背景与核心功能。
3.1 为什么还要重复造轮子?
可能由于前人方法存在不足也可能难以复现实有方案也有可能利用现有数据集但未能达到理想效果此外还有其他不可预知的挑战因素需要考虑总的来说在实现某些目标的过程中可能存在多种挑战因素
理性分析表明,在车位数据集日益复杂的背景下(尤其是依赖于对车位标线(常见白色线条)的分类与利用),这一特点注定了自动泊车算法对数据集的高度依赖性或受制性。一家车企若要维持其稳定运营能力(特别是在面对每年上百万辆汽车的需求并提供高质量自动泊车服务),其自动泊车系统的智能化水平必须具备极强的能力——不仅要在保证正确结果的基础上实现高度稳定性运行,并能在各种异常情况下有效应对可能出现的问题。然而,在实际应用中由于各种限制因素(如AVM成像质量),即使能够获得正确的检测结果也会存在局限性:例如,在鱼眼相机拍摄导致畸变矫正插值本就成为AVM系统面临的一个挑战(毕竟这涉及到复杂的数学运算和图像校正过程)。此外,在实际场景中由于光线条件、地面反光等因素的影响(这些因素在经过畸变插值后仍然存在显著干扰),纯文本特征提取往往难以达到预期效果——这也是为何很多系统采用基于bounding_box的数据训练策略来提升检测精度的原因所在。
注
难以分辨理性与美感之间的界限。当个人获得采集的数据集时, 进行检测, 发现无法仅通过调用YOLO系列模型来解决问题。公开获取的数据集中包含了同济大学的PS2.0版本和首尔国立大学的PIL_Park版本, 这些数据集则可作为训练素材使用, 以更好地适应真实应用场景。
实际上觉得之前的方法虽然直观但操作起来较为繁琐而且难以短时间内掌握。特别是在实际工程应用中主要追求效率和效果的前提下经过权衡才决定开发一个实用且具有广泛适用性的新算法。这就是通用停车位检测算法GPSD的设计初衷。
3.2 怎么来定义一个停车位?
要放一些图
其实原理也很简单,但想泛化,需要考虑的还是有一些。

图31 来个汽车,鸟瞰上帝视角
汽车长这样,占地区域是方方正正。就一个矩形。

图32 汽车占地面积是方的
再看看鱼眼相机,

图33 鱼眼相机拍摄
车位只要能放得下一辆汽车即可,线段是直的。
来看看鸟瞰图:

图34 鸟瞰图1

图35 立体停车位鸟瞰图

图36 车位线被AVM成像畸变的汽车所遮挡
鸟瞰图里,一个停车位人眼看起来是放不下一个车位的,哈哈
这是AVM成像所导致的不可避免的问题之一——畸变现象。然而,在深度学习方面展现出强大的优势在于:我们的人眼会将它识别为一个停车位;不要被图像本身的表象所迷惑!深度学习能够从图像中提取特征;但这种能力需要进一步深化——从图像中提炼出更高层次的人工推断抽象特征;这些特征并非表面可见、非显式的、非符合逻辑或是错误信息所带来的误导信号;而是需要深度学习去主动学习并掌握这些关键点;这个时候就需要运用目标检测、语义分割等技术手段;虽然这些方法看似存在局限性——仅凭图像表面信息(如畸变车辆或变形柱子)可能难以覆盖多个车位的遮挡情况;但我们必须保持清醒:停车位辨识应该基于真实的物理特性而非单纯的像素分布模式。

图37 车库柱子也可以遮挡车位
我们这样来看一个车位:

图38 它实际上就是两个车位
部署深度学习系统用于对停车位进行分析研究。针对这个停车位的设计进行详细分析以确定最佳停车方案。尽管存在可能的遮挡物如汽车等其他车辆干扰,在这种特殊场景下深度学习技术依然能够有效识别并提供解决方案。
再抽像点:

停车场的概念源自于车辆的存在。在人类社会中,在有了大量车辆之后才逐渐形成了停车场这一概念。“停车场”的出现是为了方便多辆车停放的需求。“停车场”的出现使得停车变得更加便利。“停车场”的出现使得资源得到了更加合理的分配。“停车场”的出现使得停车效率得到了极大的提升。“停车场”的出现使得资源得到了更加合理的分配。“停车场”的出现使得资源得到了更加合理的分配。

图41 平行四边形车位,非矩形
3.3 车位几何抽象还是以图示来进行说明。

如上图所示,可用简单几何图形表示。然而本该如此的情形却并不少见。事实上,在停车位布局中车位并非仅限于简单的排列方式而且在实际应用中停车位周围存在较多干扰线。因此在分析停车位分布情况时需要考虑更为复杂的因素

如图所示,在停车位布局中:停车位1、2呈现连续停放状态;停车位3、4则采用分隔停放的方式;停车位5、6采用交错停放的状态。需要注意的是,在实际应用中,默认情况下可用平行四边形图形来表示这些不同类型的停车位布局以提高空间利用率。其中最常见的停放状态是停车位1、2的情况(例如在没有柱子限制的情况下),而停车位3、4的情况同样较为普遍(例如在有柱子限制时,则需采取分隔停放的方式)。
空车位相对容易进行检测;当停车位被占用时,在视频画面中会呈现大量变形的汽车;这给停车位检测带来了挑战性。
在这一时段内,在采用基于锚框的方法进行边界框的定位时会遇到一定的局限性。此外,在AVM中对车位进行成像时图像完整性无法得到完全保证;例如:

图45 车位的各种姿势
如上图所示,在对图像中的停车位进行人工干预时会产生不同的效果,请问这种做法背后原因是什么?因为车辆在行驶过程中会经历各种转向情况以及离停车位远近的不同(远开近停),导致成像画面差异显著。需要注意的是,在抽象出停车位形状后并不完全等于实际方形物体(被成像设备截断后呈现不完整形态),因此采用锚点框进行bounding_box检测会遇到一些计算复杂度有所增加的问题。

不采用bounding_box或许是最好的选择。
在当前情况下,应对车位的几何抽象模型进行数学建模处理,使其具备停车位属性特征,并避免受到AVM成像系统和车辆运行过程中的影响因素;同时能够彻底消除因车辆运动所带来的负面影响。
我尽量用白话文说清楚。
老规矩,先上图:

如图47所示:
定义1:把AB定义为车位的进入线,此进入线需确定方向和长度。
将AD命名为车位的分隔线。该分隔线分为两种情况描述:一种是明确设定长度与方向;另一种则仅规定行驶方向。
定义3:作出一条与BC平行的直线AD,并以点A为起点,在不需要调整BC的位置的情况下,通过AB和AD进行计算即可。
定义4通过以下方式确定长度与方向:选取两点A与B作为基准点(如图所示)。计算公式如下:
Δx = x_A - x_B, Δy = y_A - y_B;
其中Δx与Δy需经过归一化处理步骤(即将每个值分别除以宽度W与高度H),以便获得标准化的空间变化量。
在明确A点坐标的基础上,在此过程中已经能够准确推导出空间变化量的方向及大小关系。
定义5:仅当方向被确定时,需要计算AD线段的cos和sin值,并通过求反正切值得到夹角。已知A点坐标后,则该方向自然可被确定下来。
定义6
改写说明

图49 公式
3.4 车位几何抽象

在车位被抽象之后,在这种情况下,在我们就可以专注于车辆位置的几何特征,并不需要过分关注车辆类型的具体分类以及如何选取角点特征。然而关键的是理解到高度概括化的几何特征这正是对复杂真实环境的有效数学化表示。

图52 看看立体停车位的几何表征,红色线是做的的蓝色线的平行线。

图53所示的图形中有一条红色曲线箭头指示停车位的空间走向。其中该区域的分隔界限被标记为AB段,并以A点作为停车位的起始位置。其指向路径遵循从分隔界限到停车位起始点再到进入路线的方向。相应地,在图形中该路径表示为从A出发经过分隔界限最终抵达B点的位置延伸至AB段的位置关系。
3.5 数据集的制作

图54 整张AVM的切图处理

图54 整张AVM的切图处理

在图54中呈现的是经过处理后的完整AVM图像(其中包含4路图像经去畸变与拼接处理),而在图56中展示的是单路鱼眼相机的成像效果所采用的处理方式
当处理数据集时,在AVM图中进行标记并非唯一选择,在单路图像中同样可实现标记
整张AVM图进行标注工作时,请参考右侧子图中标注法:首先根据AVM整体布局,在右侧确定停车位位置并进行标记。随后标出进入线AB,并要求其尽量准确;在标示AD长度时,请根据不同的情况选择其长度(因为预测方法不同)。具体计算方式可在上文中的公式(如图49所示)中找到依据。由此形成一个逆时针排列的整体停车位布局。需要注意的是左侧同样采用逆时针排列进行标记,并特别注意标明进入线和分隔线

在单一视角下的图像标注过程中
另外,还可以给车位上是否占用,即是否可用打上标签。
标注后的图像经过裁剪和缩放处理后得到一个宽度为128像素、高度为384像素(比例为1:3),随后将其输入到网络中。在实际应用中,默认情况下会根据需求自行设定图像尺寸和比例。然而,在本场景中,默认设置可能无法满足下采样要求(如需能被32整除),因此我们选择了适合该需求的比例和尺寸

图58 这些车位标注起来也有点难度
在公开数据集中,我们基于PS2.0模型及PIL-Park框架开展了一系列数据集的优化和调整工作。这些数据均符合我们的几何抽象定义要求。此外,我们还自行收集并整理了商场停车场的相关数据集(具体信息不在此处展示)。
ps2.0: 基于视觉技术的停车位检测:利用深度卷积神经网络(DCNN)的方法及大规模基准数据集
PIL_park: Context-based parking slot detection with a realistic dataset
3.6 车位预测
在 feature map 上进行停车位检测时,在单个 feature_map 像素位置上进行回归预测以确定对应停车位坐标。该模型通过将单个像素位置映射至对应的停车位坐标实现停车位检测任务。输入图像的分辨率设定为 128×384 像素大小,在经过卷积运算后得到特征图的空间分辨率降至 4×12 像素级别;其中输入通道数量设置为 3(RGB 图像)或 1(灰度图)。为了提高检测精度与鲁棒性,在本次实验中我们采用了 8 个独立的回归分支用于 parking detection 任务的具体实现中。具体而言,在置信度值 confidence 的基础上分别计算停车位中心点坐标 (A_x, A_y),并进一步推导进入线和分隔线的位置信息 delta_x 和 delta_y 或者利用余弦和正弦值 cos 和 sin 来表示分隔线方向;同时提供是否占用标志 isOccupied 或可用标志 available 来判断停车位是否被占用或可否使用
这里所指的停车位角点,并未暗示其为图像中必然存在的停车位角点。进入线与分隔线也并非图像中真实存在的直线或曲线。我们的目标是建立一种抽象化的数学几何模型。

图59 画图可视化1

图60 画图可视化2
是不是有点像CenterNet?或者YOLO系列,YOLO1/2/3/X,Anchor Free,但是这里最大的区别在于,没有利用图像中的具体像素,利用实例的形状和位置来确定实例,这里就解释不通,因为汽车有畸变,它挡住了车位,并不是真正的实际成像,我们回归可以说是一个二维平面(地面)的车位,而3维空间中的汽车被AVM压到了二维成像中,像素分布并不可靠了,学习图像具体的像素不可行,必须让网络学习抽象的几何表征。有点难以解释,让整个车位的信息,压缩到车位角点,即便车位角点实际并不存在,或者车位角点难以区分,如图58所示。车位角点只是一个承载的载体,也可换到图像中任何其他位置,如进入线AB中点,(没试过),设计的时候考虑到了这一点。
3.7 网络架构
这个操作相对随意一些,在选择backbone模块与检测头时可选性较多,在实际应用中需要特别注意输出特征图尺寸的一致性问题。以4x12分辨率的feature_map为例,在一个128x384像素的图像中最多能够对应约48个停车位预测(实际应用中远达不到这一数量级)。为了适应不同停车位在图像中的分布情况,则建议采用统一分辨率(如4x12)的设计方案,并通过实验验证该方法在现有数据集上的有效性。我们采用了单阶段网络设计策略,在直出特征图的基础上直接进行目标检测任务求解,并取得了显著的效果(已将公开数据集PS2.0与PIL_park的数据集上的AP值快速提升至接近满分)。whaosoft aiot http://143ai.com
3.8 公开数据集上的测试结果

PS 2.0 数据集基于同济大学 2018 年推出,在车位检测领域具有显著影响力然而其应用相对简单。PIL_park则于发布时间推迟至 2019 年初涉及的文章引用较少尽管难度适中

图62 ps2.0数据集图片举例

图63 PIL数据集图片举例
再贴下效果图:

图64 左列是标签,中间是原图,右列是预测
3.9 设计实验
在模拟实际泊车场景中进行AVM成像过程。其中,在提升图像质量方面具有重要意义的技术手段包括应用旋转变换(rotation)和位置调整(translation)操作。
上篇有说,就是汽车在行驶过程中,前行、转向和靠近车位的距离。
输入支持使用RGB图像以及灰度图,并非仅限于灰度图。然而,由于RGB图像具有更高的性能(AP),因此在实际工程应用中更为常见
实验参照一些影响广泛的检测网络设计即可,不是本篇讨论的范围。
在构建损失函数的过程中,在考虑到 confidence 项、角点坐标的预测值以及分割边界等关键指标时会遇到各指标间的损失量级差异较大的问题。经过实验验证发现,在现有模型中对各个因素单独求解的效果不尽如人意。因此我们尝试引入权重因子来调节各项目的影响程度,在优化过程中优先提升对 corner 和 boundary 的检测精度,并采用 L2-norm 方法作为计算损失的标准。
未施加任何增强手段的基础网络在PIL_park测试中均超出了90%的mAP水平。该方法具有重要意义。
