張婧婧,程蕓濤
(新疆農業大學 計算機與信息工程學院,新疆 烏魯木齊 830052)
基于圖像信息處理方法提取動物體尺的研究領域,國內相關研究始于二維圖像的分析[1]。例如,江杰等人利用背景差分法提取羊體輪廓[2-3];劉波等人運用自動閾值分割與形態學處理進行輪廓分割[4];趙忠鑫等人研究了基于Kinect傳感器搭建的羊體尺測量系統,利用深度圖像的多元信息提取羊的體尺[5];譚鶴群等人利用機器視覺和數字圖像處理技術建立白鰱體長方向截面積分布模型[6];徐建瑜等人利用機器視覺技術測量出魚體側面積,并將面積與質量進行數據擬合建立模型,評價魚的質量[7]。相較于國內研究現狀,國外對動物體尺進行測度的設備專利較多[8]。測度動物的體型,建立結構化專用裝置,其優勢在于方便圖像采集和標定,實現對感興趣參照點進行線性測量[9],不足之處在于建立結構化裝置成本較高,還必須誘導動物到指定位置。此外,激光或其他點云獲取設備也適用于體尺測量[10-11],但對測量環境要求較高。
目前,依據新疆馬業協會發布的地方標準,馬體尺測量的主要指標包括馬的體長、體高、胸圍、管圍、體重等[12]。除體重外,其他四項體尺指標的測量可參考圖1的測量標準。

圖1 馬體尺測量的示意圖
體高:從鬐甲頂點到地面的垂直距離;
體長:從肩端到臀端的直線距離;
胸圍:在肩腳骨后緣垂直繞胸一周的長度;
管圍:左前管部上1/3部的下端最細處,水平繞其一周的長度。
如圖1所示,A-A線、B-B線、C-C線、D-D線分別為馬的體高、體長、胸圍、管圍。目前人工測量馬體的身高、體長過程,通常采用的工具包括卷尺、測杖、圓形測定器及測角計等,測量中需要與馬體直接接觸。基于深度學習及平面測量技術,本設計獲取了馬體尺的四項指標,并初步完成馬體尺測量的可視化系統設計,旨在探討馬體尺的信息化提取與非接觸測量的主要方法。
為了解決馬體與背景的分割問題,基于MS-COCO數據集,采用深度學習的單級目標檢測器YOLO進行馬體的目標檢測,并通過一個簡單的全卷積網絡YOLACT實現了馬體與背景實時的實例分割測試。
YOLO檢測器將目標檢測視為回歸問題,省去了region proposal過程,實現了端到端的網絡,可直接得到輸入圖像的類別及位置。該算法以速度著稱,且具有更好的實時性,適合應用于實際的檢測任務。
在馬體目標檢測過程中,打開一幀馬體圖像,并使用YOLO v3進行目標檢測,將獲得帶有分類類別、位置坐標、外接邊框寬高信息的馬體對象,如圖2(b)所示,篩選出其中類別為horse的檢測對象,并去除類別置信度較小的對象,檢測效果如圖2所示。

圖2 YOLO目標檢測的測試
快速、單階段的實例分割模型YOLACT將馬體與背景的分割過程分為兩個并行任務:
一是利用FCN來產生一系列與待測圖像大小一致的“prototype masks”,且不依賴于特定實例。
二是為目標檢測分支添加一個輸出,對每個anchor預測“mask coefficients”,即實例的表示編碼為prototype域的表達。
最后使用NMS對所預測的mask進行處理。
設計中采用YOLACT進行馬體與背景的分割,旨在發揮其在MS-COCO數據集上約30 mAP的快速分割表現,對伊犁馬匹圖像進行YOLACT實例分割的效果如圖3所示。

圖3 YOLACT實例分割的效果
基于馬體的分割圖像,其體尺的測量需建立與圖像之間的準確關聯,才能獲取有效數據。如體高、體長屬于平面測距,可通過像素距離獲取比例相關的體尺尺寸;而馬體的胸圍與管圍數據屬于立體指標,在單幅平面圖像中獲取該指標的技術受限,本設計中借助馬體尺各指標間的回歸特性,同時引入兩項平面參數,通過擬合多元線性回歸方程,實現馬體三維指標的預測。
基于Matlab仿真平臺[13],借助其GUI工具,馬體尺測量系統的開發需要依次完成界面設計、圖像導入、坐標定位、距離測量、回歸分析、測量值篩選、數據顯示及保存等流程。
(1)界面設計。
基于線性回歸理論,設計進行了馬體尺三維預測,而隨馬體年齡變化,其體尺的回歸特性也不盡相同[14-15]。同一品種馬形體變化的年齡可細分為0~10歲的11個階段,因此系統登錄后的界面中首先布置了11個Matlab-GUI工具中的單選按鈕:radiobutton,用于選擇待測馬匹相應的年齡段,旨在區別不同馬體年齡的體尺特征。
系統主界面設計中采用了包括axes、edit、pushbutton及text等Matlab-GUI工具中提供的各類控件。鑒于系統面板的尺寸有限,測量馬體的體高、體長與其胸徑、管徑數據采用了不同的axes,以利于在獲取數據中降低操作的失誤率。
(2)導入圖像。
限于前期系統面板的設計尺寸,實驗中首先進行圖像平面測距值與馬體人工測量值的比例匹配,選取約220*186像素的伊犁馬體圖像并以.jpg、.tif等文件格式保存于Matlab工程文件中,旨在用于axes中嵌入圖像。
(3)坐標定位。
在馬的體高、體長的測量中,只需存儲鼠標點擊前后的兩次坐標并計算兩者之間距離,即可測量其相關尺寸。但受面板尺寸影響,為了準確定位鼠標,筆者為系統添加了圖像的局部放大功能,將關鍵特征點以2倍像素放大,加強定位精度。
(4)距離測量。
確認鼠標點擊的任意兩點A1、A2的像素坐標后,編寫dist()函數,或直接調用Matlab中的pdist()函數即可獲得兩像素點間的距離,即為體高、體長數據。
(5)回歸分析。
基于線性回歸理論,獲取數量相當的馬體尺樣本值后,挑選各自的因變量、自變量,即可建立胸圍、管圍的多元線性回歸方程,如式(1)所示:
y=b0+b1x1+…+bpxp+e
(1)
馬體尺指標中,適當選取自變量及應變量x1,x2,…,xp,y應遵循其相關性原則,調用corrcoef()函數,可以得到馬體的體高、體長、胸圍、管圍、胸徑、管徑(胸徑、管徑測量指標為新引入的二維參數,其實際坐標與圖1中C-C、D-D點重合)之間相關程度的數據,選取相關程度高的變量即可擬合顯著性較強的回歸方程。本設計中采用Matlab提供的多元函數regress完成了胸圍、管圍的回歸分析。
根據馬體尺指標的相關度測試,首先以100匹伊犁馬的三項體尺數據(胸徑、體長、體高)為自變量x1、x2、x3,以待測體尺(胸圍)為因變量y,進行線性回歸擬合,其結果如式(2)所示:
y=-7.298 2+0.927 3*x1-0.023*x2+
0.771 3*x3
(2)
其中,r2=0.839 3,F=27.860 5,P=1.372 8×10-6。由P可知,式(2)的回歸模型成立。
隨后,更換馬體尺數據(管徑、體高、體長)的自變量x1、x2、x3,以管圍為因變量y,進行回歸分析,其擬合結果如式(3)所示:
y=9.564 8+0.051 7*x1-0.012 0*x2+
0.470 3*x3
(3)
其中,r2=0.948 0,F=97.177 6,P=1.750 2×10-10。由P可知,式(3)的回歸模型成立。
在回歸分析過程中,數據擬合還有一些不可忽視的環節。如馬體尺的預測方程將根據馬品種不同而有所變化,對同一品種的馬匹而言,其年齡不同也將影響回歸方程的擬合效果。因此為了提高回歸方程的顯著特性,只能對馬體尺樣本空間的多樣性及復雜性加以劃分,且擴大樣本容量以換回更少的測試誤差。
此外,針對馬體非標準的兩類站姿,實驗中還討論了相關回歸方程的修正方法,旨在加強體測系統的測量能力。其主要方式為引入體重指標,以便替換因為站姿不準而無法準確獲取的其他參數,進而修正預測方程。
(6)測量值的篩選。
為了直觀驗證測試值的準確性,實驗中將已測的體尺數據代入回歸方程進行殘差分析,以便有效判斷其值是否在回歸方程的誤差范圍內波動。如圖4(a)中第20組測量值代入方程,偏離中軸線較遠,則該值測量結果無效,不保存;對呈現中軸線左右波動不大的測試值,即可認定為有效數據,如圖4(b)所示。在Matlab中進行殘差分析僅需調用rcoplot(r,rint)函數,為系統逐一篩選測試值提供了便利。
(7)數據顯示及保存。
設計中,馬體四項體尺指標通過edit控件在測量界面中顯示,同時體尺數據還需發送至uitable及excel文檔保存。

圖4 Matlab中的殘差分析
根據上述設計流程,筆者完成了馬體尺測量系統的初步開發,其測試界面如圖5所示。

圖5 體尺測量系統的測試效果
本設計基于MS-COCO數據集得到訓練模型,采用實例分割模型YOLACT進行馬體與背景的分割,實現馬體目標的檢測。將檢測獲得的馬體圖像通過Matlab仿真平臺中提供的多種方法及庫函數進行處理,在此基礎上完成體測系統的初步設計與開發。設計的不足之處在于測量過程無法自動獲取馬體尺的特征點,降低了系統的自動化程度,增加了誤操作的可能性。