?

基于DeepLabCut算法的豬只體尺快速測量方法研究

2023-03-07 03:31趙宇亮曾繁國王海峰
農業機械學報 2023年2期
關鍵詞:體尺離群豬只

趙宇亮 曾繁國 賈 楠 朱 君 王海峰 李 斌

(北京市農林科學院智能裝備技術研究中心,北京 100097)

0 引言

豬只體尺參數是衡量其生長狀況的主要指標[1-3],在種豬選育、肉質評價、精準飼喂和分群管理中起著重要作用[4-7]。一般來講,體尺參數主要包括體長、體寬、體高、臀寬和臀高5項指標。目前,豬只體尺測量主要采用人工測量方式進行。人工測量往往需要借助測杖、圓形測定器和卷尺等工具測定,費時費力,而且易引起豬只應激反應,測量精度難以保證。非接觸式豬只體尺測量方法成為科研人員的重要探索方向。近年來,基于計算機視覺的非接觸式測量技術經歷了“平面圖像—立體視覺”和“人工特征工程—自動特征工程”的發展階段[8-10]。在豬只體尺測量方面,DESHAZER等[11]于1988年首次提出將計算機成像系統用于豬只體尺測量研究;WHITE等[12]、DOESCHL-WILSON等[13]于2004年分別采用單目相機開展了豬只生長過程的彩色圖像采集和體尺指標計算研究,但豬舍環境、豬體臟污和地面高光反射等問題影響輪廓提取,測量精度有待提高[14];2019年前后,PEZZUOLO等[15]、司永勝等[16]基于Kinect深度相機采集豬只理想姿態下的背部圖像,通過特征點檢測來計算豬只體尺參數,但圖像預處理過程繁瑣[17],無法實現實時測量;近年來,DeepPose[18]、DeeperCut[19]、ArtTrack[20]、OpenPose[21]等姿態檢測算法在人體姿態實時估計方面的應用成為研究熱點,但前期需要大量標注數據集(5 000幅以上)進行模型訓練,數據標注過程費時費力。2018年,MATHIS等[22]提出了一種基于深度神經網絡遷移學習的無標記姿態估計算法(DeepLabCut),該算法只需少量數據集(約200幅)進行訓練,已在老鼠[23]、靈長動物[24]、獵豹[25]和賽馬[26]等多個物種的姿態實時跟蹤方面呈現良好的檢測性能,但在豬只姿態檢測及體尺測量方面尚未有研究報道。

基于此,為實現豬只養殖過程中體尺參數的非接觸式快速準確測量,本文使用RealSense L515深感相機采集豬只站立姿態圖像,借助DeepLabCut算法處理豬只背部RGB圖像并提取關鍵特征點,開展5項體尺參數的測量研究。

1 數據集與測量方法

1.1 平臺搭建

豬只體尺數據采集平臺結構示意圖如圖1所示。在豬只保育床(尺寸為1.8 m×1.8 m)正上方2 m處安裝RGB-D圖像采集平臺。該平臺主要由深度數據采集單元、微型邊緣計算單元、電子秤、無線局域網和計算機工作站組成。深度數據采集單元選用Intel RealSense L515深感相機,內置RGB圖像傳感器(分辨率為1 920像素×1 080像素,幀率為50 f/s)、深度傳感器(分辨率為1 024像素×768像素,幀率為30 f/s)和BMI085慣性測量單元,探測范圍0.25~9 m,RGB視場70°×43°,深度視場70°×55°。微型邊緣計算單元選用NVIDIA Jetson Xavier NX開發者套件,內置384 個 NVIDIA CUDA Cores、48 個 Tensor Cores、6 塊 Carmel ARM CPU 和2個 NVIDIA 深度學習加速器引擎,可支持RealSense L515深感相機的數據采集、模型部署、多算法融合運算等功能。在前期數據收集過程中,為有效采集豬只站立圖像,本研究采用電子秤(精度0.1 kg,廣東寮步益科電子公司)進行輔助判斷,當邊緣計算單元獲取的電子秤稱取的豬只實時體質量數據波動小于0.2 kg并持續3 s以上時,開啟并采集豬只RGB-D圖像。

圖1 數據采集平臺

1.2 數據獲取

本試驗于2021年4月1日至6月15日在河北省秦皇島明霞養殖場某一單欄中進行(圖1b),豬只品種為長白,數量為12頭,日齡為30~115 d,體質量為6~50 kg?;跀祿杉脚_,共獲取單體豬只站立圖像700組用于模型訓練與測試。

1.3 體尺自動測量方法

1.3.1測量算法

本研究首先參考豬只體尺測量點的位置,在豬只圖像中選取關鍵特征點,并進行圖像特征點標記和模型訓練,驗證特征點檢測效果;其次,結合深感相機內參數,計算關鍵特征點世界坐標并優化離群特征點;然后,計算豬只5項體尺參數。具體算法如圖2所示。

圖2 豬只體尺測量算法流程圖

1.3.2背部特征點選擇

借助傳統人工體尺測量方法,觀察并選擇豬只圖像中10個特征點進行標記,用于后續模型訓練。如圖3所示,B為豬只尾根區域位置,L1、R1為豬只肩部區域最寬處左、右兩個區域位置,L2、R2為豬只臀部最寬處左、右兩個區域位置,El為豬只左耳尖位置,Er為豬只右耳尖位置,F為頸部中點位置,M為豬只臀部最寬處中心點位置,N為豬只肩部區域最寬處中心點位置。

圖3 豬只背部特征點標記示意圖

1.3.3特征點提取算法

為自動提取豬只背部特征點位置,本研究選取DeepLabCut算法開展豬只背部特征點檢測研究。DeepLabCut算法是一個結合對象識別和語義分割算法的深度卷積網絡結構。以ResNet作為DeepLabCut主干網絡結構為例,其具體實現算法是:在原有基礎網絡上去除ResNet殘差網絡結構分類層,接入反卷積層進行上采樣,獲得載有特征點分布情況的特征圖,并以特征點概率密度狀況及向量趨勢數據呈現,進而確定特征點具體位置,得到該特征點的圖像坐標,具體流程如圖4所示。接下來,運用已采集的批量豬只圖像數據按照上述流程對DeepLabCut網絡進行訓練,得到豬只各特征點的分布情況,如圖5所示,特征數據以熱力圖形式映射在原始圖像中。

圖4 網絡模型結構圖

圖5 特征位置分布圖

為獲得豬只背部特征點檢測最優模型,本研究選取ResNet-50、ResNet-101、ResNet-152、MobileNet-V2-1.0、MobileNet-V2-0.75、MobileNet-V2-0.5、MobileNet-V2-0.35、EfficientNet-b0、EfficientNet-b3和EfficientNet-b6共10個網絡模型[27-30]進行訓練并擇優作為DeepLabCut主干網絡模型。

1.3.4站立姿態分類

由于豬只身體處于卷曲、頭部擺動等非自然站立姿態時,體尺測量會產生較大誤差,因此,為實現豬只5項體尺數據精準計算,在獲得豬只特征點信息后,需篩選豬只自然站立姿態進行體尺測量。一般自然站立狀態下,El與Er連線S1,L1與R1連線S2,L2與R2連線S3,這3條線間近似平行,各直線間夾角比較??;非自然站立狀態下,由于頭部或身體扭曲,各直線間夾角比較大。

本文在得到多組3條線間的夾角數據后(Angle_S12、Angle_S23、Angle_S13),運用支持向量機(Support vector machine, SVM)進行模型訓練。SVM分類的主要思想是通過核函數定義的非線性變換將輸入空間變換成一個高維空間,并在這個空間中尋找一個分類超平面作為決策平面,使得正例和反例之間的隔離邊緣被最大化。本文將數據集主要分成兩類(自然站立狀態與非自然站立狀態),如圖6所示。選用徑向基函數(Radial basis function)作為SVM核函數,在姿態模型訓練過程中主要涉及懲罰系數與gamma兩個參數。其中懲罰系數即對誤差的寬容度,懲罰系數越高,說明越不能容忍出現誤差,容易過擬合;懲罰系數越小,容易欠擬合。gamma值隱含地決定了數據映射到新的特征空間后的分布,gamma值越大,支持向量越少,gamma值越小,支持向量越多。在模型訓練過程需要調節這兩個參數,使得姿態分類模型準確率高又具備較強的泛化能力。

圖6 不同狀態站立圖像

1.3.53D坐標轉換

為獲得原始數據中彩色圖像與深度圖像的坐標間映射關系,本研究采用Intel RealSense提供的pyrealsense2工具包進行圖像配準,實現目標區域由像素坐標向世界坐標的轉換。具體轉換關系如圖7所示,世界坐標(X,Y,Z)變換計算公式為

圖7 圖像坐標與世界坐標轉換關系

(1)

式中cx——圖像中心點橫像素坐標,像素

cy——圖像中心點縱像素坐標,像素

fx——橫向像素焦距,像素

fy——縱向像素焦距,像素

d(u,v)——圖像點(u,v)深度,m

本文深度相機cx=948.963像素,cy=524.896像素,fx=1 371.98像素,fy=1 372.58像素。

1.3.6離群特征點坐標優化

實際應用中,由于RealSense L515自身激光掃描方式特點,部分深度信息會存在丟失情況,尤其是豬只邊緣與地面交接處的深度數據丟失更為嚴重,還有通過DeepLabCut算法獲取的靠近身體邊緣區域特征點的微小偏差都會造成豬只體尺的大幅誤差。

已知攝像頭與地面距離,易將深度信息劃分為地面區域G、豬體區域B、未獲取深度區域O。如圖8所示,圖8a通過帶通分割方式將深度圖分成3個區域,紅色為豬體區域,綠色為地面區域,藍色為未得到深度數據區域。通過DeepLabCut算法得到特征點的圖像位置與真實標記位置無明顯差異,將特征點以3D形式呈現,明顯看出點El、B深度為0 mm,點L1映射在地面區域。因此需要對離群點位置進行優化,從而計算豬只體尺數據。

圖8 深度數據不同仰角3D圖

為解決這一問題,本研究設計了一種離群特征點臨近區域深度替換算法。對于離群特征點P,在深度圖上以該點圖像坐標位置作為中心點,向外擴張成(2d+1)×(2d+1)像素矩形區域,獲取該區域深度數據集合,將點P的深度數據替換成該集合非零最小值。本文選用矩形區域中非零最小值與矩形區域非零平均值對比測試,最終選擇矩形區域非零最小值替代離群點深度,此方式相對于矩形區域非零平均值替代方法更符合實際測量點位置。

1.3.7體尺計算

獲得豬只背部各特征點世界坐標以后,計算豬只體長(從點F到點B豬體背脊曲線長度)、體寬(L1與R1直線距離)、臀寬(L2與R2直線距離)、體高(點N距地面高度)和臀高(點M距地面高度)。其中豬只體長為頸部中點到尾跟點間的脊背曲線長度,即圖9所示藍色曲線長度。需對藍色區域經過的離散點世界坐標進行多項式函數擬合,應用弧微分法計算該曲線長度。

圖9 豬只體長曲線提取效果圖

2 結果與討論

2.1 模型訓練與評估

為了對DeepLabCut算法中的網絡模型進行訓練,同時評估10個主干網絡模型的運算速度與準確度,針對模型進行離線訓練與測試,試驗環境:Intel Core i9-10900X型號CPU,TITAN RTX型號GPU,Ubuntu 18.04操作系統,Python 3.7編程語言。

為了量化基于DeepLabCut算法的特征點檢測方法針對小樣本量數據模型訓練效果和預測能力,隨機抽取150幅圖像進行標記,將圖像數據集隨機分成訓練集和測試集(分別為80%和20%),并在測試圖像上評估DeepLabCut的性能模型。訓練過程中選取Adam優化器,設置批處理為1幅,學習率為0.02,迭代次數為50 000次。

10個主干網絡模型訓練過程的Loss曲線如圖10所示。由圖可知,10個模型在迭代40 000次時均收斂,且網絡損失值由小到大呈現為EfficientNet系列、ResNet系列、MobileNet系列,EfficientNet-b6模型在整個訓練過程中一直保持最低的損失值。

圖10 模型訓練過程Loss曲線

10個主干網絡模型的性能參數如表1所示,從處理速度上比較,MobileNet-V2-0.75模型檢測速度最快,達到16.5 f/s,但其在測試集誤差較高,更適合于時效性要求高于準確度要求的檢測領域。EfficientNet-b0模型內存占用量為14.9 MB,檢測速度與均方根誤差在10個模型中表現不錯,檢測速度和準確度較為均衡。EfficientNet-b6模型為159.1 MB,幀率為3.8 f/s,其在測試集上的誤差最小,適合用于高精度線測量,需要更高的檢測準確度,因此選用EfficientNet-b6網絡模型作為DeepLabCut算法的主干網絡。

表1 不同主干網絡模型性能對比

2.2 站立姿態分類模型分析

為了得到更為精確的站立姿態分類模型,采用網格搜索法通過懲罰系數與gamma參數調節訓練姿態檢測模型。使用288組數據進行訓練,其中自然站立姿態182組,非自然站立姿態106組。實驗中將數據隨機打亂,80%數據作為訓練集,20%數據作為測試集。經測試與驗證分析,選用懲罰系數為1、gamma為0.011訓練的自然站立姿態檢測模型,識別準確率為94.82%。

2.3 離群特征點優化

為了驗證本研究提出的離群特征點優化效果,隨機抽驗一組帶有離群特征點的圖像進行誤差分析,其中點El、L1、B在點云圖中發生明顯偏移。針對這3點,利用1.3.6節所述的離群特征點的臨近區域深度替換算法,進行測試與分析。圖11為離群特征點向外擴張距離d取不同值情況下,特征點在點云圖的分布情況。圖11a為未針對離群特征點進行優化分布情況,其中點El、B由于深度缺失,記為0,將其轉換成世界坐標系后,該兩點坐標均為(0,0,0);點L1在圖像中輕微向豬體外側偏移,該點對應地面區域,由于該點深度與實際點L1深度差異明顯,導致轉換后的世界坐標和實際位置相差較大。圖11b為原始圖像中離群特征點向外擴張成21像素×21像素區域(d=10像素),優化后其特征點在點云圖位置分布,可以看出,點El、L1依然處于離群區域,點B和真實尾根測量點無明顯差異,經計算該點與人工標記點的距離為2.8 cm。圖11c為原始圖像中離群特征點向外擴張成31像素×31像素區域(d=15像素),由優化后特征點在點云圖位置分布情況可以看出,El、L1分別與真實左耳尖、體寬左測量點無明顯差異,點B與真實尾根測量點有偏移,經計算該點與人工標記點的距離為8.1 cm。圖11d為原始圖像中離群特征點向外擴張41像素×41像素區域(d=20像素),由優化后其特征點在點云圖位置分布情況可以看出,El、L1分別與真實左耳尖、體寬左測量點無明顯差異,點B與真實尾根測量點存在明顯偏移,經計算該點與人工標記點的距離為10.4 cm。

圖11 不同擴張范圍下離群特征點優化后的點云圖

試驗結果發現,d取不同值時,結果存在很大差異。d過小,無法在擴張區域找到符合豬體深度范圍的深度;d過大,造成優化后的位置與真實位置差異較大。為進一步優化離群特征點,采用d值動態調節方法,從d=1像素開始進行計算,對于每一個離群特征點,若擴張后矩形區域無法找到符合豬體深度范圍的非零最小值,則d值加1像素,直到找到符合豬體深度范圍的深度數據為止,表2為手動標記點與動態調整后離群點結果對比表。手動標記特征點結果與動態調節離群特征點分布如圖12所示。

表2 手動標記點與動態調整后離群點結果對比

圖12 手動標記特征點與動態調節離群特征點對比圖

本研究采取動態調節d值方式對離群特征點進行測試,經過優化后離群特征點及骨架模型如圖13所示。

圖13 豬只特征點與骨架3D圖

2.4 體尺測量測試

為了驗證本研究方法有效性,對日齡40~70 d長白豬進行現場測試,共采集140組RGB-D圖像數據用于測試。部分體尺測量結果如圖14所示,結果顯示,在DeepLabCut 關鍵點置信度設置為0.6時,基于DeepLabCut算法的特征點檢測算法均可檢測豬只背部圖像的10個特征點。

圖14 豬只體尺測量結果

表3為部分豬只實際體尺與預測體尺數據及誤差,經計算體長、體寬、體高、臀寬、臀高的均方根誤差分別為1.79、1.07、0.72、1.25、1.46 cm;由計算結果可知均方根誤差不大于1.79 cm,符合體尺測量誤差要求。體寬、臀寬均方根誤差不大于1.25 cm,但這兩項參數基數較小,其誤差與體長、體高及臀高相比誤差略大。在上述試驗環境下測試,體尺測量處理時間每幀為0.27 s,符合在線測量應用要求。

表3 實際測量結果與算法計算結果對比

3 結論

(1)針對豬只體尺測量位置特征與數據集規模程度,選取DeepLabCut算法進行10個主干網絡模型訓練與分析,經驗證選用EfficientNet-b6網絡模型作為豬只背部特征點提取的最優模型。

(2)使用離群特征點臨近區域深度數據替換算法進行動態優化,有效解決了深度數據缺失與不合理問題。

(3)通過現場真實環境測試,本文算法適用于部署在邊緣計算單元實現豬只體尺實時精準測量的各項體尺參數,各項體尺數據均方根誤差不大于1.79 cm,體尺測量處理時間每幀為0.27 s。

猜你喜歡
體尺離群豬只
降低日糧粗蛋白并添加單體氨基酸對斷奶—育肥豬生長性能和營養排泄的影響(中)
家畜體尺自動測量技術研究進展
基于Kinect相機的豬彎曲體尺測量算法研究
豬胃潰瘍的病因與防治措施
肉羊體尺測量 用上“智慧眼”
秋冬季防應激不可忽略飲水消毒
一種相似度剪枝的離群點檢測算法
豬只硒缺乏癥的預防措施和治療方法
離群數據挖掘在發現房產銷售潛在客戶中的應用
應用相似度測量的圖離群點檢測方法
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合