基于骨架能量图的奶牛步态识别
2020-12-09张满囤王萌萌刘天鹤温素丹于洋
张满囤 王萌萌 刘天鹤 温素丹 于洋
摘要:为了提高奶牛步态识别领域中对远距离奶牛目标的识别准确率和算法的普遍适用性,提出一种基于奶牛骨架能量图的步态识别算法。首先对奶牛视频序列进行前景提取,接着利用查表法对步态序列细化得到奶牛步态序列骨架图,然后把奶牛骨架图以周期为单位生成步态能量图并进行特征提取,最后比对奶牛骨架能量特征图降维后与数据库中步态数据,输出步态识别结果。结果表明,在测试集中的奶牛步态识别正确率达87.6%,明显高于其他算法,并且对远距离目标有更好的识别效果,能更有针对性地分析四肢运动,抑制与步态运动无关的信息,提高了分类的准确性。
关键词:奶牛;个体识别;前景提取;骨架能量图;分类
中图分类号: TP391.41 文献标志码: A
文章编号:1002-1302(2020)19-0257-06
收稿日期:2019-12-06
基金项目:天津市科技支撑计划(编号:15ZCZDNC00130)。
作者简介:张满囤(1971—),男,河北衡水人,博士,副教授,主要从事计算机图形學、图像处理、三维模型检索和三维物体识别研究。E-mail:zhangmandun@scse.hebut.edu.cn。
随着居民消费观念和饮食结构的变化,我国乳制品产业得到快速发展,但当前奶牛养殖行业仍然普遍存在着产奶量低、采食量高等现象,严重影响着我国奶牛养殖业的发展。奶牛个体识别作为奶牛饲养管理的基础,是养殖业信息化的重要标志,近年来逐渐引起人们的重视。精确地识别奶牛个体是精准管理和高效管理的关键,只有这样,才能更有针对性地完成饲养和疾病管理等工作,从而提供养殖管理的决策支持,提高我国奶牛养殖业的管理水平。在奶牛个体识别领域中,主要有基于统计特征的方法和基于模型的方法两大类。传统的识别方法是给奶牛佩戴标签[1],但该方法不仅成本高,还要耗费大量人力物力,而且标签容易被奶牛损坏。如今畜牧业大多采用无线射频识别技术[2],但该方法无法识别远距离的目标,且成本较高。Kumar等提出在深度卷积神经网络中,应用叠层去噪自动编码器技术,对提取的鼻型图像特征进行编码来识别奶牛,但是奶牛鼻型样本数据的获取有一定难度,并且难以应用到实际中去,同时网络模型建立过程比较困难,模型的鲁棒性较低[3]。日本筑波大学的Mimura等采用三阶高层次局部自相关技术分析运动的奶牛视频从而进行步态识别,但该方法依赖高端技术,经济性较差[4]。
针对以上问题,本研究从提高模型准确性、高效性和实用性角度出发,研究奶牛个体识别技术,提出一种基于奶牛骨架能量图的步态识别算法。首先对包含奶牛步态周期的视频序列进行前景提取,接着利用查表法对步态序列细化得到奶牛步态序列骨架,然后把奶牛骨架图以周期为单位划分,生成步态能量图,并对步态能量图进行特征提取,最后对奶牛步态能量特征图降维后与数据库中的奶牛步态数据进行比对,输出分类结果。本算法是基于图像处理的非接触的奶牛个体识别算法,识别过程不需要奶牛的配合,克服了先前个体识别技术中数据采集困难、模型建立没有统一标准、耗时的缺陷,同时解决了奶牛个体行走过程中,几乎不发生变化的躯干占前景图像较大部分影响识别准确率的问题。试验结果表明,本算法在提高识别准确率的同时,识别速度更快。
1 相关原理
1.1 步态识别
步态是以足来带动身体运动的一种行进方式,步态识别是通过个体的体型和行走模式对个体进行身份识别和认证的一种个体识别技术,步态识别的关键是特征的表达和提取,其基本目标是通过获取一段待检测模式正常行走的视频,与步态数据库中数据进行对比,识别出待检测模式的身份。与其他的生物识别技术相比,步态识别具有不需刻意配合、信息采集距离远、步态特征难以隐藏的优点,因而适合对动物进行个体识别。在智能视频监控领域,步态识别比传统的图像识别更具优势。动物的步态是动物的体质量、肢体大小与运动姿势的综合体现[5],并且具有唯一性,可以用来作为动物个体的唯一标识。通常情况下,基于光学图像的步态识别算法的步骤如下:
(1)步态检测以获取个体步态数据;(2)对步态数据进行特征提取和特征检测;(3)将步态特征与数据库中的数据进行对比并输出分类结果。
1.2 旋转不变LBP算子
局部二值模式(local binary pattern,简称LBP)算子是一种用来描述图像局部特征的算子,用来提取图像局部纹理特征。原始的LBP算子定义在3×3的窗口中,以窗口的中心元素为阈值,将其与周围相邻的8个像素的灰度值进行比较,若相邻像素的像素值大于阈值的像素值,则标记为1,否则标记为0。3×3邻域内经过比较产生8个二进制数,将这8位二进制数依次排列形成一个二进制数字(通常情况下转化为十进制数,共256种),这个二进制数就是中心像素的LBP值。中心像素的LBP值是对该像素周围区域纹理信息的一种反映。图像中每个像素点都对应一个LBP编码,对一副图像的灰度图提取原始LBP算子以后,得到的原始LBP特征图依然是一副图像,此时每个像素点的像素值是其LBP编码。采用LBP特征谱的统计直方图作为特征向量进行分类识别,步骤如下:
(1)将一幅图像划分为若干子区域;(2)对子区域内的每个像素点提取LBP特征;(3)在每个子区域内建立LBP特征的统计直方图作为对该图像的描述;(4)利用相似性度量函数判断图像间的相似性。
从LBP的定义可以看出,LBP算子具有灰度不变性,但是并不具有旋转不变性。图像的旋转会得到不同的LBP值。旋转不变LBP算子[6]解决了LBP算子的此种缺陷。旋转不变LBP算子可以将LBP的3×3矩形邻域范围调整到可以扩展任意大小的圆形邻域,并且不断旋转,从而产生一串初始的LBP编码,将其中的最小编码作为该圆形邻域内的中心像素点最终编码,以此来确保LBP编码的旋转不变性。
2 模型介绍
本模型在步态能量图[7]的基础上提出,针对行进中几乎不发生变化的躯干占前景区域较大部分影响识别准确率的问题,提出一种基于骨架能量图的步态识别算法。本算法模型见图1,首先,对奶牛视频按帧裁剪的同时进行前景提取,接着利用查表法对步态序列细化得到奶牛步态序列骨架图,然后把奶牛骨架图以周期为单位划分,生成步态能量,最后对奶牛步态能量特征图降维后与数据库中的奶牛步态数据进行对比,得到步态识别结果并输出。
2.1 奶牛前景序列提取
对数据集中奶牛完整个体进入摄录区域到牛头到达摄录区域边缘记为一个周期。将步态视频在按帧裁剪的同时进行灰度化与前景提取操作,前景提取流程见图2,目的是获取前景目标。其中后处理指对原始前景图进行的一系列形态学操作以减少奶牛花纹和噪声的影响。
本模型使用ViBe算法对预处理后的奶牛步态视频进行前景检测,同时将步态视频以帧为单位进行裁剪。ViBe算法通过判断某一像素点的值与其对应样本集中的存储值是否接近来判断该像素点是否为背景点[8],但存在可能引入拖影区域的缺点。为了能够适应不断变化的背景,本试验中采用了传统更新策略与前景点计数方法、隨机子采样相结合的更新策略。前景点计数的更新策略记录像素点状态,若某一像素点连续多次检测为前景点,则将该像素点进行更新,设置为背景像素点。ViBe算法能够比较好地实时检测出前景。
f(a,b)=1-2(a+b)×(a-b)(a+1)+(b+1)×2(256-a)×(256-b)(256-a)+(256-b)。(1)
为达到更好的试验效果,用式(1)替换ViBe算法中的普通差分函数。式(1)中,0≤f(a,b)<1,式中a、b的具体表达式为a(x,y)、b(x,y),其中a(x,y)≥0,b(x,y)≤255,a(x,y)、b(x,y)分别表示当前图像和背景图像在像素(x,y)处的亮度值。图3为经过上述处理后的原始视频和前景图像。
ViBe算法在提取目标前景时会受到奶牛花纹的影响[9],因而在试验过程中加入了后处理操作。后处理操作主要包括形态学闭运算处理与单连通区域提取处理,应用闭运算来填充前景图中的细小的孔洞和噪声,单连通区域提取处理可消除前景图像中的花纹,从而将特征聚集到奶牛的步态上。后处理操作效果见图4。
2.2 基于奶牛骨架的步态能量图
2.2.1 奶牛骨架能量图生成
奶牛骨架能量图的生成过程与步态能量图的生成类似,主要包含构建骨架图和生成骨架能量图2个步骤,下面分步介绍骨架能量图的生成过程。
2.2.1.1 查表法构建骨架
骨架是待识别目标的抽象表现形式,可以有效地表达对象形状的几何特征和拓扑结构。图像骨架[10]提取也称为图像的细化。由于骨架提取出的特征的高度抽象化,经过骨架提取的图像去掉了冗余信息,更加真实地反映奶牛运动的实际步态。在奶牛步态识别研究中,奶牛四肢的运动状态极为关键,而骨架图能够保留这些关键信息,将研究的关键点聚集到奶牛的四肢及躯干上,解决了奶牛行进中几乎不发生变化的躯干占前景图像较大部分影响识别准确率的问题。
典型生成骨架图的算法是查表法[11],选取某一像素点,在3×3邻域内以相邻8个点作为依据判断,具体过程如下:(1)作为内部的像素点不能被删除;(2)作为孤立的像素点不能被删除;(3)像素点作为直线端点时不能被删除;(4)设P为边界点,若删除P,连通分量不增加,则P可以删除。
选取奶牛步态周期中前7幅图像进行骨架提取,效果如图5所示。虽然经过单连通处理后前景图像与原始前景图像存在一定误差,但由于骨架提取的高度抽象化,此误差对试验结果影响可忽略不计。
2.2.1.2 奶牛骨架能量图生成
将“2.2.1.1”节中生成的奶牛步态骨架序列生成骨架能量图,生成过程如下:首先对奶牛步态骨架序列进行尺度归一化和大小归一化处理;再将经过2次归一化后的步态骨架序列按周期生成奶牛步态骨架能量图;可通过式(2)生成步态能量图:
G(x,y)=1NB(x,y,z)。(2)
式中:N表示奶牛步态周期;B(x,y,z)为归一化的奶牛骨架序列;t为奶牛步态中随时间变化的图像;x与y为坐标值;G(x,y)为该奶牛前景序列的步态能量。奶牛骨架能量图不仅可以更加直接表示出奶牛的实际步态,而且可以抑制行进过程中几乎不发生变化的躯干影响步态识别准确率的问题。将6帧步态骨架序列通过公式(2)生成图6中最右侧的骨架能量图。
2.2.2 奶牛骨架能量图特征提取
直接将骨架能量图与数据库中的数据进行模式匹配的速度和准确率较低,因此本算法对骨架能量图进行特征提取,并对其进行降维处理后与数据库中数据进行匹配,以提高模式匹配的准确率和速度。试验部分选取旋转不变LBP算子、方向梯度直方图(histogram of oriented gradient,简称HOG)特征算子[12]和尺度不变特征变换(scale-invariant feature transform,简称SIFT)[13]分别对骨架能量图进行特征提取,以选取效果最好的特征提取方法(图7)。
3 数据集及评价指标
3.1 试验数据采集
为保证数据集中样本数量的充足,本试验的初始数据以视频格式获取。奶牛会固定在每天16:00—17:00依次穿过一条长100 m、宽15 m,两侧装有格栅的特定通道,在紧邻格栅外侧使用摄像机对奶牛的行进状态进行录像,录像机距离牛的距离不固定。每一头奶牛的数据分为牛头向左和牛头向右2种情况,每种情况下的数据中包含该奶牛的15个完整周期,数据集中共2×15×100=3 000个周期,每个周期提取出20帧前景图像,表示该周期内奶牛的步态序列。将100头奶牛个体进行编号,表示100个待识别的模式。由此,构建了一个小型的奶牛步态序列数据库,用于奶牛个体步态识别试验。随机抽取100头奶牛中牛头向左和牛头向右各300个周期进行测试,其他奶牛步态周期作为训练集。
3.2 模型评价指标
本模型的输出为对当前个体的步态识别结果,将经过降维处理后的骨架能量图与数据库中的数据进行对比,所以用正确识别率和识别时间来对模型进行评价。正确识别率的定义见公式(3)。公式(3)中CCR代表正确识别率,样本总数目指测试集中奶牛周期的总数目,TP指被正确识别的奶牛周期数目。
CCR=TP样本总数目×100%。(3)
另外一个评价指标是识别时间,指本研究模型对测试集中所有数据进行一次识别所耗费的时间,单位为s,用以衡量算法的时间复杂度。
4 试验结果及分析
4.1 不同特征提取算法对比试验
按照第“3”节中所述步骤进行试验,计算采取不同特征提取算法时本研究算法的各种评价指标,并将所有特征提取算法的试验结果进行对比。最终试验结果见表1。
试验1取得了所有算法中最高正确识别率,这表明本研究提出的基于奶牛骨架的步态能量图更适合奶牛个体步态识别。相同的阈值设定下,试验1的正确识别率最高。试验3、4和试验9、10的对比进一步表明,在相同阈值下,本研究提出的骨架能量图相比传统能量图在提高了正确识别率的同时,缩短了识别时间。
试验1采用PCA进行降维,相对于没有进行降维处理的试验2,试验1的识别率更高并且识别时间更短,说明通过降维处理,大大缩短了测试集中数据与数据库数据的匹配时间。试验2、3表明,相同条件下采取旋转不变LBP算子比传统LBP算子识别率更高。试验5、6采用HOG算法分别对奶牛骨架能量图和传统步态能量图进行提取特征。HOG首先要将图像进行Gamma标准化,根据先验知识,在此将Gamma值设定为0.5,然后计算图像的梯度,求取图像的梯度直方图,最后归一化单元块得到图像特征,耗费时间较长。但对于基于骨架的步态能量图,HOG算法只需提取奶牛细化后的四肢的特征,相较于其他方法,特征提取的时间明显减少,同时识别率优于传统能量图。试验7、8数据结果显示,用SIFT算法求取阶段过于依赖邻域像素点梯度方向,同时图像金字塔的层数设置不足会导致尺度出现误差,从而导致特征向量信息不准确,因而正确识别率较低。
4.2 不同分类器算法对比试验
本研究用SVM、最邻近节点算法(k-nearest neighbors,简称KNN)、随机森林这几种常见的分类器分别进行对比试验,得到最终分类结果(表2)。特征提取算法为表1中试验1的方法。
结果表明,KNN通过数据之间的度量进行,运算量较大且不适合高维特征向量,识别率较低;SVM的分类识别会通过训练生成一个超平面,以此来预测待识别模式的标签,准确率最高。使用随机森林分类器可以处理高维数据,但是最优树的选择个数没有具体的标准,一般是根据先验知识设置。随机森林在分类过程中很容易出现过拟合现象,这里根据先验知识将ntree的值设置为500。为保证分类算法的泛化能力,本研究分别对25、50、75、100头奶牛的数据化进行试验,分类结果见图8。分析得出在奶牛步态识别分类器的选择上,SVM的结果最理想。究其原因,是因为SVM适合小样本集的学习,并且因为有核函数的存在,当面对线性不可分的样本时,SVM使用核函数向高维空间映射以保证样本的可分。本质上,SVM避开了从归纳到演绎的传统过程,实现了高效的从训练样本到预报样本的转导推理。
4.3 算法泛化能力评估
为验证本研究提出的基于骨架能量图的奶牛步态识别算法的鲁棒性特点,挑选3种有代表性的算法进行算法泛化能力评估,生成接收者操作(ROC)特征曲线。试验将测试集组合成正样本对与负样本对序列,计算样本对距离,通过固定负样本对的误识别率(FPR),选出对应的距离阈值,然后以同样的阈值检测正样本对的接受率(TPR)。图9表示3种算法分别选定FPR、TPR点拟合得到的ROC曲线。在图例中“骨架能量图-旋转不变LBP”使用SEGI-pro-LBP表示,“骨架能量图-传统LBP”使用SEGI-LBP表示,“传统能量图-传统LBP”使用GEI-LBP表示。
试验结果表明,本研究算法对应的ROC曲线位于所有曲线的最左、最上的位置,即负样本对的误识别率一定时,本研究算法得到正样本对的正确识别率最高,进一步体现了本研究算法的可行性和有效性。
5 结束语
本研究在步态能量图的基础上,提出了一种基于奶牛骨架能量图的步态识别算法,将奶牛行进过程中的特征聚集到运动着的躯干上,极大地抑制了与步态运动无关的信息,所提取特征更加准确地反映了奶牛运动的实际步态,提高了正确识别率,测试集中正确识别率达到了87.6%。并且在使用相同图像特征提取算法时,本研究算法分类识别时间更短。将本研究算法与传统算法进行多组对比试验,通过试验结果可以该算法均高于现有步态识别算法应用在奶牛步态识别领域的识别结果。未来会将本算法应用到实际生产,并结合具体问题探索更优的方法和策略。
参考文献:
[1]靳蜜肖,李亚敏,曾立华. 一种犊牛饲喂控制系统的设计[J]. 浙江农业学报,2014,26(1):206-209.
[2]庞 超,何东健,李长悦,等. 基于RFID与WSN的奶牛養殖溯源信息采集与传输方法[J]. 农业工程学报,2011,27(9):147-152.
[3]Kumar S,Pandey A,Satwik K R,et al. Deep learning framework for recognition of cattle using muzzle point image pattern[J]. Measurement,2018,116(6):1-17.
[4]Mimura S,Itoh K,Kobayashi T,et al. The cow gait recognition using CHLAC[C]//Proceedings of the 2008 Bio-inspired,Learning and Intelligent Systems for Security. Washington DC:IEEE Computer Society,2008.