史 懷 陳 崢 潘志針 福建省農(nóng)業(yè)科學(xué)院農(nóng)業(yè)生物資源研究所 福州 350003
動物的采食、飲水、排泄等行為是判斷其健康狀況的重要依據(jù), 例如日采食量的減少多是由于感染疾病而引起,是疾病的早期征兆[1]。 目前國內(nèi)大多養(yǎng)殖場都是采用對特定觀察群體的人工觀察方式監(jiān)測豬的個體行為,費(fèi)時費(fèi)力,而且人工觀察的數(shù)據(jù)存在一定的主觀性偏差。自動化系統(tǒng)檢測具有無人干預(yù)、獨(dú)立可靠和連續(xù)性強(qiáng)等優(yōu)點(diǎn), 是規(guī)?;B(yǎng)殖的發(fā)展趨勢[2]。 隨著信息技術(shù)的發(fā)展,生產(chǎn)者可通過自動化系統(tǒng), 監(jiān)測動物早期的行為變化并對監(jiān)測數(shù)據(jù)進(jìn)行智能分析,判斷動物是否出現(xiàn)健康問題并迅速反饋,以便管理人員及時采取相應(yīng)的處理措施。
傳統(tǒng)自動化檢測系統(tǒng)中, 豬的個體識別主要采用耳標(biāo)射頻識別(簡稱RFID)技術(shù),但該技術(shù)在一定程度上會干擾豬只的正常生活[3],并且當(dāng)多個RFID應(yīng)答器接近于接收器時, 低頻RFID 無法準(zhǔn)確識別出特定個體[4]。 隨著近幾年機(jī)器視覺、深度學(xué)習(xí)技術(shù)的發(fā)展, 基于機(jī)器視覺的非接觸式方案技術(shù)可行性越來越高,可以取代人工,完成更高效的日常養(yǎng)殖管理。
對群養(yǎng)豬排泄行為的研究表明, 豬具有定點(diǎn)排泄(墻角或圈欄一角)的生活習(xí)性,平時較少在排泄區(qū)停留[5]。 因此,本項(xiàng)目引入機(jī)器視覺技術(shù),通過改建試驗(yàn)用豬舍,設(shè)定進(jìn)食區(qū)和排泄區(qū),分別在兩個區(qū)域的正上方安裝攝像頭進(jìn)行俯拍持續(xù)視頻監(jiān)控每頭豬個體的采食、排泄活動(見圖1),構(gòu)建個體身份和行為識別系統(tǒng)。
圖1 識別系統(tǒng)視頻監(jiān)控布局示意圖
選取一欄10 頭左右、處于育肥期的豬進(jìn)行試驗(yàn)研究。在方案中,需要考慮如下兩個主要問題:(1)豬個體的身份識別;(2)豬個體的進(jìn)食、排泄行為識別研究。
由于豬的非剛性特性, 豬在圈舍中有停停走走的運(yùn)動模式, 同一頭豬不同的姿勢所提取的特征就不盡相同。以往的機(jī)器視覺方法做豬個體識別,通過豬個體的顏色、紋理、形狀等融合特征進(jìn)行識別,在實(shí)際應(yīng)用中識別率往往不理想。 另外,顏色、紋理等特征的提取受光線的影響也較大。因此,本項(xiàng)目中提出在豬只的體表設(shè)置不同的數(shù)字標(biāo)記方法, 結(jié)合豬只的輪廓等形狀特征,進(jìn)行豬個體的身份識別。
本項(xiàng)目設(shè)計(jì)選取10 頭豬進(jìn)行試驗(yàn),采用最簡單的0~9 數(shù)字標(biāo)記。 數(shù)字標(biāo)記的方向統(tǒng)一與豬只的頭尾方向平行,見圖2。
在實(shí)際應(yīng)用中,可根據(jù)豬舍的豬只數(shù)量,決定編號的位數(shù), 原理相同, 具有可擴(kuò)展性。 具體流程見圖3。
1)背景消除:通過改進(jìn)的背景消除算法獲得前景(豬只)的輪廓信息;
圖2 數(shù)字標(biāo)記示意圖
圖3 單一個體識別流程
2)區(qū)域分離:利用基于形態(tài)學(xué)的圖像分析算法對豬個體進(jìn)行分離, 獲得圖像中每頭豬個體的區(qū)域和輪廓信息;
3)旋轉(zhuǎn)校正:對每頭豬個體的輪廓曲線計(jì)算最小外接矩形,得到豬只相對垂直位置的傾斜角,利用該傾斜角進(jìn)行旋轉(zhuǎn)校正;
4)標(biāo)識識別:經(jīng)旋轉(zhuǎn)矯正后的標(biāo)識是處于0 度或180 度方向, 利用訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行數(shù)字標(biāo)識的檢測和識別,選取超過置信度閾值的Top-1 類別,輸出識別結(jié)果。
經(jīng)過上述流程, 可以獲得在圖像視野內(nèi)所有豬個體的ID 以及相應(yīng)的姿態(tài)。 在此基礎(chǔ)上,根據(jù)姿態(tài)(如豬頭部與進(jìn)食槽的區(qū)域重合度、豬尾部與排泄區(qū)的區(qū)域重合度)和在飲食區(qū)、排泄區(qū)的駐留時長,記錄相應(yīng)的進(jìn)食和排泄行為。 系統(tǒng)的整體方案流程見圖4。
2.1 背景消除 采用混合高斯模型GMM 進(jìn)行背景建模。
1)首先將每個高斯的均值、方差,權(quán)值都設(shè)置為0,即初始化個模型矩陣參數(shù)。
2)采用視頻中的T 幀用來訓(xùn)練GMM 模型。 對每一個像素而言, 建立其模型個數(shù)最大GMM_MAX_COMPONT 個高斯的GMM 模型。 當(dāng)?shù)谝粋€像素來, 單獨(dú)為其在程序中設(shè)置好其固定的初始均值、方差,并且權(quán)值設(shè)置為1。
3)非第一幀訓(xùn)練過程中,當(dāng)后面來的像素值時,與前面已有的高斯的均值比較, 如果該像素點(diǎn)的值與其模型均值差在3 倍的方差內(nèi), 則任務(wù)屬于該高斯。
4)當(dāng)?shù)竭_(dá)訓(xùn)練的幀數(shù)T 后,進(jìn)行不同像素點(diǎn)GMM 個數(shù)自適應(yīng)的選擇。
在上述背景消除的基礎(chǔ)上, 以正常豬體面積的20%為基準(zhǔn), 去除掉圖中面積小于20%豬體面積的連通域,剔除結(jié)果就只剩下大面積的豬體。
圖4 系統(tǒng)整體方案流程
2.2 區(qū)域分離 為了盡量保持豬體輪廓且有效分開粘連豬體,使每個豬體成為單一的連通域,對圖像進(jìn)行形態(tài)學(xué)預(yù)處理。 采用不同形狀的開運(yùn)算結(jié)構(gòu)元素進(jìn)行形態(tài)學(xué)開運(yùn)算,可以用圓形、方形、菱形和斜45°線型的結(jié)構(gòu)元素進(jìn)行開運(yùn)算。
2.3 旋轉(zhuǎn)校正 提取該豬體的連通域(連通域內(nèi)像素點(diǎn)值為1,背景為0),遍歷連通域中所有像素點(diǎn),找到所有與背景八鄰域相接的像素點(diǎn), 生成豬體邊緣像素點(diǎn)集, 得到圖5 所示輪廓曲線。 對輪廓曲線計(jì)算最小外接矩形。
圖5 豬體輪廓曲線與旋轉(zhuǎn)校正
圖中的θ 即為所求得的旋轉(zhuǎn)角度, 根據(jù)該旋轉(zhuǎn)角度, 可以通過旋轉(zhuǎn)矯正將所有豬個體的形態(tài)都旋轉(zhuǎn)到垂直方向。注意:由于未區(qū)分豬頭、豬尾,所以旋轉(zhuǎn)后的圖像上顯示的標(biāo)識可能是正方向, 也可能是180 度反方向,但無礙進(jìn)行下個步驟的標(biāo)識識別。
2.4 標(biāo)識識別 隨著近幾年深度學(xué)習(xí)技術(shù)的發(fā)展,以卷積神經(jīng)網(wǎng)絡(luò)為代表, 在圖像分類和目標(biāo)檢測領(lǐng)域獲得了長足的進(jìn)步。 在目標(biāo)檢測領(lǐng)域,以RCNN、YOLO、SSD 為代表, 檢測精度mAP 一直持續(xù)提高。本文綜合考慮性能和速度的權(quán)衡,采用SSD 框架進(jìn)行豬背上數(shù)字標(biāo)識的檢測, 檢測的結(jié)果會輸出標(biāo)識的位置和類別(0~9 數(shù)字,共10 類)。
在具體試驗(yàn)中, 本文利用i7 CPU,GTX1080 顯卡,在ubuntu 系統(tǒng)下,采用Caffe 深度學(xué)習(xí)框架(見圖6),采集2 000 張?jiān)囼?yàn)場景圖片,并進(jìn)行檢測框的標(biāo)注后訓(xùn)練得到相關(guān)模型。
圖6 Caffe 深度學(xué)習(xí)框架
圖7 不同生豬個體行為明細(xì)記錄界面
圖8 異常行為報警記錄
根據(jù)識別結(jié)果, 可以同時確定豬頭和豬尾在圖像中的具體位置,便于下一步的進(jìn)食、排泄行為識別。
2.5 進(jìn)食、排泄行為識別 前述工作完成了對每頭進(jìn)入拍攝視野的豬個體的ID 識別, 在此基礎(chǔ)上,通過如下兩個規(guī)則來確定豬是否完成了進(jìn)食或排泄行為。
對于進(jìn)食行為,若滿足情況:(1)豬頭部與進(jìn)食槽的重合度IOU 超過置信度; 置信度設(shè)為0.6;(2)豬在進(jìn)食區(qū)的單次駐留時長超過10 秒。則輸出進(jìn)食時間、時長,并將進(jìn)食行為記錄數(shù)+1。
對于排泄行為,若滿足情況:(1)豬尾部與排泄區(qū)的重合度IOU 超過置信度; 置信度設(shè)為0.6;(2)豬在排泄區(qū)的單次駐留時長超過10 秒。則輸出排泄時間、時長,并將排泄行為記錄數(shù)+1。
以福建省農(nóng)業(yè)科學(xué)院漁溪微生物發(fā)酵床大欄養(yǎng)殖工程化實(shí)驗(yàn)室菜豬場的2 欄20 頭育肥豬為驗(yàn)證對象,在自由采食條件下監(jiān)控其進(jìn)食與排泄行為(見圖7)。驗(yàn)證期從2019 年5 月1 日至6 月30 日,在此期間,共檢測出疑似患豬17 頭次,經(jīng)檢驗(yàn)實(shí)際患病15 頭次,本系統(tǒng)預(yù)測準(zhǔn)確率為88.23%,基本達(dá)到了預(yù)期目標(biāo)。 選取期間檢測到的出現(xiàn)異常行為的報警示例見圖8。
在系統(tǒng)中監(jiān)測到某頭生豬24 h 內(nèi)進(jìn)食或排泄次數(shù)超出設(shè)置閾值,即將其確定為疑似患豬,并進(jìn)行報本文設(shè)計(jì)了一種遠(yuǎn)程智能化監(jiān)測識別生豬行為的方法,可以對疑似患豬進(jìn)行預(yù)判,在減輕養(yǎng)殖人員巡欄工作量的同時,可盡量避免養(yǎng)殖企業(yè)的經(jīng)濟(jì)損失。