郝王麗,韓 猛,李 游,李富忠,胡欣宇
(1.山西農業大學 軟件學院,山西 晉中 030801;2.山西財經大學 管理科學與工程學院,山西 太原 030006)
生豬檢測是智慧養殖領域非常重要的研究問題,相應的模型在生豬表型信息采集等領域應用廣泛,可為生豬育種提供重要的支撐信息。
鑒于生豬檢測具有的重要價值,很多學者對生豬檢測進行了研究。楊秋妹等使用Faster R-CNN對群居豬中的豬只頭部和身體進行檢測、定位,設計了一種豬頭和豬體相關聯的算法,并利用該算法對豬只的飼養行為進行監測。該算法對豬只飼養行為監測的準確率為99.6%,召回率為86.93%。薛月菊等提出了基于改進Faster R-CNN的哺乳期母豬深度姿態圖像識別網絡算法。該算法使用母豬深度視頻圖像作為輸入,在ZF網絡上集成殘差模塊形成新的ZFD2R網絡,在保持實時性的同時可提高識別精度。ZF-D2R將監督信息連接入Faster R-CNN網絡,通過這種方式來增強各類別間的內聚性并提高模型精度。該論文重點對哺乳期母豬的五種姿態動作進行識別,主要包括站立、坐姿、俯臥、腹臥和側臥,平均識別精度高達93.25%,速度也有所提升。李丹等提出了基于Mask R-CNN模型的豬只爬跨行為識別。首先采集俯視角度的圖像并利用Labelme工具進行標注從而獲得預處理數據;然后利用Mask R-CNN網絡將豬只從原圖像中檢測、分割并獲取每只豬的Mask像素面積,獲得了94%的分割性能;最后,根據正樣本(爬跨行為)、負樣本(非爬跨行為)確定閾值,即在檢測過程中,若分割面積小于邊界閾值,則不會發生爬跨行為,反之則發生,識別爬跨行為的準確率達到94.5%。
所謂目標檢測,即為給定一張照片,通過模型準確給出圖片中目標的位置。目前較流行的目標檢測算法大致可以分為兩類:一類為two-stage方法,包含R-CNN模型、Fast R-CNN模型、Faster R-CNN模型。它們首先采用啟發式方法或卷積神經網絡通過RPN網絡生成候選區域(Region Proposal)并進行特征提取,然后進行分類與邊界回歸。另一類為one-stage方法,包含YOLO系列模型及SSD模型。此類方法將檢測任務形式化為一個回歸任務,并利用全卷積神經網絡從輸入圖像中直接預測出目標物體的邊界框。預測值包含物體的置信度及物體類別。第一類方法精度較高,運行較慢;第二類方法精度較低,運行較快。
為提升生豬檢測的性能,本文從模型及數據集構造兩個方面進行探討,旨在找到一種良好的基于YOLO的生豬檢測模型及較好的數據集構建方法。對比了基于YOLOv2、YOLOv3及YOLOv4的生豬檢測模型;探討了不同規模、不同視角、單圖片不同目標個數的數據集構建方法。
YOLO模型的基本原理是將一張圖像輸入到YOLO網絡中,對數據進行特征提取后,生成一張特征圖,然后對其進行目標識別和位置預測,最終檢測到目標。YOLO模型引入了非極大抑制(Non-maximal Suppression)方法去除目標置信度相對較低的重復邊界框,可大大提高效率。YOLO算法的主要優點是網絡實現簡單、識別與訓練速度快、對物體檢測較準確。
Redmon等人提出了性能良好的目標檢測系列模型YOLO,包括YOLOv1、YOLOv2、YOLOv3三大類。它們均是端到端的模型且不用直接提取Region Proposal,通過一個網絡便可實現數據輸出(包括目標類別、置信度、坐標位置)。雖然YOLOv1檢測速度快,但是其對于密集型小目標檢測精度偏低。YOLOv2是在YOLOv1基礎上進行改進而得到的一種目標檢測算法。YOLOv1直接通過回歸求得一個目標位置坐標(,,,),而YOLOv2預先根據設定的候選框大小,在每個目標位置特征圖的中心預測5種不同大小和比例的Region Proposal,再通過回歸計算候選框的偏移值。這樣便可在目標框的長寬比相差較大時,增加回歸目標框的準確性,并同時加快訓練速度。具體步驟為將圖片的特征提取網絡修改為DarkNet-19網絡,輸入后該圖片尺寸從448×448×3變為416×416×3,特征圖尺寸從26×26變為13×13,用于預測更小的物體。YOLOv3模型是在YOLOv2模型基礎上進一步改進的,特征提取網絡由 DarkNet-19變為DarkNet-53;輸入三種尺寸的圖像,分別為320×320、416×416、608×608,提取特征效率由快到慢,檢測精度由低到高。對應三種輸入,加入層數為3的特征金字塔網絡,提取三種不同大小和尺度的特征,便于處理多尺度樣本檢測的問題。
為進一步提升目標檢測性能,文獻[10]提出了YOLOv4模型,該模型在速度和精度方面均優于現在較流行的檢測模型。YOLOv4模型結構具體如下:CSPDarkNet53為骨干網絡(BackBone),空間金字塔池化模塊(Spatial Pyramid Pooling, SPP)為Neck的附加模塊,路徑聚合網絡(Path Aggregation Network, PAN)為Neck的特征融合模塊。YOLOv4繼承了YOLOv3的Head。與其他模型相比,YOLOv4有以下4個較突出的創新點:(1)針對輸入端,引入Mosaic數據增強,通過隨機裁剪、隨機圖片縮放、隨機圖片排放等多種方式對四張輸入圖片進行隨機拼接,旨在解決訓練數據集小、目標較少、對小目標檢測性能較弱的問題。另一方面,引入了Self-Adversarial Training(SAT)自對抗數據增廣方法,具體為通過神經網絡在原始圖像上增加一些擾動。(2)針對Backbone,使用CSPDarkNet53模型替換DarkNet53,因其具有更高的輸入圖像分辨率、更深的結構、更多的模型,能獲得更好的感受野,并能檢測出各種類別和尺寸的目標。同時,CSPDarkNet53模型在輕量化的同時還可以保持精度,且可通過減小內存成本而減少計算量。(3)針對頸部,采用了空間金字塔池化模塊(SPP),可處理每張圖片中豬的長短和遠近不同的情況,所以會造成每頭豬的高寬比和尺寸不同并引起一些問題。同時,PAN比YOLOv3中的特征金字塔(FPN)網絡更好,可聚合不同主干分支層的參數,為YOLOv4的頭部提供更豐富的信息。(4)針對損失函數,YOLOv4模型采用了性能更好的CIOU損失和DIOU-NMS損失,可進一步改善模型的收斂速率及回歸精度。考慮目標框重疊的面積、中心點的距離以及長寬比,CIOU分別增加了長、寬的損失以及檢測框尺度的損失,使預測框回歸速度和精度進一步提升。圖1為YOLOv4網絡結構圖。

圖1 YOLOv4網絡結構圖
DarkNet框架是現階段非常流行的目標檢測框架,由文獻[11]首次提出,為較輕型的基于CUDA和C語言的深度學習框架。與目前較流行的Tensorflow和Caffe等框架相比,DarkNet擁有如下優點:易安裝、平臺無關、可支持CPU和GPU兩種計算方式。盡管DarkNet是基于C語言進行編寫的,但其提供了Python接口,故可通過Python函數進行調用。本文使用的目標檢測算法YOLOv2、YOLOv3、YOLOv4均基于DarkNet深度學習框架。
為比較模型性能,本文使用精確率(P)、召回率(R)、F1值以及平均檢測精度(mean Average Precision, mAP)作為各比較模型的評價指標。F1就是精確率和召回率的調和均值。TP(True Positive)表示模型預測為豬只目標框且實際也為豬只目標的檢測框數量,FP(False Positive)表示模型預測為豬只目標框但實際并不為豬只目標的檢測框數量,FN(False Negative)表示預測為背景但實際為豬只個體框的樣本數量。具體公式為:

數據采集持續了兩個月,去除外部環境干擾導致的無效或質量較差的視頻,共收集了2 TB視頻數據。
對視頻數據進行如下預處理后得到豬只檢測數據集:
(1)對采集視頻每間隔25幀進行切割處理,得到分辨率為2 560×1 440的圖片,將圖像的分辨率統一調整為608×608,并采用LabelImg圖像標注工具對豬只個體進行標注。
(2)對標注的數據進行180°翻轉,從而豐富數據集使模型泛化能力增強。
(3)對標注的圖片使用Mosaic數據增強,對每四張圖片進行隨機裁剪、隨機拼接、隨機縮放等,以解決數據集中小目標較少的問題。結果如圖2所示。

圖2 圖像處理過程
通過標注共獲得豬只圖片12 000張,其中包含兩個側視視角圖像各4 000張,一個俯視視角圖像4 000張。本研究共設計了三個部分的實驗,對應每部分分別構建了相應的數據集:(1)研究不同規模樣本集對豬只檢測結果的影響,構建了規模分別為4 000張、8 000張、12 000張的豬只檢測數據集,且每種規模進行了三次隨機并以平均值為最終報告結果。(2)研究不同視角樣本集對豬只檢測結果的影響,構建了兩個側視視角數據集各4 000張、俯視角度數據集4 000張。(3)研究單張圖片中目標物體數目不同時對豬只檢測結果的影響,構建了單張圖片少目標(1~2個)的數據集4 000張、多目標(3~4個)的數據集4 000張以及包含2 000張少目標和2 000張多目標的數據集。每個數據集按7∶3的比例劃分成訓練集和測試集。
為進行公平比較,模型訓練的動量系數為0.9,權重衰減系數為0.000 5,最大迭代次數為12 000,初始學習率約為0.001;迭代至9 600次、10 800次時,學習率開始衰減。
本實驗所采取的硬件設備配置如下:GTX TITANXP 12G顯卡、i77800 X 處理器。實驗環境如下:CUDA10.1,CUDNN7.6.4,Python3.6.9,YOLOv2、YOLOv3、YOLOv4均基于DarkNet框架完成。需要注意的是,文中所有實驗均在TITANX GPU上執行。
4.1.1 不同網絡模型檢測性能比較
為驗證不同模型的性能,本節對比了YOLOv2、YOLOv3、YOLOv4網絡模型的檢測性能。使用的數據集為既包含不同視角又包含目標數規模為12 000張的數據集,交并比閾值(Intersection Over Union, IOU)為0.5。實驗對比結果見表1所列。

表1 YOLO模型的性能比較
從表1可以看出,YOLOv2、YOLOv3、YOLOv4網絡模型的精確率分別為90.00%、93.00%、95.00%,召回率分別為67.20%、68.50%、69.30%,F1值分別為76.00%、78.00%、73.00%,平均檢測精度分別為79.54%、83.12%、86.20%。實驗表明,YOLOv4模型在所有的評價標準上均取得了最好的結果,且YOLOv3比YOLOv2結果更好。部分測試結果如圖3所示。

圖3 測試集在不同網絡模型上的預測結果示例
4.1.2 不同IOU閾值對YOLO檢測性能的影響
IOU是真實標記框與預測框的交并比,交并比越大,模型對目標的檢測會更精確。本節實驗主要探究IOU取值對模型性能的影響,這里對比IOU閾值分別為0.2、0.35、0.5和0.65時不同模型的性能指標,結果見表2所列。

表2 YOLO模型在不同IOU下的性能比較
鑒于豬只個體與其所在背景為二分類,故這里選擇置信度值為0.5,當預測值大于0.5時視其為預測正確,預測值小于0.5時視為預測錯誤。
實驗結果表明,隨著IOU閾值的增大,模型的各項指標變化有較大差異。YOLO模型的各項性能都隨著IOU閾值的增大而變小。雖然在IOU為0.2和0.35時,模型各項性能較高,但是由于預測框與真實標記框的交并比太小,預測結果并不理想。另一方面,當IOU閾值為0.65時,各個檢測模型的性能劇烈下降達到10%~20%,檢測性能較差,不能對豬只個體進行準確的檢測??紤]交并比以及檢測性能,本文選擇IOU為0.5。
4.2.1 不同規模數據集訓練模型性能的比較
為驗證不同規模數據集對模型性能的影響。本節對比了包含4 000張、8 000張、12 000張圖像的數據集下模型的檢測性能。對比實驗結果見表3所列。從表3可以看出,數據集規模越大,性能越好。驗證了數據集規模對檢測性能的正向影響。

表3 不同規模數據集下的模型性能比較
4.2.2 不同視角數據集訓練模型性能的比較
為進一步深入研究不同視角的圖片對所需要訓練網絡性能的影響,從側視兩個機位共計8 000張圖片中隨機選擇4 000張圖片制作一個數據集、制作一個包含4 000張俯視圖片的數據集、制作一個既包含2 000張側視圖片又包含2 000張俯視圖片的數據集。分別利用三個數據集來訓練YOLOv4網絡,并進行了對比和分析。訓練后的模型所得結果見表4所列。從表中可以看出,包含兩個視角的數據集取得了最好的效果,說明了視角多樣性對檢測結果起正向的影響。

表4 不同視角訓練集所訓練的模型性能
4.2.3 不同目標數數據集訓練模型性能的比較
為驗證圖片中包含目標物體個數對檢測性能的影響,本節對比了三組實驗,分別是少目標數據集、多目標數據集、少目標+多目標數據集。實驗結果見表5所列。由表5可以看出,圖片中包含目標物體多的數據集可以獲得更好的性能,說明單圖片中目標物體個數多可大大提升模型性能。

表5 不同目標數訓練集所訓練的模型性能
本文提出了基于YOLO模型的豬只檢測模型;同時為了提高準確率,探討了數據集構建方法。通過實驗驗證得出,YOLOv4模型可以獲得最好的生豬檢測性能;構建數據集可以選擇大規模、多視角及多目標個體的樣本,這種數據集包含的樣本具有多樣性,可提升檢測模型的性能。