韓 丁 王 斌 王 亮,3 侯越誠 田虎強 張世龍
(1.內(nèi)蒙古大學(xué)草原家畜生殖調(diào)控與繁育國家重點實驗室,呼和浩特 010030;2.內(nèi)蒙古大學(xué)電子信息工程學(xué)院,呼和浩特 010021;3.復(fù)旦大學(xué)信息科學(xué)與工程學(xué)院,上海 200433)
在羊養(yǎng)殖業(yè)中,羊的疼痛往往是由疾病引起的,所以疼痛檢測對羊的福利化養(yǎng)殖和健康生長非常重要,而找到快速、準確的疼痛檢測方法成為關(guān)鍵[1-2]。LANGFORD等[3]最早對動物面部疼痛識別進行了研究。對于羊的疼痛,2009年STUBSJ?EN等[4]利用紅外熱成像法(Infrared thermography,IRT)和心率變化法(Heart rate variability,HRV)檢測眼睛溫度變化和心率變化來進行識別,但是以上方法檢測速度較慢并且需要耗費大量人力。由于疼痛往往會導(dǎo)致羊的面部表情發(fā)生變化,所以在2016年,一種人工評估羊疼痛的標準方法——羊表情疼痛量表(Sheep pain facial expression scale,SPFES)被提出,這是一種利用羊的面部表情來檢測羊疼痛的標準方法,該方法根據(jù)耳旋程度、鼻孔形狀、眼睛的收縮程度等對每個區(qū)域可能存在的疼痛進行單獨評分,例如眼睛完全睜開表示沒有痛苦記為0分,半閉合表示可能存在痛苦記為1分,幾乎完全閉合表示存在痛苦的可能性較大記為2分,然后將眼窩、臉頰、耳朵、唇顎、鼻子5個區(qū)域的評分相加,如果大于1.5分,則認為該羊存在痛苦,這種方法已被證明能夠高準確性地識別羊的面部疼痛[5]。SPFES的提出證明了利用羊面部表情檢測疼痛是可行的,但是評分人員需要經(jīng)過專業(yè)的培訓(xùn),而且可能會存在個體間標準的差異,這種對疼痛評分的人工檢測方法還存在時間長和效率低的問題。
計算機視覺技術(shù)在人臉識別、疾病診斷等領(lǐng)域得到了非常好的應(yīng)用效果[6-8]。在牧場養(yǎng)殖中,計算機視覺技術(shù)也能解決許多相關(guān)問題[9-10]。在2020年,NOOR等[11]利用計算機視覺技術(shù),提出了基于遷移學(xué)習(xí)的羊痛苦表情自動分類方法,將羊臉圖像作為輸入,訓(xùn)練了深度學(xué)習(xí)模型。數(shù)據(jù)集圖像中具有復(fù)雜的背景環(huán)境,但是羊的痛苦表情僅與部分面部特征有關(guān)。因此卷積神經(jīng)網(wǎng)絡(luò)會提取到許多無關(guān)的特征,對識別的準確率產(chǎn)生影響。在實際的畜牧養(yǎng)殖業(yè)中,牧場的養(yǎng)殖規(guī)模較大,微小的識別錯誤也會導(dǎo)致牧場的管理秩序產(chǎn)生混亂,因此提升識別的準確率意義重大。然而NOOR等的方法并未將與痛苦無關(guān)的面部特征去除或者減弱無關(guān)面部特征對分類準確率的影響。
本文在VGGNet(Visual geometry group network)中引入空間變換網(wǎng)絡(luò)(Spatial transformer nets,STN)組成STVGGNet,提高對具有復(fù)雜背景的羊臉痛苦表情圖像的識別準確率。針對羊臉表情數(shù)據(jù)集中圖像較少的問題,對羊臉表情數(shù)據(jù)集進行擴充。利用從牧場和網(wǎng)絡(luò)上采集的羊臉痛苦表情的真實圖像對訓(xùn)練好的檢測模型進行評價。
為了將三線插值特征法(Triplet interpolated features,TIF)引入羊臉識別中,YANG等[12]制作了一個包含600幅羊臉圖像的數(shù)據(jù)集,手動標記了羊臉的邊界框和特征點,該羊臉數(shù)據(jù)集沒有包含表情標簽,隨后LU等[13]為該數(shù)據(jù)集添加了相應(yīng)的表情標簽。2020年,NOOR等開發(fā)了一個高分辨率的羊臉數(shù)據(jù)集,其中羊臉圖像來自于ImageNet、NADIS、Pixabay、Flickr和Gettyimages等不同的網(wǎng)站。在該數(shù)據(jù)集中,無痛苦的羊臉表情圖像被稱為正常羊臉圖像,具有痛苦的羊臉表情圖像被稱為異常羊臉圖像。該數(shù)據(jù)集按照SPFES標準將2 350幅圖像劃分為1 407幅圖像組成的正常羊臉數(shù)據(jù)集和943幅圖像組成的異常羊臉數(shù)據(jù)集。
本文制作了一個符合SPFES標準的新數(shù)據(jù)集。SPFES定義的羊面部疼痛特征與耳朵、鼻子、眼睛有關(guān)。對于耳朵,SPFES定義了羊臉部正面和側(cè)面耳朵旋轉(zhuǎn)代表的疼痛程度,耳廓可見、部分可見和不可見分別代表沒有疼痛、低痛和高痛。對于鼻子,用鼻孔的形狀定義了疼痛程度,“U”形鼻孔代表沒有疼痛,“V”形鼻孔代表有痛。對于眼睛,完全睜開表示沒有疼痛,而半閉則有疼痛。本文數(shù)據(jù)集在NOOR等提出的989幅正常圖像和154幅異常圖像組成的部分數(shù)據(jù)集基礎(chǔ)上,增加了887幅圖像,其中435幅新增圖像來自Pixabay、VCG、VEER和百度網(wǎng)站,其余452幅新增圖像為牧場實地拍攝圖像,數(shù)據(jù)采集地為內(nèi)蒙古自治區(qū)鄂爾多斯市鄂托克旗億維養(yǎng)殖基地。數(shù)據(jù)采集裝備為佳能PowerShot-G7-X- MarkⅡ型相機,分辨率為2 400像素×1 600像素。數(shù)據(jù)采集對象為阿爾巴斯絨山羊,數(shù)量為226只,其中成年公羊56只,幼齡斷奶公羊20只,成年母羊125只,幼齡斷奶母羊25只,每只羊選擇拍攝效果較好的2幅為數(shù)據(jù)集圖像。本文將收集的圖像按照SPFES標準進行了評分和分類,評分結(jié)果如表1所示,評分小于1.5分的圖像總計841幅,為正常羊臉圖像,評分大于1.5分的圖像總計46幅為異常羊臉圖像。新的數(shù)據(jù)集一共由2 030幅圖像組成,其中正常羊臉圖像1 830幅,異常羊臉圖像200幅。圖1為本文數(shù)據(jù)集部分圖像。
表1 新增羊臉圖像評分結(jié)果Tab.1 Score results of new sheep face images
圖1 羊臉數(shù)據(jù)集部分圖像示例Fig.1 Partial images of sheep face dataset
本文雖然對羊臉表情數(shù)據(jù)集進行了擴充,但是數(shù)據(jù)集的尺寸依然較小,存在過擬合的可能。過擬合是指模型將訓(xùn)練數(shù)據(jù)集中的采樣誤差,作為數(shù)據(jù)之間的差異進行擬合,從而導(dǎo)致模型在訓(xùn)練數(shù)據(jù)集中的訓(xùn)練誤差很低,而在測試數(shù)據(jù)集中的測試誤差很高(或者說泛化誤差高)[14]。通常可以使用數(shù)據(jù)增強的方法擴充訓(xùn)練數(shù)據(jù),以減少過擬合問題,增加泛化性能[15]。本文數(shù)據(jù)增強操作有隨機旋轉(zhuǎn)、隨機翻轉(zhuǎn)、裁剪。樣本圖像的數(shù)量擴充為原來的4倍,即8 120幅羊臉圖像。
1.2.1STVGGNet構(gòu)建動機
在真實牧場環(huán)境中,通常使用固定位置的攝像頭采集羊臉圖像,采集到的圖像中包含了許多與羊臉痛苦表情無關(guān)的特征,大幅降低了羊臉痛苦表情識別的準確率[16]。而羊臉痛苦表情僅與部分臉部特征有關(guān),需要開發(fā)一種能夠重點關(guān)注與羊臉痛苦表情相關(guān)特征區(qū)域的模型來提高準確率。因此,本文將空間變換網(wǎng)絡(luò)加入VGGNet來提高識別羊臉痛苦表情的準確率。
1.2.2實現(xiàn)細節(jié)和體系結(jié)構(gòu)可視化
VGGNet由卷積層、池化層和全連接層組成,根據(jù)不同的組合方式和網(wǎng)絡(luò)深度,有多種不同的網(wǎng)絡(luò)配置[17],本研究選擇其中4種作為基礎(chǔ)網(wǎng)絡(luò)。本文依據(jù)研究所需的輸入尺寸,對VGGNet的網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)進行了優(yōu)化,如圖2所示。
圖2 VGG網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 VGG network structure
在VGGNet的卷積層前加入了空間變換網(wǎng)絡(luò)。空間變換網(wǎng)絡(luò)可以在進行圖像分類之前先學(xué)習(xí)到分類對象的特征所在區(qū)域,并通過旋轉(zhuǎn)、平移、裁剪等方法生成一個新的圖像,然后將新生成的圖像作為分類網(wǎng)絡(luò)的輸入。該方法在MNIST手寫數(shù)據(jù)集和街景門牌號數(shù)據(jù)集(Street view house numbers,SVHN)上被證明有很好的效果[18],本文將空間變換網(wǎng)絡(luò)作為羊臉表情相關(guān)面部特征區(qū)域提取器,提取到的區(qū)域圖將取代原始圖像作為羊臉表情分類網(wǎng)絡(luò)的輸入。空間變換網(wǎng)絡(luò)整體結(jié)構(gòu)如圖3所示,包含定位網(wǎng)絡(luò)、網(wǎng)格生成器、采樣器3部分。
圖3 空間變換網(wǎng)絡(luò)Fig.3 Spatial transformer network
定位網(wǎng)絡(luò)從輸入到輸出的變換公式為
θ=fTθ(U)
(1)
式中fTθ——卷積函數(shù)
θ——仿射變換矩陣
U——經(jīng)過數(shù)據(jù)增強的羊臉圖像
fTθ是一個卷積神經(jīng)網(wǎng)絡(luò),用于學(xué)習(xí)仿射變換矩陣,由2個卷積層、2個最大池化層和2個全連接層組成,一個卷積層使用的卷積核尺寸為8×8,另一個卷積層的卷積核尺寸為7×7。定位網(wǎng)絡(luò)并不是直接從數(shù)據(jù)集學(xué)習(xí)如何轉(zhuǎn)換,而是嵌入在圖像分類網(wǎng)絡(luò)中,根據(jù)分類網(wǎng)絡(luò)的損失最小化原則自動學(xué)習(xí)仿射變換矩陣參數(shù)θ。
根據(jù)由定位網(wǎng)絡(luò)得到的仿射變換矩陣θ,生成一個輸入圖像和轉(zhuǎn)換圖像之間的坐標對照網(wǎng)格。網(wǎng)格生成器生成的轉(zhuǎn)換公式為
(2)
將輸入圖像按網(wǎng)格的坐標對照關(guān)系,轉(zhuǎn)換為一個新圖像,轉(zhuǎn)發(fā)給分類網(wǎng)絡(luò),網(wǎng)格轉(zhuǎn)換圖如圖4所示。STVGGNet的識別過程如圖5所示。VGGNet與STVGGNet的參數(shù)數(shù)量如表2所示,本文提出的STVGGNet與VGGNet相比,參數(shù)數(shù)量并沒有明顯的增加。
本文實驗使用的開發(fā)平臺為Windows 10,GPU為NVIDA Quadro RTX6000,深度學(xué)習(xí)框架為Pytorch1.6。進行了多次實驗之后選擇如下參數(shù):優(yōu)化方法為隨機梯度下降(SGD)算法,動量為0.9,初始學(xué)習(xí)率為0.01,迭代周期(Epoch)為50。
圖4 網(wǎng)格轉(zhuǎn)換圖Fig.4 Grid transformation diagram
圖5 STVGGNet識別過程Fig.5 STVGGNet identification process
表2 參數(shù)所占內(nèi)存Tab.2 Memory occupied by parameter
在計算機視覺應(yīng)用領(lǐng)域中,為了達到很好的識別效果,需要很大的數(shù)據(jù)集,但是大型數(shù)據(jù)集制作成本非常高,另外從頭訓(xùn)練需要非常高的計算性能。使用遷移學(xué)習(xí)可以滿足大型數(shù)據(jù)集和高計算性能的兩大需求,在訓(xùn)練過程中快速地獲得較好的識別效果[19-20]。新制作的羊臉表情數(shù)據(jù)集屬于小型數(shù)據(jù)集,直接進行訓(xùn)練不能達到很好的訓(xùn)練效果,故本文使用遷移學(xué)習(xí)對所有涉及的網(wǎng)絡(luò)進行預(yù)訓(xùn)練。本文使用ImageNet數(shù)據(jù)集對VGGNet和STVGGNet進行預(yù)訓(xùn)練,然后對于VGGNet預(yù)訓(xùn)練模型,凍結(jié)全部的卷積層,使用羊臉數(shù)據(jù)集訓(xùn)練剩余的3個全連接層;對于STVGGNet預(yù)訓(xùn)練模型,也凍結(jié)全部的卷積層,使用羊臉數(shù)據(jù)集訓(xùn)練剩余的空間變換網(wǎng)絡(luò)和3個全連接層。
在本研究中,將數(shù)據(jù)集的70%用于訓(xùn)練,20%用于驗證,10%用于測試評估VGGNet和1.2.2節(jié)中提出的STVGGNet。VGGNet和STVGGNet的分類結(jié)果如表3所示。圖6為在羊臉數(shù)據(jù)集上對VGGNet和STVGGNet進行訓(xùn)練時的損失值。從表3中可以看出,VGGNet中VGG19的訓(xùn)練準確率最高,達到了99.80%,而STVGGNet中訓(xùn)練準確率最高的是STVGG19,達到了99.95%,比VGG19高0.15個百分點。并且STVGGNet的訓(xùn)練準確率均比VGGNet中對應(yīng)的網(wǎng)絡(luò)高,最多高0.44個百分點,最少高0.06個百分點。
表3 網(wǎng)絡(luò)訓(xùn)練準確率、訓(xùn)練時間、驗證準確率Tab.3 Training accuracy,training time and validation accuracy of networks
圖6 不同網(wǎng)絡(luò)的訓(xùn)練損失值變化曲線Fig.6 Variation curves of training loss value of different networks
采用STVGGNet能夠提高訓(xùn)練的準確率,卻導(dǎo)致其相較于VGGNet的參數(shù)數(shù)量有所增加。參數(shù)數(shù)量上升會導(dǎo)致訓(xùn)練時間的增加。雖然STVGGNet與VGGNet相比訓(xùn)練時間均有所增加,但STVGGNet用較短的時間增加量換取訓(xùn)練準確率的提升是值得的。
STVGGNet的驗證準確率得到了明顯提升。如表3所示,STVGG19的驗證準確率提升最多,相比于VGG19提升了0.99個百分點。STVGG13的提升最少,相比于VGG13也提升了0.49個百分點。驗證準確率的提升證明了STVGGNet的泛化性能優(yōu)于VGGNet。
本文對改進后的STVGGNet與VGGNet在羊臉痛苦表情識別中的表現(xiàn)進行定量評估時,使用混淆矩陣(Confusion matrix)、準確率(Accuracy)、錯誤率(Error rate)、精確度(Precision)、召回率(Recall)、F1值(F1 score)來評估兩種模型。兩種模型的測試結(jié)果混淆矩陣如圖7所示。本文預(yù)測了兩種可能的類別,分別為正常(沒有痛苦)羊臉和異常(有不同程度的痛苦)羊臉。分類器測試了812幅圖像,其中732幅沒有疼痛,80幅有不同程度的疼痛。統(tǒng)計了分類實驗數(shù)據(jù)的真正樣本(True positive,TP)和真負樣本(True negative,TN)的數(shù)量。此外,也統(tǒng)計了預(yù)測出的假正樣本(False positive,F(xiàn)P)和假負樣本(False negative,F(xiàn)N)數(shù)量。VGG19的測試結(jié)果中真正樣本和真負樣本分別有704幅和72幅,假正樣本和假負樣本分別有8幅和28幅,而改進后泛化性能最好的STVGG19的預(yù)測結(jié)果中真正樣本和真負樣本分別有732幅和76幅,假正樣本和假負樣本分別有4幅和28幅。圖8展示了兩種模型的部分預(yù)測結(jié)果。
所有模型對測試集預(yù)測的準確率、錯誤率、精確度、召回率、F1值如表4所示。評估結(jié)果表明,在羊臉痛苦表情分類測試任務(wù)中,除了STVGG16與VGG16的測試準確率相同以外,STVGGNet的測試準確率均高于對應(yīng)的VGGNet,且所有的STVGGNet的F1值均高于對應(yīng)的VGGNet。從整體上看,STVGGNet的分類性能要優(yōu)于VGGNet。對于分類性能最好的STVGG19和對應(yīng)的VGG19,雖然STVGG19的訓(xùn)練準確率僅比VGG19高0.15個百分點(表3),但是STVGG19模型的預(yù)測準確率高于VGG19模型0.49個百分點(表4),這說明與VGG19模型相比,STVGG19的泛化性能更好。
表4 準確率、錯誤率、精確度、召回率、F1值Tab.4 Accuracy,error rate,precision,recall and F1 value %
為探究羊個體姿態(tài)對識別效果的影響,從數(shù)據(jù)集中成年羊站立姿態(tài)下提取的羊面部圖像和躺臥姿態(tài)下提取的羊面部圖像中隨機抽取各30幅面部圖像,總計60幅圖像。使用VGG19和STVGG19對站姿、臥姿和混合狀態(tài)3種情況各進行了10次測試,得到的平均測試準確率如表5所示。
表5 站姿、臥姿和混合姿態(tài)的平均測試準確率Tab.5 Average accuracy of standing,lying and mixed posture %
由表5可知,網(wǎng)絡(luò)對站姿和臥姿時羊面部疼痛均有較好的識別效果,且站姿的識別準確率略高于臥姿。
為探究羊年齡段對識別效果的影響,從數(shù)據(jù)集中站立姿態(tài)下幼齡斷奶羊提取的面部圖像和成年羊提取的羊面部圖像中隨機抽取各30幅面部圖像,總計60幅圖像。使用VGG19和STVGG19對幼齡、成年和混合年齡3種情況各進行了10次測試,得到的平均測試準確率如表6所示。
表6 幼齡、成年和混合年齡的平均測試準確率Tab.6 Average accuracy of young,adult and mixed age %
由表6可知,模型對幼齡羊和成年羊面部疼痛均有較好的識別效果,而且不同年齡段的測試結(jié)果沒有明顯區(qū)別。
(1)為了提高識別模型的準確率,將空間變換網(wǎng)絡(luò)引入羊臉痛苦表情識別中,提出了STVGGNet,該模型先提取羊臉痛苦表情的相關(guān)感官特征區(qū)域,再進行分類,降低了復(fù)雜環(huán)境和痛苦表情無關(guān)的面部特征對識別效果的影響。
(2)針對羊臉表情數(shù)據(jù)集不足的問題,收集了887幅羊臉圖像來擴充原有的數(shù)據(jù)集,通過SPFES方法將圖像分為841幅正常羊臉圖像和46幅異常羊臉圖像。在羊臉表情數(shù)據(jù)集上使用遷移學(xué)習(xí)和微調(diào)的方法訓(xùn)練STVGGNet,并進行了測試。STVGGNet獲得的最佳訓(xùn)練和驗證的效果為99.95%和96.06%,比VGGNet分別高0.15、0.99個百分點,并且定量評估表明,STVGGNet中表現(xiàn)最好的STVGG19相比于VGGNet中表現(xiàn)最好的VGG19,除精確度相同外,召回率和F1值均高于VGG19,STVGG19在實際應(yīng)用場景中性能更好。對于不同姿態(tài)和不同年齡段的羊臉圖像均有較好的識別效果,站姿提取的羊面部表情識別準確率略高于臥姿,不同年齡段識別效果基本無差異。