張宏鳴 武 杰 李永恒 李書琴 王紅艷 宋榮杰
(1.西北農林科技大學信息工程學院, 陜西楊凌 712100; 2.寧夏智慧農業產業技術協同創新中心, 銀川 750004;3.西部電子商務股份有限公司, 銀川 750004)
近年來,我國牛肉需求量大幅增加,國內肉牛養殖行業發展迅速[1],大規模肉牛養殖對養殖場信息化水平提出了較高要求。肉牛進食行為能夠反映其健康狀況,同時也影響肉牛的進食量,進而影響其自身的發育及牛肉的質量和產量。準確識別肉牛進食行為能夠幫助管理者及時了解肉牛個體進食量,對肉牛養殖具有重要價值。
目前,眾多學者開展了關于動物行為監測的研究工作。利用可穿戴設備監測動物狀態、獲取動物行為數據,借助統計[2-3]、機器學習[4-9]、深度學習[10-11]等方法分析數據,實現對動物多種行為的監測。但可穿戴設備需要根據不同的監測對象,在設備的定制、佩戴、維護上成本較高。近年來,利用獲取視頻數據,采用非接觸式方法監測動物行為的研究較多。文獻[12-16]通過提取監測動物目標,并分析建模,采用聚類或分類算法實現對動物行為的分類識別。文獻[17-21]通過目標檢測獲取動物圖像,利用圖像識別算法實現對動物行為的監測和識別。這些方法大部分需要依賴搭建的實驗場地或特定的監控視角,個別方法可以利用監控設施實現行為識別,但每次僅能識別一個目標行為。隨著Fast R-CNN、YOLO等目標檢測算法的出現,目標檢測在果實識別[22-24]、動物行為檢測與個體識別[21,25-27]領域得到了一定的應用。但有關肉牛多目標行為識別和監測研究尚未見報道。
本文提出一種基于YOLOv3模型和卷積神經網絡的肉牛進食行為識別方法,利用實際養殖場監控視頻構建數據集,訓練YOLOv3目標檢測模型檢測肉牛目標,通過填充、丟棄操作構建卷積神經網絡、訓練圖像識別模型,以實現對養殖場監控視頻觀測范圍內肉牛進食行為的識別。
肉牛視頻數據于2019年4—7月在寧夏回族自治區銀川市犇旺生態養殖公司肉牛養殖場采集。每段視頻時長35 min,肉牛視頻格式為mp4,分辨率為1 920像素(水平)×1 080像素(垂直),視頻幀率為24 f/s。本文目的是對肉牛進食行為進行監測和識別,故篩選出處于室內牛欄的監控視頻作為實驗數據,養殖場監控視頻場景如圖1所示。

圖1 養殖場監控視頻Fig.1 Farm monitoring video
本研究旨在使用機器視覺方法對監控視頻進行分析,實現對肉牛進食行為的識別。識別技術路線如圖2所示,包括3個環節:
(1) 構建數據集:提取監控視頻關鍵幀,對關鍵幀進行標注、截取,構建肉牛目標檢測數據集、肉牛行為數據集。
(2) 進食行為識別:利用肉牛目標檢測數據集和肉牛進食行為數據集,訓練YOLOv3模型用于肉牛目標檢測,訓練卷積神經網絡用于肉牛行為圖像識別,最終實現對多目標肉牛進食行為的識別。
(3) 結果分析:將特征圖可視化并分析;在測試集上對進食行為識別方法進行評估。

圖2 技術路線圖Fig.2 Technology roadmap
1.2.1數據集構建
構建2個數據集,分別用于訓練目標檢測模型和圖像識別模型。監控視頻中肉牛個體眾多,花色多樣,姿態復雜,給檢測肉牛目標、識別肉牛進食行為增加了一定的難度。為了避免數據的單一性,增強數據集的豐富性,對篩選的視頻進行關鍵幀提取。使用LabelImg軟件標注關鍵幀中的肉牛目標,利用標注的關鍵幀圖像和標注文件,共1 233組,構建肉牛目標檢測數據集。通過讀取標注文件,對關鍵幀進行截取,獲得肉牛個體圖像。肉牛個體圖像可分為進食和非進食兩類。為了使訓練模型的魯棒性更好,選取進食和非進食行為下不同姿態肉牛的圖像,構建肉牛行為數據集。本文構建的肉牛行為數據集,包括肉牛進食行為圖像846幅,非進食行為圖像1 000幅。肉牛進食行為數據集中,具有代表性的肉牛進食行為圖像如圖3a所示,肉牛非進食行為圖像如圖3b所示。

圖3 行為識別數據集部分樣例Fig.3 Some examples of behavior recognition data sets
為了驗證本文提出的肉牛進食行為識別方法的有效性,選取不同光照情況下、不同時段的監控視頻8段,每段視頻30 s,共5 760幅圖像作為測試集。測試集中的視頻場景具體情況如圖4所示。

圖4 測試集場景Fig.4 Scence of test sets
1.2.2方法設計
本文提出的肉牛進食行為識別方法基于先檢測肉牛目標,后識別個體行為的思路。
1.2.2.1肉牛目標檢測
YOLOv3模型借鑒了殘差網絡結構,將生成的特征圖和輸入疊加起來,疊加后的特征圖作為新的輸出輸入到下一層網絡,減小了梯度爆炸的風險,增強了網絡的學習能力。利用多尺度特征進行目標檢測,在保證檢測速度的同時,提升了檢測精確度。采用方差加二值交叉熵的損失計算方法,損失函數包括坐標誤差、交并比誤差和分類誤差3部分。使用反向傳播算法,不斷調整參數,更新模型,使損失不斷減小。在多個公開數據集上取得了優異的效果[28]。
本文選用YOLOv3模型作為肉牛目標檢測算法,通過目標檢測,獲取觀測范圍內肉牛目標位置,對肉牛目標進行截取,進而對肉牛進食行為進行識別。
1.2.2.2肉牛進食行為識別
參考LeNet-5網絡結構[29],構建的卷積神經網絡包括4個卷積層、4個池化層和3個全連接層,并在前兩個全連接層中采用丟棄操作。本文卷積神經網絡結構如表1所示,并進行改進:

表1 卷積神經網絡結構Tab.1 Convolutional neural network structure
(1) 在卷積操作時采用填充
肉牛牛頭的位置和肉牛與進食槽的距離是判斷肉牛是否處于進食行為的重要依據。通過觀察YOLOv3模型獲取的肉牛行為圖像可以看出,大多數圖像中牛頭、進食槽處于圖像邊緣位置。填充操作通過對特征圖邊緣進行填充,能夠提高圖像邊緣的特征被卷積核提取的次數,從而盡可能保留圖像邊緣的細節特征,填充操作的原理如圖5所示。

圖5 填充操作原理圖Fig.5 Schematics of padding
(2) 在全連接層中加入丟棄操作
由于肉牛姿態多樣,部分非進食行為的肉牛圖像與進食行為的肉牛圖像相似度較高,導致模型訓練過程中容易出現過擬合。丟棄操作通過使卷積神經網絡全連接層的神經元隨機失去活性[30],降低神經元之間的依賴,從而提高網絡模型泛化能力,丟棄操作的原理如圖6所示。

圖6 丟棄操作原理圖Fig.6 Schematics of dropout
1.2.3評價指標
1.2.3.1目標檢測評價指標
對于一個目標檢測算法,通常從每秒處理的幀數、目標檢測的準確度等方面評估其效果。由于本實驗的目的是盡可能多地識別視頻中的肉牛目標,故本實驗更關注訓練得到的YOLOv3模型對肉牛目標檢測的準確度。
本文中,需要比較YOLOv3模型在驗證集上對肉牛目標檢測的坐標與真實標注坐標的差距。在評估時,首先需要計算模型所預測的檢測框坐標和真實框坐標的交集與并集之間的比例,該比例又稱為交并比(IoU)。目標檢測數據集使用Pascal VOC數據集格式。利用交并比判斷檢測是否正確,使用Pascal VOC數據集評估目標檢測算法效果時,設置閾值為0.5,即如果預測的檢測框坐標和真實框坐標的交集與并集之間的比例大于0.5,則認為檢測正確,否則認為檢測錯誤。
采用驗證集全部視頻幀上的平均精確度VAVE(驗證集中全部視頻幀圖像中肉牛被正確檢測的百分比)來評價目標檢測的效果。VAVE的計算公式為
(1)
式中A——正確檢測肉牛目標的次數
B——驗證集中的每幅視頻幀圖像中實際肉牛目標的個數
S——驗證集包含的視頻幀總數
1.2.3.2圖像識別評價指標
圖像識別樣本分為4種類型:真正例(True position,TP)表示模型對正例進行正確分類;假正例(False position,FP)表示模型對正例進行錯誤分類;假反例(False negative,FN)表示模型對反例進行錯誤分類;真反例(True negative,TN)表示模型對反例進行正確分類。真、假正例的總稱是正例(Position,P),真、假反例的總稱是反例(Negative,N)。本實驗中預選出3個評價標準,對模型進行效果評價。
(1)精確度(VP)表示模型正確分類的肉牛進食行為圖像樣本數量占分類為肉牛進食行為圖像樣本數量的比率,計算公式為
(2)
式中ATP——肉牛進食行為圖像正確識別的個數
AFP——肉牛進食行為圖像錯誤識別的個數
(2)召回率(VR)表示模型正確分類的肉牛進食行為圖像樣本數量占實際肉牛進食行為圖像樣本數量的比率,計算公式為
(3)
式中AFN——肉牛非進食行為圖像錯誤識別個數
(3)準確率(VACC)表示通過模型識別,最終分類正確(包括肉牛進食行為圖像樣本和肉牛非進食行為圖像樣本)的圖像樣本數占總樣本數的比率,是評價模型整體性能的評價指標,計算公式為
(4)
式中ATN——肉牛非進食行為圖像正確識別個數
AP——肉牛進食行為圖像總數
AN——肉牛非進食行為圖像總數
實驗執行環境為64位Windows 10系統,AMD Ryzen 3500X 6-Core CPU 4.0 GHz,NVIDIA GeForce RTX 2060 SUPER GPU,16 GB內存,編程語言為Python 3.7.4,使用Tensorflow 1.15、Keras 2.1.5進行網絡搭建、訓練和測試,開發工具為PyCharm 2019。
1.4.1YOLOv3模型
訓練YOLOv3模型時,設置批尺寸為5,迭代次數為500,以8∶2的比例劃分訓練集和驗證集。為了選擇出合適的初始學習率,在不同量級下進行學習率測試,將初始學習率設置為0.000 01、0.000 1、0.001、0.01、0.1、1、10分別進行模型訓練,同時為了避免學習停滯,在迭代150次和迭代300次時,設置學習率衰減為之前的1/10,經過多次訓練,分別對模型進行評估,保留效果最好的模型供后續實驗使用。
經過評估,不同初始學習率下訓練得到的模型,在測試集上對肉牛目標檢測情況和平均精確度如表2所示。從表2可以看出,當初始學習率設置為0.1時,模型正確識別肉牛個數最多,在196幅圖像、共計734個肉牛目標的測試集中(包含多個肉牛個體的多種姿態和行為),該模型正確識別683個肉牛目標,51個肉牛目標未識別,錯誤識別30個肉牛目標;模型平均精確度最高,在測試集上的平均精確度為92.5%。該模型經過500次訓練迭代后,訓練集上的損失函數變化曲線如圖7所示。當訓練達到300次以上時,隨著迭代次數的不斷增加,訓練損失趨向穩定,網絡模型達到較好的訓練效果。

表2 不同學習率下YOLOv3檢測情況和平均精確度Tab.2 Detection and average precision of YOLOv3 at different learning rates

圖7 YOLOv3損失值變化曲線Fig.7 Loss change curve of YOLOv3
1.4.2卷積神經網絡模型
在不同量級下進行初始學習率的測試,將學習率設置為0.000 01、0.000 1、0.001、0.01、0.1、1、10分別進行模型訓練,其中當學習率大于等于0.1時,模型發生過擬合,不同學習率下卷積神經網絡模型的效果如圖8所示。丟棄操作會使神經元按照一定比例失去活性,當丟棄率太低時,難以起到效果;當丟棄率太高時,容易導致模型欠學習。將丟棄率分別設置為0.1、0.2、0.3、0.4、0.5、0.6,不同丟棄率下卷積神經網絡模型的效果如圖9所示。經過評估,最終選取學習率為0.000 1、丟棄率為0.5的模型對肉牛進食行為進行識別。

圖8 不同學習率下卷積神經網絡模型的效果Fig.8 Effect of convolution neural network model at different learning rates

圖9 不同丟棄率下卷積神經網絡模型的效果Fig.9 Effect of convolutional neural network model at different dropout rates
本文利用反卷積和反池化,將輸入圖像的激活特征實現可視化[31],可以清晰地看到卷積神經網絡提取的圖像特征以及提取特征的特點。
通過對比第1次卷積操作和第4次卷積操作后提取的圖像特征,能夠發現淺層卷積層重點提取圖像中肉牛的輪廓特征,可以分辨出特征圖中的肉牛目標,如圖10所示。隨著卷積層的加深,得到的特征越來越抽象,但是通過仔細觀察特征圖,可以發現經過多次卷積操作提取到更多位于圖像邊緣的特征,如圖11所示。

圖10 第1次卷積操作輸出的特征圖Fig.10 Characteristic graph of the first convolution operation output

圖11 第4次卷積操作輸出的特征圖Fig.11 Characteristic graph of the fourth convolution operation output
肉牛目標檢測的目的是識別肉牛個體,進而才能通過圖像識別模型對肉牛個體的進食行為做出判斷,因此肉牛進食行為識別的準確率在一定程度上能夠反映目標檢測的準確率。在8段30 s視頻共5 760幅圖像測試集中對本文提出的多目標肉牛進食行為識別方法進行評估,肉牛目標檢測的平均精確度為83.8%;對檢測到的肉牛目標進食行為識別的平均精確度為79.7%,平均召回率為73.0%,平均準確率為74.3%,在測試集各視頻取得的識別結果如表3所示,各測試視頻的識別結果如圖12所示??傮w來看,本文提出的基于機器視覺的肉牛進食行為識別方法具有較好的準確性,能夠為肉牛行為監測提供方法支持。
本文提出的基于YOLOv3模型的多目標肉牛進食行為識別方法識別的肉牛進食行為與肉牛真實行為存在誤差,產生這些誤差的原因主要有:
(1)目標檢測準確性的影響。目標檢測算法對于監控視頻中距離較遠、目標較小的肉牛難以檢測、識別;對于出現相互遮擋的肉牛目標,難以完全識別。后續可通過擴充肉牛目標檢測數據集或嘗試不同的目標檢測算法來提升目標檢測的準確性。

表3 測試集目標檢測和行為識別結果Tab.3 Object detection and behavior recognition results of test sets %
(2)圖像識別準確性的影響。利用卷積神經網絡進行圖像識別時,由于肉牛姿態、花色的多樣性,個別肉牛的進食行為識別存在波動;部分肉牛距離進食槽較近時,容易誤識別。肉牛個體進食行為準確率仍有很大的提升空間。后續可通過擴充肉牛進食行為數據集,提高肉牛行為多樣性、肉牛個體多樣性,或通過改善神經網絡結構來提高肉牛進食行為圖像識別的準確性。

圖12 測試集識別結果Fig.12 Recognition results of test sets
通過獲取肉牛養殖場的監控視頻,建立了肉牛目標檢測數據集、肉牛行為數據集;使用YOLOv3模型實現了對監控視頻觀測范圍內肉牛的檢測;利用卷積神經網絡對檢測的肉牛目標進行進食行為識別。在包含8段視頻共5 760幅圖像的測試集中,肉牛目標檢測的平均精確度為83.8%,肉牛進食行為識別的平均精確度為79.7%、平均召回率為73.0%、平均準確率為74.3%,驗證了利用監控視頻對肉牛進食行為監測的可行性。