黃志杰,徐愛俊※,周素茵,葉俊華,翁曉星,項云
(1. 浙江農林大學數學與計算機科學學院,杭州 311300;2. 浙江農林大學環境與資源學院,杭州 311300;3. 浙江省農業機械研究院,金華 321000)
隨著生豬養殖業的快速發展,基于非侵入式身份智能識別的生豬智能飼喂、體尺測量、體重預估和行為分析等數字化的智慧養殖方式受到廣泛關注[1-5]。目前,常見的生豬個體身份識別主要采用侵入式方式,如佩戴耳標、打耳缺、畫標記等。這些方法均有一定的局限性,耳標存在易污染、易損壞、射頻信號距離有限等問題;耳缺會使生豬產生應激反應,造成傷口感染;背部標記符號容易褪色,且勞動力成本較高。近年來,基于豬臉識別的非侵入式生豬身份智能識別成為研究熱點,其中閉集識別方法已經有著廣泛深入的研究和探索。然而,在實際應用場景下,面對生豬個體數量增加和數據來源多樣化帶來的開放性挑戰,需要將閉集識別轉換為魯棒性更高的開集識別。在開集識別過程中,必須進行精細、高效的豬臉對齊操作,而在豬臉對齊過程中,豬臉關鍵點檢測是必要的預處理環節。
隨著計算機視覺技術與深度學習技術的發展,卷積神經網絡在人臉識別和面部關鍵點檢測領域得到較為廣泛應用[6-10],但在生豬面部關鍵點檢測中的應用還較少。李向宇等[11]提出一種通過構建豬臉人臉匹配數據集,訓練形變卷積神經網絡,使用形變豬臉數據集對人臉特征點檢測神經網絡模型進行微調,錯誤率為5.60%,過程較為繁瑣。蔡騁等[12]提出了自適應級聯檢測器定位牛臉位置,用統計迭代模型提取牛臉輪廓的方法,有效抑制了角度變化的誤差,但算法的實時性欠佳。KHAN等[13]構建了一個包含350 種動物共22 400 余張圖像構成的大規模動物面部數據集AnimalWeb,每個面部有9個關鍵點,由于動物面部姿態變化較大,使用人臉對齊的方法檢測關鍵點效果較差,還需要使用單獨的算法來分析單一種類的動物面部關鍵點對齊方法。楊家林[14]在羊臉識別過程中,使用G-RetinaFace 模型,檢測羊臉關鍵點,但并未對關鍵點的準確性進行評估。王榮等[15]提出了一種適應多變環境的生豬個體識別方法,設計了多尺度卷積結構,融合非對稱卷積,在復雜場景下模型的識別率為99.81%。謝秋菊等[16]將CBAM 注意力模塊嵌入到精簡的DenseNet 模型中,參數僅有DenseNet 模型的1/10,生豬個體識別準確率為99.25%。張建龍等[17]探究了育肥豬生長過程中臉部變化對識別模型準確率的影響,但模型需要每天訓練且訓練數據必須提前4 d 獲取,模型的準確率為95.82%。何嶼彤等[18]改進YOLOv3 模型,提升了遠距離豬臉檢測的能力,達到了90.18%的平均精度。秦興[19]選用200 頭豬的2 110個樣本,手動裁剪豬臉圖像,并改進了雙線性卷積神經網絡,準確率達到了95.73%。WANG等[20]使用SphereFace 損失函數[21]度量學習方法,構建了基于殘差連接和注意力機制的豬臉開集識別模型,其數據集使用Faster RCNN 對豬臉進行裁剪,通過手動挑選無遮擋的圖像,開集識別準確率為95.28%。WANG等[22]將人體重識別領域的三元組損失應用到豬臉識別上,使用EfficientDet d0 作為豬臉檢測器,在復雜環境下,使用KNN 對28 頭豬的分類準確率為96%。YAN等[23]提出了一種基于改進CenterNet 的豬臉檢測方法,平均精度為93.61%。綜上,現有關于生豬及其他動物面部關鍵點檢測的研究較少,且相關的面部關鍵點檢測及個體識別研究中均未考慮動物姿態變化對模型產生的影響,而是直接將未對齊的動物面部圖像送入分類器進行訓練和測試,這種方法難以適用于開集動物個體識別。
為快速準確地采集生豬面部關鍵點,本文采用YOLOv5Face 作為基礎模型,將單階段關鍵點回歸的人臉關鍵點檢測方法進行改進并用于豬臉關鍵點檢測,構建了YOLO-MOB-DFC 模型。模型首先設計了MOB-DFC模塊,利用重參數化和解耦全連接注意力機制(decoupled fully connected attention,DFC)實現局部特征和全局特征的融合,在降低模型參數量的同時提高其檢測精度,再采用輕量級上采樣算子CARAFE 提升關鍵點檢測的準確性,如期實現實際豬場環境下生豬面部關鍵點的高精度、快速檢測,為后續生豬個體識別奠定良好基礎。
1.1.1 數據采集
本文數據采集于浙江省杭州市余杭區瓶窯鎮浙江清渚農牧有限公司的配懷舍和育肥舍,配懷舍以養殖丹系母豬為主,育肥舍養殖品種為長白豬。為避免單一設備采集的圖像使得檢測器的穩定性和適應性較差的問題,本研究分別選擇iPhone 11 和海康威視800W 像素變焦攝像頭作為豬臉數據采集設備,分辨率均為1 920×1 080 像素,共采集后備母豬及懷孕母豬100 頭,面部視頻250 段,每頭豬的視頻拍攝間隔大于7 d。由于母豬限位欄內采集到的圖像僅包含單頭生豬,數據較為單一,為增加數據多樣性,本文另外從育肥舍使用高清攝像頭采集220 張復雜背景下多頭豬的圖像,并將其添加到數據集中,采集環境及設備搭建如圖1 所示,左側攝像頭位于飲水槽上方,吊裝攝像頭距地面約1.5 m。最終,形成了一個包含1 019 張生豬面部圖像的數據集,其中訓練集圖像719 張,驗證集圖像和測試集圖像各150 張。

圖1 采集環境及設備Fig.1 Acquisition environment and equipment
為避免由于采集的視頻幀間相似度較高可能導致模型出現過擬合的問題,將圖像采樣時間間隔設置為0.5 s,采用結構相似性(structure similarity index measure,SSIM)判斷前后兩張圖像的相似度,通過比較圖像的亮度、對比度和結構過濾掉高相似度的圖像。SSIM 計算式為:
式中 μx、μy為圖像的平均灰度值;σx、σy為圖像灰度標準差;C1、C2、C3為常數,防止分母為0;α、β、γ分別代表了不同特征在SSIM 衡量中的占比,當取值為1 時,將式(1)代入式(2)中得到式(3):
根據多次試驗結果,將SSIM 閾值設置為整段視頻的平均SSIM,即兩張圖像的SSIM 值大于平均SSIM 時,即被認為是相同的圖像,僅保留其中一張,反之保留兩張。
1.1.2 數據標注
使用Labelme 工具對數據集進行目標框和關鍵點標注,其中目標框標注范圍為生豬面部。生豬眼睛和額頭部位存在較多特征點,但耳朵由于動作幅度較大不宜被選作特征點[24],因此本文標注的生豬面部關鍵點包括雙眼、兩側鼻翼尖端及鼻尖中心。豬臉關鍵點標注如圖2所示。

圖2 豬臉關鍵點標注Fig.2 Pig face key points labeling
1.1.3 圖像預處理
為提高模型的泛化能力和對生豬面部關鍵點的檢測能力,綜合使用高斯模糊、椒鹽噪聲、位置平移、水平翻轉、亮度調節、銳化等多種方式對圖像進行增強。經過離線增強后的訓練數據集圖像由719 張擴充到4 302 張,使得數據具有更好的多樣性,有助于網絡學習到更多特征。數據增強結果如圖3 所示。

圖3 生豬原始圖像及增強圖像Fig.3 Process of pig original images and the image data enhancement
YOLOv5Face 是基于YOLOv5 的一種基于回歸的人臉檢測算法[25]。該算法在YOLOv5 預測邊界框基礎上,添加5個關鍵點,由于MTCNN 中L2 損失函數對小誤差不敏感,將Wing loss 作為損失函數對關鍵點進行約束,使用分類損失、定位損失、置信度損失和關鍵點損失構成的損失函數為:
式(4)中,預測值的范圍為0~1,ω 用于將非限制性部分的范圍限制在[-ω,ω]區間內,ε用于約束非線性區域的曲率,C=ω-ωln(1+ω/ε)為常數,用來平滑連接分段的線性和非線性部分。式(5)是Wing loss 損失,si為預測點的點向量,為真實點的點向量,si-表示兩個點向量之間的差異。式(6)為損失函數整體,λ為損失權重,Lcls為分類損失,Lobj為置信度損失,Lloc為 定位損失,Llm為關鍵點損失。
YOLOv5Face 的結構與YOLOv5 基本保持一致,主要區別在于其網絡結構進行了優化,將YOLOv5 中Focus 模塊替換為更加簡單的Stem 模塊,既降低了計算復雜度又保持了模型精度。同時,SPP 模塊中使用更小的池化核,將池化核改為3、5、7,提升了檢測精度。
本文基于YOLOv5Face 進行改進,首先將原有的YOLOv5s-Face 骨干替換為MobileOne 重參數化骨干網絡,再將解耦全連接注意力機制和MobileOne Block 融合,構成MOB-DFC(MobileOne Block-DFC)模塊,增強局部特征,捕捉遠距離的空間信息擴大感受野;再將特征金字塔中的上采樣替換為輕量化上采樣算子CARAFE(content-aware reassembly of features,CARAFE)充分利用特征信息,使關鍵點檢測更加準確;最后利用預測頭對圖像進行預測,生成目標的類別和邊界框的坐標、5個關鍵點的位置信息以及置信度。改進后的模型網絡YOLO-MOB-DFC 如圖4 所示,其中紅色部分為改進之處,MOB 代表MobileOne Block。

圖4 YOLO-MOB-DFC 模型總體結構圖Fig.4 General structure of YOLO-MOB-DFC model
1.2.1 引入重參數化骨干網絡MobileOne
在實際檢測環境下,由于計算資源的有限性,需要降低模型的復雜度,即對骨干網絡Backbone 進行輕量化設計[26]。MobileOne 模型基于MobileNetV1 設計,由大量MobileOne Block 構成,在MobileOne Block 結構中使用了深度可分離卷積(depthwise convolution)和點卷積(pointwise convolution),吸收了RepVGG 重參數的思想[27-28]。MobileOne Block 結構如圖5 所示,該結構使用重參數化的方法,先將k個卷積層和BN 層合并為k個分組數為d的3×3 卷積,再將這k個3×3 卷積融合為一個卷積層,最后將多個分支結構相加,進入到激活函數。在模型訓練階段,盡可能讓網絡模型復雜以提取到更多有效的語義特征。在模型推理階段,將多分支結構進行重參數化為單分支結構,使模型更加簡單,參數量減少,推理速度更快。

圖5 MobileOne Block 結構圖Fig.5 MobileOne Block structure diagram
1.2.2 融合解耦全連接注意力機制
MobileOne 骨干模型在局部特征提取方面表現良好,但其全局特征提取能力不足。自注意力機制雖擁有長距離建模的能力,但其計算復雜度與輸入分辨率大小呈二次方增長,使得其無法有效處理高分辨率輸入圖像[29]。為解決此問題,設計了MOB-DFC 模塊,該模塊由MobileOne Block 和解耦全連接注意力機制構成,前者用于提取局部特征,后者用于捕捉遠處空間信息,通過特征圖與注意力地圖對應元素乘積的方式增強局部特征的表達能力。由于直接引入解耦全連接注意力機制和MobileOne Block 并行的方式會增加計算成本,因此通過下采樣將特征圖的大小縮小,再通過1×5 和5×1 非對稱卷積提取特征,使用雙線性插值上采樣還原特征圖,以匹配MobileOne Block 分支特征的分辨率大小,再經過Sigmoid,將特征值范圍映射到(0,1)之間的概率值。MOBDFC 模塊的結構如圖6 所示,圖6a 所示結構用于輸入圖像和輸出大小相同的圖像,能夠更好學習局部信息。圖6b 所示結構將輸入通過步長為2 的深度可分離卷積,使得模型特征圖縮小一半,降低計算復雜度加快處理速度。圖6c 所示的解耦全連接注意力機制中,沿著水平和垂直兩個方向解耦全連接層,分別使用兩個全連接層聚合兩個方向的長距離信息,從而省去推理過程中張量維度變換和矩陣轉置等操作,進一步提升了推理速度。

圖6 MOB-DFC 模塊結構Fig.6 MOB-DFC Module structure
式(7)是使用全連接層實現注意力圖的方式,式中元素乘法符號表示兩個矩陣對應元素相乘的操作,ahw表示注意力圖輸出的第h行,第w列的元素,Fhw,h′w′為可學習的權重,其中h和w為注意力圖的索引,h′和w′為輸入特征的空間位置索引。為了避免全連接層的計算復雜度過高,需將其分解成兩個方向的卷積操作,并分別表示為式(8)和式(9),其中H和W分別表示卷積核的高度和寬度。利用式(8)和式(9)分別對輸入特征圖進行垂直和水平方向的卷積操作,生成特征圖,從而提取局部特征并捕捉遠處的空間信息。式(8)和式(9)中,表示經過垂直方向卷積后輸出特征圖中的第h行w列的像素值,zh′w表示第h′行w列的輸入特征圖像素值,代表卷積核在h和h′行之間的權重值。因此,通過分解全連接層,可以在保持計算效率的同時,提高局部特征的表達能力,并提升模型的檢測速度。
為更加直觀地體現DFC 注意力機制的有效性,使用不同模型的骨干網絡生成了注意力熱圖,并對其使用XGrad-CAM[30]進行可視化分析,對比結果如圖7 所示。

圖7 不同模型骨干網絡的注意力熱圖Fig.7 Attention heat map of backbone networks with different models
由圖7 可知,在YOLOv5s-Face 和MobileOne 的骨干網絡之后生成的熱圖,生豬面部的關注區域相對較小,不能包含生豬完整的面部,并且在圖像的其他部分也存在注意力區域,而YOLO-MOB-DFC 模型骨干網絡生成的熱圖中,注意力區域較完整地包含了生豬面部,提高了特征提取的有效性。
1.2.3 融合輕量上采樣算子CARAFE
特征金字塔中,上采樣操作尤為重要。最近鄰差值和雙線性插值這兩種常用的上采樣方法僅考慮了相鄰的亞像素空間,缺乏語義信息并且感受野較小。反卷積雖然也可以進行上采樣,但因采用了單一的卷積核,限制了對局部變化的差異感知能力,參數量較大。而感知特征重組上采樣算子CARAFE 可以彌補上述方法的缺陷,能在每個位置都有不同的上采樣卷積核以及在全面感知鄰域內聚合上下文信息,從而提升模型檢測能力。CARAFE 算子由上采樣模塊和特征重組模塊組成,首先利用上采樣預測模塊生成上采樣核,再將特征重組模塊與上采樣核進行重組[31]。
1.2.4 替換EIoU 損失函數
為使目標框檢測更為精準,將YOLOv5Face 中的CIoU 損失函數替換為EIoU 損失函數,EIoU 在CIoU 的基礎上,考慮了目標框的重疊面積和中心點距離,分別計算了檢測框寬和高的差異值,取代了橫縱比,同時引入了Focal Loss 解決了難易樣本不平衡的問題,使得目標框回歸過程更專注于錨框的質量[32]。EIoU 計算式為:
式中,IoU為真實邊界框與預測邊界框之間的交并比,ρ2(bp,bgt)是預測邊界框中心與真實邊界框中心的歐式距離,wp和hp分別為預測邊界框的寬和高,wgt和hgt分別為真實邊界框的寬和高,c為真實框和預測框的最小外接矩形的對角線距離。
試驗均在操作系統為Ubuntu 22.04、Intel Core i7-12700KF CPU、顯卡為Nvidia GeForce RTX3090Ti 的Ubuntu 服務器上進行。訓練過程使用CUDA 11.7 加速,訓練300 Epoch,批量大小(batch size)根據不同模型占用顯存進行調節,共2n個,初始學習率為0.01,使用一階Adam 優化器對模型進行優化,采用余弦退火算法調節學習率。
為客觀評價豬臉關鍵點檢測模型的性能,同時對預測框和預測關鍵點進行評估,采用的評價指標包括精確度(precision,P)、召回率(recall,R)、平均精度(average precision,AP)、計算參數量(parameters)、標準化平均誤差(normalized mean error,NME,計為ENME)和幀率(frame per second,FPS),各指標計算式如下:
式(11)和(12)中,TP、FP和FN分別表示正確預測的生豬面部圖像的數量、非生豬面部圖像預測為生豬面部圖像的數量和錯誤地將生豬面部圖像預測為非生豬面部圖像的數量。將精確度和召回率構成的PR 曲線下方的面積定義為AP,即平均精度。式(14)中,xi為預測的第i個坐標,為第i個坐標的ground-truth,d為兩眼間距離,即關鍵點歐氏距離之和與關鍵點的個數及兩眼之間距離的乘積之積,該值代表關鍵點預測的錯誤率,值越小表示關鍵點預測的準確度越高。檢測速度即一秒之內處理的圖像幀數,單位為幀/s。
為驗證模型YOLO-MOB-DFC 的性能,使用自建豬臉測試數據集,首先與分別采用Resnet50 和MobileNet骨干網絡的兩種主流人臉關鍵點檢測模型RetinaFace 進行對比,再與分別采用 YOLOv5s-Face、MobileOne 和RepVGG 骨干網絡的三種YOLOv5s-Face 模型進行對比,結果如表1 所示。

表1 不同模型試驗結果Table 1 Experimental results of different models
由表1 可知,YOLOv5-Face 結構的模型相比RetinaFace 各模型的效果更優,AP均超過96.6%。相比RetinaFace-Resnet50 模型,YOLO-MOB-DFC的AP提升了5.43%,參數量降低了78.59%,幀率提升了91.25%,NME 降低了2.774%;相比YOLOv5s-Face,YOLO-MOBDFC 在GPU 上推理速度相近,但參數量降低了18.29%,AP提升了2.48%;相比MobileOne 骨干,YOLO-MOBDFC的P、R和AP分別提升了4.35%、2.98%、1.22%,NME 降低了0.567%;相比RepVGG 骨干,YOLO-MOBDFC的AP值略有降低,但NME 更小。由于添加了CARAFE 算子,YOLO-MOB-DFC 的推理速度有所下降,但NME 最低,這表明其關鍵點預測位置更為精準,且速度和性能有著較好的平衡。
為驗證模型所添加模塊的有效性,本研究進行了消融試驗,以YOLOv5s-Face 作為基本結構,分別將特征提取骨干網絡更換為含有DFC 注意力的MobileOne 骨干、EIoU 損失函數和CARAFE 算子,消融對比試驗結果如表2 所示。

表2 消融對比試驗結果Table 2 Ablation comparison experiment results
由表2 可知,將YOLOv5s-Face 的骨干網絡中替換了MOB-DFC 模塊后,參數量相比改進前降低了21%,AP提升了1.8個百分點。將CIoU 替換為EIoU 后,AP值和FPS 變化較小,但NME 提升了0.836%。將原有的最近鄰插值上采樣替換為CARAFE 算子后,參數量有所提升,推理速度略有下降,NME 僅為1.606%,豬臉關鍵點預測位置最精準。與YOLOv5s-Face 相比,改進后模型的AP提升了2.48%,參數量下降了18.29%,NME 為2.344%,略低于僅含有CARAFE 算子的YOLOv5s-Face模型。由于改進后的模型結構更加復雜,DFC 注意力機制和CARAFE 算子增加了計算復雜度,導致檢測速度略有降低。
在實際環境中,生豬的面部姿態變化多端,因此本研究對運動中生豬面部關鍵點進行持續檢測。為了評估模型的穩定性和準確性,選取了一段視頻并截取其中連續的480 幀進行了豬臉關鍵點檢測,檢測精度曲線如圖8 所示。

圖8 連續幀間標準化平均誤差曲線Fig.8 Normalized mean error curves between consecutive frames
在圖8 中出現的波峰,是因為豬臉姿態多變,出現了大角度側臉,從而降低了關鍵點的準確性。對比改進后的模型和YOLOv5s-Face 模型在這段視頻中的表現可知,YOLOv5s-Face 模型的幀間NME 波動較大,改進后的模型連續幀間的NME 波動更加穩定,說明該模型能夠削弱豬臉姿態多變對關鍵點提取準確性的影響。
為直觀展示目標框及關鍵點的檢測效果,將RetinaFace、YOLOv5s-Face 和YOLO-MOB-DFC 進行對比,結果如圖9 所示。由圖9a~9d 可知,RetinaFace 模型檢測到的生豬雙眼關鍵點及鼻尖存在著較大誤差;從圖9c中可以看出,第二頭豬的鼻尖關鍵點誤差較大;圖9f~9g 所示大角度側臉和近距離圖像中,由于生豬鼻翼兩側邊緣不明顯,出現了關鍵點漂移的情況,但圖9 h 表明本文模型能夠降低鼻翼邊緣不明顯對關鍵點檢測準確性的影響,且模型預測框的置信度均高于其他模型。上述分析表明,本文模型檢測關鍵點的準確度更高。

圖9 YOLO-MOB-DFC 模型識別結果Fig.9 YOLO-MOB-DFC model recognition effect
針對生豬面部姿態多變導致豬臉關鍵點檢測誤差較大的問題,本文提出了一種基于YOLOv5Face 模型改進的豬臉關鍵點檢測方法,構建了YOLO-MOB-DFC 模型。該模型通過融合重參數化的骨干網絡,結合解耦全連接注意力機制,改進邊框損失函數,采用CARAFE 上采樣算子優化深度學習網絡,實現了豬臉關鍵點及邊界框的高精度檢測。結果表明,本文模型的平均檢測精度達到了99.0%,在數據集相同的情況下,相比RetinaFace,平均精度提升了5.43%,參數量降低了78.59%,幀率提升了91.25%,NME 降低了2.774%;相比YOLOv5s-Face模型,平均精度提高了2.48%,參數量降低了18.29%,NME 降低了0.567%,檢測速度為153 幀/s。本文模型在連續幀間的標準化平均誤差波動更加穩定,削弱了豬臉姿態多變對關鍵點檢測精度的影響。因此,本文模型不但能檢測出豬臉,還能準確定位其5個面部關鍵點,實現了低參數量、高精度、快速的豬臉關鍵點檢測,可為后續生豬面部姿態評估和個體識別提供一定的技術參考。未來可進一步深入探究將其他品種的豬作為目標關鍵點檢測對象,并構建適用于生豬面部關鍵點的對齊方法,以提升模型的普適性,為生豬身份開集識別奠定理論基礎。