张满囤, 米 娜, 于 洋, 单新媛, 阎 刚, 郭迎春
(河北工业大学计算机科学与软件学院/河北省大数据计算重点实验室,天津 300401)
互联网的兴起使得现今各行业逐渐朝着工业化、智能化发展。智能监控视频分析技术已逐渐深入到畜牧养殖的很多领域[1-4],其中智能感知和识别奶牛的行为并给出养殖管理决策支持成为当今研究的热点[5-6]。个体身份识别方法是自动分析奶牛行为的技术前提和应用基础[7]。
早期针对奶牛个体识别问题主要采取人工观察方式,但该方法受主观影响大、标准不统一,误识别率很高;之后发展为采用标签识别[8]的方法,但是标签容易破损、对奶牛造成了过多日常干扰,可能降低奶牛产奶量,从而影响牛场的经济效益。目前,畜牧业比较流行无线射频识别技术(RFID)[9],但该方法无法实现远距离识别,同时成本比较高。Ahmed等提出了运用加速鲁棒特征算子(SURF)提取奶牛嘴部纹理特征点,利用支持向量机(SVM)分类器对奶牛个体进行分类识别的方法,但是该方法对于采集数据的位置比较敏感,奶牛嘴部数据获取具有一定的难度[10]。基于深度学习的卷积神经网络[11-12]已成功应用到模式匹配的相关研究中,但是该方法模型参数的设置需要较高的技巧性,需要反复进行训练和测试,没有统一参照标准,模型的建立较困难。
针对上述问题,本研究提出1种奶牛个体识别方法,奶牛头部形状差异明显,依据HOG(histogram of oriented gridients)特征提取可得到奶牛头部的边缘轮廓特征,同时奶牛黑白条纹也是识别奶牛个体的手段之一,对奶牛图像利用改进的LBP(local binary pattern)算法进行局部纹理特征提取,通过使用等价模式简化特征向量个数,使用分块子窗口得到LBP直方图,并与HOG特征向量进行融合得到最终的测试向量,最后将特征矩阵送入SVM分类器进行学习分类。本研究提出的是基于图像处理的非接触、低成本的奶牛个体识别方法,克服了早先个体识别技术中数据采集困难、模型建立没有统一标准、耗时的缺陷。
HOG特征检测算法,一种目标检测的图像描述子,是一种用于表征图像局部梯度方向和梯度强度分布特性的描述符,其主要思想是在边缘具体位置未知的情况下,边缘方向的分布也可以很好地表示目标的外形轮廓。HOG特征检测算法的几个步骤:颜色空间归一化、梯度计算、梯度方向直方图、重叠块直方图归一化、HOG特征。由于奶牛的颜色信息对特征提取没有很大的影响,故本研究算法主要是对灰度图像的处理,提取HOG特征的几个具体步骤如下:
(1)计算图像横坐标和纵坐标方向的梯度,并据此计算每个像素位置的梯度方向值,求导操作不仅能够捕获轮廓、纹理信息,还能弱化光照的影响。根据式(1)用[-1,0,1]梯度算子对原图像做卷积运算,得到x方向的梯度分量Gx(x,y),根据式(2)用[-1,0,1]T梯度算子对原图像做卷积运算,得到y方向的梯度分量Gy(x,y),再根据式(3)计算该像素点的梯度大小,根据式(4)计算该像素点的梯度方向:
Gx(x,y)=H(x+1,y)-H(x-1,y);
(1)
Gy(x,y)=H(x,y+1)-H(x,y-1);
(2)
(3)
(4)
式(3)中G(x,y)是像素点的梯度大小,式(4)中α(x,y)是像素点的梯度方向。
(2)由于cell单元格是HOG特征最小的结构单位,而且其块Block和检测窗口Win的滑动步长就是1个cell的宽度或高度,所以先把整个图像分割为一个个的cell单元格(8×8像素),假设我们采用9个bin的直方图来统计这8×8个像素的梯度信息,即把[0,2π]的梯度方向划分成9个区间(图1)。
例如,这个像素的梯度方向是20°~40°,直方图第2个bin的计数就加1,这样对cell内每个像素用梯度方向在直方图中进行加权投影(映射到固定的角度范围),就可以得到这个cell的梯度方向直方图,就是该cell对应的9维特征向量(因为有9个bin),其中根据上面计算结果依据梯度大小作为每个像素点在不同区间的投影权值,更新直方图某个bin的计数值。
(3)由于局部光照的变化以及前景-背景对比度的变化,使得梯度强度的变化范围非常大。这就需要对梯度强度做归一化处理。归一化处理能够进一步地对光照、阴影和边缘进行压缩。将多个临近的cell组合成一个block块,然后求其梯度方向直方图向量并对其进行L2-norm归一化操作,如式(5)所示:
(5)
式中:v表示一个还没有被归一化的向量,它包含了给定区间(block)的所有直方图信息。‖Vk‖表示V的k阶范数,这里的k取1,e表示一个很小的常数,f表示归一化因子。
(4)最后将所有“block”的HOG描述符组合在一起,形成最终的特征向量,该特征向量就描述了检测窗口的图像内容,即HOG特征向量H1。
LBP是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点,用于纹理特征提取。
定义在图像中某个3×3局部区域的任意像素为f(xa,ya)其中心像素点为ga,将相邻的8个像素的灰度值与ga进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0,如式(6)所示得到图像的纹理特征T(xa,ya):
(6)
这样3×3邻域内的8个点经比较可产生8位二进制数(通常转换为十进制数即LBP码,共256种),即得到该窗口中心像素点的LBP值,并用这个值来反映该区域的纹理信息。
通过对窗口的邻域像素值进行二值化处理,得到图像的纹理特征T(xb,yb),计算过程如式(7)所示:
(7)
式中:g0、g1、…、g7为邻域像素值,T(xa,ya)、T(xb,yb)为图像的纹理信息,s(x)是邻域像素进行二值化处理后的值,通过比较T(xa,ya)、T(xb,yb)得到改进后的LBP编码为T(xc,yc),计算过程如式(8)所示:
(8)
对像素的不同位置进行加权求和得图像的LBP值为LBP(xc,yc),计算过程如式(9)所示:
(9)
将LBP值与循环移动后的一位进行位与操作,计算二进制为1的个数,标记≤2的为等价模式,其余的为混合模式,选择等价模式中LBP值最小的为等价模式中的代表值,更新LBP值,通过这样的改进,二进制模式的种类大大减少,而不会丢失任何信息。模式数量减少为P(P-1)+2种,其中P表示邻域集内的采样点数。对于3×3邻域内8个采样点来说,二进制模式减少为58种,这使得特征向量的维数更少,并且可以减少高频噪声带来的影响。
将LBP特征谱以6×6子窗口扫描整个图像,得到直方图H21,在以4×4子窗口扫描整个图像,得到直方图H22,最后以2×2子窗口扫描整个图像,得到直方图H23,将不同尺度下的LBP直方图级联起来得到图像的特征向量H2=[H21,H22,H23],通过级联特征向量H1和H2得到改进HOG-LBP算法的特征向量H=[H1,H2]。
主成分分析(principal component analysis,PCA),是图像处理中经常用到的图像处理方法。PCA是多元统计分析中用来分析数据的一种方法,它是用一种较少数量的特征对样本进行描述以达到降低特征空间维数的方法,它的本质实际上是K-L变换。PCA具体实现过程如下:
设有N个人脸训练样本,每个样本由其像素灰度值组成一个向量xi,则样本图像的像素点数即为xi的维数,M=width×height,由向量构成的训练样本集为{x1,x2,…,xn},该样本集的平均向量如式(10)所示:
(10)
样本集的协方差矩阵如式(11)所示:
(11)
通过协方差矩阵初步求得特征向量、训练集数组、特征值数组,将特征值数组由大到小排列,通过公式(12)计算特征值的累计贡献率,选择前95%的特征值对应的特征向量,通过公式(13)得到最终训练集数组、测试集数组:
(12)
(13)
式(12)中latent为特征值数组,α为每个特征值的贡献率,α(n)为第n个特征值的贡献率,α(n-1)为第n-1个特征值的贡献率,β为特征值的累计贡献率,γ为符合条件的特征值;
图像分类指的是根据从图像提取的特征融合特征将目标图像归为不同类别的过程。设计分类所用的分类器是图像分类中重要的一个环节,常用的分类器是SVM[13-14]。SVM根据训练样本信息,兼顾学习能力和模型复杂度,寻找最优解,并且具有最好的推广能力。在二分类下,测试样本的决策函数如式(14)所示:
g(x)=∑aiyiK(xi,x)-b。
(14)
K(xi,x)是训练样本,xi是测试样本x的核函数的返回值。y代表分类标签,a是训练样本的学习加权,b是学习的阈值参数。
SVM分类器能够选用一个好的核函数非常的重要,虽然现今已经存在许多核函数,但是具体哪个核函数对视觉分类特别是针对奶牛个体识别更有效并不清楚。本研究通过线性核函数的多分类libsvm进行训练,每头奶牛保留下1 000张有效图片,在经过特征提取后具有相应的1 000个特征向量,分别将每头奶牛的1 000个特征向量以随机方式划分成800个训练数据和200个测试数据,最终组成包含16 000个特征向量的训练矩阵和包含4 000个特征向量的测试矩阵。
将奶牛训练集数据送入SVM进行建模训练,得到训练好的模型,最后将奶牛测试集数据送入SVM训练的模型中进行测试,得出预测结果;根据得到的相应预测结果,输出测试集中各特征向量对应的奶牛不同个体的标号,得到奶牛个体类别。
为验证本研究算法的有效性,试验过程中构造了奶牛面部图像数据库,涵盖了光照、姿势、年龄等因素。本试验在Intel® CoreTMi5处理器、8 G内存、Windows 7旗舰版及Matlab R2012(a)下编程实现,本试验基于传统的HOG特征提取,得到奶牛头部的边缘轮廓特征,由于传统的HOG只是对边缘方向的密度分布有很好的描述,缺乏对局部纹理特征信息的提取,故引入改进的LBP算法,获取奶牛图像纹理信息,通过使用等价模式简化特征向量个数,使用分块子窗口得到LBP直方图,将HOG特征向量与LBP特征向量进行特征融合为最终测试向量,在使用SVM算法进行分类的过程中,通过LIBSVM软件包的使用来完成图像的分类,并且本研究尝试使用线性核函数、RBF核函数以及直方图交叉核作为SVM分类器的核函数,通过试验结果分析,线性核函数的分类精度更高,分类时间短、效果更好。图2显示了算法实现的主要流程。
本研究提出的基于改进HOG-LBP特征融合算法的具体实现过程如下:
(1)对奶牛图像进行前期的预处理,构建实验数据库。
(2)利用HOG算子,提取奶牛图像的局部外观特征。
(3)利用改进的HOG-LBP算子获得奶牛图像的特征,结合边缘/局部形状信息以及纹理信息,在复杂的背景环境下能够提高奶牛的识别率。
(4)HOG冗余信息太多并且LBP不同尺度特征向量级联,所以采用主成分分析对提取的特征向量降维,去除相关性低的特征向量,提高分类时间及准确率。
(5)svm分类识别。
5.2.1 数据及来源 初始数据采用奶牛头部视频,视频采集自一个养殖数量大于300头的规范奶牛养殖场的奶牛头部视频,应用摄像设备录制,视频采集时间集中在奶牛进食阶段,每次录制20头奶牛,每头奶牛录制时间为1 min,帧速 29帧/s,分别采集每头奶牛的抬头、偏头、低头和进食这几种状态,包含了奶牛头部的鼻镜和额部位差异明显的特点。
5.2.2 数据预处理 分别将上述第一步采集的20头奶牛头部的视频数据转化成图片序列,初始图片大小为1 920×1 080 像素,将彩色图片序列转为灰度图像,并使用Photoshop软件的批量处理功能截取奶牛头部图像,然后通过高通滤波处理原图像,使模糊的图像更清晰,图像边缘纹理增强,最后将图片进行尺寸归一化到128×128,预处理后的图像见图3,最后将20头奶牛从1到20编号,表示20个待识别的不同个体,每头奶牛保留1 000张有效图片。
5.2.3 结果分析 利用20头奶牛个体的20 000张图片按照上述步骤计算出识别正确率和识别时间,本研究算法与同样条件下改进HOG-LBP算法、改进LBP算法、传统LBP算法、优化HOG算法、传统HOG算法、Gabor算法计算得到的识别正确率和识别时间进行对比,结果见表1。本研究算法与其他几种算法相比,识别正确率最高,SVM分类识别时间最短。
表1 不同算法对比
试验1和试验2都是采用本研究方法对奶牛个体进行识别,二者选择的特征值累计贡献率不同,试验1采用特征值是98%的累计贡献率,得到的最小特征维数45,试验2采用特征值是99%的累计贡献率,得到的最小特征维数378,由试验1和试验2可以看到,选择不同的特征值累计贡献率,最后得到的最小特征维数、识别准确率和分类识别时间是有差异的,在对奶牛个体进行识别中将根据情况的需要选择适合的特征值累计贡献率。
试验2和试验3分别为采用本研究算法与改进HOG-LBP算法对奶牛个体进行识别,数据结果显示,在相同的测试样本中,分类识别时间大大减少,同时识别率有所增加,因为主成分分析将特征向量中的多余信息去除,保证了信息提取的准确性。
试验3、试验4分别为采用改进HOG-LBP算法与改进LBP算法对奶牛个体进行识别,数据结果显示,在相同的测试样本中,改进HOG-LBP算法的识别正确率明显高于改进LBP算法,因为改进HOG-LBP算法将LBP中的纹理特征提取与HOG边缘特征提取进行了融合,二者互补大大提高了识别效率,保证了特征提取的信息完整性。
试验4和试验5为分别采用改进LBP算法与传统LBP算法对奶牛个体进行识别,数据结果显示,在测试样本相同的条件下,改进LBP算法的识别正确率明显高于传统LBP算法,因为改进LBP算法不仅考虑了邻域像素与中心像素的关系,还考虑了邻域像素之间的关系,这样大大减少了光照噪声的影响,同时采用多尺度划分区域,分别统计各区域的LBP直方图,提取到了更加丰富和准确的信息。
试验6和试验7分别采用优化HOG算法与传统HOG算法对奶牛个体进行识别,数据结果显示,在测试样本相同的条件下,优化HOG算法特征提取的时间明显优于传统HOG算法,因为优化HOG算法直接在灰度图上进行梯度的大小和方向计算,采用边缘强度加权投票,省去了传统HOG算法的三线性差值计算,在保证识别率未降低的情况下大大加速了特征提取的时间。
试验8采用Gabor算法[15]对奶牛个体进行识别,数据结果显示,在测试样本相同的条件下,与本研究方法相比,Gabor算法分类识别时间虽短,但是识别率较低,主要是因为Gabor滤波的通道有限,用1个中心频率不能描述能量在多频率的纹理信息,因此得到的效果不理想。
本研究提出一种基于特征融合的奶牛个体识别方法,将奶牛轮廓特征与局部纹理特征相结合,是应用改进的HOG-LBP算法进行特征提取、主成分分析方法特征降维的奶牛个体识别方法,克服了早先奶牛个体识别技术中旋转鲁棒性差、易受光照影响、噪声大的缺陷。利用自行从牛场拍摄的20头奶牛的20 000张图像作为试验数据,结果表明将本研究算法应用于奶牛个体识别既能缩短检测时间,又能在较复杂的背景下有较高的识别率,对于加快奶牛的信息化管理具有一定的现实意义。