李菊霞 李艷文 牛 帆 李 榮 張 韜 景 冰
(1.山西農(nóng)業(yè)大學信息科學與工程學院,太谷 030801; 2.山西財貿(mào)職業(yè)技術學院計算機系,太原 030031)
豬只飲食行為是判斷其健康狀況的重要依據(jù),科學的豬只飲食管理有利于豬只健康。實時、連續(xù)、準確地監(jiān)測豬只進食、飲水狀況,對預防豬只疾病、提高養(yǎng)殖福利具有重要意義[1]。
目前,常見的牲畜進食、飲水行為檢測方法涉及無線射頻技術和機器視覺技術。無線射頻技術需要給豬只佩戴耳標類傳感器,雖然能記錄各項參數(shù),但傳感器容易被動物咬食而損壞[2];機器視覺技術具有無接觸、低成本等優(yōu)點,在豬只養(yǎng)殖過程中得到大量應用。隨著卷積神經(jīng)網(wǎng)絡(Convolutional neural network,CNN)的發(fā)展,Mask R-CNN[3]、Faster R-CNN[4]、YOLO、SSD[5]等用于目標檢測的深度學習模型在豬只行為檢測和豬只姿態(tài)檢測等方面得到廣泛應用[6-10]。相較于其他模型,基于回歸思想的YOLO系列[11-13]模型在確保檢測精度的情況下提升了檢測速度,適用于規(guī)模化生產(chǎn)環(huán)境,已被應用于蘋果[14]、雞[15]、奶牛[16]等目標檢測。
本文基于不同視角、不同遮擋程度以及不同光照強度的豬只飲食圖像,建立豬只飲食行為的圖像數(shù)據(jù)庫,采用YOLOv4[17]模型對豬只飲食行為進行檢測,將豬只進食、飲水行為圖像數(shù)據(jù)輸入到深度學習網(wǎng)絡中,利用YOLOv4網(wǎng)絡的深層次特征提取、高精度檢測分類特性,對豬只飲食行為進行準確檢測。
實驗數(shù)據(jù)采集于山西省臨汾市汾西縣豬只培育基地,選取4只成年公豬放入約3 m×2.2 m×2.0 m圈養(yǎng)環(huán)境中。于2020年6月25日起,上、下午以及夜間分別拍攝時長3 h視頻,連續(xù)拍攝7 d。采用Allied Vision Technologies 的 Manta G-282C型相機移動拍攝。拍攝時,豬只距離鏡頭 0.5~3 m不等,在不同視角、不同遮擋程度和不同位置情況下拍攝視頻。
將采集到的數(shù)據(jù)進行篩選、增強和標注。
采用KMPlayer軟件進行視頻截取,將視頻按1 f/s進行JPG格式的圖像提取,將得到的圖像進行篩選。為了增加模型訓練數(shù)據(jù)的豐富度,所選樣本包含不同時間段、不同光照強度和不同拍攝視角的樣本,均勻選出2 000幅圖像作為訓練和測試樣本數(shù)據(jù)。將樣本尺寸統(tǒng)一調(diào)整為608像素×608像素,以減少運算量,提高模型訓練速度。
為了避免本文所選6種模型在訓練過程中出現(xiàn)過擬合現(xiàn)象,通過cutout、cutmix、mixup等圖像增強技術擴展樣本圖像,如圖1所示,使正樣本和負樣本數(shù)量達到2∶1。在后續(xù)YOLOv4模型訓練過程中并未使用模型自帶的cutmix數(shù)據(jù)增強方法。
對樣本圖像增強后,使用LabelImg圖像標注工具對豬只的飲食行為進行標注,如圖2所示。使用PASCAL VOC[18]格式的XML文件注釋。
對于檢測模型來說,分類最優(yōu)的主干網(wǎng)絡不一定是最合適的,適用于目標檢測的主干網(wǎng)絡需滿足:①輸入高分辨率圖像,提高小目標的檢測準確率。②更多的網(wǎng)絡層,提高感受域來適應輸入的增加。③更多的參數(shù),提高檢測多尺寸目標的能力。對比3種主干網(wǎng)絡的參數(shù),如表1所示,CSPDarknet53的參數(shù)量和傳輸速度優(yōu)于其他主干網(wǎng)絡,因此選擇CSPDarknet53作為YOLOv4主干網(wǎng)絡。
表1 用于圖像分類的神經(jīng)網(wǎng)絡參數(shù)對比Tab.1 Parameters comparison of neural networks for image classification
YOLOv4在CSPDarknet53中引入了空間金字塔池化模塊(Spatial pyramid pooling, SPP)[19],能夠顯著地改善感受域尺寸,將最重要的上下位特征提取出來,網(wǎng)絡處理速度沒有明顯下降。此外,YOLOv4還使用路徑聚合網(wǎng)絡(Path aggregation network, PAN)[20]替換特征金字塔網(wǎng)絡(Feature pyramid network, FPN)[21]進行多通道特征融合。如圖3所示,F(xiàn)PN下方特征信息需要經(jīng)過多層網(wǎng)絡才能到達金字塔上層,途中有可能會導致信息丟失。PAN網(wǎng)絡結構中加入了自底向上的路徑增強,可避免信息丟失問題,經(jīng)過特征圖拼接后獲得的信息既有底層特征也有語義特征。
最終,選擇了CSPDarknet53作為主干網(wǎng)絡,PAN 路徑聚合網(wǎng)絡作為頸部,YOLOv3作為頭部,組成了YOLOv4整體結構。
2.2.1空間注意力模塊
空間注意力模塊對輸入特征圖進行最大池化(Max-Pooling)和平均池化(Average-Pooling)操作,從而得到兩個特征圖集合。將其結果輸入卷積層,之后再由一個Sigmoid 函數(shù)創(chuàng)建出空間注意力。YOLOv4對空間注意力模塊(SAM)進行簡單修改,將空間注意力機制(Spatial-wise attention)修改為點注意力機制(Point-wise attention),并將 PAN 中的快捷方式連接替換為串聯(lián),如圖4所示。
2.2.2Box回歸函數(shù)
YOLOv4使用全局交并比(Complete-IoU, CIoU)[22]作為box回歸函數(shù),CIoU可以在矩形框(Bounding-box,Bbox)回歸問題上獲得更好的收斂速度和精度。CIoU的懲罰項RCIoU為
(1)
(2)
(3)
式中ρ——兩個中心點間的歐氏距離
b——預測框中心點
bgt——真實框中心點
c——兩個中心點最小外接矩的對角線長度
a——trade-off的參數(shù)
v——長寬比的相似性
IoU——預測框與真實框的交并比
wgt——真實框寬度
hgt——真實框高度
w——預測框寬度
h——預測框高度
CIoU損失函數(shù)LCIoU定義為
(4)
在機器學習中的目標檢測領域,精確率-召回率(Precision-Recall,P-R)曲線用于衡量目標檢測算法的性能。此外,用于衡量目標檢測算法性能的常用指標還有平均檢測精度(mAP)。檢測精度(AP)指P-R曲線下方的區(qū)域面積,mAP指同一模型對豬只進食行為和飲水行為的AP平均值。
本文采用P-R曲線以及mAP作為評價指標來衡量模型對豬只飲食行為的檢測性能。
圖像數(shù)據(jù)集共包括3 000幅圖像。進食、飲水行為各1 250幅,其他行為(排泄、休息等)共500幅。從該數(shù)據(jù)集中隨機選擇進食、飲水行為圖像各1 050幅,其他行為數(shù)據(jù)400幅,共2 500幅圖像作為訓練集,其余500幅圖像作為測試集。豬只行為檢測模型在NVIDIA GTX 1650 GPU上進行訓練和測試。
YOLOv4在訓練之前需要設置相關參數(shù),本實驗將批處理尺寸設置為4,最大迭代數(shù)設置為4 000,動量為0.949,權重衰減正則系數(shù)為5×10-4。本文采用學習率機制,初始學習率為1×10-3,一旦學習停滯,模型學習率通常將以2~10倍的速率衰減,衰減次數(shù)設置為最大迭代數(shù)的80%和90%。即模型迭代到3200次時學習率衰減至原學習率的1/10,迭代到3 600次時,學習率會在前一個學習率基礎上繼續(xù)衰減至其1/10。
本文以相同的實驗數(shù)據(jù)分別使用YOLOv4、YOLOv3、Tiny-YOLOv4、Faster R-CNN、RetinaNet和SSD模型進行訓練,在相同測試集下進行測試對比。圖5為部分測試結果,紫色框表示進食行為,綠色框表示飲水行為。圖5a為側視光照充足情況下豬只進食行為的檢測結果,圖5b為側視光照充足情況下豬只飲水行為的檢測結果;圖5c為俯視光照不足情況下豬只進食、飲水行為同時發(fā)生的檢測結果;圖5d為俯視光照不足情況下遮擋狀態(tài)豬只發(fā)生進食行為的檢測結果。
由圖5a、5b可知,6種模型在光照充足的情況下均可以正確檢測出豬只進食、飲水行為。在豬只進食行為檢測結果中,YOLOv4檢測結果的置信度(預測類別為真實類別的概率)最高。在檢測豬只飲水行為的結果中,6種模型取得的置信度相差不大。由圖5c可知,在光照不足以及進食行為、飲水行為同時發(fā)生的情況下,YOLOv3、Tiny-YOLOv4以及Faster R-CNN 3種模型只能檢測出飲水行為,而YOLOv4、RetinaNet、SSD模型對飲水行為和進食行為均能做出正確檢測。由圖5d可知,YOLOv4可以正確檢測出被遮擋狀態(tài)的豬只進食行為,而其他5種模型均未能檢測出被遮擋情況下的豬只進食行為。
由表2可知,YOLOv4檢測模型的mAP值高于YOLOv3模型2.8個百分點,高于Tiny-YOLOv4模型3.6個百分點,高于Faster R-CNN模型1.5個百分點,高于RetinaNet模型5.9個百分點,高于SSD模型5個百分點。YOLOv4對于豬只進食行為的檢測精度比同系列的YOLOv3、Tiny-YOLOv4分別高4.2、3.6個百分點,對于飲水行為的檢測精度則比YOLOv3、Tiny-YOLOv4高1.3、3.5個百分點。對比Faster R-CNN,YOLOv4模型對進食行為和飲水行為的檢測精度分別提升了1.1、1.9個百分點,對比RetinaNet提升了3.8、7.8個百分點,對比SSD提升了3.7、6.1個百分點。
表2 不同模型對測試集識別的AP值和mAP值Tab.2 AP and mAP of test set by different models %
圖6為YOLOv4、YOLOv3、Tiny-YOLOv4、SSD、Faster R-CNN、RetinaNet模型對豬只飲食行為檢測的P-R曲線。由表2可知,6種模型對于進食和飲水兩種行為的AP值均在90%左右,P-R曲線基本覆蓋了整個坐標系。相較于其他5種模型的P-R曲線,YOLOv4模型的P-R曲線均位于最上方,優(yōu)于其他5種模型。
除上述實驗外,本文還選取了768幅被遮擋狀態(tài)豬只飲食圖像,利用上述6種模型對其進行豬只飲食行為檢測,實驗結果如表3所示。
由表3可知,在被遮擋狀態(tài)下,YOLOv4模型對豬只進食行為的檢測精度達到85.8%,高于同系列的YOLOv3、Tiny-TOLOv4模型52.5、42.2個百分點,高于Faster R-CNN、RetinaNet、SSD模型24.3、44.8、31.1個百分點。YOLOv4模型對于豬只飲水行為的檢測精度達到93.8%,高于同系列的YOLOv3、Tiny-TOLOv4模型24.3、4.9個百分點,高于Faster R-CNN、RetinaNet、SSD模型11、63.6、4.6個百分點。YOLOv4模型的mAP值高于YOLOv3模型38.4個百分點,高于Tiny-YOLOv4模型19個百分點,高于Faster R-CNN模型17.6個百分點,高于RetinaNet模型54.1個百分點,高于SSD模型17.8個百分點。相較于表2的檢測精度,被遮擋狀態(tài)下的進食、飲水檢測精度都有明顯下降。這是因為在被遮擋狀態(tài)下,位于檢測設備前方的豬只會遮擋后方豬只的部分行為特征,從而致使檢測精度下降。在本實驗環(huán)境中,飲水槽位于進食槽前方,發(fā)生飲水行為的豬只會遮擋處于進食狀態(tài)的豬只,所以表3中的豬只進食行為檢測精度下降幅度遠大于飲水行為。實驗結果表明,YOLOv4模型在被遮擋狀態(tài)下對豬只飲食行為的檢測精度遠優(yōu)于其他5種模型。
表3 被遮擋狀態(tài)測試集在不同模型下的AP值和mAP值Tab.3 AP and mAP of adhesive state test set by different models %
(1)YOLOv4模型在側視、俯視、被遮擋狀態(tài)以及光照不足的情況下均能實時有效地檢測豬只飲食行為,檢測效果優(yōu)于同系列YOLOv3、Tiny-YOLOv4模型,以及主流檢測模型Faster R-CNN、RetinaNet和SSD。
(2)YOLOv4模型在本文測試集中平均檢測精度達到95.5%,分別高于YOLOv3、Tiny-YOLOv4、Faster R-CNN、RetinaNet、SSD模型2.8、3.6、1.5、5.9、5個百分點。
(3)YOLOv4模型對各測試集的檢測精度(AP)、平均檢測精度(mAP)以及P-R曲線均優(yōu)于YOLOv3、Tiny-YOLOv4、SSD、Faster R-CNN和RetinaNet模型。