APP下载

一种融合MeanShift聚类分析和卷积神经网络的Vibe++背景分割方法

2021-04-17刘子豪贾小军张素兰徐志玲张俊

电信科学 2021年3期
关键词:像素点卷积神经网络

刘子豪,贾小军,张素兰,徐志玲,张俊

(1. 嘉兴学院数理与信息工程学院,浙江 嘉兴 314033;2. 中国计量大学质量与安全工程学院,浙江 杭州 310018;3. 浙江大学生物系统工程与食品科学学院,浙江 杭州 310058)

1 引言

近年,动态目标的背景分割一直是视频处理领域的研究热点,因其面向应用场景的广泛性和多样性,吸引了大量研究者。传统动态目标的背景分割方法有背景差分法[1]、光流法[2]、分水岭算法[3]、帧差法[4]、水平集法[5]、背景更新恢复法[6]等,这些方法可以滤掉视频中的各种干扰背景,但也存在诸如分割目标残留、噪声分割错误以及拖影无法有效判别等问题。为了解决这些问题,有学者提出采用基于Vibe背景分割[6]方法实现动态目标的精准分割。

Vibe背景分割算法最早由Barnich在2011年提出[7],主要思想是通过不断收集更新背景空间图样构建背景分割模型,该算法在空间背景图样的随机选择和模型更新中提出了一种空间传播机制,可将背景像素值插入邻域像素点的模型样本库中,具有较大的灵活性,但是也存在诸如抖动参数优化、背景噪声抑制不佳、填充面积不完善等问题,因此在随后的一段时间,较多相关研究者基于以上问题对传统Vibe算法进行了改进,例如2013年,Gulesir等[8]在原始Vibe方法中加入了背景像素与前景像素的函数筛选规则,探索如何最大限度地保留前景运动目标和剔除背景噪声目标;2017年,Zhou等[9]通过深度融合目标像素线索和可视化背景样本图样,提出了Vibe+算法,在一定程度上对原始Vibe算法中存在的问题进行了修正和优化。然而,Vibe+算法在以下两个应用中存在问题。

(1)当监控视频中出现运动的行人、机动车辆、非机动车辆时,采用Vibe+算法进行前景提取很容易因为树叶随风摆动或者河流流动的运动梯度模式与目标运动模式一致而导致前景目标提取失败。

(2)在自然场景下,天气有晴天、阴天、雨天、雪天等,不同的天气条件会导致分割异常,例如,当太阳光直射在目标表面产生高光区时,常常会因为高光区域的图像信息失真,目标提取不完全,从而导致分割失败,而且阳光下运动目标的拖影较明显,拖影会随着目标运动而运动,Vibe+算法会使得拖影部分附着在前景目标中一起被分割出来,从而导致对运动目标的分割失败。

针对以上问题,本文在Vibe+方法的基础上引入卷积神经网络(CNN)和改进MeanShift聚类算法,实现运动目标的精准分割。首先,采用传统的Vibe+算法获取视频帧二值图像,利用区域生长算法对轻微扰动噪声删除;然后,基于CNN对运动目标拖影区域进行检测和识别,联合改进的MeanShift聚类分析对图像中不同目标进行分类,获取关于拖影特征的分类结果,进行拖影的消除处理;最后,整合以上两个步骤,完成前景运动目标提取。

2 改进MeanShift聚类分析与卷积神经网络的融合方法

2.1 噪声扰动消除算法

在采用Vibe+算法处理后的视频中,轻微抖动的目标例如树叶、微波扰动的湖面、被风吹动的条幅等均会在背景分割的二值化视频帧中存在相对应的噪声干扰点,这些干扰点具有断断续续且相互联接不紧密的特点,而且噪声大小和强弱随机,即无法对噪声进行建模定位和规则化处理,需要针对目标视频中每一帧图像由非目标引起的干扰点进行处理,因此,本节采用基于区域生长算法对分割图像中所有的连通区域进行标记。

2.1.1 区域生长算法

对Vibe+算法处理后的二值图像中各个连通区域采用基于区域生长算法[10]进行标记,其主要思想为:对其中每个像素点遍历其周围八邻域内的像素点,当检测到存在相邻像素点与当前像素点连通时,将当前像素点周围八邻域内的面积子区域与各个相邻像素点周围八邻域内的面积子区域共同确定为连通区域,因此可实现目标块区域的自动标记。

2.1.2 区域填充与阈值分割

为了避免算法过多标记出多个较小的连通域而使得连通域标记法算法执行缓慢,本节在标记连通区域后采用区域填充算法[11]对各个二值图像中的封闭区域进行像素值为1的像素点填充,从而加快算法程序执行速度,获取完整大块的连通区域。在获取连通区域个数及其面积数值之后,依次对连通区域的面积数值进行由大至小排序,并对相邻两个面积数值的面积差值进行统计,确定面积差值最大值对应的两个面积数值,将两个面积数值的平均值确定为面积筛选阈值,由于同一个视角拍摄的视频中运动目标尺寸相差较小,通过Vibe+算法处理后生成的二值图像中除了有大块运动目标,还存在微小的点,这些较小的点可认为是噪声所引起的干扰因素,因此把所有小于面积筛选阈值所对应的连通区域全部删除,即可通过去噪点获取处理结果。

2.2 拖影区域检测与识别算法

在阳光充足的晴天开放式场景下,运动目标拖影是监控视频中最常见的另一类背景分割干扰项,为了消除由拖影带来的过分割问题,本节首先对传统的MeanShift聚类算法[12]进行改进,然后让其与卷积神经网络[13]进行融合,最后消除拖影。图1给出了这两种算法融合的流程图。

2.2.1 改进MeanShift聚类算法

图1 融合算法的执行步骤与流程示意图

MeanShift算法最早由Fukunage在1975年提出[14],其最初表示偏移均值向量,随着理论的发展,MeanShift的含义已经发生了诸多变化。之后,1995年,Cheng[15]定义了一族核函数,使得随着样本与被偏移点的远近距离不同,其偏移量对均值偏移向量的贡献也不同,作者首次提出采用单体核函数对像素点的漂移向量进行计算,获取了较好的结果,但是该方法由于把像素点由低维空间映射到高维空间中,在计算漂移向量不同空间维度的转换位置迭代时,会不断地有偏移量错误累积,存在较大计算误差,因此引入了5种核函数[16]的均值组合模式,从感兴趣区域中心点出发寻找最佳目标像素点,最小化累积误差,同时达到最小化向量投影到高维空间中误差的目标。与传统基于单一数据密度变化不同,本节对不同维度空间漂移向量的映射加入以数据密度为基础计算漂移向量的综合均值核函数,将每个图像像素点移动到密度函数的局部极大值点处(密度梯度为0),收敛到概率密度最稠密处,获取最优的收敛结果,可降低图像像素点的漂移向量计算误差。改进MeanShift聚类算法的核心思想在于:引入线性核函数、多项式核函数、高斯核函数、多元二次核函数和Sigmoid核函数的均值组合模式,共同对视频图像进行聚类计算,得到视频图像中对应的各个区域块图像,然后依据最小化漂移向量计算误差为原则,得到最优的核函数。改进MeanShift所采用的5种核函数如下所示:

其中,线性核函数的表达式为式(1),多项式核函数的表达式为式(2),高斯核函数的表达式为式(3),多元二次核函数的表达式为式(4),Sigmoid核函数的表达式为式(5)。在上述表达式中,变量x表示视频帧提取特征,y表示该特征被映射后的结果向量,a、c表示常数项,而σ表示函数的惩罚系数,该系数越大意味着核函数的值越小,反之就越大。

对5种核函数所采用的均值综合计算方法在于获取5种核函数在不同空间转换过程中漂移向量的误差累积值,在每次迭代中对误差较大的核函数乘以较大的惩罚因子,而对误差较小的核函数乘以较小的惩罚因子,而且加入常数项以弥补漂移向量空间转换的参数缺失带来的不良效果,核函数均值综合计算式如(6)所示。

其中,K(x,y)表示核函数的均值综合项,i和j分别表示惩罚因子和不同核函数的下标表示,iσ表示不同核函数的惩罚因子项,k j(x,y)表示不同核函数公式,N表示所采用核函数的数量。

通过以上理论分析,本文对传统MeanShift聚类分析算法改进的步骤如下。

步骤1对于原始图像,对其中未被标记的图像像素点随机选择一个点作为起始中心点Center。

步骤2将以Center为中心点、半径为Radius的区域范围内出现的所有像素点类别确定为类别C,同时在该聚类中记录数据点出现的次数自增1。

步骤3以Center为中心点,计算从Center开始到集合M中每个元素的向量,分别计算向量利用不同核函数从低维空间到高维空间的映射结果,取5种核函数计算结果的误差最小项作为高维空间漂移向量Shift取值。

步骤4Center = Center + Shift,即Center沿着Shift的方向移动,移动距离采用欧氏距离计算公式:移动方向采用Center的移动方向即可。

步骤5重复执行步骤2~步骤4,重复迭代直到Shift收敛,取该算法迭代到收敛时的Center作为最后的执行结果,此迭代过程中遇到的点都归类到当前簇C中。

步骤6如果收敛,当前簇C的Center与其他已经存在的簇C2中心的距离小于阈值,那么把簇C2和簇C合并,数据点出现次数也对应合并,否则,把簇C作为新的聚类。

步骤7重复执行步骤1~步骤5,直到二值图像中所有像素点都被标记为已访问。

步骤8对每个像素点进行分类,根据每个类对每个像素点的访问频率,取访问频率最大的那个类作为当前点集的所属类。

改进MeanShift聚类算法的核心步骤如图2所示。

在一幅视频获取的图像中,存在3种需要检测的拖影区域:拖影、非拖影、拖影边缘,其中拖影边缘包含了拖影的轮廓信息,而拖影区域即该轮廓所包含的内部阴影区域,因此拖影边缘的检测是关键,接下来在基于改进MeanShift聚类的结果基础上,采用卷积神经网络对拖影边缘区域进行检测和识别。

2.2.2 卷积神经网络算法

图2 改进MeanShift聚类算法的核心步骤

本节所采用的拖影特征区域提取方法选用3种类型的训练图像类型:拖影区、非拖影区、拖影边缘区,训练数从RGB 图像和阴影先验分布图融合结果中获取,所采用的CNN包括6个卷积层、两个池化层和两个全连接类别输出层,其输入数据为224×224图像块,输出数据为对应区域的拖影概率预测值,该网络特别在最后的全连接层FC1后加入基于组合分类器判别模式的新全连接层FC2,分别进行3种分类器的综合分类,然后再基于IMAJ分类器融合规则[17]获取最优的拖影分类结果,这样做的目的在于使得输出的概率更加接近于实际的类别标签,呈现一定的相似像素索引性。卷积神经网络结构示意图如图3所示。

在构建卷积神经网络后,以各个训练样本图像所对应原始RGB图像和阴影先验分布图作为训练数据获取源,采用拖影区域、非拖影区域、拖影边缘区域作为3种训练图像类型,对卷积神经网络进行训练,得到模型用于测试视频帧获取最佳的预测结果。

2.2.3 融合算法

通过以上改进MeanShift聚类算法执行后,可形成如图1(b)所示的聚类结果,以每个区域块图像为基础在Lab颜色空间[18]提取颜色直方图,再提取每一视频帧的纹理特征Texton 直方图[19],训练支持向量机(SVM)分类器[20],生成阴影先验分布图,该图构建过程遵循图1(b)→图1(c)→图1(d)顺序。接下来,考虑基于CNN获取精确的拖影识别结果。然而,由于训练CNN的准确率极大地依赖于大批量的带拖影标注的图像或视频数据样本,现今公开的数据集中并没有大量拖影标注图像,因此考虑采用阴影先验分布图获取批量训练图像,再使用卷积神经网络作为训练图像模型,在测试阶段获取输入图像的拖影预测概率值。基于以上算法描述,将改进的MeanShift算法与卷积神经网络进行有效融合,具体步骤如下。

步骤1对于目标监控视频中的每帧图像,根据改进MeanShift聚类算法与第一次卷积神经网络的融合算法,识别出该帧图像中的拖影区域,并获取各个拖影区域在视频图像所对应去噪点分割处理后二值图像的拖影位置坐标,将二值图像中各个拖影位置坐标所对应像素点的像素值置为0,得到第一次拖影分割后的二值图像;根据第一次卷积神经网络计算得到的各个区域块图像为拖影的概率预测值,计算得到视频图像中的各个拖影边缘区域,该区域由自然场景下的目标与拖影共同组成,散落在如图1(g)所示的图像空间中,将拖影概率预测值大于或等于第一预设概率预测值,且小于或等于预设概率预测值的区域块图像确定为拖影边缘区域,然后将确定出的各个拖影边缘区域再一次导入卷积神经网络进行计算,采用超参数自适应调整策略中的超参数,例如学习率、样本批次、卷积核尺寸、卷积核数量和卷积步长,然后选择最优的参数,输入卷积神经网络,并向卷积神经网络输入大批量无标签的拖影边缘区域进行无监督学习,由卷积神经网络输出对不同拖影边缘区域的拖影预测值。

图3 卷积神经网络结构示意图

步骤2采用线性判别分析法对不同拖影边缘区域的拖影预测值进行统计分析,将拖影预测值相同的各个拖影边缘区域聚合为一类,即最小化同类拖影边缘区域之间的距离,最大化不同类拖影边缘区域之间的距离,以此为基础从中寻找最大化的拖影边缘区域分类边界,求出明显的边缘分界曲线。

步骤3采用融合约束函数R(S)对同类拖影边缘区域的图像进行边缘融合,融合约束函数的表达式为:

其中,m为分割区域的数量,α为固定常数项,表示所包含的区域之间的边界像素集合。

通过上述步骤可以获取关于视频帧中所有运动目标的拖影区域坐标向量,记录并保存这些向量。本文通过Vibe+运动目标分割算法可以提取完整的运动目标前景图像,其中可能包含有噪点和拖影,经过第2.1节的处理,可以剔除其中的噪点部分,记此步产生的二值图像为M1;然后,通过第2.2节的处理,可检测出原始图像中是否包含拖影部分,检测后生成的拖影二值图像记为M2;最后,提取M2中所有像素值为“1”的像素点坐标向量,把所有出现在M1中的坐标点所对应的像素值全部置0,即可获取最终的分割结果。

步骤4对于去拖影后的图像,计算该图像上下左右4个极值点坐标,在所对应视频图像中根据4个极值点坐标确定运动目标图像,实现对目标监控视频中运动目标背景的分割。

本文所提Vibe++算法的总体流程如图4所示。

3 实验结果与分析

本文主要采用公开的视频数据集[6]验证所提方法的有效性,数据集中包含31个视频序列,其中可分为6种类型:基准类(baseline)、动态背景类(dynamic background)、摄像机抖动类(camera jitter)、间断运动目标类(intermittent object motion)、拖影类(shadow)、热图类(thermal)。每个类别中的视频来源非常广泛,涵盖了自然场景、交通类、室内商场、运动员比赛、行人步行、湖面、运动场面等视频[21],对所提算法的对比与验证具有较好的测试性,该数据集包含的部分视频图像如图5所示。

图4 本文算法总体流程

图5 公开数据集中的部分视频画面

基于5个场景类别,所提算法与传统背景分割算法的对比结果如图6所示,其中Previous best表示以往较优的运动背景分割算法,Baseline表示基准对比图。

从图6可以看出,所提算法在拖影类、抖动类和动态背景类3类数据中可发挥较大优势,可一定程度上消除拖影和噪点,而且使得热图类和连续运动类得出的结果与基准图像保持一致,具有一定的适应性和鲁棒性。为了进一步验证本文所提算法有效性,且相比于其他传统经典背景分割算法的优势,本文选择了8种算法进行对比,实验结果见表1。其中视频帧分割时长表示分割每一帧图像所花费的时间,总体分割准确率(overall accuracy)可以用式(8)来表示:

图6 所提算法与传统背景分割算法的对比结果

其中,TP(true positive)表示真阳性,即相比于基准图像,把本来正确的像素点分割正确的像素点数量;FP(false positive)表示假阳性,即相比于基准图像,把本来错误的像素点误识别为正确像素点的数量。其中较优的结果用加粗字体表示。

表1 所提Vibe++算法性能评价

从表1中可以看出,相比于其他经典的视频背景分割算法,本文所提Vibe++在分割准确率方面是最优的,这表明Vibe++算法对经典算法中的分割错误问题,比如抖动噪声无法实时剔除、拖影分割不完全以及背景模型更新失败等方面的问题进行了修正,在原始的Vibe+基础上引入了区域生长算法和深度学习加聚类的融合算法,消除和避免了此类问题带来的消极影响,给监控视频中运动目标的分割带来了性能提升。然而,从每一帧视频分割的时间和算法复杂度方面来看,本算法消耗的时间最多且复杂度较高,分割一张2 MB图像需要132.7 ms,相比于帧差法的12.4 ms,足足多了120.3 ms,但是在高性能的现代计算机的中央处理器高速发展的今天,这样的分割时间是可以接受的,尤其以后随着高效率的图像矩阵处理芯片GPU不断推出,图像处理速度会不断提升,图像分割时间的可容忍范围也在不断扩大。

为了详细地在公开的视频数据集中给出每一类别的分割准确率,本文采用了3种方法进行对比研究——传统较优分割算法、Vibe+以及本文所提出的Vibe++。表2给出了采用本文所提方法结合公开的视频数据集中的5个类别图像分割的实验结果,其中较优的结果用加粗字体表示。

表2 本文所提方法与先前提出的方法对比

对于每一个单独的视频数据集来说,本文所提的算法分别对3个数据集(动态背景类、抖动类和拖影类)中出现的错误分类像素进行了修正和改进,取得了一定效果,所有类的分割准确率达到了98.58%,比之前最好的97.36%提高了1.22%,其中主要的提升点主要在动态背景类、抖动类和拖影类3个类别的错误像素的修正方面;从单独数据集来看,对于抖动类视频数据,由于本文加入了区域生长算法对噪声点和抖动像素点进行了识别和剔除,并采用面积阈值特征抑制了噪声点的形成规模,与Vibe+可以取得80.64%的分割准确率相比,Vibe++的分割准确率可以达到98.05%,提升了17.41%;而对于拖影类视频数据,由于在原始的Vibe+算法的像素背景自动更新模块中加入了改进的MeanShift聚类分析和卷积神经网络,新提出的方法除了兼顾Vibe+算法的优点,还具有拖影边缘的识别和检测功能,与原始的Vibe+可取得的83.02%的识别精度相比,Vibe++算法可以取得97.68%,提升了14.66%,所提升的分割精度部分即原始Vibe+算法对阴影区域无法识别的错误率,因此所提算法具有更好的适应性和鲁棒性。

从以上的实验结果中可以看出,所提算法取得了较高的分割准确率,为了验证所提算法中所加入的卷积神经网络的不同结构中,哪些因素对最终的分割准确率的提升产生正向贡献,这里展开消融实验在改进算法中寻优出最佳的卷积神经网络架构,以期在保证较高分割准确率的前提下,降低算法复杂度,缩短算法运行时间。表3展示了改变CNN不同结构下所获取的分割准确率以及分割一幅图像的执行时间。

从表3可知,当删除全连接层FC1或FC2后,两者产生的效果截然不同,删除FC1之后,模型的分割准确率只下降了0.7%,只是验证精度略有下降;而当删除全连接层FC2之后,模型的分割准确率下降了20.26%,即图像背景分割错误率会提升20.26%,这是因为在FC2中构建了一种包含有3种分类器的组合分类器,其中包含网络的大部分参数,这些参数确实会对最终拖影目标的识别产生消极影响;同时删除两个池化层(Pooling1和Pooling2)或删除其中一个池化层对错误率的影响也相对较小。但是,如果只保留第一个卷积层(Conv1)或只保留第二个卷积层(Conv2),那么模型的性能就会很差,这表明模型的整体深度对于获得良好性能很重要。然后,对模型的卷积核数量进行了调整,在前两个卷积层中改变了卷积滤波器的数量,模型所表现出来的分割精度不同,但彼此之间相差不大,这表明增加卷积层的卷积核数量多少只能在性能和模型训练时间上得到提高,但是同时也存在诸如全连接层过拟合风险。通过以上分析,在改进算法中所加入的CNN中,删除FC1、删除Pooling1或Pooling2以及适当调整卷积层的滤波器数量对本文所提算法的分割准确率和分割时间产生的影响均较小。

表3 CNN在不同结构下获取的分割准确率以及分割时间

然而,在某几个类别中,所提出的Vibe++算法并没有达到预期的效果,例如基准类、间断运动目标类和热图类,这是因为本文所提的方法主要针对Vibe+算法在分割不完全或者背景抖动导致的噪点和运动目标存在拖影方面进行改进。此外,为了进一步验证所提算法的鲁棒性,本文还把所提算法应用于带有强烈抖动和具有大面积拖影区域特征的车载监控视频数据和街边监控视频数据,并对比了Vibe算法、Vibe+算法以及本文所提的Vibe++算法对运动目标进行背景分割的方法,实验结果如图7和图8所示。

图7 车载监控视频下的算法对比结果

图8 监控视频下的算法对比结果

可以看出,经过Vibe算法处理后,图7(b)和图8(b)依然存在较多的噪点,且分割出的前景目标中包括高光区影响的背景目标;而经过Vibe+算法处理后得到的图7(c)和图8(c)虽然噪点现象略微减轻,但噪点现象和前景目标的错误分割现象依然严重,并且在微风吹动的条幅分割结果来看,存在噪声扰动,而经本文提供的Vibe++算法的运动目标背景分割方法处理分割后得到的图7(d)则能够准确清晰地提取到前景运动目标图像,并可以剔除多余的噪声干扰,填充了目标运动图像;在强烈太阳光影响下,运动目标(行人和摩托车)的拖影也可以通过本文所提出的融合改进MeanShift聚类算法和卷积神经网络进行拖影的检测和识别,起到至关重要的作用。

因此,本文提出的基于改进Vibe+算法的运动目标背景分割方法与现有Vibe算法、Vibe+算法以及当今现存的运动目标分割算法相比具有较大的优势,其对前景运动目标的分割准确率较高,且受视频图像内容干扰的程度小,因而具备较强的适用性。Vibe++算法除了在开放式场景下可以使用,还可以应用在特定场景下的运动目标识别,例如在工业领域中[25],生产线上运动的工业零部件,可以采用Vibe++实时跟踪目标,剔除由于机械装置抖动或电压不稳定带来的分割二值图存在较多噪点干扰的情况;而且还可以检测出因为采集视频或图像系统中的光源设计不合理导致的获取图像具有较多阴影,对阴影的检测和剔除同样可以采用Vibe++算法进行处理;在农业领域[26],使用无人机进行水稻、小麦等农作物进行产量评估时,往往需要通过无人机机载相机获取视频,然而在白天阳光的强烈照射下会出现作物的大面积阴影和由微风所带来的抖动,可采用本文方法进行拖影和噪点的消除;在水产领域[27],在养殖鱼或虾的池塘水面上获取图像时,获取的图像中往往会由于反光问题存在高光区,这些区域的存在会使得图像部分信息丢失,而且运动目标在光线下的不断移动也会存在轻微阴影的情况,也可采用本文提出的Vibe++予以解决。因此,本文所提算法具有在多个研究领域的应用前景和应用潜力。

4 结束语

本文针对传统Vibe+算法存在的抖动运动目标和拖影区域无法准确分割的问题,对Vibe+运动目标分割算法进行了两点改进:一是采用基于区域生长算法对分割图像中各连通区域进行标记,依据边界面积块差异特征设定面积筛选阈值,将不满足条件的像素点进行删除;二是对MeanShift聚类算法改进,并与卷积神经网络进行有效融合,对结果图像中拖影区域、非拖影区域和拖影边缘区域分类识别,计算拖影区域在图像中位置坐标,对其中各个拖影区域进行快速删除。本文所提算法在公开的视频数据集中包含的多个子类别中与之前的最优算法相比取得较好的分割准确率,并且通过车载视频和监控视频相关数据进一步论证了所提算法的有效性。在未来的无人驾驶汽车和视频监控研究领域中,本研究具有广阔的应用背景和较高的实用价值。

猜你喜欢

像素点卷积神经网络
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于局部相似性的特征匹配筛选算法
神经网络抑制无线通信干扰探究
从滤波器理解卷积
基于5×5邻域像素点相关性的划痕修复算法
基于傅里叶域卷积表示的目标跟踪算法
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
基于神经网络的拉矫机控制模型建立
复数神经网络在基于WiFi的室内LBS应用