?

融合注意力機制的開集豬臉識別方法

2023-03-07 03:31高榮華李奇峰劉上豪于沁楊
農業機械學報 2023年2期
關鍵詞:歐氏豬只卷積

王 榮 高榮華 李奇峰 劉上豪 于沁楊 馮 璐

(1.北京市農林科學院信息技術研究中心,北京 100097;2.西北農林科技大學信息工程學院,陜西楊凌 712100;3.國家農業信息化工程技術研究中心,北京 100097)

0 引言

隨著畜牧養殖業向規?;?、信息化、精細化的方向發展,集約化豬場將逐漸取代散戶養殖等小規模的養殖模式。在大規?;i場中要實現對生豬個體自動化、信息化、精細化的日常管理,生豬個體身份的識別十分重要。傳統的養豬業中通常使用物理標簽和RFID(Radio frequency identification system)芯片來確定豬的個體身份[1]。物理標簽通常包含圖案標記、切耳朵等方法,容易引起生豬應激,影響動物福利。而利用RFID識別生豬個體身份的方法中,不同頻率的RFID的識別范圍不同,易出現誤識別問題。為了彌補這些傳統的接觸式識別方法的不足,近年來出現了多種基于計算機視覺的非接觸式識別方法,并已應用于多種動物識別任務。這些方法僅需要相機和計算設備協助,無需額外人力和其他設備,就可以快速準確地識別動物個體身份。

計算機視覺技術發展的早期,需要人類的先驗知識來提取圖像的特征[2-3],但不同特征的重復提取以及訓練過程過于繁瑣。隨著深度學習與計算機視覺技術發展,卷積神經網絡(Convolutional neural network,CNN)表現出較強的特征提取能力[4-5],被很多研究者應用到家畜個體識別領域[6-10]。文獻[11-18]基于深度學習的家畜個體識別算法均取得了較好的識別效果,驗證了利用深度學習識別生豬個體的可行性,為后續豬臉識別的研究提供了重要的借鑒意義。然而這些方法的共同問題是訓練集和測試集中包含相同的個體,模型僅能識別訓練集中出現過的生豬個體,這種方法被稱為閉集識別。根據ANDREW等[19]對開集識別和閉集識別的解釋,閉集識別僅能識別訓練集中出現過的生豬個體,而開集識別可以識別模型從未處理過的生豬個體。張宏鳴等[20]以MobileFaceNet為基礎構建開集羊臉識別模型,其準確率達到了88.06%,模型的研究雖然實現了羊臉的開集識別,但其準確率仍有待提高,且目前尚未有在豬臉識別任務中的應用。

因此,本文提出一種融合注意力機制的開集豬臉識別方法,首先設計一種開集豬臉識別框架,通過融合全局注意力機制(Global context,GC)[21]、倒置殘差模塊和深度可分離卷積構建輕量級的特征提取模塊提取豬臉圖像特征。然后融合高效的通道注意力機制(Effificient channel attention, ECA)[22]、Ghost卷積和殘差網絡進行特征增強模塊的構建,對高層語義信息進行特征增強。最后設計新的特征提取骨干網絡,優化模型的損失函數和度量方法并保存最優模型,以提高開集豬臉識別的準確率。

1 識別方法

1.1 數據采集

生豬面部圖像于2018年8月在中國天津惠康種豬場采集。設計了一種基于定位欄的生豬面部圖像采集系統,該系統采用三腳架將攝像機固定在距離定位欄50 cm處,高度與豬面部位置平行。實驗選用分辨率1 920像素×1 080像素(HD1080)的工業攝像機拍攝自然養殖條件下的種豬視頻。圖像采集時間為06:00—08:00、10:00—12:00和14:00—18:00,共采集46頭豬只的臉部圖像。

1.2 數據預處理

從每頭豬只的臉部視頻中提取豬臉圖像,豬臉圖像在無約束條件下采集,含有大量的背景噪聲,包括圖像中出現的豬欄、窗戶等信息,都會影響豬臉的識別效果。因此,本文利用Faster R-CNN將圖像中的豬臉圖像剪裁出來,然后由人工挑選豬只正臉圖像,篩選豬臉數據。篩選之后的豬臉數據圖像如圖1所示。

圖1 豬臉數據集圖像

為實現開集豬臉識別,按照8∶2的比例劃分生豬個數,隨機選取37頭豬只的臉部圖像用于模型訓練,利用訓練集中從未出現過的9頭豬只的臉部圖像測試開集識別模型的準確率,豬臉數據集的圖像數量分布如圖2所示。因此,訓練集樣本共包含12 993幅圖像,測試集包含3 431幅圖像。隨機選取測試集中每頭豬只的2幅圖像組成圖像對,作為測試豬臉識別的正樣本,每頭豬只保留100對正樣本圖像,因此,測試集共生成900對正樣本圖像對。隨機選取不同豬只的2幅圖像組成圖像對,作為測試豬臉識別的負樣本對,隨機保留900對負樣本圖像對,保證正負圖像樣本對數量相同。

圖2 豬臉數據集的圖像數量分布

1.3 MobileFaceNet

近年來,MobileNetV1和MobileNetV2等輕量級網絡[23]多用于移動終端的視覺識別任務,但是由于人臉結構的特殊性,這些網絡在人臉識別任務上并沒有獲得滿意的效果。CHEN等[24]提出了一種專門針對人臉識別的輕量級網絡MobileFaceNet。該模型使用全局深度卷積層(Global depthwise convolution,GDConv)來代替7×7的全局平均池化層,對不同位置根據其重要性賦予不同的權重系數。同時,實驗中使用PReLU激活函數代替ReLU,選取比MobileNetV2更小的擴展因子,使模型進一步輕量化。模型訓練時采用Arcface損失函數增大類間距離,減少類內距離,從而達到優化分類效果的目的。

1.4 基于輕量型注意力機制的特征提取模塊(GCDSC)

豬臉圖像中包含多層次語義信息,如何提取圖像低層和高層語義信息是提高識別率的重點和難點。注意力機制可通過對圖像中的語義信息自主學習并根據重要程度進行加權處理,篩選對識別結果有益的圖像特征。本研究融合全局注意力機制(Global context,GC)、倒置殘差結構和深度可分離卷積(Depth-wise separable convolution, DSC)構建輕量級的特征提取模塊(GCDSC),提取豬臉圖像的淺層語義信息,具體結構如圖3所示。DSC模塊利用深度卷積(Depthwise convolution)和逐點卷積(Pointwise convolution,PC)替代傳統的標準卷積,減少模型參數量。倒置殘差結構中先使用逐點卷積對通道進行升維,再利用深度卷積操作提取特征,使模型提取到豐富的特征信息,最后通過逐點卷積使輸入通道與輸出通道的維度保持一致,這樣既能實現跨層連接,又減少了模型參數量和計算量。模型利用DSC和GC構建GCDSC模塊,可以捕獲遠距離依賴關系,計算聚合特征中特征查詢位置和所有位置的成對關系,重新校準查詢位置特征的重要程度,對全局位置特征和通道特征均具有較好的重校準功能。GCDSC模塊結構如圖3所示,利用一個DSC模塊提取聚合特征,并將不同支路的輸出結果進行特征拼接,拼接后的特征輸入至Context Modeling和Transform模塊中建立全局特征的上下文關系,進行特征重校準。

圖3 DSC和GCDSC模塊架構

定義全局上下文建模整體框架為

(1)

在本文設計的GCDSC模塊中,使用1×1卷積Wk和Softmax函數來獲取注意力權值αj,計算式為

(2)

然后對αj進行注意力池化,獲取全局上下文特征

(3)

利用Transform模塊中1×1卷積Wv1和Wv2來捕獲通道之間的依賴關系,對應式(1)中的δ()操作,其中2個1×1卷積層中間增加了歸一化層(LayerNorm, LN)增強特征的泛化能力,激活函數選用ReLU函數,計算公式為

δ()=Wv2ReLU(LN(Wv1P()))

(4)

最后,利用加法將全局上下文特征聚合到每個位置的特征上,進行特征聚合,該模塊的體系結構可以表示為

(5)

1.5 基于高效注意力機制和Ghost卷積的特征增強模塊(C3ECAGhost)

重構的輕量級骨干網絡降低了模型參數量并提高了參數有效性,同時也造成了一定的特征損失。因此,本文利用ECA注意力機制、Ghost卷積和殘差網絡設計了新的特征增強模塊(C3ECAGhost),用于提取圖像高層語義信息。其中,ECA和Ghost卷積均為輕量級模塊,既能增強模型對豬臉圖像深層特征的理解,又可避免參數量激增,其結構如圖4所示。

圖4 特征增強模塊(C3ECAGhost)結構圖

其中,GhostBottleneck結構和Ghost卷積操作如圖5所示。圖5a為GhostBottleneck結構圖,圖5a利用Ghost卷積構成GhostBottleneck模塊應用在C3ECAGhost模塊中提取深層語義特征。步長為1時,GhostBottleneck包含2個Ghost卷積模塊,步長為2時,2個Ghost卷積模塊中間增加深度可分離卷積,來減少特征圖降維造成的損失。

圖5 GhostBottleneck結構和Ghost卷積操作

圖5b、5c為傳統卷積操作和Ghost卷積操作的示意圖。Ghost卷積將傳統卷積分成2個步驟執行,第1步使用少量傳統卷積生成m個原始特征圖;第2步利用m個原始特征圖經過線性運算再生成s個 Ghost特征圖, 經過上述2步操作, Ghost卷積最終輸出m×s個特征圖,使用Ghost卷積進行特征提取所占用的參數量約為傳統卷積的1/s。

1.6 開集豬臉識別方法

本研究沒有采用傳統的Softmax方法進行分類學習,而是抽取最后一層特征圖并將其映射為特征向量,利用度量方法計算特征向量之間的距離,識別豬只個體,構建了一種開集生豬臉部識別方法,具體流程如圖6所示。

圖6 開集生豬臉部識別流程圖

圖6為開集生豬臉部識別方法,利用1.3~1.5節設計了一種改進的輕量級骨干網絡,將其命名為PigFaceNet,模型具體結構如表1所示。開集生豬臉部識別方法中,112像素×112像素的豬臉圖像按照1.2節的流程劃分為訓練集和測試集,且測試集包括1 800對圖像。利用訓練集訓練PigFaceNet模型,經過隨機丟棄(Dropout)和全連接層后輸出前向推理結果,計算豬臉分類的損失值,并利用梯度下降法調整參數,保存最優模型。模型測試時,正負豬臉圖像對被輸入至訓練好的輕量級骨干網絡中得到成對的特征向量,選擇歐氏距離或余弦距離作為度量方法計算兩向量距離,并和最佳閾值進行比較,確定圖像對是否屬于同一頭豬。其中,最佳閾值按照文獻[19]的方式計算得到,測試時選用十折交叉驗證的方式獲取測試集的平均準確率。為進一步優化PigFaceNet模型,從現有損失函數ArcFace、CosFace[25]和SphereFace[26]中選擇最適合用于豬臉識別的損失函數作為最優損失函數,并從歐氏距離和余弦距離兩種度量方法中尋找最優度量方法,保存最優模型。

表1 PigFaceNet模型結構

2 實驗結果與分析

2.1 實驗參數設置

實驗使用1塊16 GB NVIDIA Tesla P100圖形處理器進行訓練,基于Ubuntu 16.0操作系統、Python 3.8和PyTorch 1.7.1搭建深度學習算法訓練平臺。使用CUDA API版本10.1和CuDNN版本8.0.5。將訓練過程中的訓練輪數設置為300輪,每次訓練批次為256幅圖像,初始學習率設為0.1,分別在第5、60、200輪時,學習率降為原來的1/10。

2.2 訓練結果

利用豬臉數據集訓練本文提出的PigFaceNet模型,每輪訓練完成后在測試集中分別測試模型在余弦距離度量和歐氏距離度量下的豬臉識別準確率。其中,訓練過程中各參數變化如圖7所示。

圖7 訓練過程中各參數變化曲線

圖7展示了MobileFaceNet和PigFaceNet 2個模型的訓練結果,模型訓練過程中分別使用余弦距離和歐氏距離作為度量方式,計算每輪訓練完成后的測試結果,保存準確率最高的模型權重。隨著訓練輪數的增加,模型準確率整體呈上升趨勢,隨后逐漸趨于穩定,損失值整體呈下降趨勢,最終趨于穩定。損失值在前60輪波動較大,這是由于本文采用階段式學習策略,在第5輪和第60輪學習率降為原來的1/10,加速模型收斂。對比MobileFaceNet和PigFaceNet在訓練過程中準確率的變化曲線可知,以歐氏距離為度量方法的準確率高于以余弦距離為度量方法的準確率,結果表明,對于豬臉圖像來說,歐氏距離更能區別類間差異。且PigFaceNet模型搭配歐氏距離的準確率明顯高于MobileFaceNet模型搭配歐氏距離的準確率,MobileFaceNet的損失值穩定在5.1左右,而PigFaceNet的損失值穩定在1.4左右,損失值有較明顯的下降,驗證了本文算法的有效性。

本文模型和MobileFaceNet模型的最優結果對比如表2所示,利用相同的方法和數據集訓練MobileFaceNet和PigFaceNet模型,對比訓練結果可知,MobileFaceNet使用不同的度量方式時,準確率不同。其中以歐氏距離為度量方法時準確率最高,為92.67%。而本文方法優化了骨干特征提取網絡并將損失函數更換為SphereFace函數,搭配歐氏距離使用時,模型識別豬臉的準確率為94.28%,比改進前的MobileFaceNet的準確率提高1.61個百分點。實驗結果表明,本文提出的開集豬臉識別方法具有更高的準確率,且未引起參數量的激增,既提高了豬臉識別的準確率又實現了模型輕量化,更加適用于豬場管理。

表2 不同模型的對比結果

2.3 消融對比實驗

本文以MobileFaceNet為基礎,在骨干網絡中加入特征提取模塊GCDSC和特征增強模塊C3ECAGhost,構建PigFaceNet模型,然后修改MobileFaceNet的損失函數和度量方法,尋找最適合用于豬臉識別的最優組合。因此,利用控制變量法設計消融對比實驗,在MobileFaceNet模型中逐步加入優化模塊,構建不同的優化模型,對比消融實驗結果如表3所示。

由表3可知,更換MobileFaceNet模型的損失函數可以提高其在豬臉測試集中的準確率,且模型占用存儲空間不變。當在MobileFaceNet模型的骨干網絡中加入GCDSC模塊時得到模型2,搭配SphereFace和歐氏距離度量方法,模型2的準確率達到93.72%,比MobileFaceNet的準確率提高1.05個百分點,證明了相比于其他的損失函數,SphereFace更適用于約束豬臉特征,可增大類間差距并縮小類內差距。當模型2中加入C3ECAGhost時,豬臉圖像的深層語義特征被進一步增強,模型提取到的豬臉特征更加豐富,而SphereFace特征在角空間中具有很強的可分離性,可以將同類豬臉圖像特征內聚,不同類豬臉圖像特征分離。因此SphereFace在模型3中表現出了較好的效果,準確率達到94.28%,準確率比模型2提高0.56個百分點,模型占用存儲空間為5.44 MB,符合輕量級模型的要求。編寫測試代碼,測試模型1~3中骨干網絡的推理時間和推理速度可知,模型3對每幅圖像的推理時間比模型1的推理時間僅增加1.63 ms,每秒可推理105.09幀圖像,滿足真實豬場對推理速度的要求。綜上所述,本文提出的兩種特征增強模塊可提高原始模型的特征提取能力,均提高了豬臉識別的準確率,且未引起模型參數量的激增,保持了輕量級模型的特性。同時驗證了SphereFace損失函數和歐氏距離度量方法可以更好地描述豬臉特征,對于提高豬臉識別準確率有著重要作用。

表3 開集豬臉識別方法的消融對比實驗結果

2.4 討論與分析

為避免樣本分類不均帶來的識別誤差,本文利用十折交叉驗證計算平均準確率,檢驗模型的魯棒性。將測試集劃分為10份,每次取9份用來尋找最佳閾值,然后測試第10份在最佳閾值下的準確率,重復10次,計算每份測試集準確率的平均值,作為測試集的平均準確率。其中,余弦距離取值范圍為[0,1],歐氏距離取值范圍為[0,4],本文最優模型的十折交叉驗證的測試結果如表4所示。

表4 最優模型的十折交叉驗證測試結果

利用十折交叉驗證后發現,不同測試集圖像獲取的最佳閾值不同,而不同最佳閾值在每份測試集中的測試結果不同,準確率最高為98.888 9%。對于豬臉圖像來說,以余弦距離為度量方法的最佳閾值為0.237 5和0.245 0,而以歐氏距離為度量方法時的最佳閾值為1.600 0和1.640 0。對10份測試集準確率取平均作為該測試集的平均準確率,以余弦距離為度量方法的模型準確率為92.055 6%,以歐氏距離為度量方法的模型準確率為94.277 8%。實驗結果表明,歐氏距離更適合度量豬臉圖像之間的距離關系,可將不同豬只之間圖像的距離拉得更遠,相同豬只臉部圖像之間的距離變得更小。

實際應用中無法提前獲取測試集中每對圖像的標簽結果,無法利用前9份測試集獲取最佳閾值,因此,需要提前設置好衡量豬臉圖像的最佳閾值,獲取整體測試集的準確率。根據表4中得到的每份測試集中的最佳閾值,將整個測試集輸入至模型中獲取1 800個豬臉圖像對的識別準確率。

當模型以余弦距離作為度量方法時,最佳閾值取0.237 5和0.245 0,測試集準確率均為93.28%;當模型以歐氏距離為度量方法時,最佳閾值取1.600 0,測試集準確率為94.33%,最佳閾值取1.640 0,測試集準確率為93.94%。實驗結果表明,固定閾值下,1 800個圖像對的測試結果與表4得到的結論相同,歐氏距離更適合區分豬臉特征,且閾值為1.600 0時,豬臉特征被區分的效果最好,豬臉識別準確率最高。因此,設置余弦距離閾值為0.237 5,歐氏距離閾值為1.600 0,計算測試集中每頭生豬的準確率如圖8所示。

圖8 固定閾值時每頭生豬的準確率

由圖8可知,以歐氏距離為度量方法的豬臉識別模型識別4號豬只的準確率為100%,大部分豬只的準確率高于以余弦距離為度量方法的豬臉識別模型。其中,編號為40號豬只的識別率最低,且當40號豬只分別與34號、39號、46號豬只組成圖像對或與40號豬只本身圖像組成正樣本對時,容易導致識別錯誤。分析40號豬只結果可知,識別正確的正樣本數占正樣本總數的71.00%,而識別正確的負樣本對占40號豬只負樣本數的91.24%,證明影響40號豬只準確率的主要原因是類內差距較大。識別率最高的4號豬只和識別率最低的40號豬只圖像對比如圖9a所示,4號豬只和40號豬只均存在多角度、耳朵遮擋的問題,而40號豬只的豬臉角度和光照影響明顯多于4號豬只,一方面證明了受豬只耳朵、姿態、角度和光照因素,使得類內差異大,類間差異小成為了豬臉識別的典型特征,另一方面證明了本文方法在一定程度上縮小了類內差距,為提升豬臉識別準確率提供了思路。40號豬只識別錯誤的正負樣本樣例如圖9b、9c所示,40號豬只本身圖像存在的多光照和多角度的問題是造成40號豬只識別率低的主要原因,本算法雖然在一定程度上提高了豬臉識別準確率,但尚未完全解決。實際應用中,開集識別可將新的豬臉圖像和數據庫中豬臉圖像一一比對相似程度,判斷未知豬只是否在數據庫中出現過,可嘗試在數據庫中添加不同角度、光照和姿態下的豬臉圖像入庫,提高豬臉識別準確率。而閉集識別則默認未知豬只屬于數據庫中的某一頭豬,無法識別數據庫中未出現過的豬只,添加豐富的豬臉圖像也無法解決此類問題。綜上所述,本文算法提高了豬臉識別的準確率,并針對這種類內差距大的問題做了改進,在一定程度上克服了外界因素的干擾,同時也為后期豬臉識別研究提供了借鑒意義。

圖9 40號豬識別錯誤的正樣本對和負樣本對樣例

3 結論

(1)基于GC注意力機制、倒置殘差結構和深度可分離卷積構建了輕量化GCDSC模塊提取豬臉特征,模型準確率提高1.05個百分點,可以充分提取豬臉圖像的低層語義特征。

(2)利用ECA注意力機制、Ghost卷積和殘差網絡設計的C3ECAGhost模塊提取豬臉圖像高層語義信息,模型準確率提高0.56個百分點,可以提取更豐富的高層語義特征。

(3)本文提出的輕量級特征提取模型PigFaceNet和開集豬臉識別方法,實現了訓練集和測試集個體不交叉情況下的豬臉識別,準確率達到94.28%,比改進前MobileFaceNet識別豬臉的準確率提高1.61個百分點,模型占用存儲空間僅為5.44 MB,具有準確率高、模型權重小、輕量化的特點,為非接觸式開集豬臉識別提供了參考。

猜你喜歡
歐氏豬只卷積
降低日糧粗蛋白并添加單體氨基酸對斷奶—育肥豬生長性能和營養排泄的影響(中)
基于3D-Winograd的快速卷積算法設計及FPGA實現
豬胃潰瘍的病因與防治措施
秋冬季防應激不可忽略飲水消毒
從濾波器理解卷積
豬只硒缺乏癥的預防措施和治療方法
基于傅里葉域卷積表示的目標跟蹤算法
一種基于卷積神經網絡的性別識別方法
基于多維歐氏空間相似度的激光點云分割方法
三維歐氏空間中的球面曲線
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合