李向宇, 李慧盈,2
(1. 吉林大學 計算機科學與技術學院, 長春 130012;2. 吉林大學 符號計算與知識工程教育部重點實驗室, 長春 130012)
隨著科技的發展和社會的進步, 面部識別、 表情分析以及面部追蹤等面部應用場景的需求越來越廣泛, 而面部對齊和面部配準是這些應用場景的關鍵技術, 關鍵點檢測則是面部對齊和面部配準的前提. 目前, 人臉關鍵點識別技術已經成熟, 面部對齊和面部配準的技術應用也趨于完備[1-5], 但對于動物特征點識別的研究相對較少. 動物面部識別在農業有廣泛需求, 而豬作為目前養殖最廣泛的動物, 對其進行面部識別已成為該領域的研究熱點. 豬臉的整體相似度較高, 且由于豬臉長期不清洗, 其面部特征也會受影響, 因此, 在動物臉部的識別中, 豬臉是較難識別的問題. 文獻[6]基于神經網絡的方法進行了豬臉識別的研究, 但研究的數據集只包含10頭豬, 無法確認該方法的泛化性. 在人臉識別領域, 通常以特征點識別的前提進行大量數據的識別. 因此, 在豬臉識別領域, 同樣需要關鍵點識別的必要前提.
深度學習是機器學習領域中的一個研究方向, 其學習樣本數據的內在規律和表示層次, 在學習過程中獲得的信息對諸如文字、 圖像和聲音等數據的解釋有較大幫助[7]. 卷積神經網絡(convolutional neural networks, CNN)是深度學習的一個重要分支, 卷積神經網絡是一類包含卷積計算且具有深度結構的前饋神經網絡, 具有表征學習能力, 能按其階層結構對輸入信息進行平移不變分類, 因此也被稱為平移不變人工神經網絡[8-9]. 卷積神經網絡常用于解決圖像問題. 卷積神經網絡在人臉面部特征點識別方面應用廣泛[10-19], 因此本文使用卷積神經網絡解決豬臉特征點的檢測問題.
目前, 對于動物面部關鍵點檢測的研究報道較少, 而關于豬臉特征點檢測的方法尚未見文獻報道. 文獻[20]提出了一種綿羊關鍵點檢測算法, 應用了級聯網絡, 需大量的手工標注數據; 文獻[21-23]研究了鳥類的特征點檢測, 但并未側重于面部關鍵點檢測; 文獻[24]提出了一種解決馬和羊面部關鍵點檢測的算法, 通過與人臉進行結構匹配實現特征點識別, 本文基于該方法, 提出一種豬臉關鍵點檢測的算法. 豬臉特征點識別的難點是數據集問題和特征點選擇問題. 目前有很多人類面部關鍵點數據集, 如AFLW數據集、 XM2VTS數據集、 FRGCV2數據集等, 但沒有可用的豬臉特征點數據集; 在采集豬臉過程中, 豬臉的嘴部通常會被鼻子遮住, 不能很好地進行特征點標注, 因此本文在文獻[24]方法的基礎上采用新的特征點標注方法.
本文算法的結構基于文獻[24]的方法. 首先對豬臉的特征點進行結構計算, 與人臉數據集進行匹配, 找出相似的人臉, 構建匹配數據集, 對于形變神經網絡進行訓練, 生成形變模型; 然后利用形變模型生成形變后的豬臉圖像, 對于人臉關鍵點檢測網絡進行微調(fine-tuning), 生成豬臉關鍵點檢測模型. 算法整體思路如圖1所示.

圖1 算法整體思路Fig.1 Overall idea of algorithm
人臉匹配算法首先要進行特征點結構計算, 對于豬臉匹配相似度最高的5張人臉圖像, 相似度的計算公式為
S=
(1)

(2)
其中xle和yle分別表示左眼的橫坐標和縱坐標,xre和yre分別表示右眼的橫坐標和縱坐標,xn和yn分別表示鼻尖的橫坐標和縱坐標,xlm和ylm分別表示左嘴角的橫坐標和縱坐標,xrm和yrm分別表示右嘴角的橫坐標和縱坐標.有時由于面部姿態的原因, 可能缺失某只眼睛的特征點, 當左眼可見時,l=1, 否則l=0; 當右眼可見時,r=1, 否則r=0.
豬臉與人臉的相似度通過夾角判斷.當左右眼皆可見時, 如圖2所示, 考慮通過雙眼連線中點的垂線與左嘴角和雙眼連線中點的連線的夾角, 利用這兩條邊的向量計算夾角的正弦值; 當僅有左(右)眼可見時, 如圖3所示, 考慮左(右)眼和鼻尖的連線與左(右)嘴角和鼻尖的連線的夾角, 利用這兩條邊的向量計算夾角的余弦值.

圖2 豬雙眼都可見時的匹配方法Fig.2 Matching method when both eyes of pig are visible

圖3 豬某只眼睛不可見時的匹配方法Fig.3 Matching method when one eye of pig is invisible
微調是在其他預訓練網絡的基礎上, 將輸入層和全連接層按需要改變, 在預訓練權重的基礎上進行訓練的過程.其是遷移學習的一種實現方式, 可以將某類型所學習到的信息轉移到其他類型上, 適用于那些數據集相對較少, 且其相似類型有較大數據量的類型.對于豬臉特征點識別, 人臉特征點有較大的數據量, 且相對于人臉特征點數據集, 豬臉特征點數據集相對較少, 因此可以應用微調完成豬臉特征點識別.豬臉和人臉在結構上存在差異, 因此如果直接使用人臉特征點識別模型進行微調并不能達到較好效果, 本文算法將豬臉形變為結構相似的人臉, 調整特征點網絡的輸入, 使輸入適配預訓練的模型, 從而提高微調的作用.
薄板樣條插值(thin plate spline, TPS)[25]是一種常用的2D插值方法, 在兩張圖像中找出若干匹配的特征點, TPS可以根據對應的特征點, 生成原圖像其他點的變化(即插值). 本文應用卷積神經網絡進行豬臉形變, 網絡的輸入為豬臉圖像, 通過TPS對圖像進行扭曲, 并通過監督學習的方法對網絡進行訓練. 使用所得到的豬臉人臉匹配, 計算TPS變換, 并利用真實的變換和預測的變換得到損失函數, 訓練網絡. 形變卷積網絡的結構如圖4所示.

圖4 形變卷積網絡結構Fig.4 Structure of deformed convolutional network
特征點檢測網絡使用Tweaked CNN(TCNN)[26], TCNN在TCDCN(tasks-constrained deep convolutional network)[27]的基礎上, 調整了網絡的全連接層, 使具有相似特征的圖像訓練對應的回歸器, 從而提高了識別效率和精度, 同時采用alignment-sensitive方法進行數據增強, 提高了網絡的泛化性. 本文網絡在TCNN的基礎上添加了額外的卷積層和池化層以適應更大的圖像, 網絡已經在AFLW數據集[28]和文獻[29]中的數據集上進行了預訓練, 輸入形變后的豬臉數據即可進行微調. 網絡結構如圖5所示.

圖5 特征點檢測卷積網絡結構Fig.5 Convolutional network structure of feature point detection
網絡使用文獻[30]中的平滑L1損失函數:

(3)
其中x為特征點的預測值與實際值的差值.由于豬臉的姿態可能會出現少量的異常值, 因此網絡使用文獻[30]中的損失函數, 該損失函數不會對少量的異常值產生較大波動.
本文利用手機采集限位欄內的豬臉圖像, 采集時間和豬臉姿態隨機, 因此數據集包含了不同的光照條件和姿態.豬樣本共206頭, 篩選出包含完整豬臉的圖像生成數據集, 數據集的分辨率為224×224.通常情況下, 人臉的5個關鍵點為左眼、 右眼、 鼻尖、 左嘴角和右嘴角, 如圖6所示.由于豬臉部的特點, 其嘴角通常會被鼻子遮擋, 如圖7所示, 因此本文利用新的采集方式, 將左嘴角和右嘴角換為鼻左翼和鼻右翼, 最終的采集實例如圖8所示.

圖6 人臉特征點采集方法Fig.6 Collection method of human facial feature point

圖7 豬臉圖像實例Fig.7 Example of pig face images

圖8 豬臉特征點采集方法Fig.8 Feature point collection method of pig face
最終標注的數據集為6 099張樣本圖像, 將數據集按豬編號隨機劃分為各自包含不同豬樣本的訓練集、 驗證集和測試集, 各數據集分布列于表1.

表1 數據集分布
豬臉與人臉匹配的過程中, 選用數據集為AFLW數據集[28]和文獻[29]中的數據集(31 524張圖像), 文獻[29]中的數據集包括LFW數據集[31](5 590張圖像)和部分網絡圖像(7 876張), 特征點檢測網絡也使用這些數據進行預訓練. 實驗選用的評估標準與文獻[21]相同, 如果關鍵點的預測位置與實際位置的歐氏距離不超過邊界框的10%, 則視為預測成功, 否則視為失敗. 將平均失敗率計算為失敗測試關鍵點的百分數.
豬臉特征點識別實驗結果列于表2, 最終結果以錯誤率衡量. 由表2可見, 在豬臉特征點識別較難的情況下, 5個部位的特征點預測結果及總體的預測結果仍較理想, 表明本文的特征點采集方法及使用的算法有效. 文獻[24]中馬臉的特征點識別總體錯誤率為8.36%, 羊臉的特征點識別總體錯誤率為0.87%. 與文獻[24]的結果相比, 本文的豬臉特征點識別結果比馬臉特征點識別的結果更好, 比羊臉特征點識別結果差, 但文獻[24]中方法泛化性較差. 由于在本文構建的豬臉部特征點數據集中, 訓練集、 驗證集和測試集都來自不同的豬樣本, 包含了不同的隨機角度、 姿勢及光照條件, 因此得到的結果可說明該模型有良好的魯棒性和泛化性, 適用于大型、 復雜的豬臉數據. 圖9為部分豬臉特征點預測的實例.

表2 豬臉特征點識別實驗結果
綜上所述, 本文針對豬臉特征點的預測問題, 采集了豬臉部的數據, 提出了一種新的特征點采集方法以解決豬口部的遮擋問題, 標注并構建了豬臉部特征點數據集, 使用深度學習的方法, 通過豬臉人臉匹配公式及形變卷積神經網絡構建豬臉形變數據集, 使豬臉數據與人臉數據適配, 最后使用形變后的豬臉特征點數據集對人臉特征點檢測卷積神經網絡模型進行微調, 得到豬臉特征點檢測模型, 實現了豬臉特征點檢測.