沈維政,郭金彥,戴百生*,王鑫杰,梁晨,邱柏隆,張哲,王軍號,史偉,張逸軒
(1.東北農(nóng)業(yè)大學電氣與信息學院,哈爾濱 150030;2.黑龍江省農(nóng)業(yè)技術推廣站,哈爾濱 150030;3.西北民族大學數(shù)學與計算機科學學院,蘭州 730030)
奶牛體型外貌可直觀反映奶牛健康水平與發(fā)育狀況[1-2],以量化方式客觀公正評估奶牛體型指標[2-4],對奶牛遺傳育種優(yōu)化及精細化管理具有重要意義。傳統(tǒng)奶牛體型評定方法主要利用皮尺、測杖、半圓儀等工具手動測量指標,費時費力且易受主觀因素影響。此種接觸式測量方法會引起奶牛應激反應,降低奶牛健康福利[5]。
隨著計算機視覺技術發(fā)展及智慧牧場概念提出,部分學者采用二維圖像數(shù)據(jù)對奶牛進行非接觸式體型評定指標測量。閆震通過模板匹配方法將奶牛圖像與包含關鍵點模板進行匹配,實施體型關鍵點定位,完成體型評定指標測量[6]。但此類方法對奶牛位姿有一定要求,圖像質(zhì)量影響測量值準確度。對于現(xiàn)實中復雜環(huán)境三維物體,二維信息對三維目標進行表征,造成信息損失[7-8]。
近年來,深度相機等三維傳感器得到進一步發(fā)展,高質(zhì)量點云數(shù)據(jù)更易獲取,基于點云數(shù)據(jù)測量奶牛體型指標方面,國內(nèi)外研究較多,并取得一定進展。Kamchen等驗證深度相機在奶牛體型指標測量方向潛力,通過手動標注關鍵點方式完成奶牛體型指標測量[9]。Pezzuolo等使用多個Kinect深度相機,從不同角度近距離獲取奶牛局部點云數(shù)據(jù),使用SPIP軟件手工測得奶牛腰角寬、體長、體高、胸圍、背部坡度等體型指標信息[10]。這種交互式定位方法降低體型指標測量的自動化程度。牛金玉使用TOF深度相機采集奶牛點云數(shù)據(jù),分割奶牛軀體,根據(jù)奶牛主要身體幾何特征定位體型關鍵點測量相關指標[11]。趙新強使用結構光深度相機采集奶牛RGB-D數(shù)據(jù),在奶牛目標區(qū)域內(nèi)檢測角點,定位相關體型關鍵點,測量奶牛相關指標[12]。此類直接對奶牛整體區(qū)域進行體型關鍵點自動定位方法,易受奶牛行走過程中背部結構特征變化影響,導致關鍵點定位不準確,產(chǎn)生誤差[13]。
為解決當前奶牛體型評定存在自動化程度低及體型關鍵點定位誤差較大等問題,實現(xiàn)對奶牛體型評定指標高效且精準非接觸式自動測量,本文提出一種基于兩階段關鍵點定位算法的奶牛體型評定指標自動測量方法,檢測出奶牛體型關鍵點關鍵區(qū)域,通過點云模型的局部形狀信息實現(xiàn)體型關鍵點精準定位,完成體型評定指標的自動測量。
2021年9月在黑龍江省大慶市林甸縣晟康牧業(yè)有限公司奶牛養(yǎng)殖場,采用Intel RealSense D435深度相機采集荷斯坦奶牛深度圖像數(shù)據(jù)。深度圖像數(shù)據(jù)分辨率為848×480像素,幀率為30 f·s-1。深度相機連接到PC端,以Visual Studio 2017為開發(fā)平臺,基于RealSense SDK 2.0進行采集??紤]奶牛背部體長、肩寬、胸寬、腹寬、腰寬五項體型評定指標可通過計算機視覺技術測量,采集奶牛背部圖像作為本文研究對象,自動測量體型評定指標。將RealSense D435深度相機架設在稱量奶牛的體重秤(長約2.5 m,寬約0.9 m,高約1.7 m)上方2.5 m,依次采集單頭奶牛背部圖像。本次試驗共采集49頭體型不同的奶牛背部深度圖像序列,整理得到4 421幅圖像。
使用Labelme標注工具,將奶牛鬐甲點、尾根點、左側肩寬點、右側肩寬點、左側胸寬點、右側胸寬點、左側腹寬點、右側腹寬點、左側腰寬點、右側腰寬點分為10類保存,獲得.json文件,再將.json文件轉(zhuǎn)換為.xml文件,其中以標注點作為標注框中點,標注框設置為20×20像素,標注效果如圖1所示。
圖1 數(shù)據(jù)集標注效果Fig.1 Dataset labeling effect
為實現(xiàn)奶牛體型評定指標自動測量,對采集深度圖像序列濾波,獲得質(zhì)量更高的深度圖像數(shù)據(jù),進行體型關鍵區(qū)域檢測,獲取到奶牛體型關鍵點所在局部區(qū)域并重建該區(qū)域三維點云,利用空間結構信息定位體型關鍵點,完成體型評定指標計算。
1.2.1 深度圖像濾波
由于深度圖像數(shù)據(jù)存在隨機噪聲,紅外光束直射奶牛個體某些部位皮毛表面時存在鏡面反射,造成該部位深度值缺失,影響體型評定指標測量[14-15]。為提高深度圖像數(shù)據(jù)質(zhì)量,利用RealSense SDK 2.0提供邊緣平滑濾波器和孔洞填充濾波器對深度圖像數(shù)據(jù)進行處理[16]。
采用邊緣平滑濾波器平滑深度噪聲,保持合理且穩(wěn)定邊緣。該濾波器通過掃描x軸和y軸目標像素深度值并計算一維指數(shù)移動平均線(EMA),確定合適平滑量。采用左側有效像素(Left Valid Pixel)作空間域孔洞填充;采用與邊緣平滑濾波器同類型指數(shù)移動平均線(EMA)濾波器,對深度圖像中每個像素在時間域上應用指數(shù)滑動平均填充孔洞。
經(jīng)過邊緣平滑濾波器、孔洞填充濾波器后圖像數(shù)據(jù)濾波效果如圖2所示。奶牛深度圖像數(shù)據(jù)得到修復,大部分邊緣噪聲和孔洞被消除。
圖2 深度圖像濾波效果(偽彩色處理)Fig.2 Depth image filtering effect(Pseudo-color processing)
1.2.2 兩階段體型關鍵點定位
因奶牛軀干部位不同類型測量點之間常有不規(guī)則凸起,直接對奶牛整體區(qū)域定位奶牛體型關鍵點易受干擾,本文提出一種兩階段體型關鍵區(qū)域體型關鍵點定位方法實現(xiàn)對奶牛體型關鍵點的精準定位。
1.2.2.1 體型關鍵區(qū)域檢測
考慮到奶牛養(yǎng)殖場實際環(huán)境較復雜且奶牛個體表征因素差異較大,對體型關鍵區(qū)域自動檢測工作對檢測精度與速度均具有較高要求,在檢測過程中同時輸出檢測類別的錨框與概率,適合本研究任務場景,故本文基于YOLO v5模型對體型關鍵區(qū)域進行自動檢測[17-19]。YOLO v5網(wǎng)絡結構如圖3所示,其網(wǎng)絡架構可分為4個部分:輸入端、Backbone網(wǎng)絡、Neck網(wǎng)絡和輸出端。其中Backbone網(wǎng)絡以Focus結構作為基準網(wǎng)絡,608×608×1大小的圖片傳遞給Focus層,使用切片(slice)切割成320×320×12的特征圖,經(jīng)過concat以及一次卷積(CBL)轉(zhuǎn)化為320×320×64的特征圖。
圖3 基于YOLO v5的體型關鍵區(qū)域檢測網(wǎng)絡結構Fig.3 Detection network structure of key areas of linear appraisal based on YOLO v5
基于YOLO v5體型關鍵區(qū)域檢測模型,檢測效果如圖4所示。由圖可知,本文提出的檢測模型可精準檢測出奶牛體型關鍵區(qū)域。
圖4 體型關鍵區(qū)域檢測效果Fig.4 Detection effect of key areas for cow body type assessment
1.2.2.2 體型關鍵點定位
在完成第一階段奶牛體型關鍵區(qū)域檢測后,第二階段即為在各關鍵區(qū)域內(nèi)分別定位奶牛體型關鍵點。
利用相機內(nèi)參將關鍵區(qū)域重建為三維點云模型[20],圖5為各關鍵區(qū)域三維點云模型效果圖。圖中(1)至(10)分別為奶牛鬐甲點、尾根點、左肩寬點、右肩寬點、左胸寬點、右胸寬點、左腹寬點、右腹寬點、左腰寬點、右腰寬點所在關鍵區(qū)域。
圖5 體型關鍵區(qū)域點云數(shù)據(jù)效果Fig.5 Point cloud data effect of key areas of cow linear appraisal
根據(jù)上述方法檢測的體型關鍵區(qū)域中包含有背景數(shù)據(jù)及離群點,使用點云濾波方法對體型關鍵區(qū)域點云數(shù)據(jù)進行處理,避免對體型關鍵點定位造成影響[21]。
本文獲取的奶牛圖像數(shù)據(jù)中背景主要來自于地面,采用基于直通濾波法去除背景點云[22],去除三維點云模型中距離坐標原點o距離大于1.6 m的點。采用基于統(tǒng)計濾波法的離群點去除方法去除體型關鍵區(qū)域中的離群點[23],濾除體型關鍵區(qū)域中超出該區(qū)域平均歐氏距離5個標準差以上的所有點,完成離群點去除工作。
在從體型關鍵區(qū)域中實現(xiàn)體型關鍵點定位時分別選用不同策略:對鬐甲點與尾根點選用基于z軸最值方法;對左肩寬點、右肩寬點、左胸寬點、右胸寬點、左腹寬點、右腹寬點、左腰寬點與右腰寬點選用基于曲率定位方法[23]。
基于最值點方法是利用點云數(shù)據(jù)中z軸表征與深度攝像頭所在水平平面垂直的直線這一特性,根據(jù)關鍵點類型名稱定位該點所在體型關鍵區(qū)域,然后在該體型關鍵區(qū)域內(nèi)遍歷所有點并輸出z軸坐標值最大點,該點即為體型關鍵點[24-25]。
基于曲率方法是利用空間幾何變換中物體曲率不隨物體剛性變換而發(fā)生變化這一固有特性,表示對某一點所在局部曲面彎曲程度。采用平均曲率和高斯曲率[26]。其中平均曲率指某一點局部曲面在該點處平均彎曲程度;高斯曲率指點云表面某一點總彎曲程度,計算公式分別如式(1)、(2)所示。
式中,k1為該點最大主曲率,k2為該點最小主曲率。L、N、M、E、F、G分別為二次參數(shù)曲面逼近法中曲面在該點的偏微分值[27]。
體型關鍵點定位示例如圖6所示,圖6右部中將平均曲率最大點輸出結果用紅色點表示,高斯曲率最大點輸出結果用綠色點表示,z軸最值最大點輸出結果用藍色點表示。
圖6 體型關鍵點定位Fig.6 Key point positioning for cow body type assessment
1.2.3 體型評定指標測量
在準確獲取到奶牛體型關鍵點后,各項指標測量工作即可轉(zhuǎn)化為在三維點云模型上對各體型關鍵點間的距離求解[28]。輸出各奶牛體型關鍵點坐標值,再求取每對體型關鍵點之間歐式距離作為體型評定指標的預測結果。對測試集中包含的15頭奶牛,將基于高斯曲率和z軸最值結合策略作為策略一,基于平均曲率和z軸最值結合策略作為策略二,采用兩種策略分別進行體型評定指標自動測量,得到測量結果進行對比分析,確定精度更高的測量方法。
本試驗硬件配置如下:操作系統(tǒng)為Windows 10,處理器為英特爾酷睿i7-7800X 3.5 GHz,內(nèi)存為16 GB,顯卡為英偉達GeForce GTX 1080(11 GB內(nèi)存),使用Pytorch框架搭建網(wǎng)絡,Pytorch版本為1.10.0。訓練出的檢測模型參數(shù)量大小為353 MB。
為訓練體型關鍵區(qū)域檢測模型,將4421張奶牛深度圖像數(shù)據(jù)按照8:2劃分訓練集與測試集,其中訓練集包括34頭奶牛共3572幀圖像,測試集包括15頭奶牛共849幀圖像。
在模型訓練時以32幅圖像作為一個批次,衰減系數(shù)設定為0.0005。預熱學習率為0.1,預熱學習率動量為0.8,預熱3輪次,余弦退火超參數(shù)設為0.1。約260次迭代后,模型收斂。
在檢測體型關鍵區(qū)域時需采用評價指標描述檢測精度,AP(Average precision)為各類別平均精確度,表示測試集中某類目標檢測精確度和與該目標有關圖像的數(shù)量比值??紤]奶牛鬐甲點、尾根點、左肩寬點、右肩寬點、左胸寬點、右胸寬點、左腹寬點、右腹寬點、左腰寬點、右腰寬點共10個不同類AP來判斷模型優(yōu)劣時,每一個類別均有AP,難以計算檢測模型優(yōu)劣,因此本研究選擇各項類別平均AP值,即選擇mAP(mean Average Precision)作為檢測網(wǎng)絡模型訓練預測效果優(yōu)劣,計算公式如式(3)所示。
式中,Q表示類別數(shù)目,文中取值為10。
基于YOLO v5體型關鍵區(qū)域檢測模型得到檢測結果數(shù)據(jù)如表1所示,結果顯示mAP最終均能達到97.5%左右,說明關鍵區(qū)域檢測模型訓練結果良好,檢測速度達到60 f·s-1,可滿足日常生產(chǎn)所需。值得注意的是右胸寬點精度略低于其他部位,原因是在采集奶牛圖像時某一天深度攝像頭設置角度存在偏差,當天采集的深度圖像中奶牛右胸寬點存在被欄桿遮擋情況,導致該點精度低于其他部位??傮w而言,本文提出的體型關鍵區(qū)域檢測模型可精準確定奶牛關鍵區(qū)域,為下一步體型關鍵點定位工作提供基礎。
表1 體型關鍵區(qū)域檢測結果Table 1 Detection results of key areas for cow linear appraisal
體型關鍵點定位結果顯示基于曲率體型關鍵點定位方法平均速度可達到0.265 s·幅-1,基于z軸最值體型關鍵點定位方法平均速度達到0.018 s·幅-1,符合奶牛養(yǎng)殖場實際應用場景對效率的要求。
基于兩階段關鍵點定位算法得到15頭奶牛體型評定指標預測結果如表2所示。
表2 基于兩階段關鍵點定位算法的體型評定指標測量結果Table 2 Measurement results of cow linear appraisal indicators based on two-stage key point positioning algorithm(cm)
其中,最大誤差為5.68 cm,最小誤差為0 cm,結果可知產(chǎn)生誤差較大的預測值是因體型關鍵區(qū)域檢測結果發(fā)生偏差,導致體型關鍵點定位誤差較大。
本文基于策略一和策略二對奶牛5個體型評定指標計算平均絕對誤差(MAE)和均方根誤差(RMSE),如表3所示。結果顯示對腰寬指標預測值誤差較小,對肩寬和腹寬指標預測值誤差較大,原因是肩部和腹部離散點干擾較多。
表3 體型評定指標的平均絕對誤差和均方根誤差Table 3 Mean absolute error and root mean square error for cow linear appraisal indicators
本文對體型評定指標自動測量得到預測值與人工測量真實值之間相關性,如圖7所示。
圖7 指標真實值與預測值對比Fig.7 Comparison of actual value and predicted value of each indicator
由圖7可知,本文提出奶牛體型評定指標自動測量方法獲得的預測值與人工測量獲得的真實值間具有良好相關性,決定系數(shù)R2最大為0.9394,最小為0.8573,基于策略一的決定系數(shù)由大到小依次為腹寬、體長、肩寬、腰寬、胸寬,基于策略二的決定系數(shù)由大到小依次為腹寬、肩寬、體長、胸寬、腰寬?;诓呗远贸龅臏y量值與真實值之間的決定系數(shù)更高,且基于策略一和策略二測得預測值相差較小,故選擇輸出平均曲率最大值點與z軸最大值點相結合的方法作為奶牛體型關鍵點定位策略,自動測量奶牛體型評定指標更為精確。
為解決奶牛部分體型評定指標測量問題,采用目標檢測模型獲取體型關鍵點所在關鍵區(qū)域,分別采用基于高斯曲率和平均曲率方法輸出體型關鍵點,得到體型評定指標預測值。結果表明,基于平均曲率可取得更好測量效果。
本文通過深度學習算法以及三維點云技術對奶牛部分體型評定指標進行自動測量。奶牛體型評定指標測量相關研究大多存在人工交互,且在奶牛行走過程中對整體奶牛圖像數(shù)據(jù)進行關鍵點直接定位存在一定誤差,如基于雙目視覺技術方法中,對體長指標存在1.14%~6.09%的平均相對誤差,基于深度學習檢測算法的關鍵點定位方法對體長指標存在0.23%~5.79%的平均相對誤差[9-10]。因此,本文在自動化的前提下預測值精度較高。
由于深度圖像數(shù)據(jù)中存在信息缺失問題,可考慮引入RGB圖像信息,結合深度學習算法進行精細的孔洞填充。此外,在奶牛個體點云與欄桿等背景點云難以有效分割時會造成測量精度下降,針對奶牛體型關鍵區(qū)域點云的自動化處理方法有待進一步研究。
本研究對奶牛的5個體型評定指標自動測量時測量值平均絕對誤差和均方根誤差分別為1.55與1.78 cm,決定系數(shù)R2達到0.9394。證明該方法可為奶牛體型評定提供新的解決方法,給奶牛跛行行為檢測和體重預測等領域提供思路。