賈雁琳,薛 皓,周子軒,趙學謙,霍曉靜,李麗華
(河北農業(yè)大學 機電工程學院,河北 保定 071001)
國內養(yǎng)殖場對蛋雞的養(yǎng)殖方式多為多層籠養(yǎng)模式,飼養(yǎng)密度大,且室內環(huán)境差,人工巡檢死雞時,飼養(yǎng)員會吸入浮塵及有害氣體,需上下攀爬扶梯挑揀死雞,費時費力[1-3]。雞只未進食狀態(tài)下,單個籠內雞只密集,存在活雞遮擋死雞的情況,死雞與活雞形態(tài)差異不明顯,人工肉眼挑揀死雞難度大。死雞和活雞形態(tài)特征較復雜,提高死雞分辨率,是識別籠內死雞的關鍵問題。本文研究對象是成年蛋雞,體型大小相似,在籠內活躍度較差,遮擋較嚴重,更難發(fā)現死雞。
目前,機器視覺廣泛應用于各大禽舍農產品識別分選[4-6],在雞只識別、疾病檢測和行為監(jiān)測領域,魏長寶等[7]針對雞冠特征向量,采用把雞冠變化量作為特征變量,進行邏輯與運算識別死雞的方法,識別準確率較高,但識別方法單一,檢測速度慢;畢敏娜等[8]基于雞冠和雞垂輪廓上兩點距離小于閾值,提出了“雞頭合并算法”對死雞進行評價;鄭雙陽團隊[9]針對蛋雞進食時的腿部圖像,建立了以特征區(qū)域面積值作為判斷籠內病雞、死雞的標準;李亞碩等[10]提出基于L*a*b*空間a*分量的雞冠,數理統(tǒng)計出病雞與健康雞的顏色特征差異,并與顏色閾值比較的方法識別病雞,識別率為96%。在紅外圖像處理環(huán)節(jié),何慧敏等[11]提出了1 種基于實際溫度、灰度圖像對應關系,有效估計人面部溫度的方法。鞏稼民等[12]分析出紅外熱圖溫度與灰度相關性,設計出1 套精確分析圖像溫度的設備。
本文基于雞頭形態(tài)特征,提出了1 種基于紅外熱成像技術并根據溫度閾值剝離出雞頭與環(huán)境并提取出雞頭形態(tài)學特征,建立多個形態(tài)學描述子,利用XGBoost 排序快速篩選出有效特征,最后以準確率、真正率等作為識別模型優(yōu)劣的評估標準,對比決策樹、BP 神經網絡分類效果,最終選擇表現最優(yōu)的支持向量機算法實現死雞識別。
實驗選取石家莊曙光農牧業(yè)蛋雞養(yǎng)殖場,雞舍結構圖(圖1),雞舍主視圖(圖1-a),俯視圖(圖1-b)。單棟養(yǎng)殖規(guī)模3 萬只。4 層8 列結構,單籠大小為600 mm × 600 mm × 500 mm,單籠內裝有5 只230 日齡的海蘭灰蛋雞。
圖1 雞舍結構圖Fig.1 Structure of chicken house
試驗于2020 年6 月16—23 日,每天采集不同位置的籠內雞只照片,用菲力爾E6 手持紅外熱像儀的自動對焦模式,鏡頭距離籠前面10 ~15 cm,與水平面拍攝成45°角,連續(xù)7 d 共采集700 張大小為320 × 240 像素的格式為.JPG 的混有死雞的紅外照片和700 張活雞的紅外照片。紅外特征下待識別樣本目標特征(圖2)。
圖2 紅外特征下的活雞頭、死雞頭形態(tài)特征Fig.2 Morphological characteristics of live and dead chicken heads under infrared characteristics
其中,活雞頭部為亮黃色部分(圖3-a),死雞頭部為暗黑色部分(圖3-b)。
圖3 活雞、死雞頭目標樣本Fig.3 Target samples of live and dead chicken heads
圖像預處理步驟為:批量加載待分類的雞頭紅外樣本圖片,得到活雞和死雞的雞頭紅外原圖(圖4-a),把RGB 空間模型轉化為HSV 顏色空間,得到V 空間域的特征(圖4-b),對V 空間域圖片分量使用設置尺寸大小為10,標準差為6 的高斯濾波器,利用最大類間方差法確定基于0.64 的閾值,將單空間的灰度圖像轉化成二值圖像。后期的處理采用腐蝕膨脹形態(tài)學操作,設定圖像結構元素形狀為平坦型圓盤結構元素,半徑參數為3 像素。并對個別目標添加孔洞填充、中值濾波、邊緣優(yōu)化等操作,得到良好的活雞頭部、死雞頭部的形態(tài)學效果(圖4-c)。
圖4 活雞死雞的雞頭處理結果Fig.4 Results of head treatment of live and dead chickens
圖5 最小二乘法擬合溫度T-灰度值G 效果圖Fig.5 Effect of fitting temperature T-gray value G with least square method
2.2.1 溫度的提取方法 在用菲力爾E6 紅外熱像儀采集雞只熱圖時,隨著舍內環(huán)境溫度變化,出現熱像儀顯示的每張圖片溫度色度條不一致的現象,因此拍攝時選擇自動檔位,這樣保證了拍攝的熱圖最大限度地反映溫度分布情況[11]。以拍攝到700 幅混有死雞的紅外熱圖為研究對象,并統(tǒng)計拍攝的每張照片溫度,所有圖片的紅外溫度色度條范圍均在(26±4)~(40±1) ℃之間。本研究選用其中1 張溫度范圍在26.6 ~40.6 ℃的JPG 格式紅外熱圖經過配套的 Tools 分析軟件,轉換成具有溫度信息的.xls文件。通過加權平均值算法灰度化紅外真彩色樣本圖片,等效得到樣本圖片的顏色分量灰度值Y,
Y=Lum(R,G,B)=0.299·R+0.587·G+0.114·B,灰度數據保存在.xls 文件中。因為本研究的目的是獲取雞頭溫度分布[11],只提取29.0 ℃至頭部最高溫度Tmax 區(qū)間的有效溫度值。在溫度區(qū)間[29 ℃,Tmax]上取預設溫度間隔基本相等的30 個樣本點。將預設的30 個溫度點分別與灰度圖片數據值一一對應,統(tǒng)計出每一個溫度點下出現頻次最高的灰度值,作為預設溫度點對應的灰度值(表1)。使用相同方法,依次找到30 個溫度點對應的灰度值。
表1 擬合樣本點數據Table 1 Data of fitting sample points
2.2.2 溫度的閾值確定 理論上,對于在某個測溫范圍下采集到的紅外熱圖,圖像上所有像素點的灰度值與實際的溫度值之間是呈線性相關關系的[13],同時,線性參數是可以求得的,灰度值(G)與溫度值(T)的關系可以表示為:G=kT+b,把得到的溫度值、灰度值樣本數據進行最小二乘法線性擬合后,得到溫度T-灰度值G關系線性函數關系式:G=15.109 4×T-373.775 3。計算相關系數R=0.98,因該值越接近1,此時2 個變量越強相關。對于采集到的紅外圖片溫度數據,按照獲取樣本點的方法,分別在其溫度范圍內獲取另外15 組樣本作為檢驗樣本(表2),同時利用得到的相應溫度T-灰度值G線性函數關系,估計每個灰度值對應的溫度值,并計算殘差。
表2 檢測樣本點數據Table 2 Test sample data
根據圖像預處理流程和雞頭溫度T-灰度值G閾值,基于溫度閾值提取雞頭形態(tài)特征。算法處理步驟如下:
(1)待識別處理的圖片(圖6-a)。
圖6 雞頭形態(tài)輪廓圖Fig.6 Outline of chicken head shape
(2)對實驗的每一幅RGB 圖像,均轉化為HSV 空間域,分別對3 個顏色域圖像濾波處理,選用處理效果最好的V 領域,并將其轉化為二值圖像,去噪并用開閉運算填充孔洞。
(3)找到目標前景區(qū)域idx,計算每個idx 的行數m1,列數n1,將目標區(qū)域溫度值按行數求和取平均,與設定的雞頭溫度閾值比較,得到圖片中每個目標區(qū)域總溫度的平均值meanpx。圈出并標注雞頭輪廓。
(4)依次保存標記出的死雞、活雞區(qū)域形態(tài)學特征。分離出初步輪廓(圖6-b)。
2.3.1 建立形態(tài)特征描述子 根據上述雞頭溫度閾值判別法,得到預處理后的相關形態(tài)學數據。雞頭基本形態(tài)特征呈細長橢圓形,為保證有效依據雞頭區(qū)分死雞活雞,選擇了以下幾種基本形態(tài)參數:面積Area,周長Perimeter,長軸MajorAxisLength,短軸Minor-AxisLength,離心率Eccentricity,直徑Diameter,圓形度Roundness,緊湊度Compactness;面積表示雞頭區(qū)域各像素總個數;周長由雞頭邊界像素個數度量;長軸為雞頭部分二階中心距的橢圓長軸長度;短軸為雞頭部分二階中心距的橢圓短軸長度;離心率為雞頭部分二階中心距的橢圓離心率;直徑D為雞頭面積相等的圓的直徑;圓形度R為雞頭邊界形狀接近圓的程度,記E=4πA/C2,緊湊度J為雞頭直徑與長軸比,記J=D/L。統(tǒng)計活雞與死雞頭部形態(tài)學分量范圍(表3)。
表3 雞頭活雞死雞形態(tài)學分量范圍Table 3 Morphological component range of chicken head live chicken and dead chicken
2.3.2 特征向量的快速選擇 為能更快速準確有效地區(qū)分出死雞活雞,本方法使用XGBoost 特征選擇算法對初選的8 個形態(tài)學特征分量進行權重重要性分析[14]。訓練集測試集比例為7∶3,構建樹的深度為3,學習率為0.1,設置迭代次數為500 次,迭代到第71 次時,模型最佳,此模型下重要性得分結果見圖7,AUC得分96.76%。
圖7 權重得分Fig.7 Weight score
圓形度R得分最高(圖7),為133,緊湊度其次,為123,直徑D得分最低,為22??梢钥闯?,雞頭基本形態(tài)特征向量受外界影響因素較大,而經特征變換處理過的復雜特征參數特征有較強的適應性和穩(wěn)定性,在相關文獻中也有所運用。為提高分類速度,最終選取排名前五的圓形度R、緊湊度J、離心率E、長軸長L、短軸長S為形態(tài)特征向量。
實驗選用的圖片數據中,70%用作訓練樣本,30%用作測試樣本。
實驗中把活雞頭部的圖片標記為“正樣本”,把死雞頭部圖片標記為“負樣本”。用分類器分類樣本時可能出現正樣本檢測為正樣本、正樣本檢測為負樣本、負樣本檢測為負樣本、負樣本檢測為正樣本4 種情況,因此對死雞檢測識別模型評判標準定義為:
3.1.1 決策樹模型 決策樹是1 種樹形結構,每個分支代表1 個測試輸出,每個葉節(jié)點代表1 種類別[15]。本文選用CART 分類樹算法以基尼系數為分類依據?;嵯禂导碐ini(P)=pk(1-pk)=1-,式中pk表示數據集中第k個分類的概率,|D|表示樣本個數,|Ck|表示屬于類Ck的樣本個數。
3.1.2 BP 神經網絡模型 BP 神經網絡是1 種典型的多層前向型神經網絡,具有單輸入層、多隱含層和單輸出層的結構[16]。樣本的輸入值經隱含層和輸出層計算,輸出預測結果。當預測值不滿足期望值精度,則從輸出層反向傳播該誤差,不斷調整閾值和權重值,減小網絡輸出相對誤差,確定模型。
3.1.3 支持向量機網絡模型 SVM 以其精度高和處理高維數據的機器學習能力,被廣泛應用于分類問題。定義的線性分類器SVM 超平面為公式(1):
其中ω=(ω1,ω2,……,ωd)為法向量;b為位移。
文中輸入的樣本參數變量為:
DATA={(x11,x12,x13,x14,x15,y1),(x21,x22,x23,x24,x25,y2),…,(xi1,xi2,xi3,xi4,xi5,yi)}。
其中,特征向量為5 個,樣本數量記為i,yi∈{0,1},xi為第i只雞只樣本,yi為雞只樣本的類別標簽。當yi為1 時,記xi為活雞;當yi為0 時,記xi為死雞。
3.2.1 決策樹調參及模型選擇 本文選用決策樹的
CART 算法基于5 種特征值,對死雞活雞樣本進行分類實驗。比較剪枝前后的模型驗證參數,選擇后剪枝優(yōu)化方法,剪掉x3子樹作為提高后的樹模型,參數設置最大樹深度為3,最大葉子節(jié)點數為8。CART 樹模型見圖8。x1、x2、x4、x5分別為圓形度、緊湊度、長軸長、短軸長。
圖8 決策樹模型Fig.8 Decision tree model
3.2.2 BP 神經網絡調參及模型選擇 BP 神經網絡節(jié)點的選擇至關重要,本文設置1 個3 層結構神經網絡。網絡參數指定訓練如下:學習率設置為0.01,動量因子設置為0.9,隱含層和輸出層神經元激活函數設為tansig,輸入層節(jié)點數為5,隱含層神經元個數參考公式(2):
式中:m、n分別為輸入層、輸出層神經元個數,a 為[1,10]之間的常數[17]。本文設置神經元節(jié)點數目最小值為4,最大值為13,計算隱含層不同個數神經元對應的準確率,測試集準確率(圖9),選擇準確率最高的神經元數目為10 的模型。
圖9 不同個數神經元下的準確率Fig.9 Accuracy of different number of neurons
3.2.3 支持向量機的調參及模型選擇 本文采用網格搜索交叉驗證法[18],設置懲罰因子c的范圍在{0.5,16},核函數參數g的范圍在{1,8},遍歷尋找最佳參數,最優(yōu)c/g參數選擇過程見圖10。
圖10 支持向量機訓練模型選擇結果Fig.10 Training model selection results of support vector machine
線條上的數字表示不同參數對應的準確率值,實驗模型參數選擇最高準確率對應的懲罰因子c=2,核函數參數g=5.656 9。選用5 折CV 過程對訓練集調參,其中c和g的步進大小設置為0.5,最優(yōu)c/g參數選擇結果圖準確率離散化顯示的步進間隔為0.7。核函數類型設置為RBF 核函數。
本文使用對雞頭形態(tài)特征提取的特征向量,結合決策樹、BP 神經網絡、支持向量機的分類算法進行對比試驗,在3 種最優(yōu)模型下得到完整的不同評價指標得分(表4)。
表4 3 種不同分類算法不同評價指標得分表Table 4 Score of three different classification algorithms and different evaluation indicator
(1)從表4 中可以看出,3 種不同的分類算法在訓練集數據的準確率、真正率、召回率和調和平均數F1 差異不大,得分均在90%左右,測試數據集真正率、召回率、調和平均數F1 平均得分在90%以上,說明雞頭的形態(tài)特征描述子具有一定可分性,且分類效果較好。從圖11 的ROC 曲線分布和表4中測試集的AUC值也可以看出,3 種分類算法AUC值均在90% 左右,說明了對特征描述子進行數量及重要性的比較后,篩選出來的特征向量經過算法建模,可以有效減少算法的時間,快速識別出死雞。
圖11 3 種算法ROC 曲線Fig.11 ROC curve of three algorithms
(2)從真正率這個指標上看,決策樹和BP 神經網絡在測試集得分近乎相同,但其它幾個指標BP神經網絡均高于決策樹算法,因此,評判分類模型效果最佳的方法應從多個評價指標出發(fā)。
(3)從3 種不同分類算法在形態(tài)學特征向量分類結果看,支持向量機的分類效果最好,支持向量機分類算法比決策樹在測試集的準確率提高了4.17%,且與BP 神經網絡算法相比,雖然準確率一致,但測試集實驗結果中召回率和F1 分別達到96.39% 和95.24%,召回率、F1 和AUC值均比BP神經網絡高,所選用的支持向量機分類算法比BP神經網絡在測試集的召回率提高了1.52%,說明基于支持向量機的分類效果最佳。
(4)從模型結構上看,決策樹算法和BP 神經網絡算法分類模型結構簡單,雖然算法執(zhí)行時間較快,但決策樹算法分類準確率較低,BP 神經網絡的隱含層節(jié)點個數需要不斷試湊,調參繁瑣,可移植性差,在養(yǎng)殖場實際應用中,存在因數據集的差異,會造成識別率降低等風險;SVM 分類算法適用于解決小樣本且線性不可分的變量,對于本文數據恰好滿足條件,分類效果很好,但因其運算結構較為復雜,會出現識別時間過長等問題。本文采用的基于XGBoost 算法特征篩選出的5 種重要特征,與SVM分類結合的算法,大幅度降低了高維特征的復雜性,減少了識別時間。此提取雞頭特征并分類的死雞識別方法,在保證準確率的同時,縮短了運行時間,證明了本文算法相較于其他算法的優(yōu)勢。
(1)本文采用雞頭溫度閾值提取雞頭形態(tài)學特征,結合XGBoost 篩選出5 個特征,結合分類算法對活雞、死雞頭部目標進行了區(qū)分,提高了整個死雞識別系統(tǒng)的識別精度和實用性。
(2)本研究通過基于雞頭溫度閾值提取形態(tài)學特征與支持向量機結合的分類算法,區(qū)分了籠內活雞、死雞。
(3)在特征選擇過程中,不同的特征值選擇算法,對后期分類模型訓練結果的影響較大,通過XGBoost 算法對雞頭形態(tài)特征重要性計算得分并排序,篩選出5 個重要特征,利用這5 種特征向量進行后期的死雞識別,分類效果明顯,實施性強。
本文在實地對籠內死雞識別進行小規(guī)模試驗后,通過檢測識別效率與準確度,驗證了本研究的算法有效性。結果表明,本研究提出的用溫度閾值提取雞頭形態(tài)學特征結合支持向量機算法的應用,將使得死雞識別系統(tǒng)更加經濟、符合實際應用,后續(xù)可推廣到實際家禽養(yǎng)殖場中。