机器学习实战:车辆检测

当我们开车时会经常关注环境,尤其关注那些潜在障碍物的位置,不管是汽车、行人还是道路上的物体?? 。同样,当我们开发自动驾驶车辆所需的智能和传感器时,最重要的一点是这些车辆能够检测到障碍物,因为它加强了车辆对环境的理解 。其中一种最重要的障碍物是道路上的其他车辆,因为它们很可能是我们车道或邻近道路上最大的物体,因此构成潜在的危险 。
在众多的文献中,研究人员已经开发了许多用于障碍物检测的技术,从传统的计算机视觉技术到深度学习都有 。在本文中,我们使用一种传统的计算机视觉技术 — 方向梯度直方图(HOG)并结合被称为支持向量机(SVM)的机器学习算法来构建车辆检测器 。
如果想马上学习和机器学习方面的知识,推荐你使用汇智网的机器学习 。
数据集
我们使用的数据集概述如下:
该数据集来自GTI车辆影像数据库和KITTISuite 。下面展示了数据集中的一些样本:

机器学习实战:车辆检测

文章插图
我们可以清楚地看到,数据集中包含了车辆和非车辆的图像 。非车辆图像往往是道路的其他元素,如沥青、道路标志或路面 。车辆和非车辆的区别非常明显 。大多数图像中车辆都位于图的中心,但可能有不同的朝向,这有助于机器学习模型的泛化,很好 。此外,数据集中的汽车类型、颜色和照明条件都是多种多样的 。
分类特征的研究 方向梯度直方图(HOG)
自从 Dalal和Bill 在其论文《基于HOG的行人检测》中展示出令人印象深刻的结果后,将HOG用于物体检测就流行开来 。Satya 在这篇文章中很好的解释了HOG的原理和算法,对于那些希望深入理解HOG的人来说值得一看 。
我们首先针对HOG算法的以下参数,在RGB图像上尝试不同的配置:
每个图像块的单元数最初固定为2(用c / bk表示)。下面的图片显示了在RGB格式的车辆图像样本上获得的结果:
机器学习实战:车辆检测

文章插图
仅仅是基于肉眼的观察,如下的配置看起来似乎可以为车辆生成独特的梯度特征:
现在让我们尝试下不同的图像块单元数量:
机器学习实战:车辆检测

文章插图
对于人眼来说,不同的单元数量配置所生成的特征,彼此间并没有显著的差异 。理想情况下,我们希望压缩特征空间以便更快地计算 。因此将一个图像块的单元数设定为3 。
颜色空间
现在我们需要找出最合适的颜色空间,因为看起来3个RGB通道的HOG特征太相似了,看起来特征的变化范围还不够大 。
我们尝试在多个颜色空间中生成以下输出:
机器学习实战:车辆检测

文章插图
对于某些颜色通道来说,很难解释所生成的HOG特征 。有趣的是,YUV、YCrCb和LAB这几个颜色空间中的第一个颜色通道似乎就足以捕捉我们正在寻找的梯度特征 。在另外两个颜色空间HSV和HLS中,HOG在Value和通道捕捉到了车辆最重要的特征 。
为了证实这个假设,让我们尝试在一个车辆的不同颜色空间的影像上计算HOG:
机器学习实战:车辆检测

文章插图
在上面这样的光线黯淡的图像,我们可以观察到,携带最多亮度信息的通道HOG的结果并不好 。因此,我们必须考虑所有的色彩通道以便捕捉尽可能多的特征 。最后,我们得到的参数配置如下:
我们还将添加了颜色信息来强化特征集 。要做到这一点,我们只需要使用32个bin来生成所有颜色通道的直方图,如下所示: