侯云涛,蔡晓华,吴泽全,东忠阁
(1.黑龙江省农业机械工程科学研究院,哈尔滨 150081;2.哈尔滨博纳科技有限公司,哈尔滨 150081)
近年来,随着人民群众对奶产品的需求加大及规模化奶牛养殖场数目的快速增加,奶牛养殖过程的自动化、智慧化和网络信息化程度亟待提高。加强对奶牛个体日常的监控和管理水平,对保障奶牛健康和奶产量十分重要[1]。
奶牛个体的行为特征按照不同的判断准则和应用目的有多种不同的分类依据和方法。相关实验成果表明:奶牛发情初期会出现莫名兴奋及难以平静等现象,而没有发情奶牛则表现得相对散漫。奶牛处在发情期时,时常会做出爬跨类行为;奶牛生病时,躺卧、站立等行为时间往往大幅度增长[2]。因此,监测并准确识别奶牛运动行为特征是判断奶牛是否处于发情和身体状况异常的有效方法之一。
目前,我国多半的奶牛养殖过程采取的依然是传统的人工养殖,往往需要很多饲养人员,且很多时候不能快速诊断奶牛疾病,难以迅速、精确地判断出奶牛是否处在发情阶段,直接影响了初奶的营养、口感及产出量,大幅度降低了奶牛养殖效率。
近年来,国内外学者已经广泛展开运用无线物联网技术对奶牛行为进行实时监控的研究。澳大利亚CSIRO研究机构的科研专家利用三轴加速度计采集奶牛的体表温度、三轴加速度、速度、三轴磁场强度值和个体位置等数据,从而采用阈值法来分类和判定动物行为特征[3]。美国的相关科研专家通过行为特征数据还原奶牛躺卧、站立、运动等行为,从而判别奶牛是否健康[4]。北欧的研究人员利用支持向量机(SVM)分类算法分类并判断奶牛的站、躺、反刍、食料、正常行走和跛脚走等日常行为特征。Nadimi等使用基于ZigBee无线传感器网络和人工神经网络监测动物行为并对其行为模式分类。尹令等人通过分析三轴加速度数据,还原奶牛的运动行为,从而判断奶牛是否处于发情期。
本文设计了一种配置有加速度传感器的基于ZigBee无线传感技术的传感器节点,将节点以项圈的形式佩戴在奶牛脖子上,在不干涉其正常活动的情况下实时监测,并采集奶牛三轴运动加速度数据,利用基于二叉决策树支持向量机(Support Vector Machine,SVM)时间序列模型识别奶牛个体的行为特征,使饲养人员能够及早了解奶牛的身体状况。
实验中使用的测试数据来源于4头奶牛的视频记录,其中两头是处于发情期的成年奶牛。这4 头奶牛被散养在一个可自由活动的场所内,奶牛的运动行为特征由摄像机拍摄和记录。摄像机的记录时间与数据采集装置的测试时间同步,通过查看录相可以精确了解奶牛每个时刻的动作,通过加速度数值可以看出奶牛运动速度变化的快慢程度。测试中,数据采集装置(加速度传感器)的安装方向如下:x轴指向奶牛的头;传感器y轴与传感器x轴构成一个平面,正方向指向奶牛身体外侧;z轴指向地面。加速度传感器采样频率为10Hz。
采集的奶牛三轴加速度数据是依据时间顺序排列的运动数据的集合,每条数据都是依据时序的顺序排列,是多元时序数据。在时序分析中,最显著的特点是按照时序排列数据的先后次序。在分析时间序列时,需要注意的应是时序数据在某个时间区域内的变化方式和内在的变化规则,而不是对于时序中某一单个数据点分析[5]。
奶牛三轴加速度采集装置佩带在奶牛颈部,装置的些许晃动和碰撞都会产成对时序数据的噪声叠加,这些因素都给对时序数据分析带来相当的困难。同时,由于时序数据具有高维度的特点,因此直接在原始数据上进行分析时不仅运算量大,还会有大量冗余信息,从而影响算法的可靠性和准确性。为此,本研究针对时序数据的有序性、信息量大及特征类别多等特点,通过计算采样点之间的距离,将加速度时序数据划分成子序列段的集合。
为能够准确地划分子序列段,首先需要获得每个采样序列点ai的点距离Radius(ai),然后通过与设定的阈值σ比较(阈值根据具体的应用领域确定),按照比较结果寻找ai的同质点和同质区域,最终得到子序列段Lt(k)(下标t表示t时刻的子序列段,k为子序列段的长度)。对时序数据精确的分段处理,能够高效地选择和记录短时域内相同运动行为的显著局部特性,同时又不会丢失全时间域内所有行为的全局特性。
得到子序列段Lt(k)后,按照本文对子序列特征向量的定义,计算得到子序列的特征向量组。每当获得20个子序列特征向量组后,这20组特征数据将由终端节点通过ZigBee无线网络上传至PC机,依次输入支持向量机分类模型,从而判断在这20个时间子序列段内奶牛个体的运动状态。如果较长采样时间(2min)内仍未获得足够20个的子序列特征向量组,那么将由终端节点将采样时间(2min)内的子序列特征向量组上传至PC机,判断采样时间(2min)内的奶牛个体的运动状态。以上两种操作中,第1种操作的优先级高于第2种操作。也就是说,当获得20个子序列特征向量组的采样时间小于2min时,上传数据后,子序列个数和采样时间同步清零;若采样时间(2min)内仍未获得20个子序列特征向量组,上传采样时间(2min)内的各子序列特征向量组,子序列个数和采样时间同步清零。
上文涉及到的相关定义如下:
定义1(时间采样序列点):由多维度数据和对应的记载时间组成的时间数据的集合,记为x={(a0,t0),...,(an,tn)},元素(ai,ti)代表采样序列x在ti时刻的采样值ai,记载时间ti必须是遵守递增的(i≤j⟺ti≤tj,0≤i,j≤n)。任意时刻ti的采样值记作ai=(ai,x,ai,y,ai,z),下标x,y,z代表采样点对应的坐标。
定义2(序列采样点间距离):针对任意连续时刻ti、ti-1对应的2个采样点ai与ai-1之间的空间距离Radius定义为Radius=|ai,x-ai-1,x|+|ai,y-ai-1,y|+|ai,z-ai-1,z|,记作Radius(ai)。
定义3(序列同质采样点):如果任意时刻的两个连续采样点at、at-1间的距离Radius和阙值σ符合Radius(ai)<σ,则称此2点为序列同质采样点。
定义4(序列同质区域):对于从采样点ai的采样时刻ti到采样点ai+n的采样时刻ti+n的一段持续采样时间区域T,若符合该时间区域内相邻的每个采样点都是同质点,并且n 定义5(子序列特征向量组): (1) 其中,Amax=(Max|at,at+1,...,at+k|)代表子序列段数据中最大加速度的绝对值,Aavg(Lt(k))、Amin(Lt(k))分别是子序列段数据中平均加速度、最小加速度的绝对值。以上3个特征数据分别从最大、平均值和最小加速度3个方面来衡量三轴加速度的差别。 EnergyDis(Lt(k))体现了奶牛运动能量的差异化。能量特征值计算公式为 (2) 式(2)给出了子序列段时序数据中综合加速度的平均能量的差异。 DeviaDis(Lt(k))体现了体现了三轴加速度波动的状况,计算公式为 (3) 这个特征值给出了子序列段数据中综合加速度波动的差别。 (4) 约束条件为 (5) 图1 最优分类超平面 高维度映射空间的高维度向量内积总会在输入样本空间找到一个核函数,能够满足Mercer条件。使得K(xi,xj)=(Φ(xi)·Φ(xj)),所以并非必需寻求非线性映射的具体函数表达式,从而达到避开求非线性映射而转求内积的目的,即求解 (6) 约束条件为 (7) 常见的核函数有: (8) 径向基核K(x,xi)=exp(-γ|x-xi|2) (9) Sigmoid核K(x,xi)=tanh(r(x·xi)+c) (10) 线性核K(x,xi)=x·xi (11) (12) 当样本数据在高维映射空间无法进行无误差分离时,引入松弛变量ξi≥0,并通过求解公式(13)保证数据误分率最小,即 (13) 其中,ξi为衡量样本数据(xi·yi)对可以分离的预期偏离参数。C>0是1个常数,它反映了对误分的补偿水平,保证分类机的繁复性和无法分离点数量之间的最优性;C越大代表对误分的补偿就越大;C为平衡因子,反映第1项与第2项之间的权衡。使用Lagrange乘子方法,求解可转化为 (14) 约束条件为 (15) 作为一种机器学习算法,支持向量机具有可训练的优势,但由于训练所需样本较少,所以较多地应用在小样本分类。对于不同的多类分类规划,使用支持向量机的具体处理方式也各不相同,主要有一对余(OAA)、一对一(OAO)及二叉树等。考虑奶牛行为特征分类的实际情况,本研究采取二叉树结构,自根节点从上至下,逐层构造SVM 两类分类器的分类识别算法。 在使用二叉树SVM对样本集进行分类时,不同的分类顺序会导致分类结果出现较大差异。为了提高针对奶牛行为特征的分类精度,努力使分辨误差不在靠近根结点的分类器中产生,要求必须把辨识度最大的类最先分辨出来。按照训练参数的特征值测算各类元素集彼此的易分程度,普通的分离是用类空间中心间的欧式距离或Mahalanobis距离作为各类之间的易分性指数,但这种分离策略的缺陷在于:类之间的易分性,很多时候还需要考虑类的数学分布。图2为不同的类间可分离性比对示意。由于(a)、(b)两图中所示意的类之间的距离是一样的,因此可以很容易得出结论:(a)中的两个类远远要比(b)中的两个类难于区分。 图2 类间可区分性比对示意图 所以,类的数学分布是影响类间区分性测度的关键考虑因素[6]。按照以上结论,本研究方法考虑类之间相似度定义时,在考虑类中心点之间的距离的同时,基于类之间的空间分布,提出一种新的类之间的分离度定义。 第i类中心点定义为 (16) 其中,Φ(xs)表示将输入空间的样本多维特征向量用非线性映射Φ:Rm→Rn映射到对应的高维空间中。 i类与j类的距离定义为 (17) 其中 类之间的相似度定义为 (18) 其中,(Rj=max‖xt-mi‖)。 综合以上的研究,本文提出一种聚类与二叉树SVM融合的分类方法。算法步骤具体如下: 第1步:由式(18)得到类与类之间的相似程度; 第2步:将具有最高相似度的两个类合并构成一个新的大类,再重新训练支持向量,运用式(16)~式(18) 得到新类的类中心点坐标及新类与其余各类的距离数据,进而计算新类与其余各类的相似度; 第3步:反复操作第1步和第2步,最后训练样本被聚成两个大的类,将此两类作为二叉树根节点,按照从上至下的顺序构造二叉树的SVM子分类器。 据相关实验结果显示:奶牛处于发情早期,会出现异于平时的状态(躁动、兴奋等),而未发情的状态则较为懒散。奶牛处于发情时期,时常会做出爬跨动作;奶牛不舒服时,全天会基本处于躺卧。因此,监测奶牛行为特征是判断奶牛发情和身体异常的一个有效方法。奶牛的每天行为并非简单的重复,本研究将其行为类别分为静止和运动两个状态。其中,运动状态包括慢走行为、快走行为、爬跨行为、慢跑行为和快跑行为。 将采集得到三轴加速度时间序列数据按照1.2节提出的方法相应处理,之后在得到的时间子序列的特征向量集中选择出训练数据集(占比70%),运用第2.2节提出的分类方法将所有样本数据分成两个子类,作为根节点;再将根节点进一步划分成两个次级子类,将这两个子类作为后续待划分的次级根节点;按照这个方式继续划分,直到最后分离出两个相似度最大的类,此时需要选择切合状况的核函数构造类之间的二值支持向量机分类器。 支持向量机核函数的选择非常重要,核函数的差异会在各类中产生不同的支持向量。因此,核函数的选取及参数的确定对于分类的实时性和精确性有着深远的影响。 本文通过实验测试和比对,将二值支持向量机分类器的核函数确定为径向基函数( Radial Basis Function,RBF) 。最终,建立了如图 3 所示的二叉树SVM顺序结构。 图3 二叉树SVM顺序结构分类图 实验记录数据来源于1头健康成年奶牛2h的行为特征记录。采样频率为 10 Hz,共采集样本426 506个。对试验样本中的时序数据进行子序列划分后,子序列个数共为2 432个,行为特征分类测试结果如表1所示。 表1 奶牛行为特征分类测试结果 表1测试结果表明:分类模型的整体测试结果是较好的。其中,静止与运动两大类特征行为的区分准确率较高,达到 94.10%;区分微小运动与剧烈运动时,准确率为 86.78%;但对奶牛的行为特征进行细致划分时,区分度相对较低。经分析后,主要存在以下几个导致误差较大的因素: 1)由于数据采集装置佩戴在牛颈上,其对奶牛头部活动较为敏感,而头部活动易存在行为特征的复合,导致噪声干扰; 2)奶牛的行为特征是依靠肉眼判定的,但目前并没有奶牛行为判断的标准,并且有时特征不显著,仅仅依靠肉眼观察和判断,使源样本数据不可靠; 3)项圈能在某些情况下下轻微移动,导致三轴加速度采集装置产生倾斜角度,产生噪声干扰。 针对奶牛个体的行为特征的分类问题,基于二叉树SVM 构造了多类分类模型,用于分类和判定静止、慢走、快走、快跑、慢跑及爬跨等日常行为特征。经过实验检测,区分运动和静止能够到90%以上的准确度,区分小幅和大幅运动也能达到85%以上的准确度;但再细分小幅度和大幅度的活动时会出现一些误判情况,模型的区分度还需要进一步提高。 尽管本文对奶牛个体行为特征分类进行了深入研究,建立的多分类模型能够较准确地判定奶牛个体的行为特征,但本系统目前依然还不够完善,有待进一步提高。 1)测试受到场地、资源等多方面限制,随机选择了1头成年发情奶牛,记录了这头奶牛2h内的行为特征数据,进行模型区分度评估。后续实验要延长个体行为的数据采集时间,增加个体数据采集量;同时,对不同品种、不同年龄的奶牛进行实验对比,扩大实验范围,优化特征识别模型。 2)考虑增加奶牛体温和脉搏检测模块,在采集加速度数据的同时,结合奶牛个体处于不同行为状态时的体温和脉搏的变化情况,对奶牛的行为特征进行综合判定,提高区分的准确率。2 支持向量机分类算法
2.1 支持向量机原理
2.2 基于二叉树SVM的多类分类方法
3 奶牛行为特征分类模型的建立
4 实验结果及分析
5 结论与讨论
5.1 结论
5.2 讨论