李遠(yuǎn)征,李章輝,王天一
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴陽 550025)
隨著對羊肉等羊產(chǎn)品需求量的增長,羊只的養(yǎng)殖正在從傳統(tǒng)的家庭散式養(yǎng)殖向規(guī)?;?、信息化養(yǎng)殖方式轉(zhuǎn)變。在新的養(yǎng)殖模式下,對羊只的養(yǎng)殖管理技術(shù)也有了新的需求,信息化、智能化養(yǎng)殖手段日益受到養(yǎng)殖人員以及客戶的青睞[1-2]。羊只自動檢測是信息化、智能化養(yǎng)殖的基礎(chǔ)。在傳統(tǒng)的規(guī)?;蛑火B(yǎng)殖產(chǎn)業(yè)中,通常采用在羊軀干部位手工標(biāo)記或在羊耳處打上耳標(biāo),通過掃碼或RFID 的方式進(jìn)行羊只檢測。手工標(biāo)記不僅費時費力,且經(jīng)常出現(xiàn)標(biāo)記被污染的現(xiàn)象,且難以掌握所有羊只的數(shù)量及位置。此外,打耳標(biāo)不僅會給羊造成不可逆的損傷,且需工作人員使用感應(yīng)設(shè)備在羊群附近才能進(jìn)行檢測。基于深度學(xué)習(xí)的目標(biāo)檢測技術(shù)已經(jīng)發(fā)展的較為成熟[3],通過養(yǎng)殖場中的監(jiān)控設(shè)備非常容易獲得大量豐富的羊只個體信息,利用目標(biāo)檢測算法提取圖像中羊的特征,訓(xùn)練羊只目標(biāo)檢測模型,從而實現(xiàn)羊只自動檢測[4],可大大降低養(yǎng)殖成本,提升工作效率。于意[5]結(jié)合通道注意力模塊SENet 和GIoU 損失函數(shù)的YOLOv3 算法,實現(xiàn)了奶山羊的檢測。但是,由于養(yǎng)殖環(huán)境背景復(fù)雜、個體之間相互遮擋,因此檢測效率仍然有待提升。為提高養(yǎng)殖場環(huán)境下羊只檢測效率,本文建立羊只圖像數(shù)據(jù)集,在YOLOv4[6]算法的基礎(chǔ)上加以改進(jìn),降低了模型的運算復(fù)雜度,減少羊只相互遮擋造成的漏檢,提高了檢測精度。
與通用數(shù)據(jù)集相比,養(yǎng)殖場環(huán)境中的羊只圖像存在背景復(fù)雜、目標(biāo)旋轉(zhuǎn)、相互遮擋以及圖像模糊的問題。同時,使用原始網(wǎng)絡(luò)進(jìn)行訓(xùn)練檢測時,網(wǎng)絡(luò)訓(xùn)練時間較長,且需要的顯存較大,對聚集在一起的羊只進(jìn)行檢測時容易出現(xiàn)漏檢現(xiàn)象,影響檢測的精度。
針對上述問題,為提升目標(biāo)檢測算法在養(yǎng)殖場環(huán)境下羊只檢測的性能,本文在YOLOv4 算法基礎(chǔ)上,對主干特征提取網(wǎng)絡(luò)、注意力機(jī)制和非極大值抑制3 個部分做出改進(jìn),改進(jìn)后的算法網(wǎng)絡(luò)結(jié)構(gòu)如圖1 所示。改進(jìn)的YOLOv4 使用ShuffleNet V2[7]替代CSPDarkNet53 作為網(wǎng)絡(luò)的特征提取部分,使用大量的逐通道卷積(Depthwise Convolution,DWConv)降低網(wǎng)絡(luò)計算量,并使用深度可分離卷積[8]替換路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PANet)模塊中的普通卷積,實現(xiàn)YOLOv4 的輕量化;在特征提取網(wǎng)絡(luò)中引入注意力機(jī)制,利用基于卷積塊的注意模塊(Convolutional Block Attention Module,CBAM)[9]中的通道注意力機(jī)制和空間注意力機(jī)制,自適應(yīng)地提升對羊只特征的關(guān)注度,減弱對無關(guān)特征的關(guān)注度,提升檢測的精度;在后處理部分改進(jìn)非極大值抑制(Non -Maximum Suppression,NMS),使 用DIoU-NMS[10]替代傳統(tǒng)NMS,利用預(yù)測框之間的距離信息,保留被誤刪的預(yù)測框,減少漏檢現(xiàn)象的發(fā)生。
圖1 改進(jìn)YOLOv4 目標(biāo)檢測網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Improved YOLOv4 object detectionnetwork structure
針對養(yǎng)殖場環(huán)境中羊只檢測這一任務(wù),其解決方法應(yīng)當(dāng)能夠適用于各種規(guī)模的養(yǎng)殖企業(yè),因而降低神經(jīng)網(wǎng)絡(luò)的計算成本以及對硬件設(shè)備的要求,是羊只自動檢測算法走向?qū)嵱玫闹匾较?。更少的參?shù)有助于將網(wǎng)絡(luò)集成到移動便攜設(shè)備,降低算法對軟硬件的要求,增加易用性。本文在不犧牲YOLOv4 網(wǎng)絡(luò)檢測性能的前提下,對該網(wǎng)絡(luò)進(jìn)行輕量化處理,使用ShuffleNet V2 作為特征提取網(wǎng)絡(luò),并將PANet 模塊的普通卷積替換為深度可分離卷積,節(jié)省了YOLOv4 算法在養(yǎng)殖場環(huán)境下過剩的性能,將參數(shù)量降低到了原來的1/6 左右,同時網(wǎng)絡(luò)的檢測精度以及檢測速度也得到了提升。
1.2.1 深度可分離卷積
深度可分離卷積就是先進(jìn)行DW 卷積再進(jìn)行點卷積,即1×1 常規(guī)卷積,可融合各個特征通道之間的信息,改變輸出通道數(shù)。常規(guī)卷積操作如圖2 所示,卷積核個數(shù)為N,每個卷積核的通道數(shù)為M。DW 卷積操作如圖3 所示,卷積核個數(shù)為M,每個卷積核的通道數(shù)為1,僅對輸入特征矩陣的一個通道進(jìn)行卷積運算。常規(guī)卷積與DW 卷積的計算量如下:
圖3 逐通道卷積操作Fig.3 Depthwise convolution operation
式中:C1為常規(guī)卷積計算量,C2為逐通道卷積計算量,DK為卷積核尺寸,DF為輸出圖像尺寸,M為輸入通道數(shù),N為輸出通道數(shù)。
顯然,DW 卷積的計算量僅為常規(guī)卷積的1/N。與普通卷積相比,DW 卷積具有較少的參數(shù)和較低的運算成本,對減輕網(wǎng)絡(luò)負(fù)擔(dān)起到了一定的作用。
然而,雖然DW 卷積操作的計算量大大減少,但通道之間沒有了信息交互,降低了網(wǎng)絡(luò)特征提取的性能。為了達(dá)到特征交互的目的,ShuffleNet V2 使用Channel Shuffle 增強(qiáng)了兩個分支之間的信息交流,在降低參數(shù)和計算復(fù)雜度的同時改善了模型效果。
1.2.2 ShuffleNet V2 單元結(jié)構(gòu)
企業(yè)的財務(wù)管理是指企業(yè)對資產(chǎn)的管理。企業(yè)的財務(wù)管理貫穿到企業(yè)運營的各個方面,企業(yè)為了得到長期可持續(xù)發(fā)展,必須要重視財務(wù)管理,尤其是加強(qiáng)企業(yè)財務(wù)管理人員的培訓(xùn),合理地安排企業(yè)財務(wù)管理的方式,以提升企業(yè)財務(wù)管理的水平。企業(yè)財務(wù)管理主要包括投資、融資以及資金運行管理。
ShuffleNet V2 單元結(jié)構(gòu)如圖4 所示。對于特征提取單元(圖4(a)),在每個單元開始時,X通道的輸入經(jīng)通道被拆分為兩部分,一個分支不進(jìn)行操作;另一個分支經(jīng)過三層卷積后,通道數(shù)與特征尺寸不變,兩個分支進(jìn)行拼接,通道總數(shù)仍為X,之后的Channel Shuffle 增強(qiáng)了兩個分支之間的信息交流。在下采樣單元(圖4(b)),對X通道的輸入特征同時處理兩次,一個分支經(jīng)過兩層卷積層后通道數(shù)不變,特征尺寸減半;另一個分支經(jīng)過三層卷積后通道數(shù)不變,特征尺寸減半,兩個分支拼接后通道總數(shù)為2X,特征尺寸減半。ShuffleNet V2 單元通過使用1×1 的卷積和3×3 的DW 卷積,極大的降低了網(wǎng)絡(luò)的計算量,同時利用Channel Shuffle 保證了提取到的特征質(zhì)量。
圖4 ShuffleNet V2 單元Fig.4 ShuffleNet V2 unit
ShuffleNet V2 網(wǎng)絡(luò)中的Stage 通過圖4 中模塊(b)實現(xiàn)下采樣,再利用多個模塊(a)堆疊,實現(xiàn)了對目標(biāo)特征的高效提取。本文使用的模型為ShuffleNet v2,Stage2 中模塊(a)堆疊3 次,Stage3 堆疊7 次,Stage4 堆疊3 次。當(dāng)輸入為3×416×416 時,Stage2、Stage3 和Conv 層提取到的116×52×52、232×26×26 和1024×13×13 這3 種不同尺寸的特征作為PANet 的輸入,通過對不同尺寸的特征融合來加強(qiáng)感受視野,得到最顯著的特征。同時,為進(jìn)一步降低網(wǎng)絡(luò)計算量,將PANet 結(jié)構(gòu)中的3×3 常規(guī)卷積替換為深度可分離卷積。
近年來,圖標(biāo)檢測技術(shù)研究發(fā)展迅速,但仍存在特征提取不足、識別精度低等問題。注意力機(jī)制可以從特征圖像中提取出更多的關(guān)鍵信息,抑制無用信息,從而有效地提高神經(jīng)網(wǎng)絡(luò)模型的識別精度。由于養(yǎng)殖場中存在大量圍欄、地板等設(shè)施,且圖像質(zhì)量易受到光照的影響。因此,獲取的羊只圖像中包含大量的無關(guān)信息及噪聲。而這些無關(guān)特征在神經(jīng)網(wǎng)絡(luò)訓(xùn)練時也會被反復(fù)地提取并用來預(yù)測,影響了網(wǎng)絡(luò)對羊只的檢測精度和普適性。因此,本文在神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取時,利用CBAM 的通道注意力機(jī)制(Channel Attention Module)和空間注意力機(jī)制(Spatial Attention Module),賦予對預(yù)測正確結(jié)果比較重要的通道(或空間)一個較高的權(quán)重,對預(yù)測結(jié)果較小影響或有負(fù)面影響的通道(或空間)賦予一個較低的權(quán)重。通過注意力機(jī)制對網(wǎng)絡(luò)特征的自適應(yīng)調(diào)節(jié),增強(qiáng)提取到的羊只特征,抑制提取到的無關(guān)背景、亮度和噪聲等特征,在增加少量參數(shù)和計算量的同時提高檢測的精度。
添加注意力模塊后的網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示。CBAM 通過依次使用通道和空間注意力模塊重新校準(zhǔn)特征圖的權(quán)重,對ShuffleNet V2 提取到的3 種不同尺度的特征進(jìn)行有選擇地增強(qiáng),并抑制無用特征,可以有效的抑制圖像中的噪聲。
圖5 添加CBAM 模塊的網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 Network structure of adding CBAM module
設(shè)輸入特征先通過通道注意力模塊生成一個一維通道注意力權(quán)重,然后通過空間注意力模塊生成一個二維空間注意力權(quán)重,通道注意力模塊和空間注意力模塊均使用平均池化和最大池化操作提取特征。前者將得到的特征經(jīng)過共享多層感知機(jī)(Multilayer Perceptron,MPL)后對元素求和,后者則對得到的特征進(jìn)行卷積,最后二者通過Sigmoid 函數(shù)歸一化得到通道和空間注意力權(quán)重。
由于養(yǎng)殖場環(huán)境中羊只數(shù)量較多,無論在休息、飲食、行走等狀態(tài)下,羊只之間均存在不同程度的遮擋情況。當(dāng)羊只之間相互遮擋程度嚴(yán)重時,就很容易發(fā)生漏檢現(xiàn)象。因此,需要對目標(biāo)檢測生成的預(yù)測框進(jìn)行后處理,以提升檢測精度。
在目標(biāo)檢測任務(wù)中,交并比(Intersection over Union,IoU)用來衡量兩個預(yù)測框的相似程度,其計算公式為
式中:UIo為IoU值,A、B為兩個不同的預(yù)測框。
DIoU在IoU的基礎(chǔ)上引入了一個與兩個邊界框距離相關(guān)的懲罰項R,該懲罰項定義為
式中:RDIoU表示懲罰項值,c表示包含A、B兩個預(yù)測框的最小包絡(luò)框?qū)蔷€長度,a、b表示預(yù)測框A、B的中心點坐標(biāo),ρ表示計算二者的歐式距離(圖6中的d)。
圖6 DIoU 計算參數(shù)Fig.6 DIoU calculation parameters
在大規(guī)模檢測中,不僅需要考慮預(yù)測框與真實框的重疊區(qū)域,還要考慮二者中心點之間的距離,則DIoU-NMS 可定義為
式中:si表示B的得分值,ε為非極大值抑制的閾值。
使用DIoU-NMS 時,同時考慮重疊區(qū)域和兩個邊界框中心點之間的距離,增加了其在目標(biāo)相互遮擋情況下的檢測性能。當(dāng)羊只之間距離較近時,二者對應(yīng)的預(yù)測框重疊面積會較大,即IoU 值較大,此時NMS 將認(rèn)為二者為同一只羊的預(yù)測框,僅保留置信度最高的預(yù)測框,此時兩只羊的預(yù)測框僅保留下了一個,從而發(fā)生漏檢現(xiàn)象。而DIoU-NMS 在抑制其他預(yù)測框時會考慮到預(yù)測框之間的位置信息,當(dāng)兩個預(yù)測框的中心點存在一定距離時,將認(rèn)為二者之間是不同羊只的預(yù)測框,將其保留下來,避免了漏檢現(xiàn)象的發(fā)生。
實驗所用的羊只圖像來自于貴州省某養(yǎng)殖場內(nèi)監(jiān)控視頻。所用羊只彩色圖像共400 幅,為視頻中抽幀截取獲得,時間涵蓋了一天內(nèi)的各個時段。使用圖像標(biāo)注工具LabelImg,將羊只圖像標(biāo)注為VOC格式數(shù)據(jù)集,圖7 為羊只標(biāo)注圖像。由于養(yǎng)殖場環(huán)境復(fù)雜,羊的動作姿態(tài)豐富,通過對數(shù)據(jù)進(jìn)行旋轉(zhuǎn)、添加噪聲和改變圖像亮度等操作,將數(shù)據(jù)集擴(kuò)充為4 000 張。隨機(jī)選取其中3 200張作為訓(xùn)練集,800 張作為測試集。
圖7 羊只標(biāo)注圖像Fig.7 Sheep labeling picture
實驗環(huán)境為:Ubuntu18.04、python3.7、Pytorch1.2.0、顯卡型號為RTX 2080Ti、CPU 為i7-9700K。
為驗證檢測網(wǎng)絡(luò)的性能,使用AP(Average Precision)和FPS(Frame Per Second)作為主要評價指標(biāo)。AP的計算公式如下:
式中:P為查準(zhǔn)率(Precision),R為查全率(Recall),NTP為網(wǎng)絡(luò)將羊只目標(biāo)檢測正確的數(shù)量,NFP為將非羊只目標(biāo)誤檢為羊只目標(biāo)的數(shù)量,NFN為網(wǎng)絡(luò)未檢測出的羊只數(shù) 量,P(r)為查準(zhǔn)率-查全率(Precision -Recall)曲線,PAP為AP值。
實驗將輸入圖像尺寸設(shè)置為412×412,使用遷移學(xué)習(xí)技術(shù),利用網(wǎng)絡(luò)在大型數(shù)據(jù)集中訓(xùn)練得到的結(jié)果作為預(yù)訓(xùn)練權(quán)重。使用凍結(jié)模型主干網(wǎng)絡(luò)方式進(jìn)行訓(xùn)練,凍結(jié)訓(xùn)練輪數(shù)(Epoch)設(shè)為50,Batch size設(shè)為16,初始學(xué)習(xí)率設(shè)為0.001,總訓(xùn)練輪數(shù)設(shè)為300,Batch size 設(shè)為8,初始學(xué)習(xí)率設(shè)為0.000 1;使用余弦退火方法動態(tài)調(diào)整學(xué)習(xí)率,使用Mosaic 對數(shù)據(jù)進(jìn)行增強(qiáng)。
圖8 為本文算法訓(xùn)練時的損失函數(shù)曲線。由此可以看出,在前50 輪損失波動較大,第50 輪解凍后,使用更小的學(xué)習(xí)率,曲線波動逐漸平緩,損失函數(shù)逐漸收斂。使用訓(xùn)練300 輪得到的權(quán)重進(jìn)行測試,AP達(dá)到了93.57%。
圖8 損失函數(shù)Fig.8 Loss function
為驗證本文改進(jìn)模塊效果,對網(wǎng)絡(luò)改進(jìn)部分進(jìn)行了對比實驗,結(jié)果見表1??梢钥闯?,使用輕量化特征提取網(wǎng)絡(luò)及輕量化模塊深度可分離卷積后,模型參數(shù)減少了84.01%,AP提升了1.42%,F(xiàn)PS增加了16;引入CBAM 后,在增加1.1%的參數(shù)量的情況下提升了0.03%的檢測精度,F(xiàn)PS減小了1;引入DIoU-NMS 后,模型參數(shù)量不變,AP提升了0.18%,F(xiàn)PS減小了6。本文各項改進(jìn)均對AP有不同程度的提升,在輕量化模塊對參數(shù)量的大幅優(yōu)化下,引入注意力機(jī)制對模型參數(shù)量有微量提升,DIoU-NMS 在滿足實時性要求的前提下提升了檢測精度。
使用經(jīng)典網(wǎng) 絡(luò) Faster -RCNN[11]、SSD[12]、YOLOv3[13]、YOLOv4、YOLOv5s[14]算法在本文數(shù)據(jù)集上進(jìn)行訓(xùn)練測試,訓(xùn)練輪數(shù)設(shè)為100,將AP、FPS與模型參數(shù)量作為主要評價指標(biāo),得到的預(yù)測結(jié)果見表2。本文提出算法AP達(dá)到了91.95%,參數(shù)大小為41.13 MB,F(xiàn)PS達(dá)到了60。雖然FPS相較于原有YOLOv4 網(wǎng)絡(luò)有所提升,但在檢測精度得到提升的同時,參數(shù)大小相比YOLOv3 和YOLOv4 下降了80%左右;Faster-RCNN 作為兩階段目標(biāo)檢測經(jīng)典算法,其參數(shù)大小明顯高于其它網(wǎng)絡(luò)模型,F(xiàn)PS也僅有17,難以滿足實時檢測的要求;SSD 雖然參數(shù)大小及FPS與本文算法相近,但AP低于本文算法;YOLOv3 與YOLOv5 雖然FPS高于本文算法,但參數(shù)量較大且AP低于本文算法。
表2 經(jīng)典檢測算法性能比較Tab.2 Classical detection algorithm performance comparison
圖9 為改進(jìn)前后羊只目標(biāo)檢測結(jié)果的對比。圖9(a)為使用YOLOv4 訓(xùn)練100 輪得到的權(quán)重預(yù)測得到的結(jié)果;在相同條件下,圖9(b)是本文改進(jìn)YOLOv4 算法獲得的結(jié)果。通過對比可以看出,原YOLOv4 算法對羊只檢測的結(jié)果存在定位不準(zhǔn)確以及漏檢的情況;而改進(jìn)的YOLOv4 檢測出的羊只目標(biāo)定位更加準(zhǔn)確,正確檢測到的羊只數(shù)量更多。
圖9 改進(jìn)前后檢測結(jié)果對比Fig.9 Improve the comparison of before and after detection results
針對養(yǎng)殖場環(huán)境下對羊只進(jìn)行實時檢測比較困難,羊只之間相互遮擋導(dǎo)致漏檢率較高等問題,本文提出基于YOLOv4 算法的改進(jìn)方案。首先降低算法對軟硬件的要求,在網(wǎng)絡(luò)參數(shù)量減少2/3 左右的同時,提升了檢測的精度;其次,在特征提取過程中引入注意力機(jī)制,提升檢測精度;最后,使用DIoUNMS 引入預(yù)測框之間的位置信息,提升了網(wǎng)絡(luò)的檢測精度。實驗結(jié)果表明,本文算法在自制羊只數(shù)據(jù)集上取得了良好的表現(xiàn),與原YOLOv4 方法相比,參數(shù)量明顯減少,檢測精度得到提升。
在后續(xù)的工作中,將繼續(xù)從實際場景下的應(yīng)用角度出發(fā),不斷研究和改進(jìn)相關(guān)算法,嘗試融合疾病檢測、個體識別等任務(wù),設(shè)計出更優(yōu)良的羊只自動檢測模型。