劉琪偉 郭小燕 李純斌 楊道涵
關(guān)鍵詞:YOLOv5;牛個體;圖像識別;輕量級
中圖分類號:TP391 文獻標志碼:A
0 引言(Introduction)
隨著我國整體生活水平的提高,人們對牛肉制品和牛奶制品的需求日益增大,快速有效地進行牲畜個體身份識別是開展精細化飼養(yǎng)、牲畜體征監(jiān)測、畜產(chǎn)品溯源工作的基礎。目前,識別牛個體圖像的方法主要有接觸式識別和非接觸式機器視覺識別兩種。接觸式識別方法又可以分為永久性識別法(Permanent Identification Methodology,PIM)、半永久性識別法(Semi-permanent Identification Methodology,SIM)及臨時性識別法(Temporary Identification Methodology,TIM)[1]。PIM主要通過耳槽、耳紋、熱鐵標記和冷凍烙印等方式識別牛個體,會對牛個體造成不同程度的傷害,容易造成牛個體感染疾病[2]。SIM主要通過耳標進行牛個體識別,耳標的類型有塑料吊墜、塑料條形碼、金屬耳夾等,如果長期使用這些耳標,會造成牛個體的耳朵腐爛;此外,耳標可以復制、偽造,并且有遺失風險,容易造成牛個體的錯誤識別或者無法識別[3]。TIM 包括染色和無線射頻識別技術(shù)(Radio Frequency Identification,RFID)等,基于RFID的耳標雖然可快速讀取牛個體的個體信息,但是染色的效果受奶?;ㄉ绊?,同時該技術(shù)識別距離有限且技術(shù)應用成本高,因此有較大的局限性[4]。
1 相關(guān)研究(Related research)
隨著計算機視覺與人工智能技術(shù)的發(fā)展,目標檢測技術(shù)被廣泛應用在牛臉識別等計算機視覺領域。根據(jù)對圖像進行識別與定位的特征,目標檢測技術(shù)可分為One Stage和TwoStage兩種,其中Two Stage目標檢測算法首先對輸入的圖像進行區(qū)域推薦(Region Proposal),生成一系列的候選區(qū)域,其次通過卷積神經(jīng)網(wǎng)絡對這些候選的區(qū)域進行分類和回歸[5-6]。典型的算法有RCNN[7]、Fast-RCNN[8]、SPP-Net[9]、Faster RCNN[10]等,它們將其識別過程分為兩個階段,檢測速度較慢。One Stage算法將邊框回歸與目標識別合并為一個步驟,擁有更高的檢測速度。其中,代表性的算法有SSD[11-12]系列、FCOS[13]、YOLO[14-15]系列算法,其中YOLO 算法參數(shù)量、計算量較少,因此檢測速度較快,在牛個體圖像識別方面已經(jīng)得到了廣泛應用。姜世奇[16]在YOLOv3的基礎上進行改進,使用Microsoft COCO數(shù)據(jù)集進行模型預訓練,通過構(gòu)建的目標檢測數(shù)據(jù)集進行微調(diào)并應用于牛面部識別。SHEN等[17]首先將奶牛的側(cè)視圖圖像分割成頭部、軀干和腿部三個部分,其次利用YOLO算法檢測圖像中的奶牛對象,最后使用優(yōu)化的CNN模型進行牛個體身份識別,檢測準確率為96.65%。YOLOv5作為典型的One Stage識別方法,具有復雜場景下目標檢測識別的優(yōu)勢,已經(jīng)被廣泛應用于農(nóng)業(yè)目標實時檢測與識別中,但其模型的體積較大、參數(shù)多,需要大量的樣本進行模型訓練,對運算的軟件和硬件設備要求高,而高質(zhì)量的牛個體樣本數(shù)據(jù)的獲取費時、費力。因此,設計一個輕量、高效的非接觸式牛個體識別模型,使其可以在樣本數(shù)量有限的情況下,運行于手機、平板電腦等移動設備中,方便牧民與養(yǎng)殖戶進行牛個體身份識別,顯得非常必要。
本文以YOLOv5為基礎模型,設計了一個輕量級牛個體識別模型(Light YOLO Net,LY-Net),利用輕量級網(wǎng)絡GhostNet作為主干網(wǎng)絡模型,并減少C3參數(shù),采用CARAFE作為上采樣算子,采用EIoU Loss作為損失函數(shù),在保證識別精度的情況下實現(xiàn)了減少網(wǎng)絡參數(shù)、提升識別速度的目標。該模型通過對30 頭牛個體,共6 775 幅自建數(shù)據(jù)進行測試,識別精確率約為99.6%。實驗表明,該模型在實現(xiàn)輕量化設計的同時,可以高效、準確地進行牛個體圖像識別。
2 YOLOv5 網(wǎng)絡模型改進(YOLOv5 networkmodel improvements)
本文采用YOLOv5s 6.1版本作為基礎網(wǎng)絡模型,該模型主要由輸入端Input、Backbone、Neck及Head四個部分組成。與YOLOv5s 5.x相比,YOLOv5s 6.1版本將Backbone Focus層換成一個6×6大小的卷積層,目的是擴大卷積核的感受野;在Neck中將SPP換為SPPF結(jié)構(gòu),提高運行速度。為了進一步實現(xiàn)網(wǎng)絡輕量級的目標,本文將YOLOv5s 6.1模型的主干網(wǎng)絡替換為輕量級網(wǎng)絡Ghost Net,并減少C3參數(shù),在識別精度不受影響的情況下實現(xiàn)了網(wǎng)絡模型的輕量化、速度提升的目標,網(wǎng)絡使用輕量高效的上采樣算子CARAFE,進一步減少網(wǎng)絡參數(shù),采用Focal-EIoU Loss作為損失函數(shù),加速收斂。
2.1LY-Net網(wǎng)絡結(jié)構(gòu)
首先將一幅經(jīng)過預處理的大小為3×640×640的RGB圖像進行歸一化操作,送入Backbone主干網(wǎng)絡進行特征提取,其次利用Neck將淺層的特征與深層特征進行特征融合以豐富網(wǎng)絡模型的特征信息,在Head輸出20×20、40×40、80×80三種像素的矩形識別區(qū)域,分別對應于不同圖像大小的牛個體,圖1為本文所使用的LY-Net模型框架圖。
2.2 輕量級網(wǎng)絡Ghost Net
YOLOv5主干特征提取網(wǎng)絡采用C3結(jié)構(gòu),因為參數(shù)量較大,所以影響了檢測速度。C3是刪除BottleneckCSP中的部分Conv模塊后產(chǎn)生的新模塊,C3根據(jù)是否使用Shortcut連接分為C3-False和C3-True兩個模塊。C3模塊能夠增強對淺層特征的提取能力,利用Shortcut連接淺層特征,最終在增強整個神經(jīng)網(wǎng)絡學習能力的同時降低計算成本。針對本文采用的數(shù)據(jù)集牛個體圖像檢測的特點,本文將YOLOv5模型的主干網(wǎng)絡替換為輕量級網(wǎng)絡Ghost Net,并減少C3參數(shù),將Backbone部分中的C3數(shù)量從(3,9,9,3)減少為(2,6,8,2),從而減少特征信息丟失且降低計算量。
相比傳統(tǒng)的卷積,Ghost Net[18]分為兩步走,首先GhostNet采用正常的卷積計算,得到Channel較少的特征圖,其次利用Cheap Operation得到更多的特征圖,最后將不同的特征圖疊加,組合成新的Output。圖2為傳統(tǒng)卷積和Ghost Net卷積的對比圖。
2.3 上采樣算子CARAFE
YOLOv5中默認使用最近鄰插值(Neares),也稱為零階插值,這是最簡單的插值方法,僅通過像素點的空間位置決定上采樣核,沒有使用特征圖的語義信息,可以看作是一種“均勻”的上采樣,而且感知域通常很?。ㄗ罱?×1,雙線性2×2)。針對這些問題,本文使用輕量高效的上采樣算子CARAFE,通過少量參數(shù)和計算保持輕量級功能。CARAFE分為兩個主要模塊,分別是上采樣核預測模塊和特征重組模塊。假設上采樣倍率為σ,給定一個形狀為H ×W ×C 的輸入特征圖,CARAFE首先利用上采樣核預測模塊預測上采樣核,其次利用特征重組模塊完成上采樣,得到形狀為σH ×σW ×C 的輸出特征圖[19]。
2.4Focal-EIoU Loss
YOLOv5使用CIoU Loss作為Bounding Box的損失函數(shù),同時采用Logits損失函數(shù)和二進制交叉熵(BCE)分別計算目標得分和類概率的損失。CIoU Loss雖然考慮了邊界框回歸的重疊面積、中心點距離、縱橫比,但是縱橫比的差異不是寬高分別與其置信度的真實差異,所以有時會阻礙模型有效地優(yōu)化相似性。針對這一問題,本文采用Focal-EIoU Loss損失函數(shù)替換CIoU Loss損失函數(shù)。將縱橫比的損失項拆分成預測的寬高分別與最小外接框?qū)捀叩牟钪?,加速了收斂,提高了回歸精度。
Focal-EIoU Loss將縱橫比的損失項拆分成預測的寬高分別與最小外接框?qū)捀叩牟钪?,加速了收斂,提高了回歸精度,并引入Focal Loss優(yōu)化邊界框回歸任務中的樣本不平衡問題,即減少與目標框重疊較少的大量錨框?qū)ounding Box回歸的優(yōu)化貢獻,使回歸過程專注于高質(zhì)量錨框[20]。LEIoU 損失計算公式分別如公式(1)、公式(2)、公式(3)所示:
3 實驗材料處理(Experiment and result analysis)
3.1 數(shù)據(jù)集獲取
本文使用的牛個體圖像數(shù)據(jù)集于2022年5月在甘肅省張掖市某養(yǎng)殖場內(nèi)采集,采集設備為Nikon D810相機,拍攝圖像分辨率為4 000×2 248像素,圖像格式為JPEG。為滿足在不同地點和時間條件下的檢測需要,分別在生活區(qū)和休閑區(qū)(時間段為早晨、正午和傍晚)進行圖像采集。期間共采集有效圖像6 775幅,對圖片進行背景模糊等操作,分別以Cow1~Cow30對牛個體進行編號,制作了樣本數(shù)據(jù)集。表1為該數(shù)據(jù)集30頭牛個體樣本信息。圖3為數(shù)據(jù)集牛個體樣本圖像。
3.2 數(shù)據(jù)標注
使用可視化標注工具LabelImg進行數(shù)據(jù)集標注,以目標的最小外接矩形進行標記,標注文件類型為txt格式,以YOLO格式進行存儲,存儲信息包括類別代號、標注框橫向的相對中心坐標x _center、標注框縱向的相對中心坐標y_center、標注框相對寬度w、標注框相對高度h[21]。
3.3 數(shù)據(jù)增強
為擴大自建數(shù)據(jù)的數(shù)量,采用Mosaic操作進行數(shù)據(jù)增強。首先隨機選擇圖像,分別進行翻轉(zhuǎn)、縮放和色域變化等數(shù)據(jù)增廣操作,并粘貼至與最終輸出圖像大小相等掩模的對應位置,其次截取包含牛臉部的區(qū)域,最后將4幅圖像拼接成1幅新的圖片。該操作不僅增加了數(shù)據(jù)的多樣性,還豐富了圖片的背景,增強了網(wǎng)絡的魯棒性,Mosaic處理的訓練圖如圖4所示。
4 實驗與結(jié)果分析(Experiment and resultanalysis)
4.1 實驗樣本設置
同一群體的形態(tài)相近的甘肅省張掖市某養(yǎng)殖場的30頭牛進行數(shù)據(jù)集制作,得到有效數(shù)據(jù)6 775幅,包含牛在不同時間、不同地點的活動情況,采用人工方式進行牛個體圖像定位與標簽設定,部分標簽設定如0(Cow1)、1(Cow2)和2(Cow3)等30頭牛。
4.2 實驗評價指標
不同于其他的目標檢測任務,本文對于牛個體的個體識別檢測僅通過準確度作為評估指標是不夠的,還應該考慮模型的檢測速度。因此,本文選取了精確率(Precision,P)、召回率(Recall,R)、平均精度均值(Mean Average Precision,mAP)、參數(shù)量(Parameter)和模型計算力(Flops)5個評價指標對網(wǎng)絡模型進行評價。P 用來評價模型對牛個體圖像的檢測準確程度,R 用來評價模型檢測的全面性[22];計算公式分別如公式(4)、公式(5)所示:
4.3 實驗參數(shù)設置
本文針對牛個體圖像的識別使用的是優(yōu)化的YOLOv5算法,為驗證算法的有效性,在所有超參數(shù)、模型訓練環(huán)境相關(guān)參數(shù)均保持一致的情況下,對YOLOv5算法與其在改良后的效果進行對比。使用的GPU 為NVIDIA GeForce RTX 3050Laptop GPU,CUDA版本11.2,Pytorch版本1.7.1,Python版本3.7,Windows版本W(wǎng)indows 11家庭中文版。實驗中的參數(shù)設置如表2所示。
4.4 對比實驗
為了驗證LY-Net模型的可靠性,將LY-Net與YOLOv5模型的訓練結(jié)果進行對比,表3描述了不同網(wǎng)絡模型占用內(nèi)存大小和針對本數(shù)據(jù)集的平均識別精確率。由表3 可知,YOLOv5的識別精確率約為99.5%。相比YOLOv5,本文模型的識別精確率約為99.6%,因此在牛個體圖像識別率方面,本文模型有一定的優(yōu)勢。在模型參數(shù)方面,YOLOv5參數(shù)量較大,為7.2 MB。本文模型經(jīng)過訓練后的參數(shù)量僅為3.8 MB,因此在模型參數(shù)量方面,本文模型也有一定優(yōu)勢。
表3還給出了本文模型與YOLOv5模型的模型計算力的對比結(jié)果。從結(jié)果來看,本文模型的模型計算力為8.9 B,遠遠小于YOLOv5的模型計算力,本文模型在參數(shù)量、模型計算力、精確率方面均占有一定的優(yōu)勢。
如圖5所示,模型訓練到50次以后開始慢慢收斂,其中box_loss、obj_loss、cls_loss 已經(jīng)降到了較低的水平。其中,box_loss 是bounding box(邊界框)的定位損失,也就是模型預測框與真實框的差值,差值越小,說明模型預測框越準;obj_loss 為置信度損失,損失越小,說明目標檢測準確度越高;cls_loss 為分類損失,數(shù)值越小,說明分類準確度越高。總的損失函數(shù)就是計算三者之和,所以損失函數(shù)的變化就是box_loss、obj_loss 和cls_loss 的變化。算法的整體損失值隨訓練輪次迭代減少,其中檢測框回歸損失使用的是Focal-EIoULoss,直接最小化了目標盒和錨定盒的寬度和高度之差,這使得更快的收斂速度和更好的定位結(jié)果。
4.5 消融實驗
為了驗證經(jīng)過改進模型相對于原始模型的有效性,利用驗證集數(shù)據(jù),對經(jīng)過訓練后獲得的YOLOv5數(shù)據(jù),加入GhostNet的數(shù)據(jù)和CARAFE上采樣算子的數(shù)據(jù),與經(jīng)過最終改進后的LY-Net模型數(shù)據(jù)進行對比驗證,由圖6可以看出,最終改進后的模型在識別精確度上高于原模型和其他改進的模型,并且更加穩(wěn)定,更早收斂,由此可以得出本文所提改進后的模型是成功的、有效的。
4.6 模型識別結(jié)果
使用訓練好的LY-Net模型對測試集數(shù)據(jù)進行預測,精確率約為99.6%,召回率約為99.5%,該模型可有效識別出圖像中牛個體的圖像信息。本文模型的輸出為30頭牛個體,識別結(jié)果如表4所示。
由圖7可以看出,本文所提出的LY-Net模型在迭代次數(shù)小于20輪時,模型的精確率、召回率不太理想。但是,隨著迭代輪數(shù)的不斷提升,模型的精確率不斷提升且趨于穩(wěn)定,從而使牛個體的檢測效果提升。對YOLOv5進行了更換主干網(wǎng)絡、替換損失函數(shù)等優(yōu)化操作,令針對牛個體圖像目標的檢測效果得到提升,在100輪次的訓練下,算法優(yōu)化后的精確率(P)約為99.6%,召回率(R )約為99.5%,mAP @0.5為99.5%,能較為準確地識別牛個體圖像。
5 結(jié)論(Conclusion)
本文針對傳統(tǒng)牛個體目標檢測模型存在資源占用較大、模型體積大、參數(shù)多、受限硬件條件網(wǎng)絡收斂速度慢的問題,以YOLOv5網(wǎng)絡為基礎模型,設計了一個輕量級牛個體識別模型(Light YOLO Net,LY-Net),并自建數(shù)據(jù)集進行驗證,模型訓練結(jié)果表明,在一定范圍內(nèi),模型的迭代次數(shù)越多,模型的識別精確率越高,但是超過一定范圍,模型的識別精確率不再增長,本文模型在運行速率、模型大小及識別時間方面均優(yōu)于YOLOv5模型。目前,研究仍處于模型優(yōu)化階段,但為未來牧民與養(yǎng)殖戶能夠利用手機、平板電腦等移動設備進行牛個體身份識別的研究奠定了基礎。
作者簡介:
劉琪偉(1998-),男,碩士生。研究領域:圖像識別,目標檢測。
郭小燕(1976-),女,博士,教授。研究領域:智能信息處理,智能優(yōu)化算法。本文通信作者。
李純斌(1972-),男,博士,副教授。研究領域:資源利用與環(huán)境變化。
楊道涵(1995-),男,碩士生。研究領域:資源利用與環(huán)境變化。