APP下载

基于公路监控视频的车辆检测和分类①

2020-11-13曹富奎许晓珑

计算机系统应用 2020年10期
关键词:高斯卷积背景

曹富奎,白 天,许晓珑

1(中国科学技术大学 软件学院,合肥 230027)

2(福建省 厦门市公路局 信息处,厦门 361008)

中国经济高速发展带来机动车数目的急剧增加,造成道路交通中堵车和交通事故现象呈上涨形势,改善交通治理策略逐渐提上日程.随着科技的进步,诞生了智能交通理念,即通过分析道路交通信息得出科学的治理策略,车辆检测作为智能交通工作的基础成为了研究的热点.最早有帧差法[1]和光流法[2]进行车辆检测,这两种方法原理简洁,运算快速,但是在应对复杂的道路状况时会出现检测偏差.后来出现了基于统计的模型方法,运用最多的是基于多态高斯分布的背景模型法[3],该方法能够很好的应对各种变化,能在复杂的道路场景里提取出运动车辆的图片.随着现代深度学习理论的产生和成熟,围绕着目标检测问题诞生了很多检测算法,主要有:RCNN 算法[4]、Mask-RCNN算法[5]、Fast-RCNN 算法[6]、SPP-Net 算法[7]、Faster-RCNN 算法[8]、R-FCN 算法[9],Singh[10]改进了R-FCN算法,实现了多类别的检测,Hu 等[11]创建的的关系网络刷新了检测的精确度,Cai 等[12]创建了级联RCNN将其扩展到多段.深度学习技术在目标检测中获得了不俗的成绩,但是却太依赖于高性能硬件,训练模型也需要花费大量时间,因此本文在车辆检测阶段不采用深度学习的方法,选择高斯混合模型法来进行车辆检测,传统的高斯混合模型法由于初始化模型速度慢、计算量大在实时性上表现不佳,本文对高斯混合模型法做了改进,降低了模型计算量,提高了检测实时性.

车辆分类属于目标识别问题.目标识别问题解决方案主要有两种,一种是采用手动设计图像特征,如HOG特征[13],然后使用分类器做分类.另外一种是使用深度学习技术做分类,主要是运用卷积神经网络(CNN)做目标识别.2012年AlexNet 网络[14]模型在图像识别的应用中取得了巨大成功,使得CNN 成为了目标识别的主流方法,因此本文采用深度学习技术,使用GoogLeNet[15]分类网络对车辆进行分类.

1 基于高斯混合背景模型的目标检测

1.1 建立和维护背景模型

在实际的道路场景里有很多不可控的变量会导致场景背景发生改变,给背景模型的建立和维护增加了难度.目前主要有以下3 个方面引起背景发生变化:

(1)光照突然变化.例如突然转换光源,场景背景像素发生剧烈变化,导致检测结果出现差错.

(2)物体阴影.运动物体由于光线投影产生阴影,阴影属于背景但是却始终伴随着运动目标,导致背景和目标的界限变得模糊,增加了检测的难度.

(3)动态的背景.现实场景中的背景区域存在运动变化的现象,可能是周期性的运动,也可能是不规则的运动,比如树叶的不规则晃动,信号灯的规律闪烁.

为解决上述3 方面带来的背景变化问题,Stauffer等[16]首次利用高斯混合模型进行视频监控的前景检测,取得了较好的效果.此后,高斯混合模型经过不断发展和完善,成为目标检测领域的经典模型.

1.2 高斯混合模型

在真实的监控环境下,道路两侧摄像头拍摄到的视频影像中会夹杂很多的噪声,一般我们认为从监控设备引入的噪声服从正态分布,对于输入的每一视频帧,按照式(1)进行预处理.

用k个高斯分布组合表示每个背景像素,假设t时刻的背景像素为xt,由k个高斯分布如式(2)表示:

其中,ui,t是第i个高斯分布在t时刻的均值向量.将像素值xt与组合分布中的k个高斯分布做比较,当xt和ui,t满足式(3)时,认为xt属于其中一个高斯分布.

δ通常取3.若xt属于其中的一个高斯分布,则将该高斯分布的参数按式(4)更改,剩下k–1 个高斯分布的参数则按式(5)衰减,其中 α表示模型的学习率.与xt相符的高斯分布的ui,t和σi,t2按照式(6)和式(7)更新,其他k–1 个高斯分布则保持不变,ρ=α/wi,t表示参数的学习率.

p=wi,t/σi,t,我们将k个高斯分布按P值排序,选择前B个分布作为背景模型,如式(8)所示:

式中,V通常取0.75.

建立好了背景模型,当新的视频帧输入系统,将像素值xt与背景模型中的B个高斯分布进行比较,如果xt属于其中的一个分布则认为其是背景,反之则认为是运动目标.

1.3 改进模型初始化算法

高斯混合模型法初始化背景模型时最常用的方法是用视频开始的帧图像作为背景来初始化模型的参数值,当视频的开始部分只有背景时,该方法能很好的进行下去,但如果视频一开始就出现了运动目标,该方法会把运动目标设置为背景,故本文提出新的初始化方法,使用视频前4,9,16,···,(K+1)2帧图像,K是高斯混合模型中包含的高斯分布的个数,将(K+1)2帧图像的像素值作为第K个高斯分布的平均值,再初始化方差和相同的权值.具体步骤如下:

(1)将视频输入系统,并提取前4,9,16,···,(K+1)2帧图像,做预处理降低图像中的噪声,记作:f1,f2,f3,···,fk;

(2)将fi的像素值作为第i个高斯分布的均值,初始化一个方差,并赋权值为1/N;

(3)输入下一帧图像,用建好的背景模型检测车辆.

试验分析:图1是用传统高斯混合模型初始化的背景模型图像,可以看出使用传统方法得到的背景模型图像模糊难辨,与真实的场景背景有着十分大的差别,基于这样的背景模型检测车辆,检测结果往往会不准确.图2是改进方法的初始化的背景模型图像,相比于图1,这幅背景模型图像显的十分清晰,能够正确的表现场景的背景,由于初始化的背景模型的图像是由多个高斯分布的权重和均值之积组合得到的,造成了图像中出现车辆重影的现象,不影响车辆的检测.

图1 传统高斯混合模型背景图像

图2 改进的高斯混合模型背景图像

1.4 改进建模区域

通过实际观察可以看出,在视频帧中运动车辆只占了图像的小部分区域,图像的大部分区域都是没有发生变化的背景区域,为这些背景区域的像素建立模型是不必要的,由此带来的计算过程也是浪费计算资源,故本文提出新的建模方法,通过对视频帧的初提取,先把包含汽车的区域提取出来,然后使用高斯混合模型法在提取到的图像上进行建模,缩小了建模区域,减少了建立背景模型过程耗费的时间,提高了车辆检测的实时性.

对视频帧进行初提取得到包含车辆的区域,初提取的精度影响着后续检测结果的精度,当初提取出现漏检时,后续的检测也一定会漏检,因此初提取要能正确提取出包含车辆的区域,同时初提取的速度要快,不能耗费过多时间,因此选择帧差法做车辆的初提取.常用的帧差法有两种,分别是两帧差法和三帧差法,但两帧差法会出现“重影”和“空洞”现象,在实际应用中面对复杂场景无法正确检测出目标,三帧差法可以消除“重影”,但是依然存在“空洞”现象和部分物体轮廓不连续.

通过对本文采集的视频的研究,发现在大部分情况下,车辆从在视频里出现到占据视频的中心,大多是经过5 帧,因此本文在发现这种现象后,提出用相邻5 帧图像进行运动车辆的初提取.工作流程如下:

第1 步.假设当前帧为ft,将ft与ft+2按像素点逐一相减,得到二值图像B1.

第2 步.将ft+2与ft+4按像素点逐一相减,得到二值图像B2.

第3 步.对B1 和B2 取并集,在经过形态学处理和填充,得到车辆区域B3.

分别使用两帧差法、三帧差法和本文提的五帧差法对拍摄的视频进行前景提取,如图3所示.

通过实验结果可以直观的看出,本文的方法相较于传统的两帧差法和三帧差法,在前景提取精度上有了很大的提升,并且检测速度快,非常适合应用于对前景的初提取.

使用五帧差法得到提取好的车辆区域图像,在初提取的车辆图像上运用高斯混合模型法获得最终的车辆图像.改进后的结合五帧差法的高斯混合模型的车辆检测算法的工作流程如图4.

图3 差分法仿真图

图4 改进的高斯混合模型算法

改进后的基于高斯混合模型的检测方法步骤如下:

(1)使用五帧差法对输入的视频进行前景区域初提取,得到前景的二值图像,通过形态学操作得到前景区域.

(2)使用改进的背景模型初始化方法,对前景区域的像素建立背景模型.

(3)建立完背景模型,用当前帧减去背景图片得到目标的二值图像,并更新模型相关参数.

(4)对得到目标二值图像进行形态学操作,得出最终的目标区域.

(5)对下一帧重复上述步骤,直至算法完结.

2 GoogLeNet 分类网络

谷歌公司2014年提出来GoogLeNet 分类网络,并在当年的图像分类竞赛中取得了第一名,刷新了图像识别的最好成绩.GoogLeNet 网络运用了模块化设计,提出了新的网络单元结构Inception,网络整体是由多个网络单元结构按照一定次序组合而成,图5是Inception模块的设计图.

图5 Inception 模块

不同的卷积神经网络会选择不同大小的卷积核构建卷积层,每一卷积层会使用同一大小卷积核来对特征图进行卷积计算,Inception 模块最大的创新是在一个卷积层中采用了多个卷积核,不同卷积核会提取不同的图像特征,在模块最后将这些特征有机融合形成下一层的特征图,这样融合多特征的设计延深了网络宽度,提高了对图像识别的精度,但计算复杂度也随之增加,降低了识别速度.为了解决计算成本高的问题,在模块的设计上做了创新,图6是改进后的模块.新模块最大的特点是对1×1 卷积核的巧妙运用,在进行卷积计算和池化操作之前先用1×1 卷积核来降低特征图维度,这样在下一层的卷积计算中运算次数会降低一个量级,从而有效的降低了计算成本.经过模块有序组合而成的GoogLeNet 网络层数达到22 层,相比于之前的网络模型有大幅度的提升.

3 实 验

本文所提的车辆检测和车型分类方法基于OpenCV和TensorFlow 实现,试验所用的视频包含了不同天气和光照的复杂场景,实验环境的信息如表1.

3.1 实验系统架构

根据交通视频把车辆型号分成4 类分别为:car、bus、motor 和truck,系统要实现的就是检测到交通视频里的车辆然后识别出车辆是上述4 种类型中的哪一种,为了实现这一功能,我们设计的系统工作流程为:先通过系统的运动车辆检测模块将视频里的运动车辆检测出来,然后人工标注好图片的类别,训练目标分类模块,使用该模块执行分类任务,系统架构如图7.

图6 改进的Inception 模块

表1 实验环境信息

图7 系统架构图

3.2 试验数据集

本文以厦门市各路段摄像头拍摄的监控视频为系统实验数据,所有的视频均为现实场景下的真实监控视频,通过车辆检测模块总共截取了50 000 张不同类型的车辆图片.其中各种车型对应的数量见表2.

表2 车辆检测模块检测结果

将得到的全部图片按照1:1 划分为测试集和训练试集,训练集中car 10 000 张,bus 8000 张,motor 2000 张,truck 5000 张.由表2可知,由于motor 数量比其他车型的数量少了很多,如果直接用原始的数据集训练分类模型得到的模型分类准确性会有很大的偏差,所以要进行数据集扩充,将2000 张motor 图片使用图像处理技术增加到10 000 张,对其他3 种车的图片执行相同的操作.扩充后的数据集如表3所示.4 类车型样本图片如图8所示.

表3 运动目标分类模块数据集

图8 4 种车型样本

3.3 实验结果及分析

针对基于监控视频的车辆检测和分类的问题,本文改进了高斯混合模型算法,并用GoogLeNet 网络做车辆分类,在实验中设计实现了算法.由于实验效果需要对比,在车辆检测阶段,本文使用Faster R-CNN 和YOLO 对相同的视频做了实验[17],实验结果对比如表4所示.

表4 车辆检测结果对比

表4给出了检测阶段的数据,结果表明相比于深度学习的方法,本文所提方法在检测准确率和检测速度上都更加优秀.

在车型分类阶段,本文训练了GoogLeNet 模型进行分类,同时也训练了经典的AlexNet 模型用作对比[18].在实验中我们对原始数据集进行了扩充,但得到的训练集也只有40000 张图片,数据集过小会导致模型过拟合现象,因此在实验中采用了迁移学习[19]技术,将经典模型卷积层的参数直接迁移到试验模型上作为模型初始化参数.使用ImageNet 数据集训练好的GoogLeNet模型和AlexNet 模型能够很好的提取图像的特征,因此在实验中用训练好的模型的参数作为试验模型的初始化参数,然后使用自采集的训练集finetune[16]试验模型.图9为4 种车型的分类结果,从置信度上可以看出分类的准确性非常高.

图9 车型分类结果

表5展示了GoogLeNet 模型和AlexNet 模型在分类准确率上的对比,可以看出GoogLeNet 不仅在分类准确率上比AlexNet 稍高一些,而且在运算时间上比AlexNet 降低了22%.试验证明,GoogLeNet 分类网络在基于监控视频的车型分类上具有很好的实用性.

表5 车型分类结果对比

4 结 语

本文针对公路交通监控视频中车辆检测和车型分类的具体应用场景,改进了高斯混合模型建立背景模型的方法,提升了系统的实时性,并和GoogLeNet 分类网络结合起来.通过建立背景模型和背景相减法得到运动车辆,然后使用训练好的分类模型对车辆进行分类.在具体场景的实验中,该算法取得了较快的检测速度和分类准确率,比现有方法更加适合公路监控视频这一应用场景,具有很高的实用价值.

猜你喜欢

高斯卷积背景
基于全卷积神经网络的猪背膘厚快速准确测定
“新四化”背景下汽车NVH的发展趋势
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
《论持久战》的写作背景
黑洞背景知识
数学王子高斯
天才数学家——高斯
从自卑到自信 瑞恩·高斯林