楊秋妹 陳淼彬 黃一桂 肖德琴 劉又夫 周家鑫
(1.華南農業大學數學與信息學院, 廣州 510642; 2.農業農村部華南熱帶智慧農業技術重點實驗室, 廣州 510642)
豬只盤點是豬場集約化資產管理中的一項重要任務。依據準確的豬只數量可以制定更加合理的養殖計劃,幫助養殖戶降低成本,減少不必要的損失,提高養殖場收益。傳統的人工盤點方法需要高勞動力成本,且容易受到豬群重疊、相互遮擋、攝像頭視角或者光照等影響,容易出錯。另外,人工盤點會引起豬只的應激反應,出現豬只受驚或亂跑,增加盤點的難度,無法保證盤點的準確性。
隨著規模化、信息化智慧養豬建設的快速推進,計算機視覺算法因其具有無侵擾、不間斷、成本低等優勢,成為智能豬只盤點方法的主要發展趨勢[1]。早期的視覺豬只盤點方法利用形態學算法和區域生長法相結合的方法將背景與前景分割,從而實現豬只數量的統計[2-3]。深度學習方法在處理復雜遮擋計數問題上有很大的優勢[4-8]。目前,有不少的研究人員已經將深度學習應用于豬只盤點。基于神經網絡的密度圖回歸的計數方法受到不少研究人員的重視[9-11]。此類方法利用像素將圖像轉換為密度圖回歸,并對密度圖進行積分得到計數。文獻[12]提出了一個自底向上的豬只身體關鍵點檢測方法,然后再基于STRF(空間敏感時序響應)方法進行豬只計數。文獻[13]用改進的Mask R-CNN網絡減少了因光照和生豬遮擋致使豬只目標漏檢的問題,其網絡在12~22頭豬只的單欄的計數準確率達到98%。
綜上,基于深度學習的豬只盤點算法雖然優于人工計數方法,但由于豬是一種群居的動物,通常挨靠在一起致使豬只互相遮擋重疊。而且同一豬舍的豬只顏色相近,當豬只體型發生變化的時候,更容易導致豬只個體難以區分,使得識別難度增大。因此,針對豬只相互遮擋、體型變化或者光線暗的情況下導致漏檢或者多檢的問題,本文結合注意力機制和多尺度特征檢測,在YOLO v5n網絡的基礎上進行改進,擬實現一種改進YOLO v5n豬只計數算法。
本文的實驗數據來源于5種不同的豬場數據集,分別是3個自建實驗豬場數據集:廣州蘿崗實驗豬場、云浮范金樹實驗豬場、隔離舍實驗豬場,以及兩個公開數據集:文獻[14-15]公開的數據集。廣州蘿崗實驗豬場選取長白后備母豬為實驗對象,豬欄尺寸為4 m×5 m,單欄內飼養4頭豬,豬只數量較少;云浮范金樹實驗豬場選取育肥期的長白母豬為實驗對象,群養豬欄尺寸為5 m×8 m,單欄內平均飼養40頭豬,豬只數量較多,但局限于攝像頭拍照角度肉眼可見的豬只數量平均為26頭;隔離舍實驗豬場選取育肥期的長白母豬為實驗對象,豬欄尺寸為2 m×4 m,單欄內飼養6頭豬;文獻[14]的數據集描述了17個不同的豬圈位置,包括1.5~5.5月齡豬只,單欄內飼養的豬只數量有7、8、10、11、14、15頭,既包括日間拍攝的圖像也包括晚上拍攝的圖像;文獻[15]實驗豬場的單個豬圈尺寸為5.8 m×1.9 m,有8頭豬,體質量約為30 kg。各實驗豬場信息如表1所示。

表1 各豬場信息Tab.1 Information of pig farms
廣州蘿崗豬場、云浮范金樹豬場、隔離舍豬場均采用海康威視DS-2CD3345-I型紅外網絡攝像頭。廣州蘿崗豬場每天24 h共持續32 d對豬欄進行監控,但只選取08:00—18:00豬只比較活躍的時段。云浮范金樹豬場與隔離舍豬場每天24 h不間斷拍攝監控,同時選取白天活躍時段和夜晚睡眠階段拍攝。
對采集到的視頻每隔35幀截取一幅圖像,并去除相似度過高、清晰度較差的圖像。為更準確地計算單欄內豬只數量,排除其他相鄰欄位豬只對實驗計數結果的影響,本文對包含多個豬欄的圖像進行了掩膜處理,在原始圖像上以盤點豬欄為界限,添加一掩膜層,遮住其他欄位的豬只,掩膜的處理效果如圖1所示。

圖1 掩膜處理圖像Fig.1 Mask processing pictures
最終數據集共有3 000幅圖像,并用LabelImg標注軟件進行標注。整個豬只盤點數據集按6∶2∶2的比例劃分訓練集、驗證集和測試集。為保證數據集的多樣性,利用Python腳本程序分別從各豬場隨機選取600幅圖像,其中訓練集360幅圖像,驗證集和測試集均為120幅圖像。依據上述方法本文構建的豬只盤點數據集如表2所示。

表2 豬只盤點數據集Tab.2 Pig counting dataset
本文提出了一種改進YOLO v5n豬只計數方法。首先,構建多場景的豬只盤點數據集(包括不同豬舍尺寸、不同群養豬只數量、不同遮擋程度、不同拍攝角度、不同光線強度等)。該方法在處理豬只遮擋重疊的問題,通過利用通道注意力機制在篩選特征時,能夠提高感興趣的區域信息權重,弱化與當前任務無關的特征信息以提升模型效果[16],同時增加多尺度物體檢測層,獲得更豐富全面的特征信息,增強模型在復雜場景下多尺度學習的能力;并對邊界框的損失函數以及加權的非極大值抑制(Non-maximum suppression,NMS)進行改進,提高模型在遮擋場景下的檢測精度和速度,降低漏檢率。最后經過非極大值抑制(DIoU-NMS)處理輸出最終預測結果,并計算得到最終的豬只數量。本文方法流程如圖2所示。

圖2 本文方法流程圖Fig.2 Flow chart of proposed method
YOLO v5[17]是基于YOLO v4算法基礎上進行改進,同屬于單階段目標檢測算法,其速度與精度較之前版本都得到了大幅提升。YOLO v5支持5個不同規模的模型,根據網絡的深度和寬度可分為YOLO v5n、YOLO v5s、YOLO v5m、YOLO v5l、YOLO v5x版本,其相對應模型的檢測精度和模型參數量依次提高。為了從上述5個不同規模的模型中選擇更適合豬只盤點的模型,使用本文的豬只盤點數據集重新訓練上述5個模型,并分別用訓練好的模型對測試數據集中的圖像進行測試。其實驗結果如表3所示,平衡模型的精度、參數量以及在豬只盤點實際應用中實時5性要求3個指標,在精度相近的情況下,YOLO v5n模型的參數量只有1.9×106,其單幅圖像平均識別時間僅為0.017 4 s,相比較于參數量最多的YOLO v5x,平均精確度(Average precision,AP)相差1.49個百分點,但單幅圖像平均識別時間快了 48.4 ms。 其次,與YOLO v5s模型相比,雖然識別速度相近,但兩者的參數量相差近4倍。由于在豬場的盤點應用中,常采用邊緣設備進行豬只盤點,此類設備對算法的處理速度要求較高。因此,本文最終選用參數量最少、識別速度最快的YOLO v5n作為本次實驗的基礎模型以便能夠實時獲取豬場豬只總數。

表3 YOLO v5不同規模模型的準確度比較Tab.3 Accuracy comparison of different scale models of YOLO v5
如圖3所示,YOLO v5n網絡結構分為輸入端、主干特征提取網絡Backbone、頸部Neck網絡和輸出端共4部分。

圖3 YOLO v5n網絡結構圖Fig.3 YOLO v5n network structure diagram
YOLO v5n的輸入端對輸入圖像預處理,即將任意尺寸的輸入圖像縮放為網絡的輸入尺寸,并進行Mosaic數據增強豐富圖像檢測目標的背景,而且能夠提高小目標的檢測效果,并且在歸一化計算時一次性處理多幅圖像。其次,YOLO 系列檢測算法中,針對不同的數據集往往需要設定特定長寬的錨框。在網絡訓練階段,模型在初始錨框的基礎上輸出邊界框,從而跟真實框對比,計算兩者間的差距,再反向更新,迭代網絡參數。在YOLO v3和YOLO v4檢測算法中,在網絡訓練前單獨采用K-Means聚類方法以獲取不同數據集的最佳錨框值。但在YOLO v5檢測算法中通過內嵌自適應錨框計算方法,每次訓練前對數據集標注信息進行計算,得到該數據集標準信息針對默認錨框的最佳召回率,當最佳召回率大于或等于98%時,則不需要更新錨框;否則,重新計算符合該數據集的錨框,從而能夠自適應地計算出不同訓練集中最佳錨框值。
主干特征提取網絡Backbone使用CSPDarknet53結構,且加入Conv卷積,CSP及SPPF[18]結構。通過使用一個卷積核尺寸為6×6,步長為2的卷積結構代替Focus結構,既能達到2倍下采樣特征圖的效果,又可避免多次采用切片操作,提高計算和推理速度[19]。其次,不同于YOLO v4,YOLO v5n設計了兩種CSP結構,CSP1_X結構應用于主干特征提取網絡Backbone中,CSP2_X結構應用于Neck網絡中,其結構圖如圖4所示。SPPF結構(圖5)與SPP結構一樣,均采用1×1、5×5、9×9和13×13的最大池化方式,進行多尺度特征融合,但SPPF結構可以降低每秒浮點運算次數,運行的更快。

圖4 兩種CSP結構Fig.4 Two CSP structures

圖5 SPPF結構Fig.5 SPPF structure
Neck部分將特征金字塔的不同層級的圖像組合在一起來完成多尺度混合,并將圖像特征傳遞給預測層[20]。該部分仍采用FPN和PANet結合的雙金字塔結構。特征金字塔網絡(Feature pyramid networks,FPN)自頂向下,將高層的語義特征往下傳遞,得到預測的特征圖[21]。路徑聚合網絡(Path aggregation network,PANet)是針對FPN只增強了語義信息,但并沒有對定位信息進行傳遞的缺點[22]。通過在特征金字塔FPN的后面增加一個自底向上的路徑,用底層精確的定位信息來增強整個特征層次結構,從而縮短底層特征與高層特征之間的信息路徑。
輸出端采用GIoU Loss作為邊界框損失函數,其解決了當邊界框與真實框沒有交集時,交并比(Intersection over union,IoU)等于0,其損失函數導數也為0,從而無法優化兩框重疊的問題。在目標檢測的最后處理過程中,YOLO v5n使用加權的NMS方式篩選N個目標框。
注意力機制是通過參考人的視覺感知能力,即人在處理視覺信息初期會集中專注于當前情景下重點區域,而其他區域將相應降低,這為更高層級的視覺感知和邏輯推理以及更加復雜的計算機視覺處理任務提供更易于處理且更相關的信息[23]。
在深度卷積神經網絡中,通過構建一系列的卷積層、非線性層和下采樣層使得網絡能夠從全局感受野上提取圖像特征來描述圖像,但歸根結底只是建模了圖像的空間特征信息而沒有建模通道之間的特征信息,整個特征圖的各區域均被平等對待。然而,在豬只遮擋重疊、光線不足、皮毛顏色相似等實際豬場生產場景下,原始YOLO v5n算法難以檢測到被遮擋的豬只,或者容易漏檢一些邊緣區域的豬只。在目標檢測領域中每一個目標都被周圍背景所包圍,目標物體周圍的環境有著豐富的上下文信息,這可以作為網絡判斷目標類別和定位的重要輔助信息[24]。通常在實際豬場生產圖中,通過對目標區域的特征進行加權能使其更有效地定位到待檢測豬只,提高網絡性能[25]。SE-Net通道注意力模塊基于特征圖上通道間的相關關系,網絡通過損失函數去學習權重,強化有效特征,弱化低效或無效特征,提高了特征圖的表現能力,從而提高了模型識別精度,能夠在光線不足、密集遮擋的情況下有效檢測出目標物體[26-27]。
針對YOLO v5n目標檢測算法存在邊界框定位不夠準確導致難以區分重疊物體、魯棒性差等問題,本文在主干特征提取網絡中加入SE-Net(Squeeze-and-Excitation networks)通道注意力模塊來改進算法,在特征圖的通道間建立特征映射,使網絡自動學習全局特征信息并突出重要的特征信息,同時弱化對當前任務無關的特征信息,使模型更專注于訓練遮擋對象的目的。
SE-Net結構單元圖如圖6所示,SE-Net模塊具體含括3個操作:壓縮(Squeeze)、激勵(Excitation)和縮放(Scale)。首先對原始輸入進行全局平均池化操作(即壓縮過程)將原始特征層維度H×W×C壓縮為1×1×C,使得感受野更大,得到每個通道的全局特征。然后用兩個全連接層(第一個全連接層用于降低維度,另一個還原為原始的維度)融合各特征通道的特征圖信息。再使用Sigmoid函數對權值進行歸一化。最后是縮放操作,將激勵操作后輸出的權重映射為一組特征通道的權重,然后與原始特征圖的特征相乘加權,實現對原始特征在通道維度上的特征重標定。網絡通過加強訓練SE-Net模塊學習后的特征,提高了豬只遮擋的通道權重,指導模型更側重學習豬只間遮擋的特征信息,進而提升模型在豬只遮擋場景下的檢測性能[28]。

圖6 SE-Net結構單元圖Fig.6 SE-Net block
如圖7所示,本文將SE-Net通道注意力模塊分別加入到原始YOLO v5n主干特征提取網絡Backbone的C3卷積模塊后(圖7a)和頸部網絡Neck的C3卷積模塊后(圖7b)。兩種添加方法的檢測結果對比如圖8所示:圖8a為原始YOLO v5n檢測效果圖,漏檢的情況比較嚴重;圖8b為在主干特征提取網絡中加入SE-Net模塊,圖8c為在頸部網絡中加入SE-Net模塊,加入SE-Net注意力模塊后漏檢豬只數量相對較小,但在主干特征提取網絡中引入相比于在頸部網絡中能夠更好地檢測到遮擋豬只。因此本文采用在YOLO v5n主干特征提取網絡引入SE-Net通道注意力模塊。

圖7 引入SE-Net通道注意力模塊Fig.7 Introducing SE-Net channel attention module
原始YOLO v5n網絡使用3種類型的輸出特征圖來檢測不同尺寸的物體,當輸入圖像尺寸為1 280像素×1 280像素時,其對應的3種檢測尺度分別為40像素×40像素、80像素×80像素、160像素×160像素,用來檢測大、中、小目標,其感受野大小依次遞減。在現有的3個尺度特征圖上進行豬只檢測,對于某些尺度超大的豬只,感受野最大的特征圖可能仍然提取不到有效的高級語義信息,相反,對于某些尺度超小的豬只,感受野最小的特征圖也會丟失其輪廓和位置信息[29]。在實際豬場應用場景中,豬只姿態各式各樣,豬只間相互擁擠遮擋,而且,由于攝像頭安裝位置不同,其拍攝的豬只體積、體形也有較大的差異。例如,受限于豬場的高度,范金樹實驗豬場的攝像頭拍攝出豬只形狀既存在超大尺度的豬只,也存在超小尺度的豬只,所以映射到圖像中的豬只也有多種不同尺度。為了應對復雜密集遮擋的實際生產豬場場景,得到更加豐富全面的特征信息,本文在原有3個不同尺度的檢測層的基礎上,增加一個超小尺度的檢測層[30]。選擇此尺度的檢測層對于超小的豬只來說,能夠保留下有效語義信息的可能性更大;另外,對尺寸超大的豬只來說,能夠提取到更高層次的語義信息,同時也包含了更多的輪廓信息和位置信息,將此類特征圖融合之后會使得融合之后的特征信息更加豐富全面,從而有利于提高豬只定位的準確率[29]。
本文在原始YOLO v5n的主干網絡中加入SE-Net模塊的基礎上,在32倍下采樣后繼續增加一次下采樣得到20×20的特征圖,同時頸部Neck網絡相應增加一次上采樣,與主干網絡的第8層拼接(原始頸部網絡只經過兩次上采樣,分別與主干網絡的第6層和第4層拼接)。改進后的YOLO v5n頸部網絡經過3次上采樣后再進行下采樣操作。即主干網絡在32倍下采樣后繼續一次2倍下采樣得到20×20的特征尺寸圖。同時,在頸部網絡增加一次2倍上采樣,然后經過8、16、32倍下采樣分別得到160×160、80×80、40×40尺度的檢測層特征圖。再進行64倍的下采樣得到20×20尺度的檢測層特征圖。
經過改進后的YOLO v5n網絡(圖9)存在4個檢測層,加深了網絡的深度,進一步提高模型的表達能力,使得模型能夠提取到更高層次更豐富的語義信息,幫助模型在復雜豬舍場景下提取多尺度特征信息,將復雜的目標區分開來,提升模型的檢測性能[31]。在豬只遮擋密集場景下YOLO v5n網絡改進前后的檢測效果如圖10所示,左邊為原始YOLO v5n檢測結果,右邊為增加一個檢測層后的檢測結果。由圖10可以看出,改進后的模型在豬只擠靠相互遮擋的場景下,仍能更好地檢測識別出被大面積遮擋的豬只,且也可檢測出圖10d中邊緣的豬只,而原始YOLO v5n模型并沒有檢測到被大面積遮擋的豬只。由此可見添加一個檢測層后的模型在復雜遮擋場景下的檢測效果更佳。

圖9 添加一個檢測層后的YOLO v5n網絡結構Fig.9 YOLO v5n network structure after adding a detection layer

圖10 增加檢測層前后效果對比Fig.10 Comparison of effects before and after adding a detection layer
根據2.1節,YOLO v5n的邊界框(Bounding box)采用GIoU Loss作為損失函數,在IoU的基礎上,解決了邊界框不重合的問題,但當邊界框與真實框有包含情況時(如圖11所示,綠色和紅色分別表示目標框和預測框),GIoU退變為IoU,導致難以分辨兩框的相對位置關系,此時GIoU的優勢消失[32]。因此,GIoU不能準確反映兩個邊界框之間的重疊關系,也不能給出一個邊界框被另一個邊界框包圍時的優化方向[33]。文獻[34]提出的CIoU是在DIoU的基礎上,不僅考慮邊界框的重疊區域和中心點的距離,還權衡了邊界框的縱橫比,彌補了GIoU損失函數的不足。因此,本文采用更優的CIoU Loss測量方法,包括重合面積、中心距離和寬高比3個測量維度,具有更快的收斂速度和更佳的性能。CIoU Loss函數定義為

圖11 邊界框包含檢測目標的示例Fig.11 Schematic of a bounding box containing the detection target
(1)

(2)
(3)
式中b——邊界框中心點坐標
b(gt)——真實框中心點坐標
ρ——兩個中心點間的歐氏距離
IoU——交并比
c——邊界框和真實框最小外接矩形的對角線距離
w、h——邊界框的寬、高
w(gt)、h(gt)——真實框的寬、高
α——權重系數
ν——寬高比度量函數
在經典的NMS中,對同一類別中所有邊界框的得分排序,選擇分數最高的邊界框,然后計算出其與剩余的邊界框的IoU值,并將大于閾值的邊界框全部過濾掉[35]。但是在實際豬場中,豬群的重疊相互遮擋,當幾頭豬相互靠近時,IoU值變大,若采用加權NMS,那么其篩選結果可能只留下一個邊界框,從而可能致使多頭豬只漏檢。采用DIoU-NMS算法[36]代替原始的加權NMS,同時考慮了重疊區域和兩個邊界框的中心點距離,即如果出現兩框間的IoU值較大,且中心距離也較大時,DIoU-NMS將此類情況視為是兩個目標的邊界框,不會被篩選,從而有效提高檢測精度,降低漏檢率[32],DIoU-NMS的更新公式為
(4)

(5)
式中si——分類得分ε——NMS的閾值
M——最高分類得分的檢測框
Bi——其余初始檢測框
如圖12所示,當兩頭豬只互相粘連時,對應的兩個邊界框重疊區域較大,但它們的中心點距離較遠,若采用DIoU-NMS,因為其不僅考慮到兩框的重合部分,還綜合權衡了兩框中心點的歐氏距離,將兩個中心點距離較遠的框可以看成是不同豬只目標產生的,所以,在篩選邊界框時保留這類邊界框,不會將其刪除,從而降低了豬只漏檢率。因此,本文算法選用DIoU-NMS替換加權的NMS是切實有效的。

圖12 DIoU-NMS示意圖Fig.12 Schematic of DIoU-NMS
本次實驗用Pytorch框架搭建,操作平臺為64位Windows 10,GPU模式(GPU型號為Nvidia RTX3070),顯存8GB。本文模型訓練的超參數設置如表4所示。

表4 訓練參數設置Tab.4 Parameters setting for training procedure
采用準確率、召回率、平均精度(AP)作為衡量目標檢測算法性能的指標。
針對深度學習的計數研究常使用平均絕對誤差(Mean absolute error, MAE)和均方根誤差(Root mean square error, RMSE)。一般情況下,MAE越小,預測的準確率就越高,RMSE越小,魯棒性也越好。本文選取上述兩個指標作為豬只盤點模型的評估指標。
另外,加入漏檢率作為模型性能偏差和變化的輔助指標。
為了更直觀地評估改進技術對模型性能的影響,本文進行了消融實驗。如表5所示,以未做任何改進的原始YOLO v5n為基準,+表示模塊混合改進,分別訓練劃分好的6組實驗。如表5所示,在本文的測試集中原始YOLO v5n的MAE、RMSE、AP和漏檢率分別為0.682、1.21和97.71%和4.06%。以此為基線,每一處改進后各評估指標都有所提升。由表5可知,在主干特征提取網絡中引入SE-Net模塊,其MAE、RMSE以及漏檢率均比添加在頸部網絡中低,分別低0.095、0.38以及1.34個百分點,AP也提高0.67個百分點。無論是原始YOLO v5n,還是增加一個檢測層后,在主干特征提取網絡加入注意力機制模塊比在頸部網絡加入注意力機制模塊,MAE、RMSE、AP和漏檢率均比未增加相應模塊有所提升。而增加檢測層和在主干特征提取網絡中引入SE-Net模塊,MAE、RMSE以及漏檢率也比基線分別降低0.509、0.708以及3.02個百分點,AP達到99.39%,較基線提高1.62個百分點。其次,結合表3可知,改進后的模型的參數量是YOLO v5x模型的1/46,而且兩者的AP很相近。綜合而言,增加一個檢測層與在主干特征提取網絡加入注意力機制模塊的組合改進效果最佳,雖然模型參數量相對比較大,但其在復雜遮擋場景下的檢測效果比其他組合更好。

表5 不同模型的消融實驗Tab.5 Ablation experiment of different modules
為更好地分析驗證本文算法的性能,將本文改進后YOLO v5n與YOLO v4[37]、YOLO X[38]、Faster R-CNN[39]、專門修改用于豬計數的CCNN[9]、基于多尺度感知的豬計數網絡PCN[10]、基于關鍵點檢測和STRF的豬計數網絡[12]和中心集群計數網絡CClusnet[40]的豬只計數網絡進行比較。其中,YOLO v4、YOLO X和Faster R-CNN網絡均采用本文的豬只盤點數據集進行訓練和測試;而基于多尺度感知的豬計數網絡PCN、專門修改用于豬計數的CCNN、中心集群計數網絡CClusnet以及基于關鍵點檢測和STRF的豬計數網絡則引用文獻中的相關實驗結果。實驗結果如表6所示。

表6 不同豬只盤點算法性能比較Tab.6 Performance comparison of different pig counting algorithms
由表6可知,CCNN、CClusnet、YOLO v4、YOLO X和Faster R-CNN的MAE分別為1.67、0.43、0.193、0.242和0.88,說明這5種計數方法在一定程度上能夠處理遮擋問題。雖然CCNN計數方法的單幅圖像平均識別時間最低(0.042 s),本文改進后的YOLO v5n網絡模型與其只差0.014 s,但本文的計數網絡準確性和魯棒性均優于其他計數網絡。這是因為本文的計數網絡在處理不同場景時,如光照變化、遮擋和重疊,通過增加注意力機制和多尺度特征檢測,減少了豬只漏檢多檢情況,且不需要控制特定的環境,速度和精度均能達到實際豬場的豬只計數要求。
豬只遮擋是造成豬只盤點精度低的主要原因之一。當豬只嚴重擁擠相互遮擋時,豬只目標輪廓信息缺失。圖13為YOLO v5n改進前后的檢測結果,左側為原始YOLO v5n檢測圖,右側為改進后的YOLO v5n檢測效果圖。圖13a可知,改進后的YOLO v5n對于邊緣小目標的檢測效果有一定的提升,圖13a中改進后的模型能夠檢測出原始模型漏檢的目標;圖13b、13c為不同場景下遮擋重疊的圖像。通過觀察可知,原始模型對于豬只相互遮擋密集或者邊緣小目標模糊的圖像漏檢相對嚴重,而改進后的模型依舊可以準確檢測到上述復雜情景下的豬只目標。

圖13 檢測結果對比Fig.13 Comparison of test results
另外,光照也是影響豬只盤點精度的原因之一。在實際生產應用中,豬場可能會突然遇到短暫光照驟變等噪聲致使出現豬只陰影[41],或者夜間光線不足導致豬只目標輪廓特別不清晰。盡管YOLO v5n算法能在一定程度上盡量減少光照影響,但是豬只陰影、目標輪廓不清晰還是會造成算法的誤檢或者漏檢。如圖13d所示,右側圍欄處的兩頭豬只間形成了陰影,加之光線暗等原因導致原始YOLO v5n算法將中間的豬只陰影識別為一頭豬只,而改進后的算法能夠準確檢測出陰影處的所有豬只。如 圖13e 所示,圖中綠框的豬只因光線不足,且被其他豬只夾在中間,豬只目標輪廓不清晰致使原始 YOLO v5n 算法漏檢該豬只,但改進后的模型能夠檢測出原始模型因陰影漏檢的豬只。
綜上所述,改進的YOLO v5n算法對復雜場景中的豬只圖像盤點魯棒性更強,這表明改進后的網絡在不同遮擋重疊目標場景下泛化能力有所提升。但目前本文算法在應對特別嚴重遮擋目標導致目標輪廓的特征信息不明顯的情況時會存在一定程度的漏檢。
為了改進現有的豬只盤點算法在遮擋、體型變化或者光線較暗等場景下的不足,提出并實現了一種改進的YOLO v5n豬只盤點算法。該算法針對復雜場景下的豬只盤點問題提出了在主干特征提取網絡中加入SE-Net注意力模塊,從而提升了模型對于復雜密集遮擋、光照不足等場景下的魯棒性;增加了一個尺度的檢測層,加深網絡的深度,進一步提取多尺度特征信息將復雜的目標區分開來,提升模型的檢測性能;改進邊界框損失函數和NMS,以此提高模型在復雜遮擋場景下的泛化能力。消融實驗結果表明,改進的YOLO v5n模型在本文測試集中的檢測精度較原YOLO v5n模型得到改善,其MAE、RMSE以及漏檢率分別比原YOLO v5n降低0.509、0.708以及3.02個百分點,平均精度提高1.62個百分點,其AP為99.39%。對比實驗結果表明,與Faster R-CNN、CCNN和PCN豬只盤點算法相比,本文算法的MAE和RMSE分別為0.173和0.502,MAE比其他3種算法分別減少0.707、1.497和1.567,RMSE比其他3種算法分別降低1.148、1.628和1.778。在遮擋擁擠、光照不良等復雜場景下,本文提出的YOLO v5n算法減少了豬只漏檢的情況,能得到理想的計數結果,具備較好的準確性和魯棒性;模型的單幅圖像識別時間僅為0.056 s,比大多數豬只盤點算法快,能夠滿足實際應用場景的實時性要求,為后續應用到邊緣設備(如豬只盤點儀等)提供了算法支撐。