陸明洲 梁釗董 NORTON Tomas 張生福 沈明霞
(1.南京農業(yè)大學人工智能學院, 南京 210031; 2.魯汶大學M3-BIORES實驗室, 海弗萊 B3001;3.青海民族大學計算機學院, 西寧 810007)
湖羊是我國太湖平原地區(qū)特有的羔皮用綿羊品種,屬一級保護地方畜禽品種,其主要飼養(yǎng)方式為規(guī)模化舍飼[1]。食欲減退甚至廢絕是湖羊常見疾病(如肝片吸蟲病、羊黑快疫等)的主要癥狀之一,監(jiān)測湖羊采食行為以及時發(fā)現(xiàn)食欲異常的湖羊個體在養(yǎng)殖生產實踐中至關重要[2]。傳統(tǒng)的采食行為監(jiān)測方法為人工觀測,需要具有豐富養(yǎng)殖經驗的飼養(yǎng)員連續(xù)或定時觀測湖羊的采食過程,耗費大量人力與時間,且易對湖羊造成驚擾,無法長期持續(xù)監(jiān)測。隨著各類傳感器技術、機器學習技術、自動控制技術等被越來越多地應用于養(yǎng)殖業(yè)[3],精準畜牧養(yǎng)殖(Precision livestock farming, PLF)成為養(yǎng)殖業(yè)的重要發(fā)展方向之一。采食行為的自動監(jiān)測和分析是PLF的重要組成部分[4],研究人員針對動物采食行為自動監(jiān)測開展了相應研究工作。
放牧養(yǎng)殖模式下的動物活動范圍廣,動物牧食行為的自動監(jiān)測主要通過穿戴式傳感裝置采集牧食行為相關的動物頭部、顎部運動[5-7]及音頻信號等數(shù)據(jù)[8-9]。穿戴式傳感裝置滿足連續(xù)、自動監(jiān)測動物牧食行為的技術需求,但這種接觸式數(shù)據(jù)采集方式也給動物帶來應激,同時,動物對穿戴傳感裝置的破壞及復雜養(yǎng)殖環(huán)境下傳感器元器件的腐蝕等也會導致傳感數(shù)據(jù)的丟失。因此,對于活動空間固定的舍飼動物,無接觸式的視頻數(shù)據(jù)采集與分析方式更具優(yōu)勢。近年來,研究人員嘗試利用計算機視覺技術自動監(jiān)測分析圈養(yǎng)反芻動物飲食的相關行為。在奶牛飲水行為[10]、反芻行為[10-12]的自動監(jiān)測方面,CHEN等[11]提出了一種基于時空上下文信息學習的反芻奶牛嘴部區(qū)域動作跟蹤算法。MAO等[13]利用光流法提出一種奶牛嘴部的識別與定位方法。WU等[10]和SAFA等[12]分別利用深度學習框架CNN-LSTM及CNN訓練奶牛反芻行為自動識別分類器,這2種分類器能分別以95%和97.1%的精度識別奶牛的反芻行為。JIANG等[14]在圈舍群養(yǎng)羊飲水采食行為的自動監(jiān)測方面進行了探索,利用YOLO v4深度學習框架定位羊只,通過羊只與食槽、飲水區(qū)域的位置關系識別羊只的采食與飲水行為,對兩種行為的識別精度分別達到97.82%和98.27%。
目前,基于計算機視覺技術進行圈養(yǎng)反芻動物飲食行為的研究重點多集中于動物的長時行為(如采食、飲水、反芻等)。已有研究表明,動物的短時采食行為特征(如短時咀嚼次數(shù)、短時咀嚼時長、短時咀嚼聲音能量通量密度等)與其采食量具有較高的相關性[8-9,15-17]。本文根據(jù)鳴叫與短時咀嚼行為在上下頜張合狀態(tài)持續(xù)時間的不同,利用深度學習方法檢測舍飼湖羊采食視頻幀中上下頜張合狀態(tài),提出一種基于上下頜張合狀態(tài)時變特點的湖羊短時咀嚼行為分類規(guī)則,以自動識別湖羊的短時咀嚼行為。
在江蘇省農業(yè)科學院六合動物實驗基地種羊場隨機選擇2只300日齡、體質量約45 kg的公湖羊用于視頻數(shù)據(jù)采集。采用2個羊圈飼養(yǎng)試驗湖羊,羊圈面積為2 m×1.5 m。選用SARGO運動相機(T1型)記錄湖羊采食行為視頻,視頻分辨率為2 880像素(水平)×2 160像素(垂直),幀率為24 f/s。利用高度設定為0.3 m的三腳架將相機固定在羊圈正前方,相機距離羊圈食槽0.5 m,相機與羊圈的位置關系示意圖如圖1a所示。
視頻采集時間為2020年8月21—25日07:30—10:00及16:00—18:30。湖羊在正常采食過程中鳴叫次數(shù)較少,但在等待飼養(yǎng)員投喂飼料的時間段內鳴叫行為高發(fā)。在07:30—7:50以及16:00—16:20兩個時間段,飼養(yǎng)員接近羊圈但不投飼料,開啟相機采集湖羊在食槽位置的鳴叫視頻。07:50—10:00及16:20—18:30兩個時間段飼養(yǎng)員向食槽投放青貯飼料,采集湖羊采食行為視頻。視頻以MP4格式存儲在相機SD卡中,視頻數(shù)據(jù)采集結束后,從相機SD卡讀取所有視頻并轉存到計算機硬盤構建視頻庫。視頻庫共有湖羊鳴叫行為視頻32段,采食行為視頻104段,共183 GB,其中最長、最短行為視頻段時長分別為25 min和53 s。分別從鳴叫、采食行為視頻段中隨機選擇6段和20段視頻數(shù)據(jù)用于構建羊嘴狀態(tài)檢測模型。從26段視頻中截取圖像幀,經過數(shù)據(jù)清洗后,獲得屬于鳴叫和采食行為的圖像1 271幅和7 123幅。采用精靈標注助手軟件完成羊嘴狀態(tài)標注,構建一個包含8 394幅圖像的羊嘴狀態(tài)數(shù)據(jù)集,共5.5 GB。
湖羊從食槽叼起草料后通過多次上下頜張合(即短時咀嚼)磨碎草料,然后通過吞咽將磨碎后的草料吞入瘤胃、網(wǎng)胃。從正對羊臉角度觀察,羊的一次短時咀嚼行為共有3類羊嘴狀態(tài):張嘴、上下頜錯開和閉嘴。但羊在采食過程中其臉部與相機視角方位關系不固定,張嘴、上下頜錯開和閉嘴狀態(tài)在不同的相機視角下呈現(xiàn)不同的空間特征。引入羊臉與相機的視角方位關系,將湖羊短時咀嚼過程中的羊嘴狀態(tài)分為如表1所示的7種類別并分別打上相應標簽。

表1 短時咀嚼行為對應的羊嘴狀態(tài)類別及標簽
羊在抬頭或低頭姿態(tài)下發(fā)生短時咀嚼行為時,如果其側臉面對相機,則羊嘴張開與上下頜錯開在視頻中呈現(xiàn)相同的空間特征,因此,表1中將羊側臉面對相機時的張嘴與上下頜錯開狀態(tài)統(tǒng)一分類為側頭張嘴狀態(tài)。羊低頭正臉面對相機時,從視頻中觀察不到其張嘴狀態(tài)下的下頜,張嘴和閉嘴狀態(tài)具有相同的空間特征,因此,在羊低頭正臉面對相機的視角關系下,將張嘴與閉嘴狀態(tài)統(tǒng)一分類為低頭閉嘴狀態(tài)。另外,羊上下頜的一次張合也可能對應一次鳴叫行為,從時間特征上看,鳴叫對應的上下頜張閉的持續(xù)時間要明顯長于短時咀嚼行為。本文構建的短時咀嚼行為識別方法利用時空特征識別短時咀嚼及鳴叫行為。
短時咀嚼行為識別屬于時序動作識別(Temporal action detection)范疇。目前,Two-Stream[18]、C3D[19]等卷積神經網(wǎng)絡展現(xiàn)出了優(yōu)良的時序動作識別精度,但這類算法直接將運動行為短視頻作為輸入,網(wǎng)絡結構較為復雜且算法運行時間偏長。針對湖羊短時咀嚼及鳴叫行為構成元素——羊嘴狀態(tài)數(shù)量少的特點,本文提出一種基于連續(xù)視頻幀中羊嘴狀態(tài)標簽序列的短時咀嚼行為識別方法。該方法由2個模塊構成,第1個模塊是基于EfficientDet網(wǎng)絡的羊嘴狀態(tài)檢測,第2個模塊為基于羊嘴狀態(tài)標簽序列分類的短時咀嚼行為識別。
1.2.1羊嘴狀態(tài)檢測
涵蓋嘴部定位及其狀態(tài)識別的羊嘴狀態(tài)檢測是構建短時咀嚼行為識別分類器的基礎,視頻空間中的羊嘴狀態(tài)檢測問題屬于基于計算機視覺的目標檢測問題范疇。目前常用的目標檢測方法主要包括基于預設錨框(Bounding box)的單級檢測法[20-21]和基于感興趣區(qū)域候選(ROI proposal)的兩級檢測法[22-23],前者的典型算法包括YOLO[20]、EfficientDet[21]等,后者典型算法為R-CNN系列。其中,TAN等[21]提出的EfficientDet算法以EfficientNet[24]作為骨架網(wǎng)絡,引入加權雙向特征金字塔網(wǎng)絡(Bi-FPN)及類別/目標框預測網(wǎng)絡(Class/Box prediction net)。
EfficientDet網(wǎng)絡的Bi-FPN模塊接收EfficientNet提取的湖羊視頻幀圖像特征中的第3~7層特征(即圖2中的P3~P7),完成多次自上而下及自下而上的雙向特征融合。融合后的特征分別送入類別/目標框預測網(wǎng)絡以完成目標框篩選以及目標類別識別任務。由于相鄰圈羊只的嘴部可能會通過欄架空隙進入到相機視角范圍,同時,羊只采食過程中可能出現(xiàn)的羊頭快速運動會導致少量視頻幀中出現(xiàn)嘴部重影,這些都將導致EfficientDet網(wǎng)絡在同一視頻幀圖像中可能檢測到多個羊嘴區(qū)域。為確保羊嘴狀態(tài)檢測的準確性,將圖像中水平、垂直坐標處于[440像素, 2 440像素]及[1 160像素, 2 160像素]范圍內的矩形區(qū)域(如圖1b中紅色矩形框所示)作為采食區(qū)域。在此基礎上對EfficientDet網(wǎng)絡做如下改進:在目標框預測網(wǎng)絡輸出端增加目標框篩選模塊,該模塊利用檢測結果目標框與采食區(qū)域的位置關系篩選目標框。增加目標框篩選模塊后的EfficientDet網(wǎng)絡結構如圖2所示。
圖2中idx是羊嘴狀態(tài)編碼值,羊嘴狀態(tài)S1、S3、PU1、PU2、PU3、PD2、PD3對應的編碼值分別為1、2、3、4、5、6、7。增加目標框篩選模塊后的EfficientDet網(wǎng)絡仍采用復合尺度參數(shù)φ對所有模塊的深度、寬度和分辨率進行聯(lián)合縮放,φ取值范圍為0~7。EfficientNet模塊的深度、寬度和分辨率縮放公式為
DEffN=αφ
(1)
WEffN=βφ
(2)
REffN=γφ
(3)
其中
(αβ2γ2)φ=2φ
(4)
式中DEffN——EfficientNet模塊深度
WEffN——EfficientNet模塊寬度
REffN——EfficientNet模塊分辨率
α、β、γ——通過小網(wǎng)格搜索確定的不小于1的常數(shù)
Bi-FPN的寬度和深度縮放公式為
Wbifpn=64×1.35φ
(5)
Dbifpn=3+φ
(6)
式中Wbifpn——Bi-FPN模塊寬度
Dbifpn——Bi-FPN模塊深度
類別預測網(wǎng)絡與目標框預測網(wǎng)絡的寬度Wpred與Wbifpn相等,深度縮放公式為
Dbox=Dclass=3+φ/3
(7)
式中Dbox——目標框預測網(wǎng)絡的深度
Dclass——類別預測網(wǎng)絡的深度
輸入圖像分辨率Rinput的縮放公式為
Rinput=512+128φ
(8)

圖3中,Nframe為待檢測的采食視頻的總幀數(shù)。視頻被逐幀送入EfficientDet網(wǎng)絡,將所得到的類別及目標框檢測結果送入篩選模塊。首先剔除采食區(qū)域外的目標框,然后根據(jù)進食區(qū)域內目標框數(shù)量n,分3種情況確定進食區(qū)域內的單個羊嘴狀態(tài)目標框:若n為0,則網(wǎng)絡未在采食區(qū)內檢測到羊嘴,本幀羊嘴狀態(tài)類別編碼值idx賦值為0;若n為1,則將類別預測網(wǎng)絡輸出的羊嘴狀態(tài)標簽對應的編碼值賦給idx;若n大于1,選擇類別預測網(wǎng)絡輸出的目標框標簽最大概率對應的羊嘴狀態(tài)類別編碼值賦給idx。采食視頻經過改進的EfficientDet網(wǎng)絡處理后,得到一個與幀順序對應的idx序列。
1.2.2羊嘴一次上下頜張合視頻段分割
采用idx序列分割方法自動分割羊嘴一次上下頜張合動作對應的連續(xù)視頻。引入正則表達式(Regular expression)過濾符合羊嘴上下頜一次張合動作所對應的idx序列片段模式,進而將視頻分割為多個與上下頜張合相對應的idx序列片段。表1數(shù)據(jù)表明,羊側臉面對相機時,無論抬頭還是低頭,其上下頜的一次張合對應的idx均為1和2;湖羊正臉面對相機時,其抬頭、低頭姿態(tài)下短時咀嚼對應的嘴部狀態(tài)類別存在差異。因此,本文將短時咀嚼動作分為3類:側面短時咀嚼、正面抬頭短時咀嚼和正面低頭短時咀嚼,各類短時咀嚼行為對應的單次上下頜張合的idx序列片段如表2所示。

表2 一次上下頜張合對應的湖羊嘴狀態(tài)序列及idx序列
表2中,由于湖羊側臉面對相機短時咀嚼和低頭正臉面對相機短時咀嚼各僅存在一種嘴部狀態(tài)序列,所以各自只能匹配一種idx序列模式。分別采用正則表達式“1+2”和“6+7”描述湖羊側臉面對相機和低頭正臉面對相機時一次上下頜張合對應的idx序列片段匹配模式,其中,“+”代表其前面的字符必須至少出現(xiàn)一次。抬頭正臉面對相機短時咀嚼存在3種嘴部狀態(tài)序列,其原因是湖羊抬頭正臉面對相機短時咀嚼可能會出現(xiàn)以下2種特殊情況:湖羊一口咬住過多的飼料使部分嘴部被遮擋,不能完整地提取出張嘴狀態(tài)的特征,導致未識別到張嘴狀態(tài),對應的湖羊嘴狀態(tài)編碼值序列片段是4…5;湖羊為了將嘴邊的飼料全部攏到嘴里,上下頜基本不錯開,以大幅度張嘴狀態(tài)為主,此時對應的湖羊嘴狀態(tài)編碼值序列片段為3…5。因此,湖羊抬頭正臉面對相機的一次上下頜張合對應的idx序列片段匹配模式有3類,分別是“3+5”、“4+5”及“3+4+5”。
利用表2所示各正則表達式處理idx序列,提取符合要求的idx序列片段并分行存儲在idx序列片段文本中,即idx序列片段文本文件中的每一行對應一個idx序列片段。
1.2.3短時咀嚼行為識別
湖羊的一次鳴叫同樣對應著湖羊上下頜的1次張合,其idx序列片段也符合1…2或3…5的模式。統(tǒng)計分析數(shù)據(jù)集中鳴叫及短時咀嚼視頻段的幀數(shù),結果表明鳴叫行為持續(xù)幀數(shù)為(49±1.2)幀,遠大于短時咀嚼持續(xù)幀數(shù)((25±5.8)幀)。因此,引入idx序列片段長度閾值區(qū)分鳴叫行為和短時咀嚼行為,記該閾值為th_lenidxseq且設其值為42。利用EfficientDet網(wǎng)絡、正則表達式及閾值th_lenidxseq實現(xiàn)短時咀嚼和鳴叫行為分類的流程如圖4所示。
圖4中,j為idx序列片段文本的行編號,Nchew和Dchew分別為視頻中提取到的短時咀嚼次數(shù)和短時咀嚼持續(xù)時間,len(idxseq_j)為idx序列片段文本第j行的序列片段長度。
湖羊嘴狀態(tài)檢測方法測試硬件環(huán)境如下:處理器為Intel Core i9-7920X 12核,2.9 GHz,64 GB內存,顯卡為GTX NVIDIA TITAN Xp,12 GB。統(tǒng)計1.1節(jié)獲取的湖羊嘴狀態(tài)數(shù)據(jù)集的羊嘴狀態(tài)數(shù)量如圖5所示。
在Pytorch深度學習開發(fā)平臺上實現(xiàn)檢測網(wǎng)絡,網(wǎng)絡優(yōu)化算法選用帶動量和權重衰減的隨機梯度下降,動量參數(shù)和權重衰減系數(shù)分別設為0.9和0.000 5,學習率設為0.000 1,迭代125次。式(1)~(7)表明,φ越大,主干網(wǎng)絡、Bi-FPN及目標框預測網(wǎng)絡和類別預測網(wǎng)絡的分辨率、深度及寬度的特征擴大比例越高,整個網(wǎng)絡的檢測精確率也越高,但同時計算量也會相應增大。受限于硬件性能,本文僅測試比較φ取值0~4的網(wǎng)絡性能,并與YOLO v5、SSD兩種主流單階段檢測模型進行性能對比。
將圖5所示各類羊嘴狀態(tài)圖像按照8∶2的比例劃分為羊嘴狀態(tài)檢測模型構建所需的訓練集和驗證集。把訓練集圖像分別輸入到EfficientDet-D0~D4、YOLO v5和SSD以訓練檢測模型,用驗證集圖像測試各模型性能。采用精確率(P)、召回率(R)、均值平均精確率(mAP)以及傳輸速率(FPS)評價模型性能。利用驗證集圖像測試各模型性能,結果如表3所示。
表3數(shù)據(jù)表明,EfficientDet網(wǎng)絡的羊嘴狀態(tài)檢測精確率P隨著φ的增大而增大,EfficientDet-D0的精確率與YOLO v5相當且優(yōu)于SSD。在召回率方面,YOLO v5的召回率最高,SSD的召回率最低,EfficientDet網(wǎng)絡模型的召回率均在97%附近。EfficientDet網(wǎng)絡模型的均值平均精確率均高于SSD網(wǎng)絡模型,且遠優(yōu)于YOLO v5網(wǎng)絡。EfficientDet網(wǎng)絡模型檢測速度隨φ的增大而降低,其中,EfficientDet-D2的傳輸速率與YOLO v5相當,EfficientDet-D4和SSD的傳輸速率均低于10 f/s。

表3 羊嘴狀態(tài)檢測模型性能對比
綜合考慮檢測模型的P、R、mAP及FPS,選擇帶目標框篩選模塊的EfficientDet-D1網(wǎng)絡模型檢測結果作為后續(xù)短時咀嚼行為識別的輸入。為測試EfficientDet-D1網(wǎng)絡模型在檢測7種不同羊嘴狀態(tài)時的性能表現(xiàn),使用訓練好的帶目標框篩選模塊的EfficientDet-D1網(wǎng)絡模型檢測一段時長1 min的采食視頻,結果如圖6a所示。
圖6a中每條橫虛線下面是視頻幀實際類別,橫虛線上面是模型預測的類別結果。圖6a表明,改進的EfficientDet-D1模型可以準確檢測出湖羊嘴部狀態(tài),且保證了各個狀態(tài)準確檢測時間的連續(xù)性。圖6b所示的模型訓練集和驗證集的損失函數(shù)曲線表明,經過約100輪迭代后,驗證集的損失函數(shù)曲線開始逼近訓練集損失函數(shù)曲線,且兩條曲線均在[0, 0.1]之間收斂。
從1.1節(jié)獲得的視頻庫(除去構建訓練集、驗證集的視頻)中隨機選擇2段鳴叫視頻和30段采食視頻,通過Windows Media Player軟件播放視頻,人工觀察、記錄視頻中的短時咀嚼行為發(fā)生的次數(shù)和持續(xù)時間分別為1 400次和1 335.22 s。使用帶目標框篩選模塊的EfficientDet-D1網(wǎng)絡結合正則表達式的行為識別方法自動提取短時咀嚼行為發(fā)生次數(shù)及持續(xù)時間分別為1 280次和1 213.89 s。這表明,改進的EfficientDet-D1網(wǎng)絡結合正則表達式的短時咀嚼行為識別方法能在存在鳴叫行為干擾的情況下,短時咀嚼行為發(fā)生次數(shù)自動識別正確率為91.42%,算法自動提取到的短時咀嚼行為持續(xù)時間與人工提取結果平均誤差為9.15 s,平均正確率為90.85%。
誤差產生的原因主要有2方面:一是基于改進的EfficientDet-D1網(wǎng)絡不能夠以100%的精確率檢測羊嘴狀態(tài)。少量圖像幀中羊嘴狀態(tài)的錯誤檢測結果可能導致算法識別的短時咀嚼行為的提前或延遲結束,也可能導致算法未能準確識別短時咀嚼的起始幀或結束幀,進而導致少量完整的咀嚼行為未被正確識別,使累積咀嚼次數(shù)和時長的統(tǒng)計出現(xiàn)誤差。二是作為參照標準的短時咀嚼次數(shù)和咀嚼時長通過人工觀察視頻方法提取,不可避免地帶有一定的主觀性以及誤差。
本文方法能夠自動識別每欄飼養(yǎng)一只湖羊條件下的湖羊短時咀嚼行為。若將本文方法應用到每欄飼養(yǎng)多只湖羊的場景,則需研究羊嘴狀態(tài)檢測網(wǎng)絡輸出多目標框的篩選方法,然后解決同一羊嘴目標在連續(xù)視頻幀中標識與跟蹤問題。在此基礎上,可以實現(xiàn)單欄多只湖羊的總短時咀嚼次數(shù)及時間的統(tǒng)計,可用于單欄多只湖羊采食量的估算。
(1)將從視頻流中自動識別湖羊短時咀嚼行為的問題轉換為羊嘴狀態(tài)類別編碼值序列的自動分類問題,提出了一種基于改進EfficientDet網(wǎng)絡和正則表達式的湖羊短時咀嚼行為自動識別方法。首先,在EfficientDet網(wǎng)絡基礎上增加目標框篩選模塊,實現(xiàn)羊嘴狀態(tài)自動檢測;然后,利用正則表達式提取連續(xù)視頻幀羊嘴狀態(tài)類別編碼值序列;最后利用編碼值序列的結構特征和長度特征構建短時咀嚼行為識別規(guī)則,避免鳴叫行為對短時咀嚼行為識別的干擾。
(2)利用本文方法對舍飼環(huán)境下采集的湖羊采食視頻自動識別短時咀嚼行為的測試結果表明,改進的EfficientDet-D1網(wǎng)絡在保證檢測速度的同時,對羊嘴狀態(tài)檢測精確率達到95.64%,均值平均精確率為98.84%,傳輸速率為28.18 f/s,優(yōu)于YOLO v5和SSD網(wǎng)絡。對短時咀嚼次數(shù)自動識別正確率和持續(xù)時間平均正確率分別為91.42%和90.85%,實現(xiàn)了湖羊短時咀嚼行為的自動檢測。本文方法將基于視頻的湖羊短時咀嚼行為識別問題轉換為羊嘴狀態(tài)編碼值序列分類問題,降低了分類模型的復雜度,為湖羊短時咀嚼行為的自動識別提供了一種新的研究思路。