1.2.4 车辆检测与识别
传统的车辆检测方法主要通过知识和模型的方法来刻画运动目标。基于知识的方法是利用车辆的特征信息,包括车辆轮廓、车辆的对称性、边缘纹理和背景信息等,来检测车辆。单一特征进行车辆检测具有较强的局限性,因此常选择多个特征进行特征融合,从而提高检测精度。基于模型的方法则通过建立车辆模板与待检测图像进行匹配,与特征模板相似的区域即被认定为检测结果。基于知识的方法与基于模型的方法也常常被结合起来使用,首先利用特征信息找到车辆的大致位置,再利用模型匹配进行精确定位,其检测结果较单独使用两种方法都有提升。
不同于传统的目标检测算法,基于深度学习的方法直接利用原始数据提取特征,在训练过程中可以学习到许多潜在特征,从而有效地解决了人为设计特征的局限性问题。卷积神经网络(Convolutional Neural Network, CNN)在目标检测领域内的发展,以及R-CNN、Fast R-CNN、Faster R-CNN一系列基于区域的网络模型的出现,使得检测效率和检测精度都得到了大幅度的提升[7]。其中,Faster R-CNN模型将候选区域生成、特征提取、分类和位置精修4大步统一到一个深度神经网络中,较Fast R-CNN模型的检测速度提升了10倍。
R-CNN模型从根本上解决了传统检测方法的特征选择问题。通过CNN强大的学习能力提取由浅到深的各层特征,再结合所生成的候选框即可完成检测任务。R-CNN系列模型有R-CNN、SPP Net、Fast R-CNN和当下的代表模型Faster R-CNN。其中,R-CNN使用选择性搜索方法对一幅图像生成了2000~3000个候选区域,然后对每个候选区域下的图像进行卷积操作提取特征,训练分类器得到物体类别,最后通过边框回归(Bounding Box Regression, BBR)微调候选目标框的大小;Fast R-CNN虽然仍使用选择性搜索方法搜索候选框,但它是对全图进行卷积操作提取特征,通过ROI池化对特征图进行归一化,最后将分类和回归联合训练得到最终的候选框;Faster R-CNN创新性地改善了选择性搜索方法,将搜索候选框的任务也分配给了神经网络,加入一个提取边缘的区域生成网络(Region Proposal Network, RPN)以共享之前的卷积计算。从能实现的功能上看,Faster R-CNN可以看作由RPN候选框生成模块与Fast R-CNN检测模块两部分模块组成。Faster R-CNN框架如图1-18所示。
图1-18 Faster R-CNN框架
1. Fast R-CNN
Fast R-CNN部分主要包括特征提取、ROI池化以及全连接层的分类和回归等处理。共享卷积层使用VGG16或者Res Net等常见的CNN模型进行卷积和池化得到特征图。该特征图将共享给后续的RPN和全连接层。经RPN输出的区域大小和形状各不相同,但后续全连接层的输入尺寸必须是固定的。早期的R-CNN和Fast R-CNN通过对区域进行拉伸和裁剪得到固定尺寸。这种方法的缺点是,破坏了图像的完整结构和原始形状信息。但ROI层的改进则解决了这一问题,ROI池化将可变尺寸固定到同一长度,且不存在变形问题。经过归一化的特征图在其中一个全连接层通过soft-max进行具体类别的分类,另一个全连接层则进行边框回归以获取更高精度的回归框,最终输出检测结果。
2. RPN部分
Faster R-CNN最大的创新在于提出了一种有效生成目标候选框的方法。其本质就是用RPN来提取检测区域,同时RPN和整个检测网络共享全图卷积特征来缩短计算时间。
输入图片经过共享卷积层得到特征图(feature map),通过滑动窗口得到一个256维长度的特征。然后,对每个特征向量进行2次全连接操作:一次得到2个分数用来区分前景和背景;另外一次得到4个坐标值表示初始候选框相较正确标注框的偏移量。其中,每个滑窗的中心点称为一个锚点,每一个锚点对应3种比例(1:1,1:2,2:1)和3种尺寸(1282,2562,5122)的锚盒,这样经过每一次滑动都会产生9个固定的区域建议。特征图的大小是16×16,进入RPN阶段后首先经过一个3×3的卷积,得到一个256×16×16的特征图,也可以看作16×16个256维特征向量;然后,经过2次1×1的卷积,分别得到1个18×16×16的特征图和1个36×16×16的特征图。前者的特征图包含2个分数,后者的特征图包含4个坐标值,结合预先定义的锚点便可以得到候选框。
Faster R-CNN中的RPN解决了候选框的生成问题,但是RPN锚点设置的3种比例和3种尺寸适应外形相差较大的目标检测,在处理特征相近的检测目标时往往会产生误差较大的初始候选框。为了得到符合车辆形态学特征的初始候选框,可以利用k均值聚类法对锚盒尺寸进行聚类。其具体步骤如下:
步骤1 对数据集中所有检测车辆进行手工标记,提取每一标注框对应的宽高值。
步骤2 按照欧氏距离把相似度高的数据聚类为同一簇,则聚类中心的分布就代表了数据集中绝大多数车辆宽度和高度及其比值的分布。
步骤3 按照k值对应的聚类中心坐标值修改原锚盒尺寸和比例,然后分别进行训练与测试。根据检测准确率,即可确定车辆检测任务中更理想的锚盒尺寸和比例值。车辆检测结果示意图如图1-19所示。
图1-19 车辆检测结果示意图[7]