李遠征,李章輝,王天一
(貴州大學 大數據與信息工程學院,貴陽 550025)
隨著對羊肉等羊產品需求量的增長,羊只的養殖正在從傳統的家庭散式養殖向規模化、信息化養殖方式轉變。在新的養殖模式下,對羊只的養殖管理技術也有了新的需求,信息化、智能化養殖手段日益受到養殖人員以及客戶的青睞[1-2]。羊只自動檢測是信息化、智能化養殖的基礎。在傳統的規模化羊只養殖產業中,通常采用在羊軀干部位手工標記或在羊耳處打上耳標,通過掃碼或RFID 的方式進行羊只檢測。手工標記不僅費時費力,且經常出現標記被污染的現象,且難以掌握所有羊只的數量及位置。此外,打耳標不僅會給羊造成不可逆的損傷,且需工作人員使用感應設備在羊群附近才能進行檢測。基于深度學習的目標檢測技術已經發展的較為成熟[3],通過養殖場中的監控設備非常容易獲得大量豐富的羊只個體信息,利用目標檢測算法提取圖像中羊的特征,訓練羊只目標檢測模型,從而實現羊只自動檢測[4],可大大降低養殖成本,提升工作效率。于意[5]結合通道注意力模塊SENet 和GIoU 損失函數的YOLOv3 算法,實現了奶山羊的檢測。但是,由于養殖環境背景復雜、個體之間相互遮擋,因此檢測效率仍然有待提升。為提高養殖場環境下羊只檢測效率,本文建立羊只圖像數據集,在YOLOv4[6]算法的基礎上加以改進,降低了模型的運算復雜度,減少羊只相互遮擋造成的漏檢,提高了檢測精度。
與通用數據集相比,養殖場環境中的羊只圖像存在背景復雜、目標旋轉、相互遮擋以及圖像模糊的問題。同時,使用原始網絡進行訓練檢測時,網絡訓練時間較長,且需要的顯存較大,對聚集在一起的羊只進行檢測時容易出現漏檢現象,影響檢測的精度。
針對上述問題,為提升目標檢測算法在養殖場環境下羊只檢測的性能,本文在YOLOv4 算法基礎上,對主干特征提取網絡、注意力機制和非極大值抑制3 個部分做出改進,改進后的算法網絡結構如圖1 所示。改進的YOLOv4 使用ShuffleNet V2[7]替代CSPDarkNet53 作為網絡的特征提取部分,使用大量的逐通道卷積(Depthwise Convolution,DWConv)降低網絡計算量,并使用深度可分離卷積[8]替換路徑聚合網絡(Path Aggregation Network,PANet)模塊中的普通卷積,實現YOLOv4 的輕量化;在特征提取網絡中引入注意力機制,利用基于卷積塊的注意模塊(Convolutional Block Attention Module,CBAM)[9]中的通道注意力機制和空間注意力機制,自適應地提升對羊只特征的關注度,減弱對無關特征的關注度,提升檢測的精度;在后處理部分改進非極大值抑制(Non -Maximum Suppression,NMS),使 用DIoU-NMS[10]替代傳統NMS,利用預測框之間的距離信息,保留被誤刪的預測框,減少漏檢現象的發生。

圖1 改進YOLOv4 目標檢測網絡結構Fig.1 Improved YOLOv4 object detectionnetwork structure
針對養殖場環境中羊只檢測這一任務,其解決方法應當能夠適用于各種規模的養殖企業,因而降低神經網絡的計算成本以及對硬件設備的要求,是羊只自動檢測算法走向實用的重要方向。更少的參數有助于將網絡集成到移動便攜設備,降低算法對軟硬件的要求,增加易用性。本文在不犧牲YOLOv4 網絡檢測性能的前提下,對該網絡進行輕量化處理,使用ShuffleNet V2 作為特征提取網絡,并將PANet 模塊的普通卷積替換為深度可分離卷積,節省了YOLOv4 算法在養殖場環境下過剩的性能,將參數量降低到了原來的1/6 左右,同時網絡的檢測精度以及檢測速度也得到了提升。
1.2.1 深度可分離卷積
深度可分離卷積就是先進行DW 卷積再進行點卷積,即1×1 常規卷積,可融合各個特征通道之間的信息,改變輸出通道數。常規卷積操作如圖2 所示,卷積核個數為N,每個卷積核的通道數為M。DW 卷積操作如圖3 所示,卷積核個數為M,每個卷積核的通道數為1,僅對輸入特征矩陣的一個通道進行卷積運算。常規卷積與DW 卷積的計算量如下:

圖3 逐通道卷積操作Fig.3 Depthwise convolution operation
式中:C1為常規卷積計算量,C2為逐通道卷積計算量,DK為卷積核尺寸,DF為輸出圖像尺寸,M為輸入通道數,N為輸出通道數。
顯然,DW 卷積的計算量僅為常規卷積的1/N。與普通卷積相比,DW 卷積具有較少的參數和較低的運算成本,對減輕網絡負擔起到了一定的作用。
然而,雖然DW 卷積操作的計算量大大減少,但通道之間沒有了信息交互,降低了網絡特征提取的性能。為了達到特征交互的目的,ShuffleNet V2 使用Channel Shuffle 增強了兩個分支之間的信息交流,在降低參數和計算復雜度的同時改善了模型效果。
1.2.2 ShuffleNet V2 單元結構
企業的財務管理是指企業對資產的管理。企業的財務管理貫穿到企業運營的各個方面,企業為了得到長期可持續發展,必須要重視財務管理,尤其是加強企業財務管理人員的培訓,合理地安排企業財務管理的方式,以提升企業財務管理的水平。企業財務管理主要包括投資、融資以及資金運行管理。
ShuffleNet V2 單元結構如圖4 所示。對于特征提取單元(圖4(a)),在每個單元開始時,X通道的輸入經通道被拆分為兩部分,一個分支不進行操作;另一個分支經過三層卷積后,通道數與特征尺寸不變,兩個分支進行拼接,通道總數仍為X,之后的Channel Shuffle 增強了兩個分支之間的信息交流。在下采樣單元(圖4(b)),對X通道的輸入特征同時處理兩次,一個分支經過兩層卷積層后通道數不變,特征尺寸減半;另一個分支經過三層卷積后通道數不變,特征尺寸減半,兩個分支拼接后通道總數為2X,特征尺寸減半。ShuffleNet V2 單元通過使用1×1 的卷積和3×3 的DW 卷積,極大的降低了網絡的計算量,同時利用Channel Shuffle 保證了提取到的特征質量。

圖4 ShuffleNet V2 單元Fig.4 ShuffleNet V2 unit
ShuffleNet V2 網絡中的Stage 通過圖4 中模塊(b)實現下采樣,再利用多個模塊(a)堆疊,實現了對目標特征的高效提取。本文使用的模型為ShuffleNet v2,Stage2 中模塊(a)堆疊3 次,Stage3 堆疊7 次,Stage4 堆疊3 次。當輸入為3×416×416 時,Stage2、Stage3 和Conv 層提取到的116×52×52、232×26×26 和1024×13×13 這3 種不同尺寸的特征作為PANet 的輸入,通過對不同尺寸的特征融合來加強感受視野,得到最顯著的特征。同時,為進一步降低網絡計算量,將PANet 結構中的3×3 常規卷積替換為深度可分離卷積。
近年來,圖標檢測技術研究發展迅速,但仍存在特征提取不足、識別精度低等問題。注意力機制可以從特征圖像中提取出更多的關鍵信息,抑制無用信息,從而有效地提高神經網絡模型的識別精度。由于養殖場中存在大量圍欄、地板等設施,且圖像質量易受到光照的影響。因此,獲取的羊只圖像中包含大量的無關信息及噪聲。而這些無關特征在神經網絡訓練時也會被反復地提取并用來預測,影響了網絡對羊只的檢測精度和普適性。因此,本文在神經網絡進行特征提取時,利用CBAM 的通道注意力機制(Channel Attention Module)和空間注意力機制(Spatial Attention Module),賦予對預測正確結果比較重要的通道(或空間)一個較高的權重,對預測結果較小影響或有負面影響的通道(或空間)賦予一個較低的權重。通過注意力機制對網絡特征的自適應調節,增強提取到的羊只特征,抑制提取到的無關背景、亮度和噪聲等特征,在增加少量參數和計算量的同時提高檢測的精度。
添加注意力模塊后的網絡結構如圖5 所示。CBAM 通過依次使用通道和空間注意力模塊重新校準特征圖的權重,對ShuffleNet V2 提取到的3 種不同尺度的特征進行有選擇地增強,并抑制無用特征,可以有效的抑制圖像中的噪聲。

圖5 添加CBAM 模塊的網絡結構Fig.5 Network structure of adding CBAM module
設輸入特征先通過通道注意力模塊生成一個一維通道注意力權重,然后通過空間注意力模塊生成一個二維空間注意力權重,通道注意力模塊和空間注意力模塊均使用平均池化和最大池化操作提取特征。前者將得到的特征經過共享多層感知機(Multilayer Perceptron,MPL)后對元素求和,后者則對得到的特征進行卷積,最后二者通過Sigmoid 函數歸一化得到通道和空間注意力權重。
由于養殖場環境中羊只數量較多,無論在休息、飲食、行走等狀態下,羊只之間均存在不同程度的遮擋情況。當羊只之間相互遮擋程度嚴重時,就很容易發生漏檢現象。因此,需要對目標檢測生成的預測框進行后處理,以提升檢測精度。
在目標檢測任務中,交并比(Intersection over Union,IoU)用來衡量兩個預測框的相似程度,其計算公式為
式中:UIo為IoU值,A、B為兩個不同的預測框。
DIoU在IoU的基礎上引入了一個與兩個邊界框距離相關的懲罰項R,該懲罰項定義為
式中:RDIoU表示懲罰項值,c表示包含A、B兩個預測框的最小包絡框對角線長度,a、b表示預測框A、B的中心點坐標,ρ表示計算二者的歐式距離(圖6中的d)。

圖6 DIoU 計算參數Fig.6 DIoU calculation parameters
在大規模檢測中,不僅需要考慮預測框與真實框的重疊區域,還要考慮二者中心點之間的距離,則DIoU-NMS 可定義為
式中:si表示B的得分值,ε為非極大值抑制的閾值。
使用DIoU-NMS 時,同時考慮重疊區域和兩個邊界框中心點之間的距離,增加了其在目標相互遮擋情況下的檢測性能。當羊只之間距離較近時,二者對應的預測框重疊面積會較大,即IoU 值較大,此時NMS 將認為二者為同一只羊的預測框,僅保留置信度最高的預測框,此時兩只羊的預測框僅保留下了一個,從而發生漏檢現象。而DIoU-NMS 在抑制其他預測框時會考慮到預測框之間的位置信息,當兩個預測框的中心點存在一定距離時,將認為二者之間是不同羊只的預測框,將其保留下來,避免了漏檢現象的發生。
實驗所用的羊只圖像來自于貴州省某養殖場內監控視頻。所用羊只彩色圖像共400 幅,為視頻中抽幀截取獲得,時間涵蓋了一天內的各個時段。使用圖像標注工具LabelImg,將羊只圖像標注為VOC格式數據集,圖7 為羊只標注圖像。由于養殖場環境復雜,羊的動作姿態豐富,通過對數據進行旋轉、添加噪聲和改變圖像亮度等操作,將數據集擴充為4 000 張。隨機選取其中3 200張作為訓練集,800 張作為測試集。

圖7 羊只標注圖像Fig.7 Sheep labeling picture
實驗環境為:Ubuntu18.04、python3.7、Pytorch1.2.0、顯卡型號為RTX 2080Ti、CPU 為i7-9700K。
為驗證檢測網絡的性能,使用AP(Average Precision)和FPS(Frame Per Second)作為主要評價指標。AP的計算公式如下:
式中:P為查準率(Precision),R為查全率(Recall),NTP為網絡將羊只目標檢測正確的數量,NFP為將非羊只目標誤檢為羊只目標的數量,NFN為網絡未檢測出的羊只數 量,P(r)為查準率-查全率(Precision -Recall)曲線,PAP為AP值。
實驗將輸入圖像尺寸設置為412×412,使用遷移學習技術,利用網絡在大型數據集中訓練得到的結果作為預訓練權重。使用凍結模型主干網絡方式進行訓練,凍結訓練輪數(Epoch)設為50,Batch size設為16,初始學習率設為0.001,總訓練輪數設為300,Batch size 設為8,初始學習率設為0.000 1;使用余弦退火方法動態調整學習率,使用Mosaic 對數據進行增強。
圖8 為本文算法訓練時的損失函數曲線。由此可以看出,在前50 輪損失波動較大,第50 輪解凍后,使用更小的學習率,曲線波動逐漸平緩,損失函數逐漸收斂。使用訓練300 輪得到的權重進行測試,AP達到了93.57%。

圖8 損失函數Fig.8 Loss function
為驗證本文改進模塊效果,對網絡改進部分進行了對比實驗,結果見表1。可以看出,使用輕量化特征提取網絡及輕量化模塊深度可分離卷積后,模型參數減少了84.01%,AP提升了1.42%,FPS增加了16;引入CBAM 后,在增加1.1%的參數量的情況下提升了0.03%的檢測精度,FPS減小了1;引入DIoU-NMS 后,模型參數量不變,AP提升了0.18%,FPS減小了6。本文各項改進均對AP有不同程度的提升,在輕量化模塊對參數量的大幅優化下,引入注意力機制對模型參數量有微量提升,DIoU-NMS 在滿足實時性要求的前提下提升了檢測精度。
使用經典網 絡 Faster -RCNN[11]、SSD[12]、YOLOv3[13]、YOLOv4、YOLOv5s[14]算法在本文數據集上進行訓練測試,訓練輪數設為100,將AP、FPS與模型參數量作為主要評價指標,得到的預測結果見表2。本文提出算法AP達到了91.95%,參數大小為41.13 MB,FPS達到了60。雖然FPS相較于原有YOLOv4 網絡有所提升,但在檢測精度得到提升的同時,參數大小相比YOLOv3 和YOLOv4 下降了80%左右;Faster-RCNN 作為兩階段目標檢測經典算法,其參數大小明顯高于其它網絡模型,FPS也僅有17,難以滿足實時檢測的要求;SSD 雖然參數大小及FPS與本文算法相近,但AP低于本文算法;YOLOv3 與YOLOv5 雖然FPS高于本文算法,但參數量較大且AP低于本文算法。

表2 經典檢測算法性能比較Tab.2 Classical detection algorithm performance comparison
圖9 為改進前后羊只目標檢測結果的對比。圖9(a)為使用YOLOv4 訓練100 輪得到的權重預測得到的結果;在相同條件下,圖9(b)是本文改進YOLOv4 算法獲得的結果。通過對比可以看出,原YOLOv4 算法對羊只檢測的結果存在定位不準確以及漏檢的情況;而改進的YOLOv4 檢測出的羊只目標定位更加準確,正確檢測到的羊只數量更多。

圖9 改進前后檢測結果對比Fig.9 Improve the comparison of before and after detection results
針對養殖場環境下對羊只進行實時檢測比較困難,羊只之間相互遮擋導致漏檢率較高等問題,本文提出基于YOLOv4 算法的改進方案。首先降低算法對軟硬件的要求,在網絡參數量減少2/3 左右的同時,提升了檢測的精度;其次,在特征提取過程中引入注意力機制,提升檢測精度;最后,使用DIoUNMS 引入預測框之間的位置信息,提升了網絡的檢測精度。實驗結果表明,本文算法在自制羊只數據集上取得了良好的表現,與原YOLOv4 方法相比,參數量明顯減少,檢測精度得到提升。
在后續的工作中,將繼續從實際場景下的應用角度出發,不斷研究和改進相關算法,嘗試融合疾病檢測、個體識別等任務,設計出更優良的羊只自動檢測模型。