初曉玉,祖麗楠
(青島科技大學 自動化與電子工程學院,山東 青島 266061)
1950年代開始,國外畜禽養(yǎng)殖業(yè)逐步向集約標準化過渡,規(guī)?;笄蒺B(yǎng)殖開始成為畜禽養(yǎng)殖的趨勢,其對環(huán)境的要求比較嚴格[1]。因此,畜禽環(huán)境監(jiān)控系統(tǒng)的開發(fā)從20世紀70年代開始成為了必然的發(fā)展趨勢[2]。目前,在荷蘭、美國、日本和以色列等發(fā)達國家,智能化的環(huán)境控制系統(tǒng)已經(jīng)普遍在現(xiàn)代化養(yǎng)殖場中應用。有些先進的智能控制系統(tǒng)甚至整合了投喂料、疫病診斷、畜禽污染物管理等功能,形成了智能養(yǎng)殖管理系統(tǒng)[3]。國內相關技術的研發(fā)主要集中在2 000年以后,涉及畜禽環(huán)境測量與監(jiān)控、單一指標的監(jiān)控和干預、多指標控制策略研究、硬件開發(fā)與系統(tǒng)組建等各方面,其工作主要側重于技術研發(fā)和驗證[4]。
目前,機器視覺在畜牧養(yǎng)殖行業(yè)的技術研究有很多[5]。如:在羊群活動分析任務中,F(xiàn)raess等人[6]通過計算視頻相鄰兩種中改變的像素數(shù)量占總像素的比值得出羊群的活動水平。在商業(yè)養(yǎng)殖場中,畜群的活動和突變可能與設備故障、病害等異常情況有關,將圖像轉換為動物分布指數(shù),通過分布指數(shù)的突然變化,可以實時發(fā)現(xiàn)肉雞舍的設備故障[7]。Li等人采用Mask-RCNN算法檢測家禽的梳理行為[8]。Kashiha等人采用橢圓擬合模型的方法將鳥的輪廓從背景中提取出來[9]。Aydin等人[10]將和相機安裝在測試走廊的中央采集母雞的圖像,使用背景減法分割形狀,然后使用橢圓形狀模型定義雞的大小和方向,從而對雞的躺臥事件數(shù)(NOL)和躺臥時延(LTL)進行分類并實時記錄。與人工計算結果相比,該自動監(jiān)測系統(tǒng)識別NOL的準確率為83%。隨后,Aydin等人通過提取特征向量對該圖像處理算法進行改進,實現(xiàn)了更高的準確性[11]。Kristensen和Cornou等人[12]設計了一種可以自動記錄肉雞活動的模型。在他們的研究中,他們記錄了三周內雞的活動水平。采用一種方法來檢測給定年齡的肉雞活動與規(guī)定水平的偏差,以便及時通知生產(chǎn)商。Riddle等人[13]使用ImageJ和MATLAB軟件研究了每只母雞站立、躺臥、棲息、拍打翅膀和吸塵行為所需的面積。但是,這中算法需要手動選擇完美的圖像。Zhuang等人[14]通過SVM模型對患病肉雞進行自動預測和分類,為獲得姿態(tài)特征,采用k均值聚類方法對圖像進行分割,采用細化方法獲得骨架結構。SVM模型的準確率達到99.47%,優(yōu)于其他機器學習算法。De Wet等人[15]是少數(shù)幾個基于機器視覺的肉雞稱重的例子之一,他們研究了肉雞的表面積和外圍輪廓作為體重描述參數(shù)用來估計肉雞每天的體重變化。他們在表面積的預測權重上實現(xiàn)了11%的平均相對誤差。
中國肉雞養(yǎng)殖規(guī)模飛速上漲,極大地提高了我國的肉雞產(chǎn)量[16]。高密度的規(guī)?;B(yǎng)殖同時也會對雞場的飼養(yǎng)管理方法提出更高要求,籠內雞群的密集接觸容易產(chǎn)生疾病問題,而傳染病的出現(xiàn)會威脅整個雞場的安全生產(chǎn)[4]。因此,應及早發(fā)現(xiàn)問題雞只并做隔離處理,防止傳染病的傳播。
目前肉雞養(yǎng)殖中能使用環(huán)境控制系統(tǒng)自動控制溫濕度等環(huán)境參數(shù),但對于病雞死雞的檢查仍需人工進入雞舍查看,這種方法監(jiān)測結果往往依賴于工作人員的實際操作,首先實時性較差,不能及時清理問題雞只,其次人工的頻繁進出查看會將細菌帶進雞舍,影響雞群的健康生長[17]。因此從很大程度上影響了我國畜禽規(guī)模養(yǎng)殖環(huán)境測控設備的深度發(fā)展?;趫D像處理的動物監(jiān)測系統(tǒng)可以做到自動、無創(chuàng)、連續(xù)地監(jiān)測和識別動物的不同行為及狀態(tài)。圖像處理技術可以同時監(jiān)測多個動物個體、工作時長沒有限制且不會出現(xiàn)視覺疲勞,因此機器視覺在動物監(jiān)測系統(tǒng)中的應用將成為必然趨勢。
上述基于機器視覺的畜牧養(yǎng)殖技術提供了多種檢測算法,但由于不同的檢測任務有不同的目標和約束條件,難度也會有所不同。因此,上述算法并不能很好地解決雞狀態(tài)檢測問題。原因如下:1)實際應用:上述討論的相關算法大多是基于實驗室的理想環(huán)境,實際應用中的限制條件更多,如拍攝角度、拍攝距離、雞群密度等。2)目標背景復雜:籠養(yǎng)雞不同于散養(yǎng)雞,雞籠內雞群密度較大,且多處于俯臥姿態(tài)且相機安裝高度受限,背景中雞群交錯重疊且混有大量雞籠框架信息。3)雞眼睛目標較?。河捎谂臄z距離和雞眼睛本身特征影響,其在圖像上的尺寸約為20*20像素,屬于小目標檢測,難度較高。4)雞眼睛不同形態(tài)特征不明顯:在雞狀態(tài)檢測任務中,需要識別出3種形態(tài):全睜、半睜、全閉。其中半睜狀態(tài)的雞眼睛相較于全睜狀態(tài)的特征并不明顯,容易導致目標分類錯誤。
針對以上問題,為了能夠更好地實現(xiàn)機器視覺技術在畜牧養(yǎng)殖業(yè)的實際應用,提出基于機器視覺的雞狀態(tài)檢測算法Clite-YOLOv5。具體貢獻如下:
1)改進特征提取網(wǎng)絡:提出lite-CBC3模塊,該模塊將C3模塊輕量化之后融合CBAM注意力機制,在減少參數(shù)量的同時充分利用淺層淺層卷積神經(jīng)網(wǎng)絡中特征信息的提取。
2)改進目標框抑制算法:提出Fuse-NMS算法對重疊框進行調整,該算法將置信度分數(shù)作為權重參數(shù),對重疊框按照該權重對目標框位置進行精修。提高了目標位置預測的精確度。
3)模型輕量化:提出采用深度可分離卷積對骨干網(wǎng)絡的普通卷積進行替換,減少模型參數(shù)量和計算量,從而更易于移動端部署。
以現(xiàn)代標準肉雞養(yǎng)殖場中籠養(yǎng)模式下的肉雞作為研究對象,采集了真實養(yǎng)殖環(huán)境中籠養(yǎng)雞的原始圖像。肉雞的籠養(yǎng)模式下,雞籠大小為1.2米*1米*0.6米,每個籠內約有12只雞。
異常雞不同于健康雞眼睛呈圓形,病雞眼睛多呈橢圓形或細長狀與健康雞只的眼睛形態(tài)有明顯區(qū)別,而死雞的眼睛呈緊閉狀態(tài)。由于正常情況下雞只閉眼以及半閉眼的狀態(tài)較少,因此現(xiàn)場采集時,采用多機位架設攝像頭采集視頻流的方式對雞眼睛狀態(tài)進行捕捉,后期對視頻流進行抽幀,將雞只眨眼時從睜眼到閉眼的狀態(tài)進行精確的捕捉。經(jīng)過上述步驟,共抽取到有效雞只照片2 146張,像素大小為1 920*1 080,保存格式為JPG。使用Labelimg[18]軟件對圖像進行標注,標注標簽分別為:0(全睜眼)、1(半睜眼)、2(閉眼),由于雞眼睛目標過小,因此選擇將整個雞頭作為標注對象,標注示例如圖1所示。各類別數(shù)量如表1所示。
表1 數(shù)據(jù)集各類別標簽數(shù)量
圖1 標注示例
目前目標檢測主要分為兩類,分別是兩階段和一階段檢測算法[19],其中兩階段算法主要有RCNN系列[20],此系列算法適合精度需求較的目標檢測任務,其缺點是檢測速度非常慢,不能滿足實時檢測的需求[21]。一階段算法以YOLO系列為代表,此系列算法采用回歸的思想,形成了端到端的檢測網(wǎng)絡[22],因此,YOLO系列在檢測速度上有明顯的提升。根據(jù)任務背景對于的實時性需求,以YOLOv5算法為基礎,分別針對網(wǎng)絡的特征提取能力、假陽性檢測框抑制能力以及模型的參數(shù)量3個方面進行改進。
YOLOv5網(wǎng)絡結構:
YOLOv5網(wǎng)絡結構共包括輸入端、主干、頸部和頭部網(wǎng)絡四部分[23]。輸入端主要包括Mosaic數(shù)據(jù)增強,自適應錨框計算等[24]。Mosaic數(shù)據(jù)增強極大的豐富了檢測物體的背景;自適應描框計算是在訓練時對真實框相對于預測框的位置偏移反復進行迭代更新,得到最合適的預測框[25]。在主干網(wǎng)絡中,YOLOv5采用了新的CSP-Darknet53,用于提取特征并向下級頸部網(wǎng)絡傳遞[26];頸部網(wǎng)絡將原本YOLOv4頸部網(wǎng)絡中的PAN結構替換為增加了CSP結構的New CSP-PAN,用于將提取的特征進行有效的融合[27];頭部網(wǎng)絡與YOLOv3相同,用于輸出檢測的目標信息[28]。
雞眼睛狀態(tài)的識別算法不僅要實現(xiàn)復雜雞籠環(huán)境下的高精度目標識別,還要考慮到嵌入式移動硬件的部署,因此,應盡可能地壓縮模型的參數(shù)量和計算量。為此,提出Clite-YOLOv5目標檢測算法,如圖2所示。Clite-YOLOv5采用提出的lite-CBC3模塊重構了主干網(wǎng)絡,該模塊對C3模塊進行了刪減并添加了輕量的CBAM注意力模塊[29],實現(xiàn)了對目標特征更好地提??;同時,改進了DIoU-NMS算法[30],增加了重疊目標框對于最終目標框的決定權,在改善目標檢測框被誤刪的同時提高檢測框的預測精度;使用深度可分離卷積[31]替代主干網(wǎng)絡中的普通卷積,極大地減少了模型的參數(shù)量,使其更適合在移動端部署。
圖2 Clite-YOLOv5結構示意圖
對YOLOv5的主干網(wǎng)絡進行了重構,在提高精度的同時盡可能壓縮模型大小。為了提取圖像中的特征信息,主干網(wǎng)絡中包含了大量的卷積層,但過多卷積層的堆疊并不能明顯提升模型效果,同時這些卷積層包含了大量的參數(shù),導致模型過于臃腫。因此改進了主干網(wǎng)絡中的C3模塊得到lite-C3模塊,如圖3所示,將C3模塊中橋接分支上的卷積層刪除,使另一分支輸出的特征圖直接與輸入特征圖進行拼接操作,能夠有效減少模型的參數(shù)量。
圖3 lite-C3模塊結構示意圖
隨著網(wǎng)絡層數(shù)的加深,高層語義信息越能被更好的提取,但高層的特征圖的分辨率通常較低。由于雞眼睛屬于小目標,且其處于復雜的雞籠環(huán)境中,過于深層的卷積操作可能會導致雞眼睛的特征信息難以提取。因此,為了能夠充分利用淺層卷積神經(jīng)網(wǎng)絡中的高分別率信息,最大限度地提取淺層網(wǎng)絡中小目標的特征信息,提出lite-CBC3模塊,該模塊在淺層特征提取階段就增加了較為輕量的注意力機制CBAM,實現(xiàn)從淺層到深層網(wǎng)絡的多特征提取,lite-CBC3模塊結構圖如圖4所示。
圖4 lite-CBC3模塊結構示意圖
lite-CBC3模塊能夠更好的區(qū)分背景與目標,提高小目標的檢測能力,同時彌補刪除部分卷積層導致的精度略有下降的問題。
YOLOv5原網(wǎng)絡中采用的是普通NMS非極大值抑制算法[32],該算法按照置信度分數(shù),將檢測框分為最高分數(shù)檢測框與其他檢測框,依次將其他檢測框與最高分數(shù)框進行IoU計算,并將IoU大于閾值的其他檢測框刪除,上述操作可以有效去掉重復的檢測框,該算法用公式(1)表示為:
(1)
其中:Si是置信度,BM為當前最大置信度預測框,Bi為其他預測框,Qth為IOU閾值。
但是當兩個相同類別的不同物體距離接近時,會因為IOU的計算值比較大,經(jīng)過NMS處理后只剩下一個預測框,導致漏檢。為此,有人提出DIOU-NMS算法,該算法在計算IOU的基礎上添加了一個懲罰項,將兩個框的中心點距離也作為過濾指標,其公式(2)如下所示:
RDIoU=ρ2(b,bgt)/c2
(2)
其中:b和bgt表示兩個預測框的中心點,ρ2(b,bgt)是兩個中心點之間的歐式距離,c是包含兩個預測框的最小方框的對角線長度。如果兩個預測框之間的IOU比較大,同時兩個框之間的中心距離也較大時,這兩個框就都不會被過濾掉。
從DIOU-NMS算法原理上來看,該算法可以在一定程度上解決檢測框誤刪的問題。但在雞眼睛的檢測任務中,雞舍中的雞只相互遮擋,不僅存在NMS算法誤刪檢測框的問題,同時還存在多個檢測框都不能準確預測的問題。因此,提出Fuse-NMS算法,該算法對DIoU-NMS進行了改進,保留了將要被刪除的預測框Bi,并將其與當前最大置信度的預測框BM進行加權融合,得到新預測框BMi的位置。新預測框BMi將根據(jù)BM和Bi的相關信息計算得到左上角及右下角坐標點的位置信息,計算方法如公式(3)、(4)所示。
f(pM,pi)=pM+(pi-pM)×Ci
(3)
BMiL(x,y)=(f(xML,xiL),f(yML,yiL))
BMiR(x,y)=(f(xMR,xiR),f(yMR,yiR))
(4)
公式(3)中,f(pM,pi)為計算新預測框BMi橫(縱)坐標值的函數(shù),pM為BM的橫(縱)坐標值,pi為Bi的橫(縱)坐標值,Ci為Bi的置信度分數(shù);公式(4)中BMiL(x,y)為新預測框BMi左上角坐標,BMiR(x,y)為新預測框BMi右下角角坐標。從上述公式可以看出,Bi的置信度分數(shù)越高,對新預測框的位置影響越大,從而盡可能高質量地保留了網(wǎng)絡對于目標位置的預測信息,使輸出結果更加精確。
Fuse-NMS算法流程如圖5所示,算法會根據(jù)置信度分數(shù)對檢測框進行排序并放入列表S,并將分數(shù)最高的檢測框BM移入最終檢測列表F,根據(jù)公式(2)依次計算剩余檢測框Bi的Si值,對于IoU值大于閾值Qth,即Si為0的檢測框,將視為重復框并進行加權融合,用融合后的Bmi位置信息更新列表F中的Bm;遍歷完列表S后剩余的檢測框再重新取出當前列表中置信度分數(shù)最高的檢測框BM,重復上述操作直至列表S為空,輸出最終檢測框列表F。
圖5 Fuse-NMS算法流程圖
為了能夠縮減模型的參數(shù)量和計算量,提高模型的運行效率,提出將主干網(wǎng)絡中的普通卷積替換為深度可分離卷積。深度可分離卷積(Depthwise Separable Convolution)是一種卷積神經(jīng)網(wǎng)絡中常用的卷積操作,與傳統(tǒng)的卷積操作相比,它有著更小的參數(shù)數(shù)量和更快的計算速度,同時仍然保持著較好的性能表現(xiàn)。
深度可分離卷積本質上由兩個部分組成。第一個部分是深度卷積(Depthwise Convolution),它是一種僅在輸入的每個通道上獨立進行的卷積操作,可以對每個通道單獨地提取特征,不同通道之間不會互相影響,這使得它的參數(shù)數(shù)量相較于傳統(tǒng)的卷積操作要小得多。但這一操作并不能將各通道上的信息進行交互融合,而一個目標的特征信息一般由多個通道的特征信息組合而成,因此需要第二個部分逐點卷積(Pointwise Convolution)來進行通道維度的信息融合,它是一種多通道卷積操作,其采用1*1卷積核與生成的特征圖進行卷積并在通道維度上進行疊加生成一張新的特征圖,從而增強了卷積的非線性性。
深度可分離卷積中深度卷積和逐點卷積的具體計算步驟如下:如圖6所示,假設輸入圖片的特征維度為W*H*D,其中W、H為輸入特征圖的寬高、D通道數(shù),假設深度卷積的卷積核大小為K。
圖6 深度可分離卷積
深度卷積(DW)的計算步驟為:對于輸入圖像的每一個通道,單獨使用一個K*K卷積核與輸入特征圖進行卷積操作,共得到D張輸出特征圖,則深度卷積的卷積運算量如公式(5)所示。
FLOPs(DW)=D×W×H×K×K
(5)
逐點卷積(PW)的計算步驟為:對深度卷積輸出的特征圖(W*H*D)使用N個1*1*D卷積核進行卷積運算,輸出得到N個新特征圖,即完成深度可分離卷積操作。則逐點卷積的卷積運算如公式(6)所示。
FLOPs(PW)=N×W×H×D
(6)
經(jīng)過深度可分離卷積的總運算量即為二者相加,如公式(7)所示。相較于普通卷積的運算量如公式(8)所示,深度可分離卷積的運算量大大減少。
FLOPs(DSC)=K×K×D+D×N
(7)
FLOPs(C)=(2×D×K2-1)×W×H×N
(8)
深度可分離卷積通過深度卷積和逐點卷積兩個操作的組合將普通卷積計算參數(shù)量的乘法運算轉變?yōu)榧臃ㄟ\算,實現(xiàn)了與傳統(tǒng)卷積相似的特征提取效果,但是相對于傳統(tǒng)卷積,它具有更快的計算速度和更少的參數(shù)數(shù)量及運算量,節(jié)省了計算和存儲成本,同時也減小了過擬合的風險,對于輕量級計算設備等資源限制性場景有著非常好的應用前景。
訓練參數(shù)設置如下:初始學習率為0.01;動量參數(shù)為0.937;權重衰減系數(shù)為0.000 5;迭代次數(shù)為300,每次迭代訓練圖像的數(shù)量為8;輸入圖像大小為640*640。實驗環(huán)境如表2所示。
表2 環(huán)境配置
本研究中,采用P(Precision)、R(Recall)和mAP(mean average Precision)作為客觀評價指標對訓練后的雞眼睛目標檢測模型進行評價。各指標計算公式分別如公式(9)、(10)、(11)所示:
(9)
(10)
(11)
其中:TP為正確識別雞眼睛目標的數(shù)量;FP為將背景錯誤地識別為雞眼睛目標的數(shù)量;FN為沒有識別出雞眼睛目標的數(shù)量;C為雞眼睛目標類別的數(shù)量;N為測試集圖片的數(shù)量;K為IoU閾值;P(k)表示精度;R(k)為召回率。
4.3.1 消融實驗
為驗證提出的改進方法的有效性,設計了消融實驗,給出了各模型的Recall、mAP、參數(shù)量以及檢測速度FPS。檢測結果如表3所示。
表3 消融實驗結果
從表3中可以看出,原YOLOv5算法的mAP為85.76%,精度較低;從YOLOv5(lite-CBC3)實驗結果可以看出,加入lite-CBC3模塊后,模型精度提升了4.67%,召回率提升了4.31%,可以看出該模塊對于雞眼睛的檢測有明顯的提升效果;實驗YOLOv5(Fuse-NMS)將原有NMS算法替換為Fuse-NMS,從實驗結果來看,mAP提高了3.59%,召回率提高了6.47%,在減少檢測框誤刪方面有明顯的提升效果;YOLOv5(深度可分卷積)實驗結果表示在替換為深度可分離卷積后,模型性能略有下降,但模型的參數(shù)量大大減少,更加易于移動的部署;Clite-YOLOv5為提出的最終模型,相較于原YOLOv5模型,提出的模型在精度上提高了7.12%,召回率提升了7.93%,參數(shù)量減少了19.79萬,同時檢測速度能夠滿足實時檢測任務的需要。
為了能夠直觀看出模型改進前后的檢測效果,選取了部分典型的檢測效果圖進行相關分析。
圖中包含了所有檢測類別,從圖8左邊的圖片中可以看出,原YOLOv5對于目標與背景較難區(qū)分且有一定遮擋時檢測效果不佳,出現(xiàn)漏檢現(xiàn)象;圖8右邊圖像中,當兩個目標較為靠近時出現(xiàn)了將兩個目標看作一個目標的錯誤;從圖9可以看出,提出的Clite-YOLOv5可以能夠檢測出左邊圖像中的漏檢目標,同時右邊兩個靠近的目標也能夠實現(xiàn)精確檢測。
圖8 YOLOv5檢測效果圖
圖9 Clite-YOLOv5檢測效果
4.3.2 主流算法比較
將提出的算法與現(xiàn)有主流算法進行比較,實驗結果如表4所示。從表中可以看出提出的Clite-YOLOv5模型檢測算法在檢測精度和檢測速度上都優(yōu)于其他算法。
表4 主流算法比較結果
為實現(xiàn)移動端部署雞狀態(tài)檢測技術,提出Clite-YOLOv5雞狀態(tài)檢測模型,該模型對YOLOv5的特征提取網(wǎng)絡進行了改進,提出了融合CBAM注意力機制的輕量化模塊lite-CBC3,輕量主干網(wǎng)絡的同時提高網(wǎng)絡對淺層特征的提取能力;提出將NMS非極大值抑制算法改為Fuse-NMS算法,該算法按照權重將重疊框信息作用于目標框,實現(xiàn)目標位置的微調,提高目標的定位精度;提出采用深度可分離卷積替換主干網(wǎng)絡中的普通卷積,減少模型參數(shù)量。實驗結果表明提出的算法檢測精度與速度都優(yōu)于現(xiàn)有算法,且適合在移動端部署。