点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达文章导读

本文是一篇介绍鱼眼相机做车位线检测的文章,放眼当下泊车功能在智能汽车领域研究的如火如荼,从L2级的APA自动泊车发展到L2+的RPA远程遥控泊车再到L3级的HPA自学习泊车最后研究AVP自主泊车,其中每个功能都少不了车位线的检测。通过本文让小编带着大家一起学习车位线检测的相关技术和方法。

1 引言

小编近期从周视相机感知转战到环视感知领域,个人觉得对于行人、车辆等目标检测和道路信息的语义分割从实现上差别不大,但是如何做车位线检测任务让我纠结许久,也算是把近几年各种深度学习做车位线检测的文章都看了一遍,下面对常规方法做些总结分享。

2 车位线有哪些特征?

理想的车位线由四个角点和四条线组成,如下图所示:红色的称为入口线(the entrance line),左右两条称为分割线(the separate line),底部的紫线一般用处不大作为边界即可。

针对此类形状的目标,通常有三种检测方法:

a. 基于直线的方法通过找到两条分割线与入口线检测停车位,在一些使用传统图像处理算法检测车位线的系统中进行出现,使用Sobel,Canny等算子进行边缘检测,结合Hough变换利用几何特征获得潜在的停车位边界线。但是此类传统算法容易受到光照条件,线条磨损,地面阴影等环境因素的影响,性能缺乏鲁棒性。

b. 基于标记点的方法是通过检测入口线和两条分割线的交叉口,然后结合角点坐标检测停车位。传统图像处理算法中提供了不少人工设计的角点检测器,如Harris角点检测,Shi-Tomasi角点检测,FAST角点检测等。如果采用此类方法仍然会出现上述Hough线检测的鲁棒性问题,所以部分学者将车位线的入口线和分割线的两个相交区域作为检测目标,如下图所示:

c. 基于分割的方法是对车辆、空闲空间、停车位标识和其他对象进行逐像素的分类。这样就把车位线检测问题转换成了语义分割问题,形如前视感知中的车道线检测任务,但是语义分割任务需要经过一系列复杂的后处理才能得到相对准确的停车位,时耗上无法满足嵌入式端的实时要求。

3 车位线有哪些形式?

车位线的类型大方向主要有三种:垂直、水平、倾斜。但是在做车位线分类或者程序后处理时会遇到形形色色的结构,比如:

比如某些路边的停车位常用路沿代替一条分割线;某些停车场的车位入口线和分割线会分离开;整个停车位颜色不同于周边区域,但是就没停车线~~~等等。

4 如何入门学习车位线检测?

在无人驾驶的感知模块,不过是前视,周视,环视的环境感知,用深度学习提取特征做分类是必不可少的一项技术。如果最便捷的做出一款车位线检测的Demo,需要做好两项准备工作:

  • 用什么样的网络做检测任务?

  • 用什么样的数据做训练验证?

近几年开源了很多用深度学习做车位线检测的方法,下面小编给大家介绍几篇(顺序不分前后):

“Attentional Graph Neural Network for Parking-slot Detection”:该文分为三个阶段,分别是图特征编码、图特征聚合、入口线鉴别,在拼接的鸟瞰图上通过图神经网络对标记点之间的邻近信息进行聚合来进行车位线检测,解决常规标记点独立检测后的后处理步骤冗余问题。

“Context-Based Parking Slot Detection With a Realistic Dataset”:该文有点类似Faser RCNN的粗略定位+精细微调两阶段网络,先在PCR模块中识别是否有停车位,在通过PSD模块对旋转BBox准确定位。

“DMPR-PS A Novel Approach For Parking-slot Detection Using Directional Marking-point regression”该文通过检测带方向的标记点得到一张拼接后的鸟瞰图中所有入口线与分割线的相交区域,然后对其进行过滤筛选并配对分类出车位类型。

“Vacant Parking Slot Detection in the Around View Image Based on Deep Learning”:该文分为两个模块,车位线的检测和车位占用情况分类。车位线的检测模块采用YOLOv3的方式对整个车位槽的头部区域进行检测分类得到车位类型,省去了只检测两个交叉点后通过后处理得到车位类型的环节。

“PSDet: EfficientandUniversalParkingSlotDetection”:该文也是对车位线的交叉点进行检测,不同之处在于它对比了几种交叉点特征描述器的形式,采用圆形特征描述子提取交叉点范围内的特征能够更好的识别车位线相交区域。

相关文章较多,小编就不一一举例了,需要相关文章的小伙伴可以私聊找我。

说完了网络结构,我们来看看有哪些开源的车位线数据集。目前找到的只有三个:

  • ps2.0

  • PSV

  • WoodScape

ps2.0是一份四颗鱼眼拼接后的数据,数据均属于停车场景,训练集约1W张,测试集不到5K张,标签是mat格式。数据如下图所示:

PSV同ps2.0数据集差不多,由四颗鱼眼相机拼接后的图片制作而成。数据量较小,训练集2550张,验证集425张,测试集1274张,标签是语义分割图。数据如下图所示:

WoodScape数据集更偏向于每颗鱼眼独立的环境感知,标签包括约1W张外接框标签、约1W张语义标签、约1W张深度图、4颗相机的标定文件等信息,适用于分割、深度估计、三维包围盒检测、斑点检测等9项任务。数据如下图所示:

5 如何进阶提高车位线检测?

基于开源数据集训练的结果往往不适用自己的场景,需要自采自标小批量的对应场景做网络微调从而提高车位线的检测效果。

在这个过程中我们会遇到很多问题,比如如何采集数据、采集多少数据、采集哪些场景?

其实最麻烦的就是一个维度划分的问题,虽然车位线的类型只有垂直、水平、倾斜三种,但是外部环境因素多种多样。比如:

  • 车位线颜色的不同;

  • 场地材质的不同;

  • 光照强弱的不同;

  • 天气状况的不同;

  • 地面阴影的不同;

  • 车位磨损的不同;

制定采集标准时,一定要考虑细致详尽,并对每种数据的采集数量确保相对平衡,否则会造成部分情况效果较差。下图是从一篇文章中找到的维度参考,做做Demo应该可以了:

除了堆数据提高性能以外,可以考虑网络的输入和输出形式,输入是四颗鱼眼的拼接图还是单颗鱼眼的原始数据?

输出是以车位线四个关键点的形式还是入口处两个相交区域外接框形式又或者语义图形式?小编还在斟酌中,暂无很好的建议。

6 如何做的更像一款产品?

要想把Demo做到产品还有一大段路要走,不仅仅只关注把原型开发的模型移植到嵌入式端跑起来就结束了。从前期打通数据链路开始,关注RAW数据类型,ISP参数调节,算法模块设计,硬件加速单元的分配等;再到数据采集方式,标注形式数量,工具链如何提供高效迭代验证,以及代码质量审核,模型间性能评估等等一系列工作。路漫漫其修远兮,吾将上下而求索。

好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

详解 | 自动泊车中鱼眼相机实现车位线感知相关推荐

  1. 一文详解鱼眼相机的车位线感知

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 文章导读 本文是一篇介绍鱼眼相机做车位线检测的文章,放眼当下泊车功能在智能汽车领域研究的如火如荼,从L ...

  2. 鱼眼相机的车位线感知

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文章导读 本文是一篇介绍鱼眼相机做车位线检测的文章,放眼当下泊车功 ...

  3. oracle dataguard详解,Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向

    Oracle 19c 新特性详解:DataGuard 中ADG的自动DML重定向 在前面的文章<Oracle 19c 十大新特性一览>中,我们曾经提到 Oracle 19c的一个重要增强, ...

  4. 详解MAC硬盘中各个文件夹

    详解MAC硬盘中各个文件夹 打开Macintosh HD你会发现内中有四个文件夹(一般情况下,隐藏文件夹是不可见的,而且,可能会更多,比如安装xcode后会有developer文件夹). 分别有--应 ...

  5. Python OpenCV相机参数详解:实现准确的相机标定和图像处理

    Python OpenCV相机参数详解:实现准确的相机标定和图像处理 在计算机视觉领域,相机参数是非常重要的元素.通过相机参数的标定,可以将图像中的像素坐标转化为真实世界中的坐标,从而实现准确的图像处 ...

  6. float属性html,详解CSS样式中的float属性

    详解CSS样式中的float属性.float是 css 样式的定位属性.我们在印刷排版中,文本可以按照需要围绕图片.一般把这种方式称为"文本环绕".在网页设计中,应用了CSS的fl ...

  7. docker ps命令详解 列出运行中的容器

    docker ps命令详解 列出运行中的容器 使用docker ps命令即可列出运行中的容器,执行该命令后,会出现如下7列表格 CONTAINER_ID      表示容器ID IMAGE       ...

  8. java按钮权限控制_详解Spring Security 中的四种权限控制方式

    Spring Security 中对于权限控制默认已经提供了很多了,但是,一个优秀的框架必须具备良好的扩展性,恰好,Spring Security 的扩展性就非常棒,我们既可以使用 Spring Se ...

  9. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

最新文章

  1. 18岁辍学,22岁进谷歌和Jeff Dean谈笑风生,这样的我究竟需不需要本科文凭?
  2. 06年编写的E阳指源码V1.7大放送
  3. 傅里叶变换的应用之调制解调初步、采样
  4. BZOJ 2287 【POJ Challenge】消失之物
  5. ubuntu预装脚本
  6. OVS 添加端口流程(二十九)
  7. wxWidgets:wxDataObject类用法
  8. 为了梦想开始历练之清除浮动篇
  9. 【Gym - 101196F】Removal Game (环形区间dp,环状,细节优化)
  10. c语言 格式转换函数,C语言中的格式转换函数.doc
  11. gdb当前哪一行_GDB原理之ptrace实现原理
  12. 韩国FSC公布新方案允许分离银行加密业务 以帮助小型交易所继续运营
  13. mysql sql能力_MySQL SQL优化
  14. MongoDB复制集安全认证
  15. lightgbm algorithm case of kaggle(下)
  16. calender获取日期前几月_iOS时间,日期,星期等相关获取
  17. nginx实时生成缩略图到硬盘上
  18. 1977年发生事件_历史回放:日本1977年海怪尸体事件
  19. centos各文件夹作用
  20. Level up!从流量经营到客户运营实战技术分享

热门文章

  1. 必看,61篇NeurIPS深度强化学习论文解读都这里了
  2. 还在纠结垃圾分类问题?带你用Python感受ImageNet冠军模型SENet的强大
  3. 今晚直播 | 一次性掌握机器学习基础知识脉络
  4. AI一分钟|传谷歌正与腾讯等洽谈合作,欲在中国推云服务;国产超算运算速度或达每秒百亿亿次...
  5. 今晚8点开播 | 思必驰NLP大牛带你系统学习启发式对话
  6. 对话迈克尔·乔丹:太多人关注个体智能,而不关注体系
  7. 如何用Python和深度神经网络识别图像?
  8. 假期只是玩就没意思了!告诉你一个学习麻省理工大学所有课程的好地方
  9. 一个注解搞定 SpringBoot 接口防刷,还有谁不会?
  10. Spring Boot第五篇:springboot整合 beatlsql