交通信号灯识别的自主式学习系统

自动驾驶中一个核心模块的设计。其中算法层面涉及到对交通信号灯的检测与识别,前期对该模块进行了简单算法的设计,主体的识别框架如下图,主要思想是基于滑动窗思想和机器学习模型。当然为了进一步提升算法的效率,采用了基于信号灯颜色的特殊先验知识进行selective search,过滤掉大部分区域实现算法的加速。


上述框架虽然能达到一定的识别率,但是依然面临两个严峻的挑战:

  • 对视频处理的实时性较差。上述框架对ROI的提取算法涉及到对整个图像的遍历;并且对视频的每一帧进行独立处理,没有考虑帧与帧之间的相关性。
  • 处理不同场景的迁移性较差。上述框架主要基于SVM分类器,而这种传统的机器学习模型的性能主要依赖于训练数据和提取的人工特征。目前的训练数据有限,不能完全表征整个真实数据的分布,导致在其它场景漏检或误检较多;当前的特征主要基于颜色直方图特征,该特征对图像数据较为敏感。比如采用不同的成像传感器或当前采集图像出现极端天气,提取的颜色直方图特征都会给后续的分类器带来误判。

针对上述挑战,对现有框架进行了改进,设计了交通信号灯识别的自主式学习系统来应对实时性和迁移性差的问题。首先我们考虑交通场景中视频的特点,当信号灯出现在当前视野中时,在接下来的一段采集时间内都会出现该信号灯;并且帧与帧之间的信号灯位置不会出现很大的偏移(主要取决于采集车和CCD)且呈现一定的运动方向,如下图。那么我们完全可以利用这种特性,在下一帧的检测中取当前信号灯位置处一定的窗口范围,使用mean shift算法在特征空间中搜索所谓的模点(局部极值点)找到信号灯位置;甚至可以在该窗口检测范围内,使用颜色分割,根据颜色判定信号灯的位置和颜色。注意上述策略只适用于信号灯在视野范围内连续出现的帧内检测。当信号灯在某个时间点突然出现,则我们必须利用先前框架的单帧处理检测信号灯。因此,先前框架采用的人工特征和SVM分类器也是至关重要的一环。下面我们重点讨论这一部分,以解决迁移性较差的问题。


在人工特征方面,似乎颜色特征时信号灯最明显的特征。而其它纹理特征比如sift,LBP等在实验中并没有取得好的效果,还包括HoG特征,Gabor变换,角点特征等。另外值得注意的是,交通场景极为复杂,我们会面临极大的干扰。比如,针对颜色直方图特征,采集场景中会出现大量照明灯光区域,从而照成正负样本空间中类内及其相似而线性不可分的情形。鉴于此,我们采用基于sparse coding的策略,利用学习的字典将低层的颜色直方图特征非线性的映射到更加线性可分的高层特征空间中。而在分类器的训练中,我们采用自主式的训练机制,自发主动的学习并不断更新分类器,以适应数据的变化。在新的场景视频检测中,当已经训练的分类器检测不出信号灯区域且出现大量误检的情况下,我们手工干预标定信号灯区域,而在后续的帧检测中,利用前述的帧相关性进行检测与识别;在确定的检测窗口范围内识别处的信号灯区域作为正样本,而先前训练的分类器检测出的区域且出现在确定的检测窗口范围外的区域作为负样本;收集一定的正负样本后,重新训练分类器,达到更新的效果。


新的框架目前还处于初步构建中,在实验中实时性得到了保障,并且自发式的学习能不断的自适应新的数据,并不断增强分类器的性能,进一步提升方法的场景迁移性处理能力。但是新的框架也存在缺陷,在漏检的情况下,需要人工干预。后续会不断改进算法,充分利用视频帧在时空上的相关性,甚至利用深度卷积神经网络的特征自学习能力。

猜你喜欢

转载自blog.csdn.net/step_forward_ml/article/details/80108151