張婧婧
(新疆農(nóng)業(yè)大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,新疆 烏魯木齊 830052)
馬體尺數(shù)據(jù)是衡量馬的生長(zhǎng)發(fā)育及科學(xué)飼養(yǎng)、育種的重要依據(jù)。基于深度學(xué)習(xí)的馬體測(cè)量技術(shù)重點(diǎn)解決了馬體與背景的有效分割問(wèn)題。YOLACT是一種較為簡(jiǎn)單的全卷積網(wǎng)絡(luò)實(shí)現(xiàn)實(shí)例分割的方法,該方法以其快速、易泛化且產(chǎn)生高質(zhì)量的mask等技術(shù)優(yōu)勢(shì)適用于不同實(shí)例分割場(chǎng)景。馬體的目標(biāo)檢測(cè)與背景分割過(guò)程采用該方法首先看中其在MS-COCO數(shù)據(jù)集[1]上約30 mAP的分割表現(xiàn);其次馬場(chǎng)目標(biāo)檢測(cè)對(duì)象及環(huán)境相對(duì)單一,目標(biāo)圖像的動(dòng)態(tài)穩(wěn)定性不作要求,且檢測(cè)的精度相對(duì)不高,就YOLACT進(jìn)行實(shí)例分割的圖像低損失率而言,符合馬體目標(biāo)檢測(cè)與背景分割的基本要求。
在馬體與背景分割的基礎(chǔ)上,體測(cè)圖像中特征點(diǎn)的標(biāo)定也是馬體尺測(cè)量技術(shù)的重點(diǎn)。不同于傳統(tǒng)的角點(diǎn)檢測(cè)方法,設(shè)計(jì)中利用邊緣檢測(cè)Canny算子[2]提取馬體分割后的輪廓,在其輪廓線上采用動(dòng)態(tài)網(wǎng)格完成體尺關(guān)鍵點(diǎn)的標(biāo)定。該方法的研究旨在為相關(guān)動(dòng)物體測(cè)技術(shù)提供范例參考。
目前,大型馬場(chǎng)的馬養(yǎng)殖方式以散養(yǎng)居多,采集馬體的圖像信息時(shí)不可避免地納入草場(chǎng)的背景、房屋、其他建筑甚至養(yǎng)殖人員等,為此采用深度學(xué)習(xí)技術(shù)實(shí)現(xiàn)馬體目標(biāo)與背景的實(shí)例分割,旨在為馬體尺測(cè)量模型的建立準(zhǔn)備條件。設(shè)計(jì)中采用的YOLACT實(shí)例分割方法屬于目前深度學(xué)習(xí)的單級(jí)目標(biāo)檢測(cè)方法之一,在處理圖像分割算法中,其以性能損失小、速度快而備受推崇[3-5]。
YOLACT將分割問(wèn)題分解為兩個(gè)并行的過(guò)程,利用全連接fc層和卷積conv層分別產(chǎn)生“掩模系數(shù)”(mask coefficients)和“原型掩模”(prototype masks),將掩膜和預(yù)測(cè)的相應(yīng)系數(shù)進(jìn)行線性組合,并通過(guò)預(yù)測(cè)的b-box進(jìn)行裁剪,實(shí)現(xiàn)掩膜合成(assembly),計(jì)算中通過(guò)單個(gè)矩陣乘法實(shí)現(xiàn)。由此,該方法在馬體特征空間中保持了空域一致性,且滿足了馬體目標(biāo)檢測(cè)的快速分割要求。以伊犁馬的圖像分割為例,文中采用YOLACT方法在訓(xùn)練好的MS-COCO數(shù)據(jù)集上完成馬體目標(biāo)檢測(cè)與背景分割,如圖1所示。

圖1 馬體的實(shí)例分割
在YOLACT目標(biāo)檢測(cè)的前端網(wǎng)絡(luò)中,低層的特征圖信息量較少,但其特征圖較大,適于檢測(cè)目標(biāo)位置準(zhǔn)確且容易識(shí)別的一些小的物體;高層特征圖信息量比較豐富,但是目標(biāo)位置較為粗略,因此小物體的檢測(cè)性能急劇下降。為了提高檢測(cè)精度,YOLACT的網(wǎng)絡(luò)前端借鑒Mask RCNN[6]中采用的FPN[7]的網(wǎng)絡(luò)結(jié)構(gòu),構(gòu)建一個(gè)自底向上的線路,如C1、C2、C3、C4、C5;一個(gè)自頂向下的線路,如P7、P6、P5、P4、P3以及對(duì)應(yīng)層的鏈接,如圖2所示。

圖2 YOLACT的網(wǎng)絡(luò)結(jié)構(gòu)
其中底層的特征圖用于檢測(cè)較小的目標(biāo),而頂層的特征圖則用于檢測(cè)較大的目標(biāo),對(duì)單目標(biāo)的伊犁馬體圖像檢測(cè)而言,其頂層特征圖的檢測(cè)性能要求相對(duì)較高。
Mask原型的產(chǎn)生結(jié)構(gòu)為protonet,由全卷積網(wǎng)絡(luò)FCN實(shí)現(xiàn)[8],實(shí)驗(yàn)中預(yù)測(cè)馬體圖像時(shí)將生成一組(K個(gè))原型掩模,其最后一層含K個(gè)channels(每個(gè)原型一個(gè)),并將它們附加到backbone特征層中預(yù)測(cè),如圖2右下部所示。
作為YOLACT檢測(cè)器的主干網(wǎng)絡(luò),其預(yù)測(cè)結(jié)構(gòu)采用RetinaNet中帶FPN的ResNet-101[9-10]網(wǎng)絡(luò)結(jié)構(gòu),其中頭部結(jié)構(gòu)設(shè)計(jì)如圖2右上部所示。基于Anchor的典型目標(biāo)檢測(cè)算法中,預(yù)測(cè)頭通常有兩個(gè)分支,一支用于獲得類別置信度,另一支用于進(jìn)行邊界框回歸。YOLACT中添加第三個(gè)分支,預(yù)測(cè)K個(gè)掩模系數(shù),用于對(duì)應(yīng)每一個(gè)原型。馬體圖像分割實(shí)驗(yàn)中,從最終掩模中減去原型即可獲得圖1的分割效果[8],并在非線性計(jì)算中產(chǎn)生穩(wěn)定的輸出。
基于YOLACT目標(biāo)檢測(cè)與實(shí)例分割方法,文中對(duì)站姿較為標(biāo)準(zhǔn)、背景相對(duì)簡(jiǎn)單的馬體圖像進(jìn)行了分割后的預(yù)處理。基于YOLACT分割后形成的馬體掩膜,實(shí)驗(yàn)中分別將圖1中透明掩膜換成白色和黑色,并通過(guò)異或運(yùn)算去除背景,再與原圖點(diǎn)乘,即可得到分割后的圖像,由此完成馬體測(cè)量模型的預(yù)處理。
依據(jù)新疆馬產(chǎn)業(yè)協(xié)會(huì)發(fā)布的地方標(biāo)準(zhǔn),馬體尺主要測(cè)量指標(biāo)包括體高、體長(zhǎng)、胸圍、管圍等,其中涉及的馬體相關(guān)部位包括臀端點(diǎn)、胸骨前緣點(diǎn)、鬐甲頂點(diǎn)、肩腳骨后緣、左前管部上1/3部等[11]。具體而言,體高是指從鬐甲頂點(diǎn)到地面的垂直距離;體長(zhǎng)是指從胸骨前緣點(diǎn)到臀端點(diǎn)的直線距離;胸圍是指肩腳骨后緣垂直繞胸一周的長(zhǎng)度;管圍是指左前管部上1/3部的下端最細(xì)處,水平繞其一周的長(zhǎng)度。
據(jù)觀察,馬體尺標(biāo)定所需的測(cè)點(diǎn)均分布在馬體邊緣輪廓上,為了得到馬體尺測(cè)點(diǎn),需要進(jìn)行馬體的邊緣檢測(cè)。實(shí)驗(yàn)中使用Canny算子對(duì)經(jīng)過(guò)YOLACT實(shí)例分割的伊犁馬體圖像進(jìn)行輪廓提取。
在馬體邊緣檢測(cè)的基礎(chǔ)上,設(shè)計(jì)中嘗試使用常見的Harris角點(diǎn)檢測(cè)[12-13]方法篩選出候選的測(cè)量點(diǎn)。通過(guò)調(diào)整角點(diǎn)檢測(cè)的blockSize參數(shù)及ksize參數(shù)獲得較多角點(diǎn)時(shí),測(cè)量所需的測(cè)點(diǎn)與非測(cè)點(diǎn)并不能很好地區(qū)分;反之角點(diǎn)較少時(shí),部分測(cè)點(diǎn)被遺失。
此外,馬體尺測(cè)量點(diǎn)雖然大部分集中于被檢測(cè)的角點(diǎn)之中,而鑒于馬體體型、姿態(tài)的多樣化,針對(duì)角點(diǎn)中測(cè)點(diǎn)的篩選以及設(shè)計(jì)更為通用的篩選模板仍較為困難。
綜上,采用角點(diǎn)檢測(cè)方法尋找馬體尺的關(guān)鍵節(jié)點(diǎn),其操作性不強(qiáng)且復(fù)雜度較高,本設(shè)計(jì)則采用了動(dòng)態(tài)網(wǎng)格方法部分解決了馬體測(cè)量中尋找測(cè)點(diǎn)的難題。
(1)體高的獲取。
對(duì)站姿各異、體型不同的馬體而言,動(dòng)態(tài)網(wǎng)格中各測(cè)點(diǎn)的標(biāo)定均建立在其輪廓圖像中平均像素值變化的基礎(chǔ)之上。如圖3中,水平方向的中部橫線Hm表示馬體像素點(diǎn)縱坐標(biāo)的動(dòng)態(tài)均值,計(jì)算方式如下:
(1)
進(jìn)一步地,Hu表示Hm均值線以上像素縱坐標(biāo)的動(dòng)態(tài)均值,計(jì)算見式(2);而Ht則為Hu均值線以上像素縱坐標(biāo)的動(dòng)態(tài)均值,計(jì)算見式(3)。
(2)
(3)
其中,用于標(biāo)定體高的鬐甲頂點(diǎn)A恰好由Ht與馬體輪廓的相交點(diǎn)得到。與此同時(shí),根據(jù)鬐甲頂點(diǎn)到前后足最低點(diǎn)所在直線Hb的距離,即為馬體的體高,如式(4)所示。
(4)
其中,ax+by+c=0表示馬體前后足底部的連線。

圖3 體尺測(cè)點(diǎn)的標(biāo)定
(2)體長(zhǎng)的獲取。
如圖3所示,動(dòng)態(tài)網(wǎng)格中Wm線表示馬體像素點(diǎn)橫坐標(biāo)的均值,計(jì)算如式(5)所示:

(5)
進(jìn)一步地,網(wǎng)格中Wu線表示水平像素均值線Wm與其右邊界線的等分線,計(jì)算如式(6)所示:
(6)
其中,馬面水平朝左時(shí)flag=1,朝右時(shí)flag=-1。
如圖3所示,在馬體的體長(zhǎng)計(jì)算中,臀端點(diǎn)B正是由Hu與馬體輪廓的尾部交點(diǎn)得到;胸骨前緣點(diǎn)C則定為Wu與其輪廓交點(diǎn)中縱坐標(biāo)較大的點(diǎn),而體長(zhǎng)的計(jì)算即為臀端點(diǎn)與胸骨前緣點(diǎn)的歐氏距離,如式(7)所示。
(7)
其中,(xB,yB)為臀端點(diǎn)坐標(biāo),(xC,yC)為胸骨前緣點(diǎn)坐標(biāo)。
(3)體長(zhǎng)的修正。
在圖3中,容易看出馬體站姿與攝像頭不平行,體長(zhǎng)的像素值較實(shí)際值偏小,需進(jìn)行數(shù)據(jù)修正,其修正方法如圖4所示。

圖4 體長(zhǎng)的數(shù)據(jù)修正
在圖4中,由A(x1,y1)、B(x1,y1)確定的直線L表示馬體中心線,其與馬體前后足底部的連線ax+by+c=0平行,且與攝像頭平面l形成角度為α的夾角,其中各參數(shù)間的關(guān)系如式(8)表示。
(8)
將式(7)得到的體長(zhǎng)數(shù)值length帶入公式(9),即可得到體長(zhǎng)的修正值len_adjust。
(9)
(4)胸圍直徑的獲取。
與體高、體長(zhǎng)的二維數(shù)據(jù)相比,基于平面圖像獲取馬體的胸圍和管圍指標(biāo)更為困難,為此引入兩項(xiàng)相關(guān)性較強(qiáng)的平面指標(biāo):胸圍直徑和管圍直徑,用于后期馬體胸圍、管圍的預(yù)測(cè)。
設(shè)計(jì)中,引入胸圍直徑旨在利用其與胸圍的強(qiáng)相關(guān)性,即二者標(biāo)定的測(cè)點(diǎn)在馬體平面圖像中重合。如圖3所示,直線Wm與輪廓交點(diǎn)的縱坐標(biāo)間距即為胸圍直徑d1,如式(10)所示,實(shí)際測(cè)量中其值與胸圍數(shù)據(jù)相關(guān)性最強(qiáng)。
(10)
(5)管圍直徑的獲取。
同樣的,設(shè)計(jì)中引入管圍直徑在于其與管圍的強(qiáng)相關(guān)性,即二者在馬體管圍測(cè)量中的測(cè)點(diǎn)一致。如圖3所示,管圍直徑計(jì)算中,需要尋找動(dòng)態(tài)網(wǎng)格線Hg,即為足底向上三分之一處與前后足輪廓的交點(diǎn),從中獲取最小值即為管圍d2,如式(11)所示。
(11)
基于上文中馬體圖像分割、輪廓提取與特征測(cè)點(diǎn)的標(biāo)定技術(shù),對(duì)圖像像素為640*480的兩匹伊犁馬進(jìn)行了體尺的測(cè)量,獲取其特征測(cè)點(diǎn),如圖5所示。

圖5 體尺特征測(cè)點(diǎn)的標(biāo)定
據(jù)圖5 獲取的體尺特征測(cè)點(diǎn),分別得到兩匹馬的測(cè)點(diǎn)數(shù)據(jù),如表1所示。

表1 馬體測(cè)點(diǎn)數(shù)據(jù) (單位:像素)
以表1的像素?cái)?shù)據(jù)為基礎(chǔ),根據(jù)人工測(cè)試與馬體圖像像素的多次匹配,選擇比例為1∶1.21進(jìn)行像素?cái)?shù)據(jù)的同比縮小,得到馬體尺的測(cè)量數(shù)據(jù)與實(shí)測(cè)值的對(duì)比結(jié)果,如表2所示。

表2 馬體尺測(cè)量的對(duì)比(比例1∶1.21)
依據(jù)馬體尺數(shù)據(jù)的測(cè)量標(biāo)準(zhǔn),三維體尺指標(biāo)如胸圍、管圍的測(cè)量無(wú)平面圖像的測(cè)量依據(jù)。前文設(shè)計(jì)中引入的胸維直徑、管圍直徑指標(biāo),旨在利用其數(shù)據(jù)的相關(guān)性建立胸圍與管圍的預(yù)測(cè)模型[14]。以100匹伊犁馬體的人工測(cè)量數(shù)據(jù)為樣本,完成體尺的胸圍、管圍預(yù)測(cè)模型如下:
(1)胸圍的預(yù)測(cè)模型。
為了獲得較好的預(yù)測(cè)效果,實(shí)驗(yàn)中采用了Regress及Polynomial兩種多元回歸方式完成馬體胸圍數(shù)據(jù)的預(yù)測(cè),其預(yù)測(cè)結(jié)果如表3所示。

表3 胸圍預(yù)測(cè)結(jié)果
根據(jù)表3所示,選擇誤差較小的Regress回歸模型進(jìn)行馬體胸圍預(yù)測(cè)較為理想。其胸圍的回歸方程為:
Y1=30.613 8+0.536 7*h+0.429 2*w-
0.108 6*d
(12)
其中,Y1為胸圍,h為體高,w為體長(zhǎng),d為胸圍直徑。
(2)管圍預(yù)測(cè)模型。
同樣,實(shí)驗(yàn)采用了Regress及Polynomial回歸方式完成馬體管圍數(shù)據(jù)的預(yù)測(cè),其預(yù)測(cè)的結(jié)果如表4所示。

表4 管圍預(yù)測(cè)結(jié)果
根據(jù)表4可知,為了將測(cè)量誤差有效控制在5%之內(nèi),仍選擇Regress回歸模型預(yù)測(cè)管圍較為理想,其管圍回歸方程為:
Y2= 8.377 5+0.000 9*h+0.081*w-
0.123 1*c
(13)
其中,Y2為管圍,h為體高,w為體長(zhǎng),c為管圍直徑。
以伊犁馬體為研究對(duì)象,通過(guò)采集馬體的圖像、馬體尺的人工測(cè)量數(shù)據(jù),完成了馬體尺測(cè)量中四項(xiàng)指標(biāo)的關(guān)鍵技術(shù)研究。
實(shí)驗(yàn)以深度學(xué)習(xí)的YOLACT實(shí)例分割技術(shù)為基礎(chǔ),首先實(shí)現(xiàn)了復(fù)雜背景下馬體圖像的快速、高質(zhì)量分割;其次提出動(dòng)態(tài)網(wǎng)格方式完成馬體特征測(cè)點(diǎn)的數(shù)據(jù)標(biāo)定,實(shí)時(shí)預(yù)測(cè)了馬體在圖像中的位置及身體方向,并部分解決了因其站姿不同帶來(lái)的體長(zhǎng)修正問(wèn)題;然后采用Regress及Polynomial的多元線性及非線性預(yù)測(cè)方式,比較并實(shí)現(xiàn)了馬體胸圍及管圍的預(yù)測(cè),最后對(duì)兩匹伊犁馬體樣本進(jìn)行了體尺數(shù)據(jù)測(cè)量及誤差計(jì)算,其各項(xiàng)誤差均處于0.75%~3.7%之間。就大體型動(dòng)物體尺測(cè)量而言,該技術(shù)較為完整且具備范例參考意義。
設(shè)計(jì)的不足之處在于對(duì)馬體的姿態(tài)仍有一定要求,在馬體的站姿過(guò)度傾斜或頭部高昂的情況下,動(dòng)態(tài)網(wǎng)格的測(cè)點(diǎn)將產(chǎn)生較大誤差,使得測(cè)量不能準(zhǔn)確完成。這些還有待進(jìn)一步完善。