楊斷利 王永勝 陳 輝 孫二東 王連增 寧 煒
(1.河北農業大學信息科學與技術學院,保定 071001; 2.河北省農業大數據重點實驗室,保定 071001;3.河北農業大學動物科技學院,保定 071001; 4.農業農村部肉蛋雞養殖設施工程重點實驗室,保定 071001;5.河北桃木疙瘩農業科技股份有限公司,保定 074300; 6.河北省蛋雞產業技術研究院,邯鄲 056007;7.成都小巨人畜牧設備有限公司,成都 611435)
我國蛋雞養殖業發展迅速,目前已經成為雞蛋產量最多的國家[1-2]。隨著物質生活的提高,人們對優質蛋白的市場需求也在不斷擴大,食品安全需要養殖業減抗、無抗生產[3]。健康養殖是實現無抗養殖的前提,家禽的行為信息與其生理健康狀況密切相關[4-5]。目前,對蛋雞健康狀況的監測主要采用人工觀察的方式,此方法不僅需要大量的勞動力、效率低下,而且易受主觀因素影響。
近年來,國內外學者在機器視覺技術識別動物行為研究領域開展了大量研究。李麗華等[6]通過K-means聚類算法實現了對本交籠種雞的采食、飲水、打斗、交配和振翅行為的識別。RIDDLE等[7]手動識別了圖像中的蛋雞站立、躺臥、棲息、拍打翅膀、沐浴灰塵等行為。勞鳳丹等[8]通過對蛋雞圖像的分割、形態學處理提取參數、利用貝葉斯分類的方法,實現了對單只蛋雞的運動、飲水、采食、修飾、抖動、休息、拍翅膀、探索、舉翅膀行為的識別。劉修林[9]利用最大類間方差法實現了復雜背景下的雞體分割,然后根據位置信息實現了啄食、飲水、運動、靜止行為的識別。XIAO等[10]通過改進活動輪廓模型,分割出籠養雞的圖像技術,提出了一種利用雙目視覺系統獲取行為信息的檢測方法。ZHUANG等[11]首先從復雜背景中提取家禽目標,然后計算家禽骨架結構、建立特征向量,對家禽是否處于啄食狀態進行了分析,同時利用支持向量機方法對家禽的健康狀況進行了評估。上述文獻在動物行為識別方面取得了相應的進展,但這些研究方法均具有人工圖像分割、手動提取參數或特征的特點,分割效果依賴于人的主觀經驗,無法保證分割精度的穩定性。
隨著深度學習技術的發展,越來越多的學者開始嘗試將深度學習技術應用于動物行為識別。王凱[12]提出了改進YOLO v3模型(TD-YOLO v3),實現了對蛋雞的采食、躺、站立、探索和修飾行為的檢測。WANG等[13]采用YOLO v3模型和遷移學習的方法,實現了對籠內20只蛋雞的交配、站立、喂食、散步、打架和飲水6種行為的識別。MBELWA等[14]通過改進的卷積神經網絡(CNN),并采用遷移學習的方法,通過對雞糞便的識別,實現了對患有疾病雞的檢測。ZHANG等[15]通過改進的ResNet模型(ResNet-FPN),實現了對病雞的檢測。WANG等[16]應用RPN+ResNet模型根據糞便種類,實現對消化疾病的檢測,從而對雞的健康狀況進行預測。LIN等[17]利用Faster R-CNN模型實現了雞只運動和飲水行為的識別。不僅站立、采食、飲水、探索和梳羽行為能夠反映蛋雞的健康狀況,啄羽行為也能反映蛋雞的健康狀況[18]。上述文獻在蛋雞健康狀態的行為識別中,雞舍背景簡單且缺少對蛋雞啄羽行為的關注。
利用深度學習技術識別蛋雞行為,具有網絡模型自動提取行為特征、不需人工參與的特點,不僅能夠解決人工觀察法耗費大量勞動力的弊端,而且還能夠解決圖像處理法的分割效果依賴于人的主觀性、分割精度不穩定的問題[19]。因此,本研究基于深度學習技術,選用YOLO v5模型,通過引入SEAM注意力模塊和顯式視覺中心模塊(EVCBlock),對YOLO v5模型進行優化,實現遮擋情況下的小個體蛋雞站立、采食、飲水、探索、啄羽和梳羽6種日常行為的自動識別,提升模型的識別精度。在行為識別的基礎上,進一步對蛋雞群體行為的變化規律進行統計分析。
本試驗于2022年9月7—24日在河北桃木疙瘩農業科技股份有限公司中莊養殖基地長3 m、寬2 m、柱高1.2 m、頂高2 m的移動式雞舍內飼養了20只健康狀態良好的太行山蛋雞,雞舍內部放置一個食槽、一個飲水桶和一個產蛋箱,于每日09:00和15:00喂食、拾取雞蛋。試驗采用焦距為 2.8 mm、幀率為25 f/s、分辨率為2 560像素×1 920像素的??低?DS-2CD3T56FWDV2-15)廣角攝像頭對蛋雞每日09:00—18:00間的日常行為進行錄制,并通過網線將數據傳輸到容量為4TB的海康威視網絡硬盤錄像機(DS-7804N-K1/4P(D))中。攝像頭安裝在雞舍內部中間頂部,距地面2 m,垂直向下拍攝[20]。采集環境如圖1所示。

圖1 采集環境
本文選擇蛋雞站立、采食、飲水、探索、啄羽和梳羽共6種與蛋雞健康狀況評估相關的行為作為研究對象,蛋雞行為判定標準如表1所示,各行為示例如圖2所示。

表1 蛋雞行為判定標準

圖2 各行為示例圖
利用幀提取的方法每隔30幀提取1幅圖像,隨機選擇不同時間下的圖像作為蛋雞日常行為識別數據集。數據集中圖像的質量會顯著影響模型的訓練效果[21],因此,需要對提取出的圖像進行數據清洗,去除模糊圖像。最后利用LabelImg工具對蛋雞日常行為識別數據集進行標注,制作成Pascal VOC[22]格式數據集,并按照7∶2∶1的比例劃分為訓練集、驗證集和測試集。
為了避免模型過擬合,增強算法的魯棒性[23],本文采用離線增強方式,隨機選擇旋轉、縮放、鏡像的方式對訓練集中的圖像進行數據增強。數據增強后的樣本如圖3所示。

圖3 數據增強效果圖
經過數據預處理后,蛋雞日常行為識別數據集共包括3 019幅圖像。如圖3所示,同時對原圖像進行了鏡像、旋轉和縮放操作,增加了圖像的多樣性。試驗總體流程圖如圖4所示。
如圖4所示,整個試驗首先進行數據采集,獲得蛋雞日常行為圖像,其次對圖像進行預處理操作,為模型訓練做準備。經模型訓練后,進行性能測試和結果分析。
YOLO v5模型兼顧了推理速度和檢測精度[24],根據網絡結構的深度和寬度的不同,將YOLO v5模型分為YOLO v5n、YOLO v5s、YOLO v5m、YOLO v5l和YOLO v5x共5個版本。為了選取合適的版本,使用本試驗的蛋雞日常行為識別數據集分別訓練上述5個模型,利用測試集進行識別效果評估,不同版本的YOLO v5模型檢測精度對比如表2所示。

表2 不同版本的YOLO v5模型檢測精度對比
從表2可知,YOLO v5s模型對蛋雞日常行為識別的精確率為81.55%,召回率為76.52%,F1值為78.95%,平均精度均值為82.31%,參數量為7.03×106。與YOLO v5n模型相比,精確率、召回率、F1值和平均精度均值分別提升10.73、6.50、8.53、10.25個百分點,參數量僅增加 5.26×106,與YOLO v5m、YOLO v5l以及YOLO v5x模型相比,雖然平均精度均值降低了0.58、1.26、1.83個百分點,但是參數量分別減少 1.384×107、3.911×107、7.918×107。綜合模型檢測精度和模型復雜度,本文選取YOLO v5s模型作為蛋雞日常行為識別基本模型。YOLO v5s模型結構如圖5 所示。

圖5 YOLO v5s模型結構圖
YOLO v5s模型包括輸入、特征提取、特征融合和輸出4部分。輸入部分用于向模型輸入預先處理好的蛋雞圖像;特征提取部分采用了CSPDarknet53結構,用于提取目標的語義信息;特征融合部分使用了PAN結構,用于對特征提取部分提取到的特征進行處理[25],融合不同尺度信息,增強特征的表達;輸出部分共包括3個分支,特征圖尺寸分別為80像素×80像素、40像素×40像素和 20像素×20像素,分別用于識別小、中、大目標,并進行輸出。
針對雞只個體目標較小、蛋雞之間重疊遮擋導致的有效特征不足、丟失、遺漏、行為識別效果不理想的問題,本文以YOLO v5s模型為基礎,通過引入SEAM注意力模塊和顯式視覺中心模塊,構建改進YOLO v5s模型(SEEC-YOLO v5s),增強模型特征提取能力,提升行為識別精度。優化后的SEEC-YOLO v5s模型結構如圖6所示。
在圖6中的輸出部分加入SEAM注意力模塊[26](圖6中的改進1),將特征融合部分的3個不同尺度輸出層與輸出部分的3個檢測頭進行連接,解決蛋雞之間因為遮擋導致的有效特征丟失問題。在特征融合部分的特征金字塔網絡(FPN)結構中加入顯式視覺中心模塊(EVCBlock)[27](圖6中的改進2),解決雞只目標較小、有效特征不足、容易被遺漏的問題。
2.2.1SEAM注意力模塊
蛋雞個體間的遮擋會導致雞體局部混疊、重要特征缺失[26]。利用SEAM模塊,將YOLO v5s模型特征融合部分的3個不同尺度輸出層與輸出部分的3個檢測頭進行連接,可突出圖像中的蛋雞區域,弱化背景區域,實現多尺度下的蛋雞日常行為檢測。SEAM模塊結構圖如圖7所示。
SEAM模塊的第1部分是帶有殘差連接的深度可分離卷積。深度可分離卷積不僅能減少模型的參數量,而且還可以利用逐通道運算,學習多個不同通道的重要特征,提升模型的特征提取能力。但是深度可分離卷積在學習不同通道的重要特征時,由于沒有考慮通道之間的特征聯系,所以對不同通道的特征提取并不充分。因此,為了彌補深度可分離卷積的不足,SEAM模塊在不同深度可分離卷積的輸出后進行了逐點卷積操作,最后通過一個兩層的全連接網絡融合各通道的特征,實現了所有通道之間的連接。第2部分是將全連接層的輸出結果通過指數函數進行處理,并將取值范圍從[0,1]擴大到[1,e],使得上一步學習到的被遮擋蛋雞的有效特征與無遮擋的有效特征相互聯系,最后將SEAM模塊的輸出作為特征與原始特征相乘,使模型能夠有效地解決蛋雞個體間遮擋帶來的有效特征丟失的問題。
2.2.2顯式視覺中心模塊
蛋雞個體目標較小,有效特征不足且容易產生遺漏,致使模型識別精度較低。為了盡可能多地提取蛋雞個體有效特征,本文在特征融合部分的FPN結構中加入了顯式視覺中心模塊(EVCBlock)。EVCBlock模塊結構如圖8所示。

圖8 EVCBlock模塊結構圖
EVCBlock模塊主要包括輕量級MLP和可學習的視覺中心機制,輕量級的MLP用來獲取模型中EVCBlock模塊上一層傳入特征X4的全局特征信息,可學習的視覺中心機制用于聚合模型中EVCBlock模塊上一層傳入特征X4的局部區域特征信息。EVCBlock模塊將獲得的全局特征信息和局部區域特征信息沿著通道維度進行拼接,生成最后的特征。由于EVCBlock模塊學習的特征中不僅包括全局的特征信息,還包括局部區域的特征信息,特征信息較豐富,因此,能夠解決蛋雞個體目標較小、特征遺漏的問題。
EVCBlock模塊并未直接對模型中EVCBlock模塊上一層的傳入特征X4進行操作,而是先將上一層的傳入特征X4通過Stem模塊進行操作,然后再對經過Stem模塊處理后的特征進行操作。
Stem模塊依次通過卷積核為7×7、輸出通道數為256的卷積操作、批歸一化(Batch normalization)操作,并使用ReLU作為激活函數。Stem模塊主要用于對模型中EVCBlock模塊上一層的傳入特征X4進行特征平滑。
EVCBlock模塊的計算公式為
X=Concat(MLP(Xin);LVC(Xin))
(1)
其中
Xin=σ(BN(Conv7×7(X4)))
(2)
式中X——EVCBlock模塊的輸出
Concat()——沿channel維度的特征圖拼接操作
MLP(Xin)——使用輕量級MLP的輸出特征
LVC(Xin)——使用可學習的視覺中心機制的輸出特征
Xin——Stem模塊的輸出
σ()——ReLU激活函數
當談到醫養結合的現實問題,才40歲出頭的張振美捋了捋頭上的白頭發,“就是為了辦個社區醫療機構的手續,我都不知道咨詢了多少人,跑了多少腿了。”開始時,張振美想在養老服務中心開設個醫務室或診所,這樣可以解決入住老人的基本醫護問題。普通人會認為,我只需聘請持證的專業醫護人員就可以了,但實際沒這么簡單:“醫療機構的負責人必須由專人擔任,比如我想從某家知名大醫院聘請一位退休醫療專家來擔任醫療機構負責人,按審批相關規定,所聘請的這位專家必須先解除與大醫院的身份關系,再把關系轉至我們這家內設醫療機構才符合要求,如此這樣一來,我們想聘請有經驗的老專家顯然是比較困難的?!?/p>
BN()——批歸一化層操作
Conv7×7——卷積核為7×7、步幅為1、輸出通道數為256的卷積操作
本研究所用的硬件配置和試驗環境如表3所示。使用相同的蛋雞日常行為數據集分別對YOLO v5的5個版本模型、Faster R-CNN、YOLO X-s、YOLO v4-tiny、YOLO v7-tiny以及SEEC-YOLO v5s模型進行訓練。試驗所采用的超參數:輸入圖像尺寸為640像素×640像素,訓練批量大小(Batch size)為8,迭代周期(Epoch)為100,線程數(num workers)為8,初始學習率(Initial learning rate)為0.01,動量因子(Momentum)為0.937,優化器為隨機梯度(SGD),利用最優權重對模型進行評價。

表3 硬件配置和試驗環境
本文利用精確率(Precision,P)、召回率(Recall,R)、平均精度(Average precision,AP)、F1值、平均精度均值(Mean average precision,mAP)和參數量對模型性能進行評估。
精確率表示正確檢測出的目標與識別出的所有目標的比值,召回率表示檢測出為正類且真實類別也為正類的目標數量與真實類別為正類的所有目標總數的比值,平均精度表示對每個類檢測的結果,F1值表示精確率和召回率的調和平均值,平均精度均值表示對所有類別的檢測結果。
在日常生活中,可以對蛋雞群體進行各種行為的持續時間統計,從而判斷蛋雞的生活習性,并分析其健康狀況,為蛋雞福利養殖提供借鑒[28]。
通過對幀速率計算公式的變換,可以實現對蛋雞日常行為持續時間的統計,即利用SEEC-YOLO v5s模型對蛋雞的日?;顒右曨l進行識別,并對各種行為的識別結果進行統計,通過檢測出的各行為視頻幀數與視頻幀率的比值,獲得各種日常行為的持續時間T(單位為min)。
為了驗證不同模型對蛋雞日常行為識別的效果,采用相同的蛋雞日常行為識別數據集分別對Faster R-CNN模型、YOLO X-s模型、YOLO v4-tiny模型、YOLO v7-tiny模型、YOLO v5s模型以及本文模型(SEEC-YOLO v5s)進行訓練,利用精確率、召回率、F1值、平均精度均值和參數量進行效果評估,試驗結果如表4所示。

表4 不同模型識別結果對比
從表4可以看出,SEEC-YOLO v5s模型對蛋雞日常行為識別的精確率、召回率、F1 值、平均精度均值以及參數量分別為82.34%、81.30%、81.82%、84.65%和1.279×107。在檢測精度方面,精確率、F1值和平均精度均值比Faster R-CNN模型分別高17.54、9.49、4.30個百分點,比YOLO X-s模型分別高6.60、2.83、3.06個百分點,比YOLO v4-tiny模型分別高5.61、8.39、7.11個百分點,比YOLO v7-tiny 模型分別高5.61、3.93、2.99個百分點,比YOLO v5s模型分別高0.79、2.87、2.34個百分點。SEEC-YOLO v5s模型的召回率略低于Faster R-CNN模型和YOLO X-s模型,與YOLO v4-tiny模型、YOLO v7-tiny模型和YOLO v5s模型相比分別高7.65、2.21、4.78個百分點。在模型復雜度方面,SEEC-YOLO v5s模型參數量與其他模型相近,僅為Faster R-CNN模型參數量的10.70%。因此,從檢測精度和模型復雜度兩方面綜合來看,SEEC-YOLO v5s模型在蛋雞日常行為檢測方面更有優勢。
從表5中可以看出,SEEC-YOLO v5s模型對蛋雞的采食行為的識別精度最高,達到98.46%,對啄羽行為的識別精度最低,僅為67.52%,分析原因可能是啄羽行為在所有行為中屬于少數異常行為,采集得到的數據集中啄羽行為占比只有3.68%,因此基于深度學習算法對啄羽行為的識別精度普遍偏低,可通過長時間采集大量啄羽行為訓練模型來提升啄羽行為的識別精度。SEEC-YOLO v5s模型對采食、探索、啄羽和梳羽4種行為的識別精度均高于其他模型,SEEC-YOLO v5s模型對4種行為的識別精度最少提高1.23個百分點,最高提高13.37個百分點。SEEC-YOLO v5s模型對站立行為的識別精度比YOLO X-s和YOLO v5s模型低0.47、1.21個百分點,對飲水行為的識別精度比Faster R-CNN和YOLO X-s模型低3.80、0.79個百分點。總體而言,SEEC-YOLO v5s模型對蛋雞日常行為的識別具有一定的優勢。
隨機從本試驗的蛋雞日常行為識別數據集中選擇1幅圖像,分別利用Faster R-CNN、YOLO X-s、YOLO v4-tiny、YOLO v7-tiny、YOLO v5s和本文模型(SEEC-YOLO v5s)對此圖像進行識別,識別效果如圖9所示。
通過對比發現,如圖9a中的紅色箭頭所示,Faster R-CNN模型誤將1只蛋雞行為識別為2種行為,如綠色箭頭所示,也誤識別出了雞舍外部不屬于本試驗的蛋雞。如圖9b中紅色箭頭所示,YOLO X-s模型雖然正確識別了蛋雞的行為,但是與圖9f本文模型相比,識別的置信度較低。如圖9c中紅色箭頭所示,YOLO v4-tiny模型存在多處漏檢行為,如藍色箭頭所示,誤將探索和站立的蛋雞識別為了站立和梳羽行為。如圖9d中紅色箭頭所示,當蛋雞被遮擋時,YOLO v7-tiny模型的目標置信度較SEEC-YOLO v5s模型更低;如圖9e中紅色箭頭所示,YOLO v5s模型對蛋雞日常行為識別存在多處漏檢行為;圖9f中的SEEC-YOLO v5s模型能夠準確識別出雞舍內部每只蛋雞的行為。
綜上所述,Faster R-CNN模型對蛋雞日常行為識別存在多處將1只蛋雞誤識別為2種行為的情況,表明Faster R-CNN模型對蛋雞日常行為識別能力較差;YOLO X-s和YOLO v7-tiny模型在蛋雞存在遮擋情況下置信度較低,表明YOLO X-s和YOLO v7-tiny模型在遮擋情況下,對目標特征的學習能力較弱;YOLO v4-tiny和YOLO v5s模型存在多處漏檢情況,表明YOLO v4-tiny和YOLO v5s模型對較小目標的識別能力不足。因此,從檢測精度、模型復雜度和識別效果3方面來看,SEEC-YOLO v5s模型對蛋雞日常行為識別的總體效果最好。
利用本文數據集,使用平均精度均值和各類別的平均精度指標,對YOLO v5s、YOLO v5s+SEAM、YOLO v5s+EVCBlock和 SEEC-YOLO v5s模型,通過消融試驗進行識別效果對比,進一步驗證SEEC-YOLO v5s模型的性能,試驗結果如表6所示。

表6 消融試驗結果對比
通過表6可以發現,YOLO v5s+SEAM模型和YOLO v5s+EVCBlock模型對蛋雞6種行為識別的平均精度均值與YOLO v5s模型相比,分別提高0.75、1.91個百分點。其中,YOLO v5s+SEAM模型對站立、采食、飲水和探索行為識別的平均精度較YOLO v5s模型分別提高0.07、0.11、2.69、0.08個百分點;YOLO v5s+EVCBlock模型對站立、采食、飲水、啄羽和梳羽行為識別的平均精度較YOLO v5s模型分別提高1.67、0.97、4.52、1.29、3.60個百分點,表明添加SEAM注意力模塊和EVCBlock模塊后均能對蛋雞日常行為的識別有一定的促進作用。
與YOLO v5s模型相比,SEEC-YOLO v5s模型對站立行為識別的平均精度有所降低,分析原因在于,蛋雞個體間存在遮擋,在視覺上腿部呈現不明顯,致使區分站立行為的有效特征變少,因此,對站立行為識別結果有所降低。對采食、飲水、探索、啄羽和梳羽行為識別結果均有所提升,表明SEEC-YOLO v5s模型對蛋雞日常行為識別效果有明顯提升。
Gard-CAM可以將模型對蛋雞行為特征的學習程度以熱力圖的方式顯示[29-30],特征圖可視化也可以直接顯示出模型對重要信息的學習能力。因此,為了進一步檢驗本文模型(SEEC-YOLO v5s)對蛋雞日常行為識別的有效性,隨機選擇1幅圖像,分別利用YOLO v5s模型和SEEC-YOLO v5s模型對輸出部分的3種不同尺度的輸出層進行特征圖可視化和熱力圖顯示,結果分別如圖10、11所示。

圖10 特征圖可視化結果對比
圖10a~10c為YOLO v5s模型在輸出層P3、P4、P5的可視化結果,圖10d~10f為本文模型在輸出層P3、P4、P5的可視化結果。通過對比兩個模型在P3輸出層的可視化結果發現,本文模型對蛋雞小目標特征的識別效果更明顯,學習的特征更豐富,在輸出層P4、P5中,本文模型的可視化效果也均優于YOLO v5s模型。
圖11a~11c為YOLO v5s模型在上述隨機選擇的圖像上通過Gard-CAM對P3、P4、P5輸出層進行熱力圖顯示的結果,圖11d~11f為本文模型在上述隨機選擇的圖像上通過Gard-CAM對輸出層P3、P4、P5進行熱力圖顯示的結果。通過對比兩模型在輸出層P3和P4的熱力圖發現,本文模型對蛋雞目標區域的熱力較高,對無關區域的熱力較低,能夠更好地學習蛋雞日常行為特征。綜上所述,從識別精度和特征圖可視化以及熱力圖顯示的效果分析,再一次證明了本文模型對蛋雞日常行為識別的效果更優。

圖11 熱力圖效果對比
為了驗證本文模型對不同遮擋情況下小個體蛋雞行為的檢測性能,從測試集中隨機選取2幅不同遮擋情況下的蛋雞圖像,并利用YOLO v5s和本文模型(SEEC-YOLO v5s)進行檢測。結果如圖12所示。

圖12 不同遮擋情況下檢測效果
對比圖12a、12b中黃色圈所標注的蛋雞檢測結果可以發現,在無遮擋的情況下,YOLO v5s模型將處于站立行為的蛋雞誤識別為站立和探索兩種行為,而本文模型準確識別出了蛋雞的站立行為。對比圖12a、12b中藍色圈所標注的蛋雞檢測結果可以發現,當蛋雞只顯示出了頭部和尾部,身體部分被另一只蛋雞嚴重遮擋時,YOLO v5s模型雖然識別出了被遮擋蛋雞的行為,但是對蛋雞定位時只定位出了尾部,蛋雞的頭部被遺漏(如圖12a中藍色箭頭處),影響最終的識別精度,本文模型不僅準確識別出了蛋雞的行為,而且相較于YOLO v5s模型,對被嚴重遮擋的蛋雞定位也更準確。
對比圖12c、12d中粉色圈1所標注的蛋雞檢測結果可以發現,當某只蛋雞的尾部被其他蛋雞輕微遮擋時,雖然YOLO v5s模型和本文模型均識別出了被遮擋蛋雞的行為,但是YOLO v5s模型識別的置信度(0.85)低于本文模型的置信度(0.87);對比粉色圈2所標注的蛋雞檢測結果可以發現,當蛋雞的腹部被完全遮擋時,YOLO v5s模型出現了誤識別現象,而本文模型準確識別出了蛋雞所處的行為。
綜上所述,在無遮擋、蛋雞腹部或尾部被其他雞只輕微遮擋或者是蛋雞的身體被嚴重遮擋,只剩下頭部和尾部情況下,本文模型均能夠準確檢測出蛋雞的行為,而YOLO v5模型均出現了一定的誤檢現象,表明本文模型在不同遮擋情況下對蛋雞日常行為的檢測效果更優。
試驗期間雞群視頻錄制時間為每日09:00—18:00,喂食時間為每日09:00和15:00。為了分析雞群各行為不同時間段的變化規律,隨機選取連續4 d的視頻錄像,并將每天錄像每隔30 min劃分1個時間段,共18個時間段。利用本文模型對劃分后的蛋雞視頻錄像進行識別,求得4 d內18個時間段的平均值,并按照2.5節所述的持續時間統計方法將識別出的幀數轉換為持續時間并進行分析。結果如表7和圖13所示。

表7 蛋雞各行為的持續時間統計

圖13 不同時間段蛋雞各行為持續時間
觀察表7和圖13發現,蛋雞的飲水、探索和啄羽行為在各時間段持續時間基本保持穩定。站立行為在11:00—15:30時間段持續時間高于其他時間段,推測可能與溫度有關,溫度較高的時間段,站立行為持續時間較其他時間段會更長。采食行為在11:00—15:00和16:30—18:00期間持續時間明顯低于其他時間段。梳羽行為在11:30—16:00區間內持續時間明顯較低。統計結果為依據行為規律判斷蛋雞健康狀態奠定了基礎。
為了分析每天09:00—18:00期間蛋雞6種日常行為之間的變化規律,利用本文模型對選取的連續4 d視頻錄像進行行為識別,利用2.5節提出的持續時間統計方法分別對每天蛋雞6種行為持續時間進行統計,結果如表8所示,全天內各行為持續時間對比如圖14所示。

表8 全天內蛋雞日常行為發生時間

圖14 全天內各行為持續時間對比
通過觀察圖14可知,在這4 d中,每天每種蛋雞日常行為持續時間基本保持相同,站立、采食、飲水、探索、啄羽和梳羽6種行為持續的平均時間分別為4 534.55、1 723.76、126.64、2 529.88、105.00、1 243.28 min,占蛋雞整天活動時間的比值分別為44.18%、16.80%、1.23%、24.65%、1.02%、12.11%。一天當中,站立行為持續時間最長,飲水和啄羽行為持續時間最短。站立行為持續時間比其它5種行為持續時間分別長2 810.78、4 407.90、2 004.66、4 429.55、3 291.27 min。通過對比可知,在一天當中,蛋雞大部分時間會處于站立和探索狀態,這兩種行為占每天活動時間的68.83%,上述統計結果為通過統計蛋雞各行為持續時間評估蛋雞健康狀況提供了數據依據。
蛋雞的健康狀態影響著養殖戶的經濟效益,為了便于觀察蛋雞行為,本試驗利用PyQt5對SEEC-YOLO v5s模型進行封裝、打包,制作了蛋雞日常行為識別與顯示系統,實現了對蛋雞行為的自動監測。
蛋雞日常行為識別與統計系統的總體框架如圖15所示,主要包括數據獲取、蛋雞日常行為識別、參數設置和顯示。

圖15 蛋雞日常行為識別與顯示系統總體框架圖
數據獲取部分是用于選擇數據獲取的主要渠道,包括本地文件獲取和攝像頭調用2種方式。蛋雞日常行為識別部分通過調用訓練好的模型,對數據獲取部分送入的數據進行識別,并對當前幀圖像中識別出的各行為總持續時間進行統計;參數設置部分包括權重文件選擇、IoU閾值、置信度閾值調整;顯示部分是對原始數據、識別效果和當前幀圖像中識別出的各行為持續時間的顯示。
如圖16所示,用戶進入蛋雞日常行為識別與顯示系統主界面后,在數據獲取部分選擇獲取識別數據的方式,在參數設置部分選擇訓練好的權重文件,并對置信度閾值和NMS閾值進行調整,通過點擊播放按鈕啟動蛋雞日常行為識別,識別效果會顯示在顯示部分,識別效果如圖17所示。

圖16 系統主界面

圖17 識別效果圖
如圖17所示,當完成對蛋雞日常行為識別后,會在系統頁面最左端,“結果顯示”下方顯示出識別出的各種行為雞只個數。此幅圖像識別結果為:探索行為有7只蛋雞,站立行為有7只蛋雞,啄羽行為有2只蛋雞,采食行為有2只蛋雞,梳羽行為有1只蛋雞。
(1)提出了一種基于SEEC-YOLO v5s的蛋雞日常行為識別方法。通過在YOLO v5s模型的輸出部分引入SEAM結構,突出了圖像中的蛋雞區域,弱化了背景區域,改善了YOLO v5s模型對遮擋目標識別精度較低的問題,通過在特征融合部分加入EVCBlock模塊,解決了蛋雞目標較小,特征易被遺漏的問題。本文改進的SEEC-YOLO v5s模型對蛋雞6種日常行為識別的平均精度均值為84.65%,其中對采食行為識別的平均精度達到98.46%。對比YOLO v5s、Faster R-CNN、YOLO X-s、YOLO v4-tiny 和YOLO v7-tiny模型,6種行為的平均精度均值分別提高2.34、4.30、3.06、7.11、2.99個百分點。
(2)提出了一種基于視頻幀數與視頻幀率比值計算蛋雞日常行為持續時間的統計方法,并分析了一天當中不同時間段下的蛋雞群體各行為和一整天內蛋雞6種日常行為的變化規律。試驗結果表明:每天每種日常行為持續時間基本保持相同,6種行為平均時間占蛋雞整天活動時間的44.18%、16.80%、1.23%、24.65%、1.02%和12.11%。一天當中,站立行為持續時間最長,飲水和啄羽行為持續時間最短;蛋雞站立和探索行為占每天活動時間的68.83%。利用PyQt5對本文模型進行了封裝、打包,制作了蛋雞日常行識別與統計系統,為蛋雞的日常行為監測和健康狀況評估提供了技術手段。