郝王麗,韓 猛,李 游,李富忠,胡欣宇
(1.山西農(nóng)業(yè)大學(xué) 軟件學(xué)院,山西 晉中 030801;2.山西財經(jīng)大學(xué) 管理科學(xué)與工程學(xué)院,山西 太原 030006)
生豬檢測是智慧養(yǎng)殖領(lǐng)域非常重要的研究問題,相應(yīng)的模型在生豬表型信息采集等領(lǐng)域應(yīng)用廣泛,可為生豬育種提供重要的支撐信息。
鑒于生豬檢測具有的重要價值,很多學(xué)者對生豬檢測進行了研究。楊秋妹等使用Faster R-CNN對群居豬中的豬只頭部和身體進行檢測、定位,設(shè)計了一種豬頭和豬體相關(guān)聯(lián)的算法,并利用該算法對豬只的飼養(yǎng)行為進行監(jiān)測。該算法對豬只飼養(yǎng)行為監(jiān)測的準(zhǔn)確率為99.6%,召回率為86.93%。薛月菊等提出了基于改進Faster R-CNN的哺乳期母豬深度姿態(tài)圖像識別網(wǎng)絡(luò)算法。該算法使用母豬深度視頻圖像作為輸入,在ZF網(wǎng)絡(luò)上集成殘差模塊形成新的ZFD2R網(wǎng)絡(luò),在保持實時性的同時可提高識別精度。ZF-D2R將監(jiān)督信息連接入Faster R-CNN網(wǎng)絡(luò),通過這種方式來增強各類別間的內(nèi)聚性并提高模型精度。該論文重點對哺乳期母豬的五種姿態(tài)動作進行識別,主要包括站立、坐姿、俯臥、腹臥和側(cè)臥,平均識別精度高達93.25%,速度也有所提升。李丹等提出了基于Mask R-CNN模型的豬只爬跨行為識別。首先采集俯視角度的圖像并利用Labelme工具進行標(biāo)注從而獲得預(yù)處理數(shù)據(jù);然后利用Mask R-CNN網(wǎng)絡(luò)將豬只從原圖像中檢測、分割并獲取每只豬的Mask像素面積,獲得了94%的分割性能;最后,根據(jù)正樣本(爬跨行為)、負(fù)樣本(非爬跨行為)確定閾值,即在檢測過程中,若分割面積小于邊界閾值,則不會發(fā)生爬跨行為,反之則發(fā)生,識別爬跨行為的準(zhǔn)確率達到94.5%。
所謂目標(biāo)檢測,即為給定一張照片,通過模型準(zhǔn)確給出圖片中目標(biāo)的位置。目前較流行的目標(biāo)檢測算法大致可以分為兩類:一類為two-stage方法,包含R-CNN模型、Fast R-CNN模型、Faster R-CNN模型。它們首先采用啟發(fā)式方法或卷積神經(jīng)網(wǎng)絡(luò)通過RPN網(wǎng)絡(luò)生成候選區(qū)域(Region Proposal)并進行特征提取,然后進行分類與邊界回歸。另一類為one-stage方法,包含YOLO系列模型及SSD模型。此類方法將檢測任務(wù)形式化為一個回歸任務(wù),并利用全卷積神經(jīng)網(wǎng)絡(luò)從輸入圖像中直接預(yù)測出目標(biāo)物體的邊界框。預(yù)測值包含物體的置信度及物體類別。第一類方法精度較高,運行較慢;第二類方法精度較低,運行較快。
為提升生豬檢測的性能,本文從模型及數(shù)據(jù)集構(gòu)造兩個方面進行探討,旨在找到一種良好的基于YOLO的生豬檢測模型及較好的數(shù)據(jù)集構(gòu)建方法。對比了基于YOLOv2、YOLOv3及YOLOv4的生豬檢測模型;探討了不同規(guī)模、不同視角、單圖片不同目標(biāo)個數(shù)的數(shù)據(jù)集構(gòu)建方法。
YOLO模型的基本原理是將一張圖像輸入到Y(jié)OLO網(wǎng)絡(luò)中,對數(shù)據(jù)進行特征提取后,生成一張?zhí)卣鲌D,然后對其進行目標(biāo)識別和位置預(yù)測,最終檢測到目標(biāo)。YOLO模型引入了非極大抑制(Non-maximal Suppression)方法去除目標(biāo)置信度相對較低的重復(fù)邊界框,可大大提高效率。YOLO算法的主要優(yōu)點是網(wǎng)絡(luò)實現(xiàn)簡單、識別與訓(xùn)練速度快、對物體檢測較準(zhǔn)確。
Redmon等人提出了性能良好的目標(biāo)檢測系列模型YOLO,包括YOLOv1、YOLOv2、YOLOv3三大類。它們均是端到端的模型且不用直接提取Region Proposal,通過一個網(wǎng)絡(luò)便可實現(xiàn)數(shù)據(jù)輸出(包括目標(biāo)類別、置信度、坐標(biāo)位置)。雖然YOLOv1檢測速度快,但是其對于密集型小目標(biāo)檢測精度偏低。YOLOv2是在YOLOv1基礎(chǔ)上進行改進而得到的一種目標(biāo)檢測算法。YOLOv1直接通過回歸求得一個目標(biāo)位置坐標(biāo)(,,,),而YOLOv2預(yù)先根據(jù)設(shè)定的候選框大小,在每個目標(biāo)位置特征圖的中心預(yù)測5種不同大小和比例的Region Proposal,再通過回歸計算候選框的偏移值。這樣便可在目標(biāo)框的長寬比相差較大時,增加回歸目標(biāo)框的準(zhǔn)確性,并同時加快訓(xùn)練速度。具體步驟為將圖片的特征提取網(wǎng)絡(luò)修改為DarkNet-19網(wǎng)絡(luò),輸入后該圖片尺寸從448×448×3變?yōu)?16×416×3,特征圖尺寸從26×26變?yōu)?3×13,用于預(yù)測更小的物體。YOLOv3模型是在YOLOv2模型基礎(chǔ)上進一步改進的,特征提取網(wǎng)絡(luò)由 DarkNet-19變?yōu)镈arkNet-53;輸入三種尺寸的圖像,分別為320×320、416×416、608×608,提取特征效率由快到慢,檢測精度由低到高。對應(yīng)三種輸入,加入層數(shù)為3的特征金字塔網(wǎng)絡(luò),提取三種不同大小和尺度的特征,便于處理多尺度樣本檢測的問題。
為進一步提升目標(biāo)檢測性能,文獻[10]提出了YOLOv4模型,該模型在速度和精度方面均優(yōu)于現(xiàn)在較流行的檢測模型。YOLOv4模型結(jié)構(gòu)具體如下:CSPDarkNet53為骨干網(wǎng)絡(luò)(BackBone),空間金字塔池化模塊(Spatial Pyramid Pooling, SPP)為Neck的附加模塊,路徑聚合網(wǎng)絡(luò)(Path Aggregation Network, PAN)為Neck的特征融合模塊。YOLOv4繼承了YOLOv3的Head。與其他模型相比,YOLOv4有以下4個較突出的創(chuàng)新點:(1)針對輸入端,引入Mosaic數(shù)據(jù)增強,通過隨機裁剪、隨機圖片縮放、隨機圖片排放等多種方式對四張輸入圖片進行隨機拼接,旨在解決訓(xùn)練數(shù)據(jù)集小、目標(biāo)較少、對小目標(biāo)檢測性能較弱的問題。另一方面,引入了Self-Adversarial Training(SAT)自對抗數(shù)據(jù)增廣方法,具體為通過神經(jīng)網(wǎng)絡(luò)在原始圖像上增加一些擾動。(2)針對Backbone,使用CSPDarkNet53模型替換DarkNet53,因其具有更高的輸入圖像分辨率、更深的結(jié)構(gòu)、更多的模型,能獲得更好的感受野,并能檢測出各種類別和尺寸的目標(biāo)。同時,CSPDarkNet53模型在輕量化的同時還可以保持精度,且可通過減小內(nèi)存成本而減少計算量。(3)針對頸部,采用了空間金字塔池化模塊(SPP),可處理每張圖片中豬的長短和遠近不同的情況,所以會造成每頭豬的高寬比和尺寸不同并引起一些問題。同時,PAN比YOLOv3中的特征金字塔(FPN)網(wǎng)絡(luò)更好,可聚合不同主干分支層的參數(shù),為YOLOv4的頭部提供更豐富的信息。(4)針對損失函數(shù),YOLOv4模型采用了性能更好的CIOU損失和DIOU-NMS損失,可進一步改善模型的收斂速率及回歸精度??紤]目標(biāo)框重疊的面積、中心點的距離以及長寬比,CIOU分別增加了長、寬的損失以及檢測框尺度的損失,使預(yù)測框回歸速度和精度進一步提升。圖1為YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)圖。
圖1 YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)圖
DarkNet框架是現(xiàn)階段非常流行的目標(biāo)檢測框架,由文獻[11]首次提出,為較輕型的基于CUDA和C語言的深度學(xué)習(xí)框架。與目前較流行的Tensorflow和Caffe等框架相比,DarkNet擁有如下優(yōu)點:易安裝、平臺無關(guān)、可支持CPU和GPU兩種計算方式。盡管DarkNet是基于C語言進行編寫的,但其提供了Python接口,故可通過Python函數(shù)進行調(diào)用。本文使用的目標(biāo)檢測算法YOLOv2、YOLOv3、YOLOv4均基于DarkNet深度學(xué)習(xí)框架。
為比較模型性能,本文使用精確率(P)、召回率(R)、F1值以及平均檢測精度(mean Average Precision, mAP)作為各比較模型的評價指標(biāo)。F1就是精確率和召回率的調(diào)和均值。TP(True Positive)表示模型預(yù)測為豬只目標(biāo)框且實際也為豬只目標(biāo)的檢測框數(shù)量,F(xiàn)P(False Positive)表示模型預(yù)測為豬只目標(biāo)框但實際并不為豬只目標(biāo)的檢測框數(shù)量,F(xiàn)N(False Negative)表示預(yù)測為背景但實際為豬只個體框的樣本數(shù)量。具體公式為:
數(shù)據(jù)采集持續(xù)了兩個月,去除外部環(huán)境干擾導(dǎo)致的無效或質(zhì)量較差的視頻,共收集了2 TB視頻數(shù)據(jù)。
對視頻數(shù)據(jù)進行如下預(yù)處理后得到豬只檢測數(shù)據(jù)集:
(1)對采集視頻每間隔25幀進行切割處理,得到分辨率為2 560×1 440的圖片,將圖像的分辨率統(tǒng)一調(diào)整為608×608,并采用LabelImg圖像標(biāo)注工具對豬只個體進行標(biāo)注。
(2)對標(biāo)注的數(shù)據(jù)進行180°翻轉(zhuǎn),從而豐富數(shù)據(jù)集使模型泛化能力增強。
(3)對標(biāo)注的圖片使用Mosaic數(shù)據(jù)增強,對每四張圖片進行隨機裁剪、隨機拼接、隨機縮放等,以解決數(shù)據(jù)集中小目標(biāo)較少的問題。結(jié)果如圖2所示。
圖2 圖像處理過程
通過標(biāo)注共獲得豬只圖片12 000張,其中包含兩個側(cè)視視角圖像各4 000張,一個俯視視角圖像4 000張。本研究共設(shè)計了三個部分的實驗,對應(yīng)每部分分別構(gòu)建了相應(yīng)的數(shù)據(jù)集:(1)研究不同規(guī)模樣本集對豬只檢測結(jié)果的影響,構(gòu)建了規(guī)模分別為4 000張、8 000張、12 000張的豬只檢測數(shù)據(jù)集,且每種規(guī)模進行了三次隨機并以平均值為最終報告結(jié)果。(2)研究不同視角樣本集對豬只檢測結(jié)果的影響,構(gòu)建了兩個側(cè)視視角數(shù)據(jù)集各4 000張、俯視角度數(shù)據(jù)集4 000張。(3)研究單張圖片中目標(biāo)物體數(shù)目不同時對豬只檢測結(jié)果的影響,構(gòu)建了單張圖片少目標(biāo)(1~2個)的數(shù)據(jù)集4 000張、多目標(biāo)(3~4個)的數(shù)據(jù)集4 000張以及包含2 000張少目標(biāo)和2 000張多目標(biāo)的數(shù)據(jù)集。每個數(shù)據(jù)集按7∶3的比例劃分成訓(xùn)練集和測試集。
為進行公平比較,模型訓(xùn)練的動量系數(shù)為0.9,權(quán)重衰減系數(shù)為0.000 5,最大迭代次數(shù)為12 000,初始學(xué)習(xí)率約為0.001;迭代至9 600次、10 800次時,學(xué)習(xí)率開始衰減。
本實驗所采取的硬件設(shè)備配置如下:GTX TITANXP 12G顯卡、i77800 X 處理器。實驗環(huán)境如下:CUDA10.1,CUDNN7.6.4,Python3.6.9,YOLOv2、YOLOv3、YOLOv4均基于DarkNet框架完成。需要注意的是,文中所有實驗均在TITANX GPU上執(zhí)行。
4.1.1 不同網(wǎng)絡(luò)模型檢測性能比較
為驗證不同模型的性能,本節(jié)對比了YOLOv2、YOLOv3、YOLOv4網(wǎng)絡(luò)模型的檢測性能。使用的數(shù)據(jù)集為既包含不同視角又包含目標(biāo)數(shù)規(guī)模為12 000張的數(shù)據(jù)集,交并比閾值(Intersection Over Union, IOU)為0.5。實驗對比結(jié)果見表1所列。
表1 YOLO模型的性能比較
從表1可以看出,YOLOv2、YOLOv3、YOLOv4網(wǎng)絡(luò)模型的精確率分別為90.00%、93.00%、95.00%,召回率分別為67.20%、68.50%、69.30%,F(xiàn)1值分別為76.00%、78.00%、73.00%,平均檢測精度分別為79.54%、83.12%、86.20%。實驗表明,YOLOv4模型在所有的評價標(biāo)準(zhǔn)上均取得了最好的結(jié)果,且YOLOv3比YOLOv2結(jié)果更好。部分測試結(jié)果如圖3所示。
圖3 測試集在不同網(wǎng)絡(luò)模型上的預(yù)測結(jié)果示例
4.1.2 不同IOU閾值對YOLO檢測性能的影響
IOU是真實標(biāo)記框與預(yù)測框的交并比,交并比越大,模型對目標(biāo)的檢測會更精確。本節(jié)實驗主要探究IOU取值對模型性能的影響,這里對比IOU閾值分別為0.2、0.35、0.5和0.65時不同模型的性能指標(biāo),結(jié)果見表2所列。
表2 YOLO模型在不同IOU下的性能比較
鑒于豬只個體與其所在背景為二分類,故這里選擇置信度值為0.5,當(dāng)預(yù)測值大于0.5時視其為預(yù)測正確,預(yù)測值小于0.5時視為預(yù)測錯誤。
實驗結(jié)果表明,隨著IOU閾值的增大,模型的各項指標(biāo)變化有較大差異。YOLO模型的各項性能都隨著IOU閾值的增大而變小。雖然在IOU為0.2和0.35時,模型各項性能較高,但是由于預(yù)測框與真實標(biāo)記框的交并比太小,預(yù)測結(jié)果并不理想。另一方面,當(dāng)IOU閾值為0.65時,各個檢測模型的性能劇烈下降達到10%~20%,檢測性能較差,不能對豬只個體進行準(zhǔn)確的檢測??紤]交并比以及檢測性能,本文選擇IOU為0.5。
4.2.1 不同規(guī)模數(shù)據(jù)集訓(xùn)練模型性能的比較
為驗證不同規(guī)模數(shù)據(jù)集對模型性能的影響。本節(jié)對比了包含4 000張、8 000張、12 000張圖像的數(shù)據(jù)集下模型的檢測性能。對比實驗結(jié)果見表3所列。從表3可以看出,數(shù)據(jù)集規(guī)模越大,性能越好。驗證了數(shù)據(jù)集規(guī)模對檢測性能的正向影響。
表3 不同規(guī)模數(shù)據(jù)集下的模型性能比較
4.2.2 不同視角數(shù)據(jù)集訓(xùn)練模型性能的比較
為進一步深入研究不同視角的圖片對所需要訓(xùn)練網(wǎng)絡(luò)性能的影響,從側(cè)視兩個機位共計8 000張圖片中隨機選擇4 000張圖片制作一個數(shù)據(jù)集、制作一個包含4 000張俯視圖片的數(shù)據(jù)集、制作一個既包含2 000張側(cè)視圖片又包含2 000張俯視圖片的數(shù)據(jù)集。分別利用三個數(shù)據(jù)集來訓(xùn)練YOLOv4網(wǎng)絡(luò),并進行了對比和分析。訓(xùn)練后的模型所得結(jié)果見表4所列。從表中可以看出,包含兩個視角的數(shù)據(jù)集取得了最好的效果,說明了視角多樣性對檢測結(jié)果起正向的影響。
表4 不同視角訓(xùn)練集所訓(xùn)練的模型性能
4.2.3 不同目標(biāo)數(shù)數(shù)據(jù)集訓(xùn)練模型性能的比較
為驗證圖片中包含目標(biāo)物體個數(shù)對檢測性能的影響,本節(jié)對比了三組實驗,分別是少目標(biāo)數(shù)據(jù)集、多目標(biāo)數(shù)據(jù)集、少目標(biāo)+多目標(biāo)數(shù)據(jù)集。實驗結(jié)果見表5所列。由表5可以看出,圖片中包含目標(biāo)物體多的數(shù)據(jù)集可以獲得更好的性能,說明單圖片中目標(biāo)物體個數(shù)多可大大提升模型性能。
表5 不同目標(biāo)數(shù)訓(xùn)練集所訓(xùn)練的模型性能
本文提出了基于YOLO模型的豬只檢測模型;同時為了提高準(zhǔn)確率,探討了數(shù)據(jù)集構(gòu)建方法。通過實驗驗證得出,YOLOv4模型可以獲得最好的生豬檢測性能;構(gòu)建數(shù)據(jù)集可以選擇大規(guī)模、多視角及多目標(biāo)個體的樣本,這種數(shù)據(jù)集包含的樣本具有多樣性,可提升檢測模型的性能。