?

基于YOLO v5與短時跟蹤的雞只呼吸道疾病早期檢測

2023-03-07 07:21丁奇安劉龍申劉亞楠沈明霞
農業機械學報 2023年1期
關鍵詞:雞頭張口病雞

陳 佳 丁奇安 劉龍申 侯 璐 劉亞楠 沈明霞

(1.南京農業大學工學院, 南京 210031; 2.南京農業大學人工智能學院, 南京 210031)

0 引言

籠養是現代規?;B雞業最為集約高效的飼養方式之一[1],肉雞采用籠養方式能夠節約土地和增加單位面積的養殖量,還可以節省人力和物力,縮短出欄時間[2]。在疊層籠養環境下對異常雞只的識別主要靠人工篩選,耗費大量人力且需要巡檢人員具有較為豐富的經驗,培訓時間長,難以普及。

雞只異常識別研究包括基于聲音的異常識別[3-6]、體溫反演[7-10]、基于糞便等排泄物的檢測[11]與基于表型特征的異常識別,其中針對表型特征的異常檢測最為直觀而通用,具有較高的經驗遷移價值。學者們在自動化、智能化層面上對雞只異常判斷進行相關研究,從機器視覺等方向進行嘗試,ZHUANG等[12]提取健康雞只與病雞的姿勢特征,建立特征向量,通過機器學習算法對肉雞的姿勢進行分析,并對患病的肉雞進行預測,能夠快速準確地識別肉雞的健康狀況。ZHUANG等[13]結合深度學習提出一種基于圖像信息的深層卷積神經網絡模型,將病雞相較正常雞的趴臥在地、羽毛蓬松等特點作為識別特征進行分類。李亞碩等[14]對雞冠的顏色進行了機器視覺識別,從而判斷是否為病雞。畢敏娜等[15]針對復雜背景的黃羽雞側拍圖像,在黃羽雞色差信息分割的基礎上,利用雞冠和雞垂輪廓上兩點距離的合并算法,提取雞頭雞冠紋理特征和雞眼瞳孔的形狀幾何特征,構成病雞識別的特征向量,采用支持向量機分類器進行病雞識別實驗,病雞識別正確率為92.5%。陳章寶等[16]采用Faster R-CNN定位雞、雞頭與雞身部分,融合語義區域特征進行病雞分類,準確率達到82.66%。LI等[17]利用Faster R-CNN對雞只舒展行為進行檢測并在此基礎上對雞只在不同飼養密度下的舒適度進行研究。

當前大部分基于視覺信息的研究都是利用靜態的圖像信息進行雞只生理信息的反演與異常檢測,而動態信息可以將靜態圖像信息與時間相關聯,提高識別的準確率。FANG 等[18]通過深層神經網絡識別肉雞不同部位的特征點并形成其姿態骨架,再利用樸素貝葉斯模型進行雞只姿態的分類,在檢測視頻里可較為準確地對雞只的站立、走動、跑動、吃食、休息與修飾等姿態進行識別,形成姿態序列以供下一步研究。李娜等[19]將時間序列應用到雞只的啄羽行為檢測中,設計5 s內發生兩次以上啄羽行為是一個時間段,并認為持續時間在30 s以上的時段為啄羽行為,從而改善了啄羽行為漏檢率高的問題,提高了算法的檢測精確度。OKINDA等[20]采集雞只的俯拍深度圖像,得到偏心率、雞只行走速度等特征參數,通過人工神經網絡等6種模型進行病雞與健康雞的分類,準確率為97.8%。

呼吸道疾病具有傳染率高、致死率高等特點,許多呼吸道疾病前兆相似,比如呼吸困難[21-23],通過對該癥狀的識別可以對雞只的呼吸道疾病進行早期預警,但現在少有研究從這方面入手。針對呼吸困難這一連續行為特征,本文提出一種基于YOLO v5與短時跟蹤的雞只呼吸道疾病早期檢測方法,通過錨框自適應設置,CIoU Loss[24]引入等優化,實現雞頭目標的識別與張口與否的分類檢測,在此基礎上根據連續幀間目標位移變化設計一種基于交并比的雞頭目標短時間跟蹤方法,形成持續時間內的雞頭張口狀態序列,并根據此變化對群雞中是否存在呼吸困難雞只進行檢測。

1 實驗材料

1.1 實驗對象與數據采集方法

本實驗于2021年7—8月在廣東溫氏非雷攻毒實驗室進行,實驗對象為雞傳染性支氣管病毒攻毒后的27日齡白羽肉雞,全天候采集肉雞攻毒后10 d的視頻數據。在攻毒后3 d左右出現雞傳染性支氣管炎臨床癥狀,其主要癥狀為支氣管堵塞,體現為呼吸困難、精神不佳、怪叫(類似人有痰咳嗽的聲音)。其中,呼吸困難為本實驗所要檢測的關鍵動態特征,其表現為雞活動量少,在短時間內出現有規律的張口、閉口循環動作,伴隨仰頭、閉眼等現象,具體表現如圖1動作序列所示。

圖1 呼吸困難動態動作序列Fig.1 Movement sequence of Dyspnea

實驗中選用分辨率為1 920像素×1 080像素的螢石云(CS-C6C-3B2WFR型)攝像頭進行拍攝,攝像頭固定在可調節高度的支架上,通過內置存儲卡進行數據存取。調整鏡頭角度令其與地面平行,控制鏡頭與雞籠距離為45 cm。對每籠雞進行無人干涉的全天候拍攝,拍攝裝置如圖2所示。

圖2 實驗裝置Fig.2 Experimental arrangement with camera

1.2 數據標注

對定點拍攝的攻毒倉內群雞視頻進行篩選,得到含有呼吸困難癥狀的雞只視頻片段并對這些視頻進行分幀處理,每秒截取2幀,共獲取2 500幅圖像,在數據清理后得到可用圖像2 207幅,利用LabelImg軟件進行數據標注,包括人眼可見的閉口雞頭(head)和張口雞頭(om)兩種標簽。

1.3 數據增強

為擴大數據量,采用Mosaic操作進行數據增強。如圖3所示,在一次操作中隨機選擇圖像數量,對這些圖像進行隨機縮放、隨機裁減等操作,再進行拼接獲取新的數據樣本。該操作可以增加背景與小目標數量,從而豐富數據集,使網絡的魯棒性更好。

圖3 Mosaic數據增強效果Fig.3 Data augmentation effect by Mosaic

2 基于改進YOLO v5的雞頭目標檢測算法

YOLO v5算法是一種實時性較強的one-stage目標檢測算法,在原有YOLO目標檢測架構的基礎上,采用增加多種數據增強方法、改進跨階段局域網絡等優化策略從數據處理、主干網絡、網絡訓練、激活函數、損失函數等方面進行優化,相較YOLO v3[25]、YOLO v4[26]等模型有了一定的性能提升。模型的結構主要分為Input、Backbone、Neck和Prediction 4部分。Input為雞只圖像輸入環節,Backbone主要實現圖像的特征提取,Neck環節對提取到的特征進行融合,Prediction為進行回歸操作后的檢測部分。

根據群養環境下雞頭檢測目標小、環境干擾多等特點對YOLO v5算法進行特定優化,通過自適應錨框設置令檢測框尺寸更適合本文中需要檢測的雞頭小目標;將GIoU Loss (Generakized IoU Loss)替換為更加適合遮擋目標檢測與小目標檢測的CIoU Loss作為bounding box損失函數進行整體參數調整的參考。

2.1 檢測算法整體網絡結構

YOLO v5在Backbone中主要應用了Focus結構與CSP結構,其中Focus是一種切片操作,通過將高分辨率的輸入圖像分成若干個小通道進行輸入來提高模型速度。Neck中同樣使用了FPN與PAN結構來提高模型性能,與YOLO其他系列不同的是,YOLO v5在Neck中也使用了CSP結構,加強了網絡特征的融合能力。

圖4為YOLO v5算法整體網絡結構圖。

圖4 YOLO v5框架圖Fig.4 YOLO v5 framework

2.2 自適應錨框設置

模型中的錨框(anchor)一般根據經驗進行預設,具有一定的主觀性且缺乏通用性。針對本文雞頭目標尺寸較小的特點,需要舍棄YOLO v5默認的9個錨框尺寸,自適應形成適用于本數據的新錨框。

K-means聚類方法[27]作為一種可靠、有效的錨框設置方法被廣泛應用于anchor base目標檢測算法的優化中[28-29],其流程圖如圖5所示。作為事先優化,先獲取數據集中所有數據的目標框,即雞頭目標框,并對這些目標框尺寸進行歸一化操作,獲取絕對坐標,進行篩選后對得到的目標框利用K-means聚類方法獲取9組中心點,即為9個錨框的尺寸。最后再使用遺傳算法[30]隨機對錨框的尺寸數據變異進行優化。

圖5 K-means流程圖Fig.5 K-means flowchart

2.3 CIoU Loss

CIoU Loss由ZHENG等[24]提出,其計算中包括重疊面積、中心點距離和長寬比,是對GIoU Loss和DIoU Loss (Distance IoU Loss)的優化,在小目標檢測中效果良好,其計算公式為

LCIoU=1-IoU(A,B)+r2(Actr,Bctr)/c2+av

(1)

(2)

(3)

式中A——預測框B——真實框

Actr——預測框中心點坐標

Bctr——真實框中心點坐標

r——歐氏距離

c——A、B最小包圍框的對角線長度

IoU——交并比

a——權重函數

v——寬高比度量函數

LCIoU——CIoU Loss函數

w——預測框寬度

h——預測框高度

wgt——真實框寬度

hgt——真實框高度

CIoU Loss可以直接最小化兩個目標框的距離,因此比GIoU Loss收斂快,使得非極大值抑制得到的結果更加合理和有效。所增加的懲罰項與尺寸相關,如果真實框與預測框的尺寸相似,那么v為0,該懲罰項不起作用,故可以控制預測框的尺寸盡可能快速與真實框的尺寸靠近,以中心點與長寬比為引導方向可令雞頭小目標的檢測框更貼合雞頭本身,為之后的短時跟蹤方法提供參考。

3 基于時間序列的呼吸困難行為檢測方法

本文研究對象為患有呼吸道疾病的肉雞,有活動量少和呼吸困難等重要臨床特征,其中呼吸困難體現在持續一段時間的張合嘴動態行為上。針對這兩項特征,本文提出一種基于時間序列的雞只呼吸行為檢測方法,該方法分為基于交并比的雞頭目標跟蹤方法與雞頭特征序列構造兩部分,先通過連續幀的檢測框坐標比對確認活動量少的病雞雞頭并實現短時間跟蹤,再利用對此跟蹤對象的狀態排列判斷其是否存在連續的張口、閉口狀態轉換,從而實現對呼吸困難動態特征的檢測。

3.1 基于交并比的雞頭目標跟蹤方法

通過上述檢測方法對連續幀圖像進行檢測,并輸出檢測到的目標類別與坐標信息。以第1幀為參考幀開始跟蹤流程,檢測框編號根據參考幀的檢測順序依次生成,通過對比當前幀與參考幀中的檢測框交并比來對當前幀中的各檢測框進行編號賦予,其中交并比計算公式為

(4)

IoUij——兩個檢測框的交并比

以此為基礎,編號設置方法為

(5)

該方法具體流程如圖6所示,以兩次循環分別對比參考幀與當前幀內的檢測框的交并比,選擇合適閾值情況下的交并比最大的組合進行編號對應。通過觀察雞只呼吸可知,一次張口一次閉口用時約為0.5 s,故本文中對于視頻的處理為1 s處理5幀,以減少中間幀的漏檢。由于作為主要跟蹤對象的病雞活動量較低,在實驗后設置參考幀轉換頻率為30 s一次,即60幀后重新選擇參考幀以適應雞只位移情況,進行雞頭編號的再設定與跟蹤,從而實現短時間內雞頭目標的跟蹤,為下一步雞只個體呼吸序列構建提供基礎。

圖6 跟蹤方法流程圖Fig.6 Flowchart for tracking method

3.2 呼吸困難動態特征檢測

通過基于交并比的雞頭目標跟蹤方法對連續幀的雞頭目標進行短時間跟蹤,并根據雞頭檢測方法的分類輸出結果得出該雞頭的狀態特征序列,形成0(閉口)、1(張口)序列,根據該序列與序列持續時間可得出0、1狀態的發生頻率, 其計算方法為

(6)

式中T——連續幀持續時間,s

N01——T時間內0、1狀態發生的次數

f——0、1狀態發生的頻率

當f大于給定閾值時認為是呼吸困難狀態。

4 實驗結果與分析

4.1 實驗設計

4.1.1實驗樣本設置

實驗對象為傳染性支氣管病毒攻毒后的肉雞,選取呼吸困難片段并進行數據集制作,得到有效數據2 207幅,包含雞只不同時間、不同狀態的活動情況,人工進行雞頭定位與標簽設定,部分標簽設定包括head(閉口雞頭)和om(張口雞頭)兩種情況,兩種標簽分別有1 696、1 710個。

4.1.2實驗評價指標

評價指標主要分為兩部分,對于目標檢測算法的評價指標主要為平均精度(AP)與平均精度均值(mAP),對于存在呼吸困難的視頻識別情況采用準確率、精準率和召回率進行評價。

4.1.3實驗參數設置

本文針對雞頭小目標的識別與是否張嘴的判定使用改進YOLO v5算法,為驗證算法的有效性,在所有超參數、模型訓練環境相關參數均保持一致的情況下對YOLO v5算法與改進YOLO v5算法進行對比。使用GeForce RTX 3090 GPU,CUDA版本11.0,Pytorch版本1.7.0,OpenCV版本4.5.2。實驗中的參數設置如表1所示。訓練集、驗證集、測試集分配比例為7∶2∶1。

表1 實驗參數設置Tab.1 Experimental parameters setting

4.2 基于改進YOLO v5的雞頭目標檢測結果與分析

表2 不同算法檢測效果比較Tab.2 Comparison of different algorithms

圖7為改進YOLO v5在不同網絡結構下的損失值變化曲線,圖8為改進YOLO v5在不同網絡結構下的精確率-召回率曲線。

圖7 改進YOLO v5算法的損失值變化曲線Fig.7 Loss curves of IM-YOLO v5

圖8 改進YOLO v5算法精確率-召回率曲線Fig.8 PR curves of IM-YOLO v5

由圖7可見,算法的整體損失值隨訓練迭代輪次的增加而減少,其中檢測框回歸損失值是CIoU Loss,可令預測框的邊界尺寸快速向真實框逼近,置信度損失值與分類損失值則在訓練中引導多分類任務對物體的識別與精準分類,同樣隨著迭代輪次的增加而縮小。整體損失值為上述幾種損失函數的總和,在200 輪次后均收斂。

由圖8可見,本文所提出的改進YOLO v5算法在不同網絡結構下對head的識別效果均較好,而較深的網絡結構能夠提升om的識別準確率, 從而促使整體效果提升。

4.3 基于時間序列的呼吸困難行為檢測實驗效果與分析

4.3.1短時跟蹤效果與分析

對雞只呼吸困難動態行為檢測的基礎是確定所識別到的動作序列均屬于一只雞,故需要先進行短時間的雞頭跟蹤,減少由于群雞運動過程中的重疊、遮擋等情況造成的雞只動作序列混亂問題。實驗中,根據觀察可知,病雞進行張口呼吸,即一次張口一次閉口的用時約為0.5 s,故本文算法以1 s處理5幀的速度對視頻進行處理以減少中間幀漏檢,并通過30 s替換一次參考幀以適應雞只位移情況,提高跟蹤的準確率。

圖9為編號為3-2-3的視頻片段測試效果,展示序列中每幅圖的時間間隔約為3 s,可反映持續時間內的跟蹤效果。由圖可見,以呼吸困難雞只為觀測主體,短時跟蹤方法實現了連續幀的雞頭目標編號對應,并獲取雞只個體頭部的短時動作序列。其中由于參考幀變換、雞頭遮擋等導致雞頭編號出現變化,但在短時間跟蹤內獲取的動作序列作為呼吸困難動態行為的一部分具有一定的參考價值。

圖9 短時跟蹤效果Fig.9 Short time tracking effect

由于在該階段出現張口呼吸的雞為病情比較嚴重的雞,會伴隨閉眼、活動量減少等情況,本文方法需要排除其他活動雞只的干擾,且本文研究對象為籠養群雞,需要檢測的是該籠中是否存在呼吸困難的雞只,所以不需要長時間的身份識別,故本文所提出的基于交并比的短時間跟蹤方法可用于群養雞中的個體短時間跟蹤與動作序列獲取,效果較好。

4.3.2呼吸困難動態檢測效果與分析

根據4.3.1節得到的結果可形成雞只個體的動作序列,以0代表閉口,1代表張口,形成不同雞只個體的01字符串,并通過01片段的出現頻率判斷是否存在雞只呼吸困難情況?,F利用353組視頻片段進行測試,每個視頻時長約1 min。其中含有呼吸困難雞只的視頻48個,正常雞只視頻305個。表3為不同視頻片段呼吸情況識別效果,識別內容包括雞只跟蹤編號、雞只動作序列與通過動作序列判斷的雞只呼吸次數。

表3 呼吸困難情況識別結果Tab.3 Identification results of Dyspnea

表3為部分檢測結果,在同一視頻片段中對不同編號的雞只進行跟蹤并獲取動作序列,通過01片段判斷是否存在呼吸困難情況,當視頻片段中出現3次及以上呼吸時被認為是存在呼吸困難癥狀。

以呼吸困難視頻為觀測主體,則呼吸困難識別正確的為36,呼吸正常識別正確的為288,呼吸正常識別錯誤的為17,呼吸困難識別錯誤的為12,與人工檢測結果相比較,其準確率為91.8%,召回率為75%,精準率為67.9%,可以較為準確地檢測群雞中是否存在呼吸困難癥狀的雞只。

5 結論

(1)提出一種基于改進YOLO v5的雞只呼吸道疾病早期檢測方法。通過改進YOLO v5算法對雞頭目標進行檢測并識別是否為張口情況;再利用基于交并比的雞頭短時間跟蹤方法對識別到的雞頭目標進行時空融合分析,進行幀間編號對應,實現雞只的短時跟蹤與動作序列提??;根據動作序列進行呼吸行為判定,通過呼吸的頻率檢測群雞中是否存在雞只呼吸困難現象。

(3)以呼吸困難動態特征為研究點進行雞只呼吸道疾病早期檢測的研究,可精確識別雞只頭部特征并以此為基礎檢測群雞中是否存在呼吸困難雞只,為傳染性支氣管炎等呼吸道疾病的早期預警提供了參考。

猜你喜歡
雞頭張口病雞
雞維生素B1缺乏癥的診治分析
集束化護理對鼻咽癌放療患者口腔黏膜炎及張口受限的影響
從頭說起
病雞治療期飼料調整與控制
蛋雞得了疲勞癥咋辦
仰天大笑
唐宋時期安化峽、安化縣及安化鎮位置考辨——兼談秦漢時期的雞頭道
病雞治療期飼料調整與控制
老年人睡醒后口干是何因?
雞頭菜
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合