基于混合高斯模型的生猪个体检测算法
2018-06-22李亿杨孙龙清邹远炳
李亿杨,孙龙清,邹远炳,李 玥
(中国农业大学信息与电气工程学院,北京 100083)
1 引言
生猪的基本行为特征主要通过每天采食量、饮水次数、排泄次数等表现出来,这些行为特征表现反映了生猪生长的健康状况。记录和分析生猪的行为特征,是判断其健康与否[1]的重要依据。运动生猪目标检测就是把生猪目标从背景图像中分割出来,为生猪目标分类、识别、跟踪、行为特征记录分析提供基础。
目前常用的运动目标检测主要有光流法、帧间差分法和背景相减法。光流法可检测独立运动对象,计算量较大,难以实时检测。帧间差分法实现简单,缺点是不能完全提取所有相关的目标。背景相减法抗噪性和鲁棒性相对较好,其中混合高斯模型是最成功的背景建模方法之一。许多研究人员对混合高斯模型算法进行了改进。Bouttefroy提出对混合高斯背景模型的方差和均值采用不同的学习速率,设定特定方差以消除由光照突变和运动状态突变等引起的噪声;Koray等人提出一种空间变化的高斯混合模型联合光谱和空间高光谱图像分类方法[21],模型提供了一个稳健估计的框架为小样本训练集,通过确定先验分布的均值向量和协方差矩阵来调整参数估计问题,同时利用像素空间变化混合比例来提高分类准确率;Shah等提出一种自动学习动态变化的场景和相应调整参数的方法,使用SURF特征匹配算法来抑制“鬼影”,同时引入一个新的时空滤波器来进一步完善前景检测结果;田杰等提出一种基于PCA和高斯混合模型的方法对小麦病害彩色图像进行分割,根据颜色特征将图像进行分块排序,各取前后多个分块组成新的像素集合进行高斯混合模型运算,将每个像素归类到已求出的高斯模型,实现小麦病叶的分割;刘冬提出在混合高斯模型中引入惩罚因子的动态背景建模方法,采用局部更新策略,以降低模型复杂度和解决前景消融问题,采用基于色度偏差和亮度偏差的二分类算法,避免目标物阴影区域的影响。但是混合高斯法存在以下不足:(1)每帧中对所有像素对应的高斯分布个数都保持固定不变,在实际高斯背景建模场景中,不同区域对应场景的状态变化是不同的,随着场景变化,同一区域的状态个数也会改变,若对所有像素点都保持相同的模型个数,算法效率低造成大量的资源浪费,难以实现实时性。(2)模型中采用固定学习率,当学习率与场景速度不匹配时,检测结果会出现误判点、漏检以及“鬼影”现象。Stauffer与Grimson构建自适应的混合高斯背景模型,利用在线估计来更新模型,有效地解决了光照变化和背景混乱等外界干扰所产生的噪声;Chen和Ellis提出了一种基于自适应高斯混合的算法,对静态摄像机拍摄的场景的背景建模,该模型采用动态学习率,适应全局光照,以应对场景光照的突变。Ren等人介绍了一种基于高斯混合模型的运动目标检测自适应学习算法,将学习过程模型分为初始形成和后台维护更新的两个阶段,并在不同阶段采用了不同的学习策略。与其他非自适应方法相比,高斯混合模型在初始化过程中不需要人工干预,背景计算误差积累较小,背景变化具有良好的适应性。为了提高建模的收敛速度,本文提出了一种改进的自适应方法来调整高斯分布模型的数量,并利用自适应学习率消除或减少误判点和重影。
2 混合高斯背景建模
混合高斯模型法(GaussianMixtureModel,GMM))原理:由于环境因素的影响,视频图像中每一个像素点的灰度值会随环境不断变化,一般认为背景像素的灰度值变化符合高斯分布,可以通过多个高斯分布的加权和来模拟这种变化,即可用混合高斯模型来描述视频图像背景的变化,前景目标变化是随机的,一般不服从高斯分布。基于这个思想,如果像素点满足已经构建的高斯分布模型,则认为是背景,反之为前景。
用η(Xt,μ,∑)来表示均值为μ,协方差矩阵为Σ的高斯分布的概率密度函数,对特定像素点的视频序列可看作一时间序列,设用来描述每个点颜色分布的高斯分布共有 K个,分别记为:
其中下标t表示时间,K为高斯函数个数,μi,t为第i个高斯模型的数学期望(均值),Σi,t为第i个高斯模型的协方差矩阵。n为每个像素观测向量Xt的维数(一般指像素的灰度信息)。为简化计算量,假设协方差矩阵为以下形式(I为单位矩阵):
当前像素值Xt的概率为:
其中,ωi,t是t时刻混合高斯模型中第i个模型的权值。
对于视频帧中新的像素点Xt,将其与已经存在的K个高斯模型分布进行匹配,如果当前像素点的灰度观测值与某个分布的均值相近,则认为该像素点和这个分布匹配,即满足:
其中TH为门限值,一般取2.5,若满足上述条件的高斯分布按如下公式更新参数:
其中,αi为模型学习率,一般由实验确定,0≤α≤1,βi为参数学习率。当高斯分布与像素值Xt匹配时,Mi,t−1为1,否则为0;如果当前像素点没有相似的高斯分布与之匹配,则在背景模型中增加一个新的高斯分布代替优先级最低的高斯分布,新增高斯分布选择较大的方差和较小的权值初始化。
对每个像素点的K个高斯分布,以βi=ωi/σK的比值为优先级标准从高到低排列,最有可能成为背景的模型排在最前面,由不稳定的扰动产生的分布将排在序列的底部,最终被新的高斯分布取代。从K个高斯分布中选择前B个高斯分布作为背景模型。
式中:T为背景阈值,一般取T=0.7,通过T的设定可以选出描述背景的最佳分布。
3 本文方法
3.1 改进的高斯混合模型
本文根据生猪个体检测的需求,对高斯混合背景模型进行改进。随着时间变化,高斯混合模型中与场景匹配高斯分布的权重逐渐变大,权值归一化后,不匹配的高斯分布权值变小,权值与方差比值大的用来描述背景分布,比值小的用以描述前景分布。当某个高斯分布的权重小于权值初始值w时,且该高斯成分的小于初始化时的w /σ 时,该高斯分布将会被排在新的初始化的高斯分布之后。继续保留该高斯分布,将使得再次出现与这个高斯分布匹配的场景时,利用该高斯分布学习此场景,比用一个新的高斯成分学习所花费的时间更长。这些多余的高斯成分,影响模型的学习收敛速度,同时消耗系统计算资源。改进新的自适应高斯分布个数的选择,应在每一帧背景模型更新学习后,删除多余的高斯分布。考虑实际计算效率需要,本文选择每隔m帧对高斯分布进行一次扫描,检测所有高斯分布的权值,若某个高斯分布满足下式(10),则判定该高斯分布为多余的高斯分布,并删除该高斯分布。
混合高斯模型中学习率α取值过小,背景更新速度减慢,检测结果出现大量误判点和“鬼影”;α取值过大,模型更新速度过快,目标容易融入背景,造成目标漏检。为了加速消除误判点和“鬼影”,本文提出自适应学习率策略:设定帧数阈值T0,对前T0帧和后续帧采用不同学习率的更新方法。
在模型初始化时,需要较快的更新速度来加速“鬼影”的消除,采用较大的学习率;随着时间推移,背景模型逐渐趋于稳定,此时选择较小的学习率。
混合高斯模型的更新机制可以较好的处理背景缓慢变化的情况,对于突发情况如光照突变等情况则较为敏感。光照突变的具体表现为整体灰度值的变化,即当前帧与所得到的背景平均灰度值之间的差值变化,当该差值大于一定阈值时,对整幅图像所有像素中权重最大的高斯分布参数进行替换,用当前帧图像像素值代替μ0,w0取较大的值以保证新的分布成为稳定的背景分布,考虑本文以室内生猪为研究对象,光照没有剧烈改变,本文σ0=20。
(1)《中国矫形外科杂志》网址:ZJXS.chinajournal.net.cn;Http://jxwk.ijournal.cn为本刊唯一在线投稿系统,其他均为冒充者,稿件上传后自动生成编号,稿号为:2018-xxxx。其他冒充者的稿件编号五花八门,多很繁琐,请广大作者注意辨别。
3.2 算法描述
基于改进的自适应混合高斯模型算法具体步骤归纳如下:
步骤1:计算当前学习率,对初始视频帧建立混合高斯模型;
步骤2:判断新建的背景与已有的模型是否匹配,如果匹配,则更新权值、均值和标准差;如果不匹配,则新增加一个背景模型;
步骤3:每隔100帧对高斯分布进行一次扫描,检测所有高斯分布的权值,若某个高斯分布满足式(10),则判定该高斯分布为多余的高斯分布,并删除该高斯分布;
步骤4:各高斯分布的权重进行归一化处理,计算高斯分布的优先级,从大到小的顺序排序;
步骤5:判断当前像素与存在的高斯分布是否匹配,如果有则判定该像素点属于背景,否则判定该像素点属于前景。
4 实验结果与分析
(1)实验结果及算法效率分析
图1 生猪检测效果图
为验证算法有效性,在Windows7系统下使用VS2010平台(opencv2.3.1),分别对混合高斯模型和本文方法进行对比试验(图1)。试验结果表明,本文提出的改进算法提高了实时性:混合高斯模型处理每帧所用时间为3.21s;本文提出的改进算法对每帧处理时间为0.48s。检测效果对比如图1所示。
图1中可知,混合高斯模型对目标生猪检测结果出现漏检或“鬼影”。混合高斯模型没有考虑运动目标速度变化,学习率一般采用固定值0.005。检测过程中,当学习率(即背景更新的速度)和实际场景切换速度相不匹配时,检测结果出现漏检、误判和“鬼影”。本文方法抗噪性明显增强,可提取出完整的生猪轮廓,消除“鬼影”。
(2)自适应学习率
本文改进的算法采用自适应性选择策略的学习率(公式12)进行背景更新,T0为设定不同学习率的初始视频帧的阈值,当初始帧小于T0时,背景处于构建过程,需要一个较大的学习率来加速背景建模;当背景构建完成后,(即当前视频帧数大于T0)方差处于收敛状态,此时的学习率应小于背景初始阶段的学习率并维持稳定,使背景更新速度与实际场景速度相当来减少或消除“鬼影”。
图2为不同视频帧数与学习率的关系图。经大量实验,同时结合生猪检测的特点,本文选取T0=100,即T0帧前学习率为背景初始构建阶段,采用较大递减学习率加速构建背景模型,根据场景实际变化情况,实现学习率的自适应调整;T0帧后背景模型构建完成,对应的方差保持稳定,采用固定值学习率α=0.005(此时T0=100),维持背景稳定,减少噪声干扰。
图3是不同学习率的检测结果。T0=50时,统计的灰度值过少,初始背景模型无法形成稳定的分布,后续背景建模很难达到稳定的分布;T0=150时,后续学习率过小,无法保证初始阶段学习率与场景深度相匹配,导致图像检测结果出现误判和“鬼影”。考虑算法实时性和实验效果,本文选取T0=100。
(3)删除多余高斯分布
本文改进算法每隔m帧对高斯分布进行一次扫描,检测所有高斯分布的权值,若某个高斯分布满足上式(10),则判定该高斯分布为多余的高斯分布,并删除该高斯分布以提高算法实时性。对于帧数阈值m的取值,若m取值小,运行速度慢,提取较完整,检测效果稳健;若m取值大,运行速度快,出现许多噪声点,检测效果不稳定。分别取m数目为30、60、80、100、150、200时检测效果如下图4所示。
图2 视频帧与学习率关系图
图3 不同学习率对应的检测效果图
图4 不同帧数阈值检测结果图
图5 不同帧数阈值相同时间内运行帧数比较图 图6 不同帧数阈值检测性能对比图
当阈值帧数m值较小,则运行速度慢时,提取精度较高,检测能力强。当阈值帧数m的值较大时,则运行速度快,但是会出现许多噪声点,检测结果不稳定。比较结果见图5和图6。
考虑到算法的实时性和检测结果,本文选择m=100。
5 结论
针对混合高斯模型算法存在的不足,本文提出了自适应改进的混合高斯背景建模算法:设置每隔一定视频帧数对高斯分布进行扫描,删除多余高斯分布,以提高算法实时性;同时采用帧数阈值前后不同学习率来减少漏检、误判点和“鬼影”,提高运动目标检测精度。经实验证明,本文方法可有效去除噪声减少外界干扰,提高目标检测抗噪性。