吳夢茹,謝秋菊*,李 欣,劉洪貴
(1.東北農業大學 電氣與信息學院,黑龍江 哈爾濱 150030;2.東北農業大學 動物科學技術學院,黑龍江 哈爾濱 150030)
伴隨著規?;B殖生產的快速發展,福利化生豬養殖方式引起人們極大的重視[1]。群體化的飼養過程中,對生豬個體自動識別是實現疾病預防和健康養殖的關鍵。以往的豬只個體識別方式主要包括佩戴耳標、豬身涂抹顏色進行標記等[2],然而這些方式均會對豬造成不同程度的應激反應。
隨著計算機視覺不斷向前發展,國內外學者紛紛開始使用圖像和視頻技術來探究一種非接觸式生豬個體識別方法[3-5]。例如,Naoki等[6]提出特征空間方法進行豬臉識別,通過手動裁剪面部圖像并對重要部位進行分割,對16個類別的識別率達到了97.9%,但是其方法無法實現自動化的豬臉特征提取。相比于機器學習,深度學習憑借深度的網絡結構能夠更好地提取圖像特征,進而達到更優的分類效果。2018年Hansen等[7]以實際農場的豬臉作為數據集,使用自身搭建的基于卷積神經網絡分類模型進行測試,較好地完成豬臉識別,并通過加權梯度類激活熱力圖(Grad-CAM)證明了網絡特征的提取來源。秦興等[8]利用雙線性卷積神經網絡進行生豬面部特征提取,在其測試圖像集上達到了95.73%的識別準確率。王榮等[2]利用改進的86層多尺度網絡結構進行豬臉識別,通過對比7組不同環境下的測試數據,所提出模型的識別率均高于其他網絡。為了更好地在有限的豬臉數據集基礎上提取豬的面部特征,謝碧森等[9]在VGG16的基礎上使用遷移學習技術來識別家豬圖像,在經過微調后其準確率達84%。然而,上述這些豬臉識別方法主要關注于面部特征的提取、融合以及模型的搭建,而未關注不同圖像預處理方法對豬臉識別效果的影響,也未能根據不同網絡模型下臉部特征提取效果、模型收斂速度等因素相互作用對整個識別方法造成的性能影響。
因此,本文綜合考慮影響特征提取效果、模型收斂速度的因素,基于不同深度學習模型,以豬的面部圖像作為研究對象建立豬臉識別模型,以養殖場采集的豬臉圖像作為數據集,對建立的不同深度模型在不同的數據預處理方法下進行訓練及測試,通過比對不同方法的識別效果,以期為實現精準化養殖中個體識別提供可靠參考。
本研究數據集來源于黑龍江省亞布力林業局生豬養殖基地,在自然條件下,隨機選取6只成年種豬進行了拍攝。豬只在生長過程中面部變化較大,所提取特征會有所差別,但隨著豬只的成年其面部不會再發生較大變化,因此適合作為豬臉識別的研究目標。由于該場對所有豬只均采用分欄管理,當豬在定位欄中進食時,使用普通的智能手機從不同方向捕獲豬臉以獲取多角度的面部數據。與此同時,為保證豬只個體識別的實用性,采集過程并未對樣本面部進行任何清潔處理。其中,每頭豬的拍攝時長均為2min,采用30幀/秒(FPS)的采樣率和1280×720像素的分辨率。在獲取豬的視頻數據后,使用OpenCV對視頻流進行分幀,每5幀間隔完成一次圖像的獲取工作,每頭豬均可獲得700張的圖像數據。
由于截取的數據集中會存在一些圖像模糊、不包含或只有部分豬臉等無法使用的圖像數據,因此,需要先通過手動方式對數據集進行初步篩選。為防止因視頻獲取圖片數據集中相鄰圖片相似度過高的問題,以結構相似性(SSIM)[10]作為一種全參考的圖像質量評價指標來對兩張圖像之間的相似性進行衡量。本文將SSIM的閾值范圍設為0.6,即當兩張圖片的SSIM指標值低于0.6時認為兩張圖片不同并得以保留。
為適應訓練模型的輸入大小,將1280×720像素大小的圖片按比例縮放為256×256像素大小的圖片進行統一輸入,邊緣之處用黑色進行填充,以防止因豬臉變形而影響后續網絡對于特征的提取。按比例縮放前后豬臉的效果如圖1所示。

圖1 按比例縮放前后效果
應用限制對比度自適應直方圖均衡化(CLAHE)是在自適應直方圖均衡化(AHE)基礎上進行的優化,通過對每個小區域塊都使用對比度限制,從而克服自適應直方圖均衡化(AHE)過度放大噪音的問題。直方圖均衡化處理可以使得圖像的灰度級范圍拉開或灰度分布更加均勻,進而增大反差。為了探究本研究數據集經過灰度與CLAHE相結合的方式處理后是否仍能表現出優于彩色圖像的豬只分類效果,本文將設計三組對比實驗,分別采用彩色(RGB)、灰度(Grayscale)以及灰度和CLAHE(Grayscale+CLAHE)相結合的方法來對豬臉數據集分別進行相應的預處理工作。其中,未處理前、經過AHE和CLAHE分別處理后的效果,如圖2所示。圖2 D則是三者像素在整個亮度區間的分布,可以明顯看出,經CLAHE處理后的豬臉灰度圖像輪廓以及毛發特征更加的明顯。

圖2 不同處理后的效果圖
實際養殖環境中豬只行為比較活躍,個體在識別過程中可能面臨著臉部圖像被欄桿或污漬遮擋、面部角度不同等多變環境問題的挑戰。因此,為增強模型的健壯性,本研究對已采集到的數據集共使用了三種離線增強方式,對圖片進行翻轉,隨機旋轉30°,模擬隨機遮擋三種方式實現數據擴充。數據增強后的示例如圖3所示。

圖3 數據增強前后的示例圖
本文使用的是包含6頭豬的256×256像素大小的圖像數據集,將每頭豬均視為一類則共計6個類別(記作P1-P6),經離線數據增強后,原數據集由經SSIM篩選后的2611張圖片擴充到10444張。訓練集(Training set)、驗證集(Validation set)和測試集(Test set)的劃分比例為6:2:2,如表1所示。其中,訓練集用于模型的訓練,而驗證集得出的分類準確率用于模型訓練過程中參數調整的參考指標,最后測試集則用來對各個模型的性能進行評估。

表1 數據集劃分
深層的網絡有助于挖掘數據中深層的特征,可以使得網絡擁有更強大的性能,因此本研究采用深度學習模型進行豬臉識別方法的研究。而卷積神經網絡(Convolutional Neural Networks,CNN)是計算機視覺的應用中幾乎都在使用的一種深度學習模型,其基本結構包括輸入層、輸出層和多個隱藏層,如圖4所示。輸入層主要用于輸入圖像信息的獲取;隱藏層主要進行特征提取然后調整權重;輸出層則用來對接隱藏層并將模型結果進行輸出。本文將在同一數據集下建立基于GoogleNet、ResNet、SE-ResNet、DenseNet的四種模型,探索較優的豬臉識別方法。其中,為了更好地對比這四組模型網絡結構的優良,本文將四組模型的參數量進行了一定調整,使得每個模型參數量被精簡到同一數量級范圍內,再使用同一數據集對模型進行訓練和測試。

圖4 模型結構
2.2.1 GoogleNet
GoogleNet采用了一些創新性的設計,通過加入1×1卷積和Inception等結構來增加網絡的非線性以及實現不同尺度特征的提取[11]。Inception結構如圖5所示。

圖5 Inception結構
本文在不改變GoogleNet網絡層數的前提下,將標準化的豬臉數據由輸入層輸入網絡,經9層的Inception model結構來對不同尺度的面部特征進行提取,并在訓練過程中完成整個隱藏層的權值調整工作,最后在輸出層完成豬只個體的分類。由于本文所采集到的豬臉數據集較小,使用過多的卷積核來進行特征的提取存在著參數量過多、訓練時間過長等問題,為避免出現這些問題,本文對GoogleNet卷積核的個數進行了適當的調整,模型具體細節如表2所示。

表2 GoogleNet網絡結構
2.2.2 ResNet
ResNet通過批量標準化(Batch Normalization,BN)[12]和殘差塊(Residual Block)解決了因網絡層數加深而導致的梯度消失或者爆炸以及退化問題[13-14]。本文建立了具有3層結構ResNet模型,其殘差結構如圖6所示。由于殘差結構的存在,模型訓練過程中所提取到的淺層豬臉特征可直接傳遞給深層網絡并與之結合,有助于網絡模型得到更好的效果。

圖6 殘差結構[14]
本文在ResNet50模型基礎上對相應卷積核進行了微調,調整后的模型ResNET結構如表3所示。

表3 ResNet網絡結構
2.2.3 SE-ResNet
SE-ResNet是在ResNet模型的基礎之上引入了SE單元模塊,進而構建了整個網絡的架構[15-17]。圖7為SEInception模塊結構。對于本文中尺寸為256×256×3的彩色豬臉特征圖,首先通過全局平均池化對每個特征分布進行壓縮,得到1×1×3的實數數列;然后引入兩個全連接層,通過ReLU激活函數與sigmiod門控制機制,獲得各通道間相關性,完成特征的重新標定。

圖7 SE-Inception模塊
2.2.4 DenseNet
稠密連接網絡(DenseNet)的主體由交替串聯的稠密塊(Denseblock)和過渡塊(Transition block)構成[18]。不同于ResNet從網絡的深度方面改進網絡的結構來提高表達能力,DenseNet則是通過特征圖重用的方式來探索網絡的潛能[19],減少了參數。在本文建立的DenseNet模型進行豬臉識別訓練的過程中,網絡中每一層的輸入變成所有前面層的疊加(concat),然后把它的特征圖傳遞給所有接下來的網絡層,這樣可以實現豬只面部特征的重用,加深網絡的學習。本文建立的DenseNet網絡結構,如表4所示。

表4 DenseNet網絡結構
為獲得最優的訓練模型,在使用訓練集對網絡訓練時,統一采用自適應矩陣估計算法對模型進行優化,損失值的計算則采用交叉熵損失函數。初始學習率設置為0.0001,監控驗證集準確率從而動態觸發學習率衰減策略,每次調整為上一次的十分之一。每次迭代包含的樣本數為32,整個訓練過程共迭代50次。
本文所有方法程序運行環境均為Python3.7.6、Tensorflow-GPU 2.3.0,操作系統為win10 64位,硬件平臺CPU為Intel i7-9700 3.0GHZ,內存為32G,顯卡為NVIDIA GTX1660,6G顯存。
在模型訓練過程中,統一使用三通道的彩色圖片數據集進行訓練并對精簡后的 GoogleNet、ResNet、SEResNet和DenseNet這4種不同深度模型的豬臉識別方法進行評估。將準確率(Accuracy)和損失值(Loss)作為性能評價的重要指標,在50個迭代周期內,觀察并對比4組不同網絡模型中這兩個指標的變化。模型損失值和準確率兩個評價指標的變化情況如圖8所示。從圖8中可以看出,隨著迭代次數的增加,模型訓練集的準確率均呈現上升趨勢,損失值均呈現下降趨勢,最終二者在一定范圍內震蕩并達到穩定。與其他3組模型相比較而言,精簡后的DenseNet在訓練集上的表現性能最優。在20個迭代周期后便可達到收斂,其準確率在98%左右震蕩,損失函數值則在0.09左右震蕩。而其他模型30個迭代周期內雖然也能達到收斂但準確率不高,而且訓練過程震蕩幅度過大。

圖8 不同模型訓練過程中訓練集的準確率和損失值變化
為檢驗已訓練模型在測試集上的分類效果,本文采用混淆矩陣作為各模型性能評價指標,測試集使用的是未參與訓練的彩色豬臉圖片。在測試集中6頭豬即6個分類一共2091張圖片。各模型測試的混淆矩陣如圖9所示。通過對各個模型的混淆矩陣進行對比可知,DenseNet在訓練完成后對于6組豬臉數據的分類效果最好,2091個測試集中有31張豬臉圖像出現了分類錯誤。根據混淆矩陣對各個模型的精確率(Precision)、召回率(Recall)以及特異率(Specificity)進行計算并求取平均值,其結果如表5所示,DenseNet在對6組豬的測試集圖片數據分類時平均精確率、平均召回率以及平均特異率分別為98.47%、98.45%和99.70%,明顯優于其他模型。

圖9 各個模型混淆矩陣

表5 各個模型精確率、召回率和特異率
由此可見,DenseNet在新的測試圖片上也能表現出超過其他模型的優良性能,可以很好地實現豬個體識別。
本研究在保留彩色圖像的基礎上又分別使用灰度化和CLAHE這兩種方式分別對數據集進行了處理,共形成彩色圖片(RGB)、灰度圖片(Grayscale)、經 CLAHE處理的灰度圖片(Grayscale+CLAHE)這三組不同的豬臉數據集。為遵循單一變量原則,將這三組數據集作為自變量分別放入同一種模型(DenseNet)中進行訓練、測試,觀察該模型在不同數據集下訓練速度和測試集準確率的變化情況。DenseNet在三種預處理方式下測試集準確率和損失值,如表6所示。訓練過程中準確率(Accuracy)和損失值(Loss)變化,如圖10所示。

表6 不同處理方式的損失值和準確率

圖10 不同處理方式的準確率和損失值
由圖10可以看出,模型迭代不到20次其損失值就已達到穩定,比使用RGB數據集收斂速度更快一些,由此可知將圖片數據集進行灰度化可以加快模型的收斂。這是由于拍攝環境復雜性和家豬膚色的相似性,使用彩色圖像會受到明亮度等多種因素的影響[20],而使用灰度圖像可以迫使模型在訓練過程中更專注于豬臉本身圖案特征的提取而非顏色。經CLAHE處理后豬只面部會更加清晰,毛發等特征也會更加明顯,有利于模型的學習,進而在測試集上分類效果要比灰度處理方式更好一些。但相比于彩色處理測試集高達98.52%的準確率,剩余兩種預處理方式準確率要差一些。如若實際養殖場景中光照條件比較差,采用灰度與CLAHE圖片預處理方式則可以為其提供一種良好的解決方案。
(1)本文以豬場采集的豬臉視頻作為數據集,通過SSIM指標和離線方式分別對數據進行篩選和增強后,建立的DenseNet模型在測試集上識別精度最高可達98.52%,為探索非接觸式豬個體識別提供參考。
(2)在不改變模型結構的基礎上,對DenseNet卷積核個數進行微調,不僅可以保證較好的分類效果,還可以大幅度減少參數量,進而縮短模型的訓練時間。
(3)對圖像進行灰度化處理可以加速模型的收斂速度,使用灰度化與CLAHE相結合的數據預處理方式雖不如彩色圖像分類準確率高,但其在光照條件較差的養殖場地有很好的應用前景。
(4)SSIM對于初步的篩選至關重要。由視頻流分幀獲取數據集后,原數據集中很多圖片是高相似度的圖像,這些質量不高的圖像不利于模型的訓練。