2.1引言
本文要讨论的多人体目标跟踪问题,所采用的主要结构就是基于多目标检测的多目标跟踪,即将多目标跟踪问题分解为两个子问题:一是目标检测,二是目标跟踪。在计算机视觉领域,目标检测和跟踪一直是最为经典的问题,从计算机视觉学科诞生以来,无数的天才学者在目标检测与跟踪这个领域里面贡献出了青春与汗水,各种惊才绝艳的算法层出不穷。 就目标检测来说,可以从检测目标是静止的还是运动的来分为单帧目标检测和运动目标检测,运动目标检测算法的优势就在于计算速度较快、检测粒度较小,然而和单帧目标检测相比,运动目标检测算法一方面是缺乏对静止目标的检测能力,另一方面对目标发生粘连时缺乏单个目标的分割能力,所以单帧目标检测往往具有更加鲁棒的目标检测效果。本章将对基于背景建模的运动目标检测方法和基于特征分类的的单帧目标检测方法进行介绍。 再看目标跟踪,广义上来说多目标跟踪其主要目标就是在一段视频序列中对同一个目标进行持续的跟踪,形成一个跟踪轨迹段,再往上扩展,通过对多个目标进行跟踪形成多个跟踪轨迹段,然后通过数据关联(Data Association)算法,将连续视频序列中的多个跟踪轨迹段关联起来,形成多个目标的跟踪轨迹,即完成了多目标跟踪。而对于基于检测的跟踪框架来说,数据关联则针对己跟踪的目标轨迹和当前帧的检测结果进行关联匹配。本章选择了两种较为经典的目标跟踪方法进行了介绍。 2.2目标检测方法 2.2.1基于背景建模的运动目标检测方法 基于背景建模的检测方法,其方法本身的建立就是为了应用于运动目标检测的情形,总的来讲,基于背景建模的目标检测方法首先是对场景中静止不动的物体都作为背景,建立背景模型,然后利用当前背景模型对场景中的运动目标进行判别和定位,然后再根据目标判别结果对背景目标进行一定速率的更新,以适应背景物体的变化,如光照、雨雾等。 基于背景建模的检测方法的基本流程如图2一l所示。现阶段比较流行的背景建模的算法主要有混合高斯模型(GauSSian Mixture Model,GMM)[32一34]和viBe算法(Visual Background Extractor)[35,36]。 ![]() 2.2.1.1 GMM背景建模
混合高斯模型最早由Stauffer等人[32]提出,其基本思想是假设每个像素之间相互独立,每个像素为背景的概率密度函数由多个高斯函数线性组合而成。相对于简单的高斯背景模型,混合高斯模型能够更加准确地对概率密度函数进行近似,因此更加适合描述实际场景的复杂背景模型。
混合高斯模型对于背景概率分布的建模过程主要分为模型初始化、前景检测和模型更新等步骤。下面对混合高斯模型的建模计算过程进行介绍。
(l)模型初始化 混合高斯模型,对每个像素点都将建立一个背景模型,而这个背景模型顾名思义就是由多个高斯函数混合而成,则我们用Xt表示某像素点在 t 时刻的像素值,则得到初始化背景模型为:
![]() K为所采用的高斯函数的数量,虽然采用更多的高斯函数的组合能够带来对背景模型更加强大的近似能力,但是受限于计算资源和计算复杂度问题,往往所选择的 K值都不会太大。ω(i,t )为第 i 个高斯函数在 t 时刻的权重,μ 和 σ^2则分别为高斯函数的均值和方差。η 则是高斯分布函数,具体形式为:
![]() C 为图像R,G,B三个通道像素之间的协方差矩阵,假设通道之间像素相互独立,则 C=σ(i,t)2 I 则混合高斯背景模型的主要参数为ω,μ 和 σ,而模型初始化也即是对这几个参数进行初始化,假设初始化需要视频的前N帧作为依据,则初始化赋值表示为: ![]() (2)前景检测 混合高斯模型的前景检测过程即是对每个像素进行计算,判断其是否符合背景模型。然而对于混合高斯模型,由于其是由多个高斯函数线性组合而成,对于像素点是否符合该概率分布的计算变得较为复杂,为了进行简化,原作者提出的改进方法是对于新像素点单独判断其是否符合混合高斯模型中的某个高斯模型,然后通过该高斯模型的权重来判断该像素的是否为前景。对于第 i 个高斯背景模型,其权重 wi越大,则表示背景的分布情况越接近该高斯函数,而另一方面背景点的模型往往具有更大的标准差σi,故混合高斯模型首先会通过 w/σ 的大小对组成混合高斯模型的各个模型进行排序,然后选取前B个最接近背景分布的高斯模型进行前景检测,B的选取条件为: ![]()
其中 T 为手工设定的选取阈值,若T的值选取太小,选取的模型太少,不能够很好地近似背景分布,对噪声更加敏感;而若选取太大,则又减小了前景检出率。选取了B个高斯背景模型之后,则将像素点依次跟这些高斯模型进行对比: ![]() 如果满足上述条件,则该像素点被判断为背景点,否则跟下一个高斯模型进行对比,直到全部对比完毕之后,若还是没有满足上述条件出现,则判断为前景。其中,λ 是手工调节的参数,较大时,则算法倾向于将像素点判断为背景点,减少噪声影响,但是有可能会造成一些漏检情况发生; 而 λ 较小时,则会减少漏检,但是会引入更多噪声点。
(3)背景模型更新 混合高斯模型的背景更新策略主要是建立在目标点是否找到匹配的高斯模型之上的。如果在混合高斯模型的K个高斯背景模型中都无法找到匹配的模型,则我们认为该点目前属于前景,考虑到其有可能在后续过程中变化为背景,故需要根据其像素值重新初始化一个权重最低的高斯模型,加入模型组合中。 另一方面,如果最佳匹配模型为第 i 个模型,则需要对所有模型的权重都按照一定策略进行相应地更新,再对第 i 个模型的参数进行更新,更新过程表示如下: ![]() 其中,α 为学习率,控制模型的参数更新速度; Mi,t是指示函数,当模型是最佳匹配时,Mi,t 否则为0。
通过这种更新策略,混合高斯模型提高了对于目标从运动到静止,再从静止到运动的适应性,当目标突然静止,则模型不至于马上就将原背景模型去掉,而是逐渐减小其权重,若目标这个时候又发生运动,则模型可以很快地对其进行判别。
2.2.1.2 VIBe背景建模算法 本节将简要介绍一下VIBe背景建模算法。 (l)基本思想 VIBe算法是一种基于采样的背景分割提取算法,其主要贡献就是提出了一种随机采样策略,来对像素级背景模型的像素值进行更新,确保了模型更新的平滑性和稳定性。另一方面,该算法的作者还提出了一种随机将像素值传播给邻域像素的方法,以使背景模型更新具有一定的空间连续性(S patial Consistency)。该算法的另外一个优势就是初始化,通过该算法提出的初始化方法,可以使背景模型只需要一帧就可以完成初始化。由于该算法的模型建立较为简单,在具有出色的背景分割效果之外还具有极快的计算速度,十分适合嵌入式平台等计算力有限的平台,在视频监控领域得到了广泛的应用。 具体来说,对图像中某个像素点,VIBe算法将从其像素值和邻域像素的历史值中进行随机采样,从而为当前像素点建立背景样本模型;然后在下一帧中,对每个新像素值,通过与其背景样本模型进行比较来判断该像素点属于前景还是背景,最后通过随机策略更新背景样本模型。VIBe算法的基本流程如图2一2所示。 ![]() (2)初始化
对于基于背景建模的目标检测方法而言,其首要的一步就是初始化背景模型。另外一些背景建模算法往往需要通过多帧的统计学习才能对背景模型进行初始化,而VIBe算法的一个优势就是仅需要一帧图像就可以完成背景模型的初始化。在上一部分我们讨论过了VIBe算法的基本思想,即某个像素点的背景模型是由该像素和邻域像素的历史值随机采样得到,而在初始化的过程中,由于没有历史信息,所以其背景模型的建立则仅考虑了空间邻域的采样,即从该像素p点周围邻域随机进行N次采样,作为p点的背景模型:
![]() 样本个数 N 通常取20,采样的邻域范围可以自行定义,往往采用八邻域作为其采样范围。虽然这种初始化方式看上去很简单,但是其有效性在实践中得到了证明。唯一的不足之处是由于初始化的时候没有时域历史信息,所以第一帧产生的扰动有可能会导致虚假目标的出现,不过随着后续帧的更新可以很快消失掉。 (3)前景检测 在背景模型初始化完成过后,对于后续帧则需要首先进行前景检测。具体来说,VIBe在前景检测的过程中,将每个像素的新像素值与其背景模型进行对比,计算出相似性,如果相似性低于某个阈值,则该像素为前景像素。 对于像素p(x),VIBe算法将定义一个以 p(x) 为中心,半径为R的超球SR(P(x)),其维度由像素点的维度决定,通常对于三通道图像而言,SR(P(x))为三维球。而对p(x)为前景还是背景的判定则通过SR(P(x))与背景模型B(p(x))的交集大小来确定,定义一个阈值Tmin,如果交集小于界Tmin则被判定为前景: ![]() 其中超球区域半径R和交集阈值Tmin是决定模型精确度的两个主要参数。ViBe算法中这两个参数将是固定值,即不会在算法运行的过程中发生改变,通过实验得到的一个较为理想的经验值是R=20 ,Tmin=2 。 (4)背景模型更新
随着时间的流逝,所需要处理的视频环境中的场景也会发生一定程度的改变,大者如环境光照变化、云雾变化、天气变化,小者如运动目标的出现或原本静止物体开始运动。这些变化带来的结果就是原本的背景模型无法再继续适用,应当随着时间逐渐对背景模型进行更新,以适应环境的变化。而在ViBe算法中来说,由于背景模型就是由样本组成,所以背景模型的更新问题也就是在更新模型时保留哪些样本和保留样本时间长短的问题。 另外一些背景建模方法多采用的是先进先出的策略去更新模型中的样本像素,但是这样一种策略往往并不能妥善地处理各种类型的背景场景变化,所以其他的背景建模方法更多地会考虑加大模型复杂度来解决背景变化问题,如[[37]就选择采用200个背景样本来作为像素背景模型,而[[38, 39]甚至通过建模两个子模型来分别处理快速变化和慢速变化两种情况。 而在V1Be中,则采用了一种随机的策略来决定每次的像素模型更新中,哪一个样本应该被新样本替换掉,即在每个像素的N个背景模型样本集中随机地选择一个样本。具体来说,对于一个在to时刻出现的样本,在t1时刻仍然保持在背景模型中不被更新的概率为: 另一方面,为了保持一定程度上的空间连续性,ViBe算法还会随机地对正在处理的像素的领域像素的背景样本模型进行更新。这种样本传播的方式看上去比较简单,但是实际上来看,如果随机传播的信息是无效的,这种传播至少不会对目标检测结果造成影响;但如果在相机运动或者低照度的情况下,这种随机传播就能提高空间一致性,从而使算法更加稳定。 1 |
|