红绿灯识别是自动驾驶中最为基础的功能,识别方法主要有两种,一种基于视觉图像识别,一种基于v2x。

v2x,即通过红绿灯自己实时发送信号状态,再由车辆低延迟接收信号。该方法要对红绿灯进行改造,不仅对基础设备信号能力要求过高,而且对网络传输要求也不低,虽说目前5G出来了,但要大规模试用还需要一段时间,除却基础的要求外,对异常信号的处理等由于尚未实验环境,同样难以得到可以论证的方案。

基于视觉图像识别,即通过对2d图像进行检测分类识别获取交通灯的各项状态信息。该方法目前也有两种实现方案,一种基于高精地图位置获取感兴趣区域而后检测分类识别,另外一种完全基于2d图像检测分类识别。

基于高精地图位置获取感兴趣区域,而后对目标区域进行检测分类识别红绿灯状态算是业界比较通用的做法了。

以apollo开源为代表,便是使用该方法。该方法的输入包括自车位置(imu),查询地图中红绿灯的到位置信息,以及当前位置摄像头图像,输出即地图中红绿灯的id,颜色状态等信息。其中摄像头图像往往至少需要2个摄像头配合完成,包括一个短焦看近处的镜头,一个长焦看远处的镜头。目标检测通常采用yolo,ssd等单阶段网络训练得到,由于分类任务往往比较简单(基础的需要识别红、黄、绿、黑四种颜色),可以使用的分类网络也非常多。

这种方法的优势是通过地图投影到图像中,获取先验的感兴趣区域,能够有效的聚焦车辆关注的交通灯,减少其他交通灯及检测模型误检测误识别等问题,能够较好的实现自动驾驶车辆“看”灯的过程,为决策层提供较为可靠的light信息。

这种方法的缺陷是让简单的红绿灯识别功能变得十分臃肿,且扩展性降低,由于交通灯识别强依赖地图信息,导致自动驾驶识别交通灯必须有高精地图,而高精地图的构建过程非常繁琐,且排查红绿灯异常问题往往需要联合排查,无法实现该功能的快速闭环更新。

完全基于2d图像检测分类识别,由于都属于各家各自的技术机密,具体细节不得而知,不过从业界目前所使用的方法推到,目前纯视觉来识别light信息尚不成熟,漏检、误检问题无法得到有效的解决之前,还是让该方案还是充满神秘感吧。

除却以上基础的方案外,要想实现全方位的红绿灯基础的识别功能也并不简单,以最常见的竖灯场景为例子,通常包括红、黄、绿、黑四种颜色实时变化,而且还存在light故障(长黑灯、长黄闪),以及普通的红灯闪烁、黄灯闪烁、绿灯闪烁等识别要求,此外要想识别倒计时牌、箭头、圆头等类型也充满挑战。

此外,目前检测红绿灯,往往是自动驾驶汽车距离交通灯越近,识别的状态越好,距离越远,红绿灯在图像中的感兴趣区域越小,其识别难度越高,但是自动驾驶汽车走到停止线附近再识别出红绿灯,显然无法让车辆更加平稳的停车,只有在远处看灯准确,才能让车辆能够更加平稳的停在停止线前。红绿灯的小目标检测与识别十分重要。

此外,识别红绿灯容易受到车外天气环境的影响。例如太阳强光、弱光导致成像灯盘颜色分别困难,夜晚红绿灯旁边的灯管干扰,夜晚抓拍违章的强灯光干扰,摄像头受到水渍污渍等干扰等等。

此外,红绿灯的样式也并不统一,安装规范也各式各样。通常我们看到的交通灯为横条灯或竖条灯,其组合方式包括单灯、两灯、三灯甚至是四灯,除了我们常见的箭头、圆头,还有读条灯等,安装背景也各式各样,不能一一举例,这些都为自动驾驶识别红绿灯带来非常大的挑战。

此外,摄像头的抓拍还与红绿灯的本身的发光频率息息相关,有许多light的闪烁频率较低,人眼无法观察闪烁状态,然后如果使用低频的摄像头抓拍,非常容易出现light为黑灯状态(实际是有颜色的),这种现象属于led灯闪烁问题,抑制LED闪烁问题,就称为LFM。

【知识点1】LFM---LED闪烁抑制

从路灯、交通灯,到车载照明,低功耗、长寿命、高可靠的LED正在快速取代传统照明方式。但LED在道路上的普遍使用,却带来“LED闪烁”现象。“LED闪烁”是由LED驱动方式而产生的现象,LED灯以交流方式驱动,驱动频率一般在90Hz以上,即最慢脉冲周期为11毫秒左右,LED在11毫秒周期内实现一次亮灭,为节能及延长使用寿命,占空比通常不超过50%,如果相机曝光时间较短(例如3毫秒),则有可能曝光时间正好对上LED被关灭期,这时候图像传感器抓到的就是LED灭掉的图像,如果是LED阵列,在这种情况下拍到的图像就是一部分亮,一部分暗,这就是“LED闪烁”现象。

【友情提示】遇到LED闪烁问题,通常有两种解决方案。一种为更换带有LFM功能的摄像头;一种是使用 斩波曝光(chopped)来缓解LED闪烁问题,但治标不治本。当然还有一种额外方法,是要求业主更换信号灯供应商。

【知识点2】斩波曝光(chopped)

在智能交通领域常会遇到拍摄交通信号灯的需求。大部分信号灯直接使用220V市电供电,因此会存在10ms的光能量周期(美国是110V,周期8.3ms)。偶尔也会有信号灯厂家偷工减料,使用半波整流器件将电频率的负半周过滤不用,这就导致信号灯每亮10ms之后就会熄灭10ms。虽然人眼看不出来,但sensor看的非常清楚。

由于信号灯存在10ms的明暗周期,当sensor曝光时间很短时,就会遇到某一帧图像里信号灯碰巧全都不亮的尴尬场景,如下图所示。

一般在晴朗的夏天,sensor曝光时间可能会需要短于1ms才能保证画面不过曝,此时遇到信号灯近似熄灭的概率已接近50%。而在夜晚则曝光时间通常需要大于10ms,所以不会遇到信号熄灭的问题,相反会遇到信号灯光太强以致sensor过饱和,全部信号变成白灯的问题。

除了红绿灯之外,很多汽车上使用的LED大灯或者信号灯也是有频率的,而且平均点亮的时间(占空比,duty cycle)可能更短,如下图所示,这种情况sensor抓拍到LED(信号)灯熄灭的概率会更大。

为了缓解这个问题,有人提出了斩波曝光的工作模式,其原理是把正常曝光所需的曝光时间(比如1ms)分散到11ms的固定时间间隔内执行,通过多次短暂曝光的效果累加实现1ms等效曝光时间,且能保证采样到信号灯最亮的时刻,如下图所示。

这种方法的好处是增大了捕捉到信号灯点亮的概率,但是由于捕捉的时间短,所以画面上信号灯的亮度会比正常的要弱。所以这种方法并没有完美解决问题,只是一种缓解(mitigation)的方法。

参考资料

[1] Understanding CMOS Image Sensor @ 刘斯宁

【自动驾驶-感知-红绿灯】红绿灯识别知识点相关推荐

  1. 【自动驾驶-感知-红绿灯】红绿灯识别常见Corner Case总结

    在自动驾驶中,红绿灯感知模块通常会被当做一个单独的子模块进行单独设计,本文针对红绿灯感知过程中存在的部分问题进行汇总,以达到共同讨论,共同解决行业难点问题的目标. 1. 图像识别问题汇总 [corne ...

  2. 自动驾驶感知系统盘点

    自动驾驶感知系统盘点 Perception(感知)系统是以多种传感器的数据与高精度地图的信息作为输入,经过一系列的计算及处理,对自动驾驶车的周围环境精确感知的系统. 它能够为下游模块提供丰富的信息,包 ...

  3. 如何入门学习自动驾驶感知技术?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文授权转载自公众号:自动驾驶视觉感知工程师 一.前言 目前车企正在经历着前所未有的改革,包括前两天奥 ...

  4. Apollo星火计划学习笔记——第六讲上自动驾驶感知基础(I)

    文章目录 1. 感知的作用 2. 常见传感器 2.1 相机 2.1.1 相机的种类 2.1.2 相机的特点 2.2 激光雷达 2.2.1 激光雷达系统构成与方案 2.2.2 激光雷达光源 2.2.3 ...

  5. 《自动驾驶感知算法实战专栏(源代码)》专栏概述

    导言 自动驾驶太火?高薪?跃跃欲试,又仅存于想的阶段.动起来,只是看理论,却总也学不会?看不懂,又总没有进度?如果你也有这类问题,那你来看看这个专栏.以实际项目为导向,亲自动手实践,从简单的图像分类. ...

  6. 论文阅读综述:自动驾驶感知的多模态传感器融合Multi-modal Sensor Fusion for Auto Driving Perception: A Survey

    题目:Multi-modal Sensor Fusion for Auto Driving Perception: A Survey 用于自动驾驶感知的多模态传感器融合:综述 链接:https://a ...

  7. 【自动驾驶】自动驾驶感知系统与关键技术介绍

    文章目录 1.自动驾驶感知系统介绍 1.1 什么是自动驾驶? 1.2 什么是自动驾驶系统? 1.3 自动驾驶技术概览(以环境感知系统为主) 1.4 自动驾驶行业现状 1.自动驾驶感知系统介绍 1.1 ...

  8. 深度学习在自动驾驶感知领域的应用

    程序员转行学什么语言? https://edu.csdn.net/topic/ai30?utm_source=csdn_bw 本次直播课程是由深度学习资深研究者-杨阳博士从百度Apollo自动驾驶感知 ...

  9. 代季峰对话张祥雨 | 自动驾驶感知新时代!新一代环视感知算法BEVFormer有哪些优势...

    导读:Elon Musk说过,"人类不是超人,也不是蝙蝠侠,不能够眼放激光,也不装有雷达,但是通过眼睛捕捉到的图像,人类依旧可以构建出对周围世界的3D空间理解能力,从而很好地掌握驾驶这项能力 ...

  10. BEV感知,是下一代自动驾驶感知算法风向吗?

    1 背景 在现代自动驾驶任务中,决策规划模块依赖于多个感知.预测任务模块以提供充足的环境信息,其中感知任务不仅需要检测场景中的动态物体,还需要识别道路边界.人行横道.车道线.路标等静态元素.而预测任务 ...

最新文章

  1. pycharm中的requirements.txt文件—如何生成及导入
  2. mysql 一条sql update多条记录
  3. Windows service无法删除怎么办?
  4. Coding:实现快速排序算法
  5. jQuery UI resizble、draggable的div包含iframe导致缩放和拖拽的不平滑解决方法
  6. c#中计算三角形面积公式_看着有点迷的三角形面积计算
  7. javaWeb服务详解(含源代码,测试通过,注释)
  8. hadoop相关随记
  9. 如何将两个DateTimePicker的日期和时间组合成一个值
  10. Leaflet文档阅读笔记-Zoom levels笔记
  11. Spring Data Elasticsearch案例详解
  12. KMP算法经典题目--实现 strStr()
  13. RDP协议详细解析(二)
  14. 2440开发板linux系统移植3G拨号上网收发短信(三)
  15. mysql中的group by分组
  16. eclipse无法访问sun.misc.Unsafe类的解决办法
  17. 支付宝、京东支付场景之策略模式实战
  18. 一本通 1194:移动路线
  19. 【Python】Python 基本函数与操作-适合Python入门
  20. html游戏代码20行,js贪吃蛇源代码 20行js代码实现的贪吃蛇大战?

热门文章

  1. MCE公司:MCE 中国生命科学研究促进奖获奖论文集锦三
  2. 中国不承认国际驾驶证
  3. 计算机专业-世界大学学术排名,QS排名,U.S.NEWS排名
  4. img src 无法显示图片问题
  5. 如何隐藏Android模拟器的虚拟按键
  6. Python爬虫:用最普通的方法爬取ts文件并合成为mp4格式
  7. 禅与摩托车维修艺术语录摘抄(1)
  8. 信息学奥赛一本通(c++):2066:【例2.3】买图书
  9. window php ice安装,bootice怎么添加win10引导
  10. ADB logcat 过滤方法