(江蘇大學(xué)電氣信息工程學(xué)院,江蘇鎮(zhèn)江 212013)
隨著我國養(yǎng)殖業(yè)規(guī)模不斷擴(kuò)大,家畜養(yǎng)殖不斷向規(guī)?;⒓s化方向發(fā)展。在大規(guī)模、高密度飼養(yǎng)環(huán)境下,家畜的健康管理越來越重要[1],高精度低成本的自動化養(yǎng)殖方式逐漸取代傳統(tǒng)的人工養(yǎng)殖。目前家畜養(yǎng)殖通常采取半自動化方式,通過人工與無線射頻識別技術(shù)(Radio Fre?quency Identification,RFID)相結(jié)合進(jìn)行管理[2]。但RFID技術(shù)需要在豬的耳朵上安裝侵入式標(biāo)簽,成本高且不易操作。與RFID 技術(shù)相比,機(jī)器視覺技術(shù)僅需一臺攝像設(shè)備,成本低廉且自動化程度高。
基于機(jī)器視覺的家畜自動化檢測技術(shù)研究成果有:朱偉興等[3]通過改進(jìn)的運(yùn)動目標(biāo)檢測算法定位異常生豬,并將圖像通過分組無線服務(wù)網(wǎng)絡(luò)傳送至監(jiān)控中心;馬麗等[4]根據(jù)生豬呼吸時腹部的起伏特點(diǎn),構(gòu)建豬的腹式呼吸表達(dá)式,并逐段檢測生豬視頻呼吸頻率;陸明洲等[5]結(jié)合射頻標(biāo)簽和紅外技術(shù)監(jiān)測生豬飲水頻率及消耗量;高云等[6]利用hough 聚類方式識別頭尾;譚輝磊等[7]對輪廓多邊形近似計(jì)算相似度判斷飲水行為;楊秋妹等[8]將圖像二值化,計(jì)算生豬連通域在固定飲水區(qū)域所占面積,然后利用卷積神經(jīng)網(wǎng)絡(luò)判斷飲水區(qū)域目標(biāo)是否為豬頭,以此判別飲水行為。以上判斷方法均需要繁雜的特征提取過程,且對輪廓精確度要求較高,而生豬黏連、姿態(tài)變化等因素一定程度上影響了輪廓提取過程。
隨著深度學(xué)習(xí)及目標(biāo)檢測技術(shù)發(fā)展,機(jī)器視覺識別能力有了較大提升。該方法無需繁瑣的特征提取過程,直接從訓(xùn)練集中自動學(xué)習(xí)目標(biāo)特征信息[9]。LeCun 等[10]提出第一個卷積神經(jīng)網(wǎng)絡(luò)用于手寫數(shù)字識別,隨后該模型廣泛應(yīng)用于分類、語義分割、目標(biāo)檢測等領(lǐng)域;Girshick 等[11]將CNN 運(yùn)用在目標(biāo)檢測領(lǐng)域,首次提出基于深度學(xué)習(xí)的目標(biāo)檢測算法R-CNN。隨著深度學(xué)習(xí)的飛速發(fā)展,目標(biāo)檢測算法不斷改進(jìn),其精度與速度都有了極大提升,已廣泛應(yīng)用于各大工業(yè)領(lǐng)域。本文嘗試將深度學(xué)習(xí)技術(shù)應(yīng)用于生豬目標(biāo)檢測,實(shí)現(xiàn)更加精準(zhǔn)的生豬飲水行為識別。
實(shí)驗(yàn)圖像采自鎮(zhèn)江?,斈翗I(yè)有限公司養(yǎng)豬場。攝像機(jī)懸掛在豬圈上方3m 處,攝像機(jī)視角可涵蓋整個豬圈。攝像機(jī)幀率25,像素1 760×1 840。試驗(yàn)視頻采集5 天,時間自早上9 點(diǎn)至下午5 點(diǎn),在同一豬圈總計(jì)采集7 段視頻,每段5min 左右,攝像畫面如圖1 所示。
Fig.1 Camera images圖1 攝像畫面
目前最常用的目標(biāo)檢測算有Faster R-CNN[12]、YO?LO[13]、SSD[14]等,其中Faster R-CNN 原理是利用RPN(Re?gion Proposal Network)[15]在多目標(biāo)圖像中提取僅包含單個目標(biāo)的局部區(qū)域,然后對這些區(qū)域進(jìn)行分類及位置校準(zhǔn)。Faster R-CNN 檢測精度高但速度慢(5 幀/s),無法滿足實(shí)時檢測需求。YOLO 可在圖像上一次性直接檢測全部目標(biāo),算法速度較快(45 幀/s),但對較小物體檢測精度較差。SSD 算法集兩家之長,運(yùn)算速度遠(yuǎn)高于Faster R-CNN 且精度高于YOLO。本文采用簡化的YOLOv3 算法[16]。YO?LOv3 為YOLO 的多次改進(jìn)版本,結(jié)合Faster R-CNN 中Anchor 與多尺度思想[16],速度與精度均達(dá)到或超過SSD 算法。
YOLO 算法檢測流程如圖2 所示(彩圖掃OSID 碼可見)。模型在每個網(wǎng)格中檢測目標(biāo),檢測結(jié)果以矩形框顯示,且該矩形框中心點(diǎn)在該網(wǎng)格中,矩形框邊界可超出網(wǎng)格范圍。為確保每個網(wǎng)格只檢測到一個目標(biāo),將圖像分成13×13 個網(wǎng)格。
Fig.2 Grid test results圖2 網(wǎng)格檢測結(jié)果
YOLOv3 為解決大小不同的目標(biāo)難以檢測問題,引入多尺度檢測方式。網(wǎng)絡(luò)融合不同采樣層特征圖,輸出3 個不同尺度的張量(13×13,26×26,52×52),即劃分不同大小網(wǎng)格。采用此方式原因是,小目標(biāo)在經(jīng)過多次下采樣后特征難以識別,通過將淺層特征圖疊加至深層特征圖方式,有效避免深層小目標(biāo)特征消失問題。針對實(shí)驗(yàn)對象僅有整豬及豬頭,目標(biāo)相對較大的問題,考慮簡化網(wǎng)絡(luò),僅保留13×13 這一尺度,簡化后的網(wǎng)絡(luò)在精度與速度上有一定提升。
本文實(shí)驗(yàn)數(shù)據(jù)集總計(jì)200 張,經(jīng)過翻轉(zhuǎn)、旋轉(zhuǎn)、尺度變換等方式,將數(shù)據(jù)擴(kuò)充至1 000 張,按1:4 的比例劃分為測試集與訓(xùn)練集。采用圖像標(biāo)注軟件labelme 對圖像進(jìn)行標(biāo)注,手動框出整豬及豬頭,軟件會將數(shù)據(jù)轉(zhuǎn)化為YOLO 網(wǎng)絡(luò)所需要的數(shù)據(jù)格式。
由于訓(xùn)練樣本較少,所以本實(shí)驗(yàn)加載經(jīng)過ImageNet 預(yù)訓(xùn)練的ResNet[18]模型進(jìn)行遷移學(xué)習(xí)。ImageNet 為用于視覺對象識別研究的圖像數(shù)據(jù)庫,包含超過1 000 萬張經(jīng)過手動注釋的圖像數(shù)據(jù)。在網(wǎng)絡(luò)訓(xùn)練過程中,靠前的卷積層一般會提取較普遍的特征。隨著卷積層數(shù)增加,提取特征會更加趨向于個性化。通過ImageNet 預(yù)訓(xùn)練模型初始化其網(wǎng)絡(luò)模型,僅訓(xùn)練最后幾層,這樣可加速網(wǎng)絡(luò)收斂,有效提高訓(xùn)練速度,同時避免數(shù)據(jù)不足導(dǎo)致的過擬合現(xiàn)象。
實(shí)驗(yàn)采用tensorflow[19]深度學(xué)習(xí)框架,計(jì)算機(jī)配置為Intel Core i7-8700HQ,顯卡為GTX 1080Ti,訓(xùn)練過程中的超參數(shù)設(shè)置見表1。
訓(xùn)練過程中損失函數(shù)曲線如圖3 所示。在前2 000 次迭代中,損失值迅速下降至1.3 左右,隨后損失值變化趨于平緩,經(jīng)過10 000 次迭代后,損失值慢慢收斂至0.6 左右。
Table 1 Network parameters表1 網(wǎng)絡(luò)參數(shù)
Fig.3 Loss function圖3 損失函數(shù)曲線
本文通過準(zhǔn)確率與召回率評價檢測結(jié)果[19],計(jì)算公式如下:
其中,TP(true positive)代表識別正確的豬(頭),F(xiàn)P 代表不是豬(頭)卻被識別為豬(頭)的數(shù)量,F(xiàn)N 代表豬(頭)沒有識別出來的數(shù)量。本實(shí)驗(yàn)測試集共100 張圖片,每張包含7 頭豬,數(shù)據(jù)統(tǒng)計(jì)結(jié)果見表2,部分測試集結(jié)果如圖4 所示。
Table 2 Target detection results表2 目標(biāo)檢測實(shí)驗(yàn)結(jié)果
Fig.4 Test results圖4 檢測結(jié)果
取測試樣本中所有正在飲水的整豬位置集合,選擇一個能包含所有位置集合的最小矩形框。如圖5(a)所示虛線標(biāo)記位置,將該區(qū)域作為飲水區(qū),同時標(biāo)記飲水器用作飲水行為判斷,如圖5(a)所示實(shí)線位置。
飲水行為識別流程如下:①通過目標(biāo)檢測算法實(shí)時監(jiān)測整豬及豬頭;②若整豬區(qū)域處于圖5(a)中虛線內(nèi)部,且豬頭區(qū)域與飲水器產(chǎn)生交集,如圖5(b),則認(rèn)為有生豬已處于飲水區(qū)域;③判斷豬頭是否靜止。若生豬已處于飲水區(qū)域超過2s,且2s 內(nèi)豬頭中心點(diǎn)坐標(biāo)方差均小于某一閾值,則視為靜止?fàn)顟B(tài),記錄一次飲水行為。
Fig.5 Drinking behavior judgment圖5 飲水行為判斷
通常情況下,生豬飲水行為至少維持約2s。流程③目的為排除部分生豬偶爾在飲水器附近玩耍情況,圖6 為飲水及非飲水行為連續(xù)幀。
Fig.6 Water and drinking behavior and consecutive frames圖6 飲水與非飲水行為連續(xù)幀
本實(shí)驗(yàn)通過飲水行為視頻片段判斷本文算法與文獻(xiàn)[7]中基于輪廓算法的識別能力,同時加入部分其它行為,包含玩耍、路過等作為干擾項(xiàng),每段視頻持續(xù)5s。實(shí)驗(yàn)結(jié)果見表3 及表4。本文算法對生豬飲水行為識別率達(dá)到96%,對其它非飲水行為識別率達(dá)到92%,總計(jì)識別率為94%,比基于輪廓算法的識別率高了3 個百分點(diǎn)??梢园l(fā)現(xiàn),兩者識別率的差異主要區(qū)別在飲水生豬上。通過觀察誤識別視頻片段,發(fā)現(xiàn)基于輪廓方法的誤識別視頻中存在更多的頭部扭曲現(xiàn)象,影響頭部輪廓提取,導(dǎo)致誤判。實(shí)驗(yàn)證明,基于目標(biāo)檢測的飲水行為識別率要高于基于輪廓的算法。
Table 3 Algorithm experimental results in this paper表3 本文算法實(shí)驗(yàn)結(jié)果
Table 4 Experimental results based on contour method表4 基于輪廓方法實(shí)驗(yàn)結(jié)果
本文提出一種基于深度學(xué)習(xí)的飲水識別算法。區(qū)別于其它基于輪廓的識別方法,本文算法僅通過整豬及豬頭位置進(jìn)行飲水行為判斷,不依賴于生豬輪廓。實(shí)驗(yàn)結(jié)果表明,本文算法識別率高于基于輪廓的飲水行為識別方法。整個識別過程僅需攝像設(shè)備,自動化程度較高且成本低。但本文算法需要通過大量數(shù)據(jù)進(jìn)行訓(xùn)練以保證目標(biāo)檢測的準(zhǔn)確性,同時需要攝像設(shè)備能清楚拍攝到飲水器。后續(xù)工作一方面要優(yōu)化目標(biāo)檢測算法,提高檢測結(jié)果精確度,另一方面要將算法的整豬識別與身份識別相結(jié)合,使系統(tǒng)能夠準(zhǔn)確識別出豬圈中每一頭豬各自的飲水情況。