王少華 何東健 劉 冬
(1.西北農林科技大學機械與電子工程學院, 陜西楊凌 712100; 2.農業農村部農業物聯網重點實驗室, 陜西楊凌 712100)
和其他哺乳動物一樣,奶牛只有受孕后才會分泌乳汁。及時發現發情期奶牛、保證順利受精是增加奶牛產奶量、提高牛場經濟效益的關鍵。正常養殖條件下,健康成年奶牛常年發情,每次發情持續時間為6~30 h,間情期為21 d左右。發情期奶牛會出現活動量增加、哞叫不止、爬跨和接受爬跨等行為,其中爬跨行為是通過觀察了解奶牛發情的主要形式。尤其進入發情旺盛期的奶牛,被爬跨時站立不動,這成為奶牛發情最可靠的標志。奶牛發情多在夜間,傳統方法通過人工進行觀察,受限于工作時間和工人經驗,識別效率不高。近年來,我國奶牛養殖業向規?;较虬l展,傳統方法已經不能滿足生產需求,亟需對其進行改進[1-3]。因此,研究基于機器視覺的奶牛發情行為自動識別方法,對現階段我國奶牛養殖業發展具有重要意義。
目前國內外已有的關于奶牛發情行為識別的研究主要采用兩種方式:一種是基于奶牛運動量、體溫、激素等數據的直接接觸方法;另一種是基于聲音、圖像、視頻等數據的非接觸式方法。直接接觸法通過給奶牛佩戴或植入傳感器獲取奶牛體征數據,通過分析數據識別發情[4-14]。直接接觸法獲取數據直觀,數據處理簡單,是一種有效的奶牛發情識別方法,但它往往引起動物福利的問題,且植入和佩戴傳感器會導致奶牛產生應激反應,使測得的數據失真。因此,基于聲音和視頻圖像等的非接觸式方法識別奶牛發情行為成為研究熱點[15-28],尤其是基于視頻圖像的識別方法,價格低廉、容易安裝、對奶牛干擾小,受到研究人員的關注。
非接觸式方法在識別奶牛發情時,存在過度依賴閾值分割結果、自動化水平不夠和識別準確率不高等問題。針對這些問題,本文提出一種基于機器視覺的奶牛發情行為自動識別方法。該方法首先對高斯混合模型進行改進,使之更適于固定場景下的運動目標檢測;然后,考慮復雜牛場環境下的目標檢測結果中可能存在非奶牛目標,為提高識別效率,使用基于顏色和紋理信息的方法去除非奶牛目標;最后,使用AlexNet深度學習網絡訓練奶牛行為分類網絡模型,識別奶牛發情行為。
本研究視頻采集自陜西省寶雞市扶風縣西北農林科技大學畜牧實驗基地奶牛養殖場,經實地考察和調研,發現奶牛爬跨行為主要發生在養殖場的奶?;顒訁^,故選擇對奶牛活動區進行視頻采集。奶?;顒訁^長30 m,寬18 m,視頻采集角度選擇場邊俯視,在奶牛活動區的對角線位置各安裝2個分辨率為200萬像素的監控攝像機(YW7100HR09-SC62-TA12型,深圳億維科技有限公司),攝像機安裝高度3.3 m,向下傾斜15.5°,安裝好的攝像機及視野圖像如圖1所示。視頻采集從2016年12月開始,到2017年4月結束,期間共采集奶牛活動視頻3 600段,每段視頻長10 min,分辨率為1 920像素(水平)×1 080像素(垂直),幀率為25 f/s。

圖1 攝像機安裝位置及視野圖像Fig.1 Camera installation location and view image
本研究旨在通過使用機器視覺算法對采集的視頻進行分析,自動識別出場景中的發情奶牛。識別方法流程圖如圖2所示,主要包含3個關鍵環節:
(1)運動目標檢測:使用改進的高斯混合模型對視頻圖像做運動目標檢測,精準檢測運動奶牛輪廓,經形態學處理和空洞填充后,獲得完整運動奶牛區域。
(2)干擾去除:因牛場光線變化或工作人員進入視野,運動目標檢測結果中含有非奶牛目標,本文提出了一種基于顏色和紋理特征的區分方法,可有效去除非奶牛目標區域。
(3)奶牛爬跨行為識別:從視頻中提取奶牛的躺臥、爬跨、站立、游走等行為圖像,使用AlexNet深度學習網絡訓練奶牛行為分類網絡模型,模型可識別爬跨行為,用以判斷奶牛發情。

圖2 奶牛發情行為自動識別方法流程圖Fig.2 Flow chart of dairy cow estrus behavior automatic recognition method
1.3.1視頻預處理
預處理是進行視頻圖像處理的重要步驟,它可以去除圖像中的無關信息進而提高有效信息占比[29]。在奶牛視頻中,低亮度和噪聲會造成目標與背景對比度下降,而低對比度的圖像不利于目標的有效提取,對于夜間拍攝的低亮度圖像,可以通過圖像增強技術來提高其對比度,對于含有噪聲的圖像,可以使用濾波技術去除圖像中的噪聲。本文選用Gamma變換來增強圖像
Gx,y=(Ix,y+Vesp)γ
(1)
式中Ix,y——Gamma變換前的像素
Gx,y——Gamma變換后的像素
Vesp——補償系數γ——系數
圖3為γ取不同值時的結果。由圖3可以看出,原始圖像整體偏暗,畫面遠端的奶牛與背景對比度不足,對目標輪廓的辨識較為困難;經圖像增強校正后,當γ=0.5時,圖像亮度提高,但提高過度,引入了新的白噪聲,導致圖像清晰度下降;γ=0.8時,圖像亮度提升較好,圖像對比度提升,遠端奶牛的辨識度也更為清晰。因此,本研究選擇γ=0.8的Gamma變換。圖4為中值濾波的結果,分別取濾波窗口為3×3、5×5、7×7做對照,研究發現,3×3窗口不能完全濾除噪聲,7×7窗口下會出現奶牛目標的邊緣模糊,因此本研究選取5×5窗口進行中值濾波。

圖3 不同γ下的圖像增強結果Fig.3 Image enhancement results with different γ

圖4 不同窗口下的中值濾波結果Fig.4 Median filtering results in different windows
由于供試視頻拍攝位置及角度固定,拍攝成像的奶牛場區域固定,且奶牛的活動范圍被限制在圍欄內,不會出現奶牛超出圍欄區域活動,因此確定圍欄內的奶?;顒訁^為視頻拍攝的有效區域,為減少不必要的干擾,通過掩膜法掩去視頻內容中的無關區域,如圖5所示,后期對奶牛的目標檢測和行為識別均只在有效區域內進行。

圖5 視頻圖像掩膜后的圖像Fig.5 Effective area of video image after masking
1.3.2基于改進高斯混合模型的運動區域檢測算法
為了識別奶牛爬跨行為,首先需要對視頻中的奶牛做目標檢測,常用的目標檢測方法有幀差法、光流法、高斯混合模型法等。考慮本研究視頻記錄時間長且拍攝環境復雜,故選用高斯混合模型并對其改進作為本文運動奶牛目標的檢測方法。
高斯混合模型由多個(3~5個)單高斯模型構成,設(x1,x2,…,xn)為模型采樣像素點x的樣本集L,其概率密度分布為
(2)
其中
式中K——模型中單高斯模型的數量

wk——第k個單高斯模型權重
μk——第k個單高斯模型均值

經典高斯混合模型存在模型復雜度高、計算量大、無法根據局部背景優化模型數量等問題[30-32],考慮本研究視頻場景固定和視頻記錄時間長的特點,本文對經典高斯混合模型進行了改進,具體如下:
(1)自適應模型數量優選方法
為降低模型復雜度,減少計算量,提出一種自適應模型數量優選方法。在模型數量K固定的條件下,高斯混合模型中的每個模型均采樣若干樣本直至飽和,該方式會出現冗余模型,造成系統資源浪費和背景建模速度慢。因此,本文對模型的更新方法進行了調整,使其可以結合不同區域的像素特點選擇最優的模型數量。
對已建立的模型,計算兩相鄰模型的均值差,若滿足
|μk-μk+1| (3) 式中T——閾值 則更新大權值模型,并刪除小權值模型。模型更新方程為 w=max(wk,wk+1) (4) μ=η1μk+(1-η1)μk+1(0<η1<1) (5) (6) 式中η1、η2——參數學習率 w——單高斯模型權重 μ——單高斯模型均值 σ2——單高斯模型方差 經預試驗,本文取η1=0.7,η2=0.6。若相鄰模型均值差不滿足式(3),則保持原更新規則不變。 (2)噪聲約束因子 為增加模型在復雜環境下的抗噪能力,提升系統魯棒性,引入噪聲約束因子。模型采樣的像素點樣本主要分為背景、前景和噪聲,通常噪聲樣本數遠小于其他兩者[30]。基于此,本文在模型最大似然估計階段,對其似然函數添加噪聲約束因子N。 高斯混合模型的權值wk可以等價為樣本來自第k個模型的概率,加入噪聲約束因子后,其似然函數為 (7) 式中 l ——模型似然函數 nk——第k個單高斯模型采樣的樣本數 式(7)可改寫為 (8) 式(8)中,等號右側第2項即為噪聲約束項,引入Lagrange算子λ,式(8)可以改寫為 (9) 由式(9)求得權重更新方程為 (10) α——學習率 nt——t時刻的近期采樣數 由式(10)可知,引入噪聲約束因子后,模型初始化權值為負,對于第k個模型,至少需要nk(nk>N)個樣本來支撐,才能保證其權值為正。每次迭代更新時,算法會自動拋棄權值小于零的模型,由此去除可能由噪聲帶來的錯誤模型,實現噪聲抑制。 為進一步提高模型實時性并加強其對遙遠歷史幀信息的存儲能力,本文引入關鍵幀提取技術[33],以運動目標區域作為參考,選擇平均差分強度高于預設閾值的幀作為視頻的關鍵幀。根據前一幀檢測結果用最小外接矩形標記運動目標,若矩形區域內后一幀與前一幀平均差分強度高于預設閾值(30~50像素),則視其為關鍵幀。 1.3.3基于顏色和紋理特征的非奶牛目標去除 由于牛場光線變化和工作人員、鳥類等進入視野,目標檢測結果中會包含部分非奶牛目標,如圖6所示。為提高識別效率,本文提出了一種基于顏色和紋理特征的非奶牛目標去除方法。 圖6 運動目標檢測結果中出現的非奶牛目標Fig.6 Non-cow targets in result of moving targets detection 對于改進高斯混合模型的檢測結果,選擇其最小外接矩形作為待檢區域,用R(i)j表示,其中i為視頻幀號,j為區域編號。計算待檢區域R(i)j的紋理特征Mgd和顏色特征Pb&w,即灰度差分均值和黑白像素之和占比,計算公式為 (11) (12) 式中m——待檢區域灰度差分級數 d——灰度差分值 h——灰度差分直方圖概率統計函數 Cb——待檢區域中黑色像素(像素小于60)數 Cw——待檢區域中白色像素(像素大于250)數 C——待檢區域總像素數 設置閾值TM、TP,若R(i)j計算結果滿足 (13) 則認為該區域為運動奶牛目標區域,予以保留,否則,去除該目標區域。在預備試驗中確定TM、TP的取值為0.13、0.12。 1.3.4基于AlexNet的奶牛行為分類網絡模型 本文選用AlexNet深度學習網絡來構建奶牛行為分類網絡模型,經觀察,活動區奶牛的日常行為主要有躺臥、爬跨、站立、游走等,考慮到奶牛的站立和游走行為視覺特征過于接近,為防止過擬合,將其視作一個類,故本文模型的輸出共有3個:躺臥、爬跨、站立/游走。 AlexNet[34]共有8個權值層,其中前5層為卷積層,后3層為全連接層,各層節點及參數如表1所示。AlexNet在前2個全連接層中使用了Dropout,如圖7所示。訓練時,使用了Dropout的全連接層,每個神經元節點以1-p的概率被置為0,這會使每個batch的訓練網絡結構都不一定相同,而在訓練完成后進行分類時,所有的神經元都不會被置為0,這樣,最后分類的結果相當于集成了多個不同的網絡,以此來提升泛化能力,減輕過擬合。 表1 AlexNet各層結構及參數Tab.1 Structure and parameters of layer of AlexNet 圖7 Dropout原理示意圖Fig.7 Schematics of Dropout 為了解決訓練樣本不足的問題,本文采用遷移學習的思想[35],在預訓練好的模型基礎上,利用奶牛行為圖像樣本進行微調(fine-tuning),得到奶牛行為分類網絡模型。本次訓練有圖像樣本3 699幅,其中訓練集樣本2 550幅,測試集樣本849幅,驗證集樣本300幅,模型的訓練步驟如下:①構造樣本數據集,并生成類別標簽。②將訓練集和測試集轉換為AlexNet輸入格式,并計算訓練集均值。③選定預加載的模型,并修改模型最后一層輸出數量。④配置訓練參數。⑤開始fine-tuning訓練。 完成訓練后的模型具有識別輸入的奶牛行為圖像是否為躺臥、爬跨、站立/游走的功能。在使用目標檢測方法獲得運動奶牛圖像后,輸入模型,判斷是否為爬跨行為,如果是則確認奶牛發情,系統保存圖像,并提醒工作人員查看。 本文試驗環境為64位Windows 10操作系統,Intel Core i7-4720HQ CPU,主頻2.6 GHz,內存8 GB。運動奶牛目標檢測算法用Matlab 2014b開發并進行試驗;奶牛行為分類網絡模型由Python 3.5基于Caffe深度學習平臺[36]、GPU模式(Nvidia GTX 960)訓練實現;奶牛發情行為識別算法使用Matlab 2014b和Python 3.5開發。 為了驗證本文提出的運動奶牛目標檢測方法的有效性,選取不同天氣狀況下、不同時段的奶牛監控視頻片段10段,通過關鍵幀提取共獲取4 866幅圖像,進行運動奶牛目標檢測試驗,檢測結果如圖8所示。 采用目標檢出率VDR(屬于運動牛奶的像素被正確識別為前景的百分比)、背景誤檢率VFAR(屬于背景的像素被識別為前景的百分比)和運行時間3個指標來評價算法。VDR和VFAR計算公式為 (14) (15) 圖8 運動奶牛目標檢測試驗結果Fig.8 Results of moving cows target detected experiment 式中ATP——檢測到的運動奶牛面積,像素 AFP——檢測結果中的非運動奶牛面積,像素 AFN——沒有被檢測到的運動奶牛面積,像素 對4 866幅圖像進行試驗,選取34幅具有有效牛身信息的檢測結果進行統計,經典高斯混合模型和本文方法的VDR、VFAR變化曲線如圖9、10所示。 圖9 目標檢出率Fig.9 Correct segmentation of foreground 圖10 背景誤檢率Fig.10 Error segmentation of background 由圖9、10可知,本文方法整體檢測效率高于經典高斯混合模型。在目標檢出率方面,本文方法的平均檢出率為78.59%,與經典高斯混合模型的63.30%相比,提高了15.29個百分點;在背景誤檢率方面,本文方法平均誤檢率為10.68%,相比經典混合高斯模型的19.52%,降低了8.84個百分點。同時,試驗發現,在低亮度下,本文方法識別效率明顯高于經典高斯混合模型,分析原因為低亮度下拍攝的圖像更容易受噪聲干擾,由于引入噪聲約束,本文方法受到的影響較小。此外,本文方法對光照強度的變化頻率更加敏感,光線劇烈變化時,本文方法準確率的波動幅度大于經典高斯混合模型,分析原因為由于引入自適應模型個數和噪聲約束,算法的背景更新速度弱于經典高斯混合模型,當光線變化劇烈時,會出現背景模型更新不及時,導致檢測結果失準。試驗還發現本文方法對于圖像邊緣目標的檢測能力有待增強。在實時性方面,本文方法處理4 866幅圖像共用時562.87 s,平均幀速率為8.64 f/s,而視頻關鍵幀提取后的平均幀速率為8.11 f/s,考慮關鍵幀提取的時間,平均幀速率為8.32 f/s,因此,本文方法滿足對視頻處理的實時性需求。 本次訓練共有奶牛圖像樣本3 699幅,其中訓練集樣本2 550幅,每類樣本各850幅,測試集樣本849幅,每類樣本各283幅,驗證集樣本300幅,每類樣本各100幅。圖11為奶牛行為的圖像樣例。本文訓練采用遷移學習的思想,在BVLC已預訓練的模型上進行fine-tuning,獲得奶牛行為分類網絡模型。 圖11 奶牛行為樣例圖像Fig.11 Dairy cows behavior sample images 訓練開始前,首先生成訓練集和測試集文件路徑,并添加相應類別標簽:躺臥(0)、爬跨(1)、站立/游走(2)。由于數據庫和均值文件是在Caffe下進行訓練的必要文件,因此需要利用Caffe插件convert_imageset將測試集和訓練集分別轉換為Caffe可識別的數據庫,并利用compute_image_mean插件計算訓練集的圖像均值,以方便訓練。本次訓練選擇的預加載模型為BVLCAlexNet。訓練開始時,結合訓練平臺的硬件性能和預試驗時確定的優選參數,調整AlexNet配置文件中train_val.prototxt和solver.prototxt的相關訓練參數設置,調整后的訓練參數如表2所示。 圖12為奶牛行為分類網絡模型訓練誤差隨迭代次數變化的曲線,由圖可知,訓練迭代到12 000次時網絡已收斂,準確率為97.6%,使用驗證集對訓練好的模型進行測試,準確率為100%,表明本文模型能較準確地區分奶牛躺臥、爬跨、站立/游走行為。分析模型訓練過程,錯誤識別的樣本主要為存在嚴重遮擋的爬跨行為,遮擋造成了爬跨行為特征信息減少,被誤識別為非爬跨行為。進一步測試可知,當爬跨行為被遮擋不超過爬跨區域的40%且圖像中包含爬跨牛只前部時,奶牛爬跨行為認為是被模型較好地識別出來。 表2 Fine-tuning訓練參數設置Tab.2 Parameters setting for training procedure 為驗證本文方法的性能,選取30段不同天氣狀況下、不同時段的奶?;顒訄霰O控視頻構建視頻數據集,數據集中包括爬跨行為和無爬跨行為的視頻樣本。人工觀看抽取的30段視頻并記錄爬跨行為次數,與本文方法的識別結果進行對比,結果如表3所示。 圖12 奶牛行為分類網絡模型訓練誤差隨迭代次數的變化曲線Fig.12 Change curve of train loss of dairy behaviors classification network model with number of iterations 表3 奶牛爬跨行為次數試驗結果Tab.3 Experiment result of cow estrus frequency 由表3可知,人工觀察到的奶牛爬跨行為次數為34次,本文方法檢測到的爬跨行為次數為30次,經人工驗證,檢測結果中正檢次數為30次,錯檢0次,漏檢4次。 使用準確率和召回率作為模型評價指標,準確率定義為正確識別的奶牛爬跨行為次數與識別出的奶牛爬跨行為次數的百分比,召回率定義為正確識別的奶牛爬跨行為次數與實際發生的奶牛爬跨行為次數的百分比。其計算公式為 (16) 式中γTP——準確率γR——召回率 E1——正確識別的奶牛爬跨行為次數 E0——識別的奶牛爬跨行為次數 E——實際發生的奶牛爬跨行為次數 由式(16)計算可知,本文方法識別準確率為100%,召回率為88.24%,表明本文方法可實現復雜養殖環境下奶牛發情行為的自動識別,識別結果可靠。算法召回率偏低的原因主要有2個:奶牛場環境光線變化,主要發生在晴天的傍晚;奶牛的爬跨行為被嚴重遮擋。前一種情況是由本研究使用的目標檢測算法的魯棒性不足導致,后一種情況主要由本文方法的奶牛行為分類網絡模型的識別準確率較低導致。 基于自適應模型數量優選和噪聲約束的思想對經典高斯混合模型進行了改進,應用改進模型進行目標檢測,實現了固定場景下運動奶牛目標的實時準確檢測。提出了一種基于顏色和紋理特征的非奶牛目標去除算法,可有效去除目標檢測結果中出現的非奶牛目標。依據奶牛日常行為和特性,使用基于AlexNet的深度學習網絡訓練,并構建了奶牛行為分類網絡模型,模型可精準識別奶牛爬跨行為,實現對奶牛發情行為的識別。試驗結果表明,本文提出的奶牛發情行為識別方法對奶牛發情識別的準確率為100%,召回率為88.24%,可實現復雜養殖環境下奶牛發情行為的自動準確識別。




2 試驗結果與分析
2.1 試驗測試平臺
2.2 運動奶牛目標檢測方法試驗



2.3 奶牛行為分類模型的訓練


2.4 奶牛發情行為識別試驗


3 結束語