張婧婧
(新疆農(nóng)業(yè)大學 計算機與信息工程學院,新疆 烏魯木齊 830052)
馬體尺數(shù)據(jù)是衡量馬的生長發(fā)育及科學飼養(yǎng)、育種的重要依據(jù)?;谏疃葘W習的馬體測量技術重點解決了馬體與背景的有效分割問題。YOLACT是一種較為簡單的全卷積網(wǎng)絡實現(xiàn)實例分割的方法,該方法以其快速、易泛化且產(chǎn)生高質(zhì)量的mask等技術優(yōu)勢適用于不同實例分割場景。馬體的目標檢測與背景分割過程采用該方法首先看中其在MS-COCO數(shù)據(jù)集[1]上約30 mAP的分割表現(xiàn);其次馬場目標檢測對象及環(huán)境相對單一,目標圖像的動態(tài)穩(wěn)定性不作要求,且檢測的精度相對不高,就YOLACT進行實例分割的圖像低損失率而言,符合馬體目標檢測與背景分割的基本要求。
在馬體與背景分割的基礎上,體測圖像中特征點的標定也是馬體尺測量技術的重點。不同于傳統(tǒng)的角點檢測方法,設計中利用邊緣檢測Canny算子[2]提取馬體分割后的輪廓,在其輪廓線上采用動態(tài)網(wǎng)格完成體尺關鍵點的標定。該方法的研究旨在為相關動物體測技術提供范例參考。
目前,大型馬場的馬養(yǎng)殖方式以散養(yǎng)居多,采集馬體的圖像信息時不可避免地納入草場的背景、房屋、其他建筑甚至養(yǎng)殖人員等,為此采用深度學習技術實現(xiàn)馬體目標與背景的實例分割,旨在為馬體尺測量模型的建立準備條件。設計中采用的YOLACT實例分割方法屬于目前深度學習的單級目標檢測方法之一,在處理圖像分割算法中,其以性能損失小、速度快而備受推崇[3-5]。
YOLACT將分割問題分解為兩個并行的過程,利用全連接fc層和卷積conv層分別產(chǎn)生“掩模系數(shù)”(mask coefficients)和“原型掩模”(prototype masks),將掩膜和預測的相應系數(shù)進行線性組合,并通過預測的b-box進行裁剪,實現(xiàn)掩膜合成(assembly),計算中通過單個矩陣乘法實現(xiàn)。由此,該方法在馬體特征空間中保持了空域一致性,且滿足了馬體目標檢測的快速分割要求。以伊犁馬的圖像分割為例,文中采用YOLACT方法在訓練好的MS-COCO數(shù)據(jù)集上完成馬體目標檢測與背景分割,如圖1所示。
圖1 馬體的實例分割
在YOLACT目標檢測的前端網(wǎng)絡中,低層的特征圖信息量較少,但其特征圖較大,適于檢測目標位置準確且容易識別的一些小的物體;高層特征圖信息量比較豐富,但是目標位置較為粗略,因此小物體的檢測性能急劇下降。為了提高檢測精度,YOLACT的網(wǎng)絡前端借鑒Mask RCNN[6]中采用的FPN[7]的網(wǎng)絡結構,構建一個自底向上的線路,如C1、C2、C3、C4、C5;一個自頂向下的線路,如P7、P6、P5、P4、P3以及對應層的鏈接,如圖2所示。
圖2 YOLACT的網(wǎng)絡結構
其中底層的特征圖用于檢測較小的目標,而頂層的特征圖則用于檢測較大的目標,對單目標的伊犁馬體圖像檢測而言,其頂層特征圖的檢測性能要求相對較高。
Mask原型的產(chǎn)生結構為protonet,由全卷積網(wǎng)絡FCN實現(xiàn)[8],實驗中預測馬體圖像時將生成一組(K個)原型掩模,其最后一層含K個channels(每個原型一個),并將它們附加到backbone特征層中預測,如圖2右下部所示。
作為YOLACT檢測器的主干網(wǎng)絡,其預測結構采用RetinaNet中帶FPN的ResNet-101[9-10]網(wǎng)絡結構,其中頭部結構設計如圖2右上部所示?;贏nchor的典型目標檢測算法中,預測頭通常有兩個分支,一支用于獲得類別置信度,另一支用于進行邊界框回歸。YOLACT中添加第三個分支,預測K個掩模系數(shù),用于對應每一個原型。馬體圖像分割實驗中,從最終掩模中減去原型即可獲得圖1的分割效果[8],并在非線性計算中產(chǎn)生穩(wěn)定的輸出。
基于YOLACT目標檢測與實例分割方法,文中對站姿較為標準、背景相對簡單的馬體圖像進行了分割后的預處理。基于YOLACT分割后形成的馬體掩膜,實驗中分別將圖1中透明掩膜換成白色和黑色,并通過異或運算去除背景,再與原圖點乘,即可得到分割后的圖像,由此完成馬體測量模型的預處理。
依據(jù)新疆馬產(chǎn)業(yè)協(xié)會發(fā)布的地方標準,馬體尺主要測量指標包括體高、體長、胸圍、管圍等,其中涉及的馬體相關部位包括臀端點、胸骨前緣點、鬐甲頂點、肩腳骨后緣、左前管部上1/3部等[11]。具體而言,體高是指從鬐甲頂點到地面的垂直距離;體長是指從胸骨前緣點到臀端點的直線距離;胸圍是指肩腳骨后緣垂直繞胸一周的長度;管圍是指左前管部上1/3部的下端最細處,水平繞其一周的長度。
據(jù)觀察,馬體尺標定所需的測點均分布在馬體邊緣輪廓上,為了得到馬體尺測點,需要進行馬體的邊緣檢測。實驗中使用Canny算子對經(jīng)過YOLACT實例分割的伊犁馬體圖像進行輪廓提取。
在馬體邊緣檢測的基礎上,設計中嘗試使用常見的Harris角點檢測[12-13]方法篩選出候選的測量點。通過調(diào)整角點檢測的blockSize參數(shù)及ksize參數(shù)獲得較多角點時,測量所需的測點與非測點并不能很好地區(qū)分;反之角點較少時,部分測點被遺失。
此外,馬體尺測量點雖然大部分集中于被檢測的角點之中,而鑒于馬體體型、姿態(tài)的多樣化,針對角點中測點的篩選以及設計更為通用的篩選模板仍較為困難。
綜上,采用角點檢測方法尋找馬體尺的關鍵節(jié)點,其操作性不強且復雜度較高,本設計則采用了動態(tài)網(wǎng)格方法部分解決了馬體測量中尋找測點的難題。
(1)體高的獲取。
對站姿各異、體型不同的馬體而言,動態(tài)網(wǎng)格中各測點的標定均建立在其輪廓圖像中平均像素值變化的基礎之上。如圖3中,水平方向的中部橫線Hm表示馬體像素點縱坐標的動態(tài)均值,計算方式如下:
(1)
進一步地,Hu表示Hm均值線以上像素縱坐標的動態(tài)均值,計算見式(2);而Ht則為Hu均值線以上像素縱坐標的動態(tài)均值,計算見式(3)。
(2)
(3)
其中,用于標定體高的鬐甲頂點A恰好由Ht與馬體輪廓的相交點得到。與此同時,根據(jù)鬐甲頂點到前后足最低點所在直線Hb的距離,即為馬體的體高,如式(4)所示。
(4)
其中,ax+by+c=0表示馬體前后足底部的連線。
圖3 體尺測點的標定
(2)體長的獲取。
如圖3所示,動態(tài)網(wǎng)格中Wm線表示馬體像素點橫坐標的均值,計算如式(5)所示:
(5)
進一步地,網(wǎng)格中Wu線表示水平像素均值線Wm與其右邊界線的等分線,計算如式(6)所示:
(6)
其中,馬面水平朝左時flag=1,朝右時flag=-1。
如圖3所示,在馬體的體長計算中,臀端點B正是由Hu與馬體輪廓的尾部交點得到;胸骨前緣點C則定為Wu與其輪廓交點中縱坐標較大的點,而體長的計算即為臀端點與胸骨前緣點的歐氏距離,如式(7)所示。
(7)
其中,(xB,yB)為臀端點坐標,(xC,yC)為胸骨前緣點坐標。
(3)體長的修正。
在圖3中,容易看出馬體站姿與攝像頭不平行,體長的像素值較實際值偏小,需進行數(shù)據(jù)修正,其修正方法如圖4所示。
圖4 體長的數(shù)據(jù)修正
在圖4中,由A(x1,y1)、B(x1,y1)確定的直線L表示馬體中心線,其與馬體前后足底部的連線ax+by+c=0平行,且與攝像頭平面l形成角度為α的夾角,其中各參數(shù)間的關系如式(8)表示。
(8)
將式(7)得到的體長數(shù)值length帶入公式(9),即可得到體長的修正值len_adjust。
(9)
(4)胸圍直徑的獲取。
與體高、體長的二維數(shù)據(jù)相比,基于平面圖像獲取馬體的胸圍和管圍指標更為困難,為此引入兩項相關性較強的平面指標:胸圍直徑和管圍直徑,用于后期馬體胸圍、管圍的預測。
設計中,引入胸圍直徑旨在利用其與胸圍的強相關性,即二者標定的測點在馬體平面圖像中重合。如圖3所示,直線Wm與輪廓交點的縱坐標間距即為胸圍直徑d1,如式(10)所示,實際測量中其值與胸圍數(shù)據(jù)相關性最強。
(10)
(5)管圍直徑的獲取。
同樣的,設計中引入管圍直徑在于其與管圍的強相關性,即二者在馬體管圍測量中的測點一致。如圖3所示,管圍直徑計算中,需要尋找動態(tài)網(wǎng)格線Hg,即為足底向上三分之一處與前后足輪廓的交點,從中獲取最小值即為管圍d2,如式(11)所示。
(11)
基于上文中馬體圖像分割、輪廓提取與特征測點的標定技術,對圖像像素為640*480的兩匹伊犁馬進行了體尺的測量,獲取其特征測點,如圖5所示。
圖5 體尺特征測點的標定
據(jù)圖5 獲取的體尺特征測點,分別得到兩匹馬的測點數(shù)據(jù),如表1所示。
表1 馬體測點數(shù)據(jù) (單位:像素)
以表1的像素數(shù)據(jù)為基礎,根據(jù)人工測試與馬體圖像像素的多次匹配,選擇比例為1∶1.21進行像素數(shù)據(jù)的同比縮小,得到馬體尺的測量數(shù)據(jù)與實測值的對比結果,如表2所示。
表2 馬體尺測量的對比(比例1∶1.21)
依據(jù)馬體尺數(shù)據(jù)的測量標準,三維體尺指標如胸圍、管圍的測量無平面圖像的測量依據(jù)。前文設計中引入的胸維直徑、管圍直徑指標,旨在利用其數(shù)據(jù)的相關性建立胸圍與管圍的預測模型[14]。以100匹伊犁馬體的人工測量數(shù)據(jù)為樣本,完成體尺的胸圍、管圍預測模型如下:
(1)胸圍的預測模型。
為了獲得較好的預測效果,實驗中采用了Regress及Polynomial兩種多元回歸方式完成馬體胸圍數(shù)據(jù)的預測,其預測結果如表3所示。
表3 胸圍預測結果
根據(jù)表3所示,選擇誤差較小的Regress回歸模型進行馬體胸圍預測較為理想。其胸圍的回歸方程為:
Y1=30.613 8+0.536 7*h+0.429 2*w-
0.108 6*d
(12)
其中,Y1為胸圍,h為體高,w為體長,d為胸圍直徑。
(2)管圍預測模型。
同樣,實驗采用了Regress及Polynomial回歸方式完成馬體管圍數(shù)據(jù)的預測,其預測的結果如表4所示。
表4 管圍預測結果
根據(jù)表4可知,為了將測量誤差有效控制在5%之內(nèi),仍選擇Regress回歸模型預測管圍較為理想,其管圍回歸方程為:
Y2= 8.377 5+0.000 9*h+0.081*w-
0.123 1*c
(13)
其中,Y2為管圍,h為體高,w為體長,c為管圍直徑。
以伊犁馬體為研究對象,通過采集馬體的圖像、馬體尺的人工測量數(shù)據(jù),完成了馬體尺測量中四項指標的關鍵技術研究。
實驗以深度學習的YOLACT實例分割技術為基礎,首先實現(xiàn)了復雜背景下馬體圖像的快速、高質(zhì)量分割;其次提出動態(tài)網(wǎng)格方式完成馬體特征測點的數(shù)據(jù)標定,實時預測了馬體在圖像中的位置及身體方向,并部分解決了因其站姿不同帶來的體長修正問題;然后采用Regress及Polynomial的多元線性及非線性預測方式,比較并實現(xiàn)了馬體胸圍及管圍的預測,最后對兩匹伊犁馬體樣本進行了體尺數(shù)據(jù)測量及誤差計算,其各項誤差均處于0.75%~3.7%之間。就大體型動物體尺測量而言,該技術較為完整且具備范例參考意義。
設計的不足之處在于對馬體的姿態(tài)仍有一定要求,在馬體的站姿過度傾斜或頭部高昂的情況下,動態(tài)網(wǎng)格的測點將產(chǎn)生較大誤差,使得測量不能準確完成。這些還有待進一步完善。