?

基于改進YOLO v3的玉米葉片氣孔自動識別與測量方法

2023-03-07 03:31郭思媛任方濤張新紅李結平
農業機械學報 2023年2期
關鍵詞:氣孔自動深度

張 帆 郭思媛 任方濤 張新紅 李結平

(1.河南大學河南省大數據分析與處理重點實驗室,開封 475004;2.河南大學計算機與信息工程學院,開封 475004;3.河南大學軟件學院,開封 475004;4.河南大學農學院,開封 475004)

0 引言

植物氣孔控制著植物的各項生命活動,氣孔研究對深入了解生態系統具有重要意義,受到生態學家的廣泛關注[1-2]。氣孔可以調節植物與環境之間的氣體交換[3],尤其是二氧化碳和水蒸氣之間的交換[4],因此對全球碳循環和水循環有重要的影響。氣孔通過開閉運動可以控制植物的光合作用、蒸騰流、營養、新陳代謝[5-7],避免惡劣環境下的水分流失,以確保植物可以適應不同的生存環境[8]。此外,如果植物感染,氣孔可以關閉以有效限制細菌入侵,這一行為可能代表著植物對病原菌的原始反映[9],因此對植物免疫學也有重要意義。然而,氣孔形態受到相對濕度、溫度、大氣中二氧化碳濃度、光強、植物激素等多種因素的影響[10-13]。植物器官發育時氣孔也可能產生分化,導致同一個葉片在生長發育的不同階段,其氣孔密度(單位面積上的氣孔數目)有很大的差異,因此研究氣孔的密度和大小等性狀可以用于分析植物的抗逆性[14]。

對氣孔性狀的傳統分析方法是人工觀察與測量,直接在顯微鏡圖像中對氣孔進行標記。這種方法不僅過程繁瑣、效率低下,而且容易出現人為誤差。為了更加精確地研究氣孔的形態并定量描述氣孔的行為,植物學家借助于計算機軟件ImageJ測量氣孔密度、開度及形態特征[15]。這種方法需要人工標注感興趣點,如孔隙邊界、長度、寬度等,而植物氣孔數據集動輒幾千幅圖像,對這些圖像重復進行標注耗時耗力,且容易出錯。為了提高研究效率,研究人員只利用少部分數據構建模型,導致大量的實驗數據沒有發揮作用。自20世紀80年代以來,人們一直嘗試將這一繁瑣的工作自動化。早期提出的檢測方法多基于圖像處理技術,一般只適用于特定的植物種類[16-20]。首先,這些方法需要對數據集進行繁瑣的預處理操作,如使用高斯濾波器等對圖像進行處理。其次,對顯微圖像質量要求較高,只適用于氣孔排列規則的物種且要求圖像中氣孔輪廓清晰。但是在實際拍攝顯微圖像時由于光照和人為操作經常會導致顯微鏡圖像質量不佳。上述方法均屬于半自動的方法,在實際應用中仍有較大的局限性。

近年來機器學習和深度學習的快速發展促進了植物氣孔的全自動檢測與識別技術的研究[21]。AONO等[22]將5個經典特征提取器與6個深度學習描述符進行比較,以檢測玉米(ZeamaysL.)葉片中的氣孔。FETTER等[23]用深度學習方法對大豆(GlycinemaxL.)葉片氣孔密度的遺傳多樣性進行了分析,提出了一種氣孔檢測工具StomtaCounter。JAYAKODY等[24]提出了一種氣孔高通量實例分割(High-throughput instance segmentation)的通用方法,可以在不同質量和規模的多個顯微圖像數據集上實現穩健的性能,不需要對每個數據集重新標記和重新訓練。

現有基于深度學習的方法未結合植物氣孔圖像數據集的特點對深度學習模型進行針對性的改進和優化,而且沒有考慮訓練過程中需要采用遷移學習加快模型收斂速度的問題以及提高模型泛化能力的問題,也沒有考慮獲得大量標注數據的難度。由于模型的泛化能力較差,導致這些模型在基準數據集上表現良好,但在數據集之外的真實圖像上很難取得較好的效果。另外,目前雖然很多基于深度學習的方法可以自動完成氣孔的識別與計數,但大多數方法沒有同時實現氣孔參數的自動測量。一些方法可以實現氣孔的自動識別,但不能同時自動測量,測量工作仍然需要在后期依靠人工完成。還有一些方法可以對人工標識出的氣孔進行參數自動測量,但不能實現氣孔的自動識別。本文針對玉米葉片氣孔識別的特點對YOLO(You only look once)深度學習模型[25]進行改進,以實現玉米葉片氣孔的自動識別與自動測量。

1 數據集構建與模型改進

1.1 數據集獲取

本文使用的玉米樣本種質來源于中國、美國和國際玉米小麥改良中心(Centro Internacional de Mejoramientode Maizy Trigo, CIMMYT)[26]。玉米樣本種植于河南省原陽縣實驗基地(113.947 402°E,35.112 807°N)。本文采用“指甲油印跡法”獲取玉米葉片上表皮氣孔印跡片。在玉米生長的三葉期,選取長勢一致植株,以玉米苗第2片葉為取樣葉片,在葉片中部均勻涂上一層透明指甲油,涂抹的過程中需避開主脈,等待20 min晾干后用鑷子取指甲油層,將收集到的指甲油印跡片保存至1.5 mL離心管中,每個材料保存至獨立的離心管。將保存好的印跡片用鑷子小心放置于載玻片上,加入少量的清水,增加印跡片與載玻片的粘度,加蓋蓋玻片,制成臨時玻片[27]。使用Olympus CX41普通光學顯微鏡分別在10×10和10×20的放大倍數下對臨時玻片進行觀察,使用ImageView軟件隨機截取清晰的視野作為最終氣孔圖像。每個裝片上的3個樣本各隨機獲取2個視野圖像,然后按照編號構成氣孔圖像集。

1.2 數據集預處理

為了便于計算機對采集到的玉米數據集進行處理,需要對圖像進行預處理以節約內存空間,加快計算機處理速度。為了訓練YOLO深度學習模型,將圖像分辨率統一調整為1 000像素×667像素,圖像格式由ttif轉換為png格式。使用LabelImg軟件對圖像進行標注。標注過程中,為提高模型的精確度,盡量使最小外接矩形框住氣孔。一幅圖像中的氣孔全部標注完成后,LabelImg軟件自動生成帶有氣孔坐標信息的標簽文件。標注完成后,還需要對標簽信息進行歸一化處理,并將標簽格式轉換為YOLO模型可以識別的txt文本文件。

基于深度學習方法需要大量的訓練數據。本文的氣孔原始圖像共2 150幅,但是這個圖像數量對于深度學習模型來說并不夠。本文通過CLoDSA方法進行數據增強(Data augmentation)[28]。通過一系列操作如隨機角度旋轉、隨機遮擋、加入高斯噪聲等方法,把氣孔圖像數據集擴充到26 184幅氣孔圖像。將數據集劃分為訓練集、驗證集與測試集。為了提高氣孔識別精確率,本文采用了有監督學習的訓練模式。需要在模型訓練前準備足夠多數量的標注氣孔圖像,本文人工標注氣孔23 360個。

1.3 YOLO v3深度學習模型改進

YOLO是一種深度學習目標檢測模型,使用一個網絡同時進行定位和識別[29]。該模型融合了特征金字塔網絡(Feature pyramid networks)、殘差塊(Residual blocks)設計、交叉熵(Cross entropy)等方法[30]。YOLO v3借鑒了金字塔特征圖思想,通過卷積和下采樣產生多尺度的特征圖(Feature map)檢測物體,共輸出3個特征圖。在這3個特征圖中,圖像分別被劃分為8×8、16×16和32×32網格,每個網格稱為Grid Cell。YOLO v3引入了先驗框(Anchor box)的概念,先驗框是通過K-means聚類算法對訓練集所有標注框的長寬進行聚類得到的最常出現的幾個矩形框。上述3個尺度的特征圖分別引入3個先驗框,一共9個。如果某一個標注框(Ground truth box)的中心落在了某一個Grid Cell中,這個Grid Cell就負責預測此物體的邊界框(Bounding box)[31]。由于每個尺度的特征圖都有3個不同比例大小的先驗框,所以要選擇與目標形狀最接近的先驗框,評價指標是交并比(Intersection over union, IoU)。如果兩個框完全重疊,IoU為1,如果完全不相交,IoU為0。在包含目標的Grid Cell中計算與3個先驗框的IoU,選出重合度最高的先驗框。然后對選出的先驗框進行平移(迭代修改中心位置參數)和尺度縮放(迭代修改長寬參數),生成一系列邊界框,經過迭代逐漸與標注框重合。

在深度學習訓練中,不斷計算邊界框與標注框的中心坐標、寬、高的差異,這種差異表達為損失函數(Loss function)。另外,使用交叉熵函數計算是否含有目標的置信度(Confidence)損失值。置信度是當前邊界框內是否包含目標的概率。同樣使用交叉熵函數計算與目標各個類別的置信度損失值。深度學習的訓練目標就是使這些損失函數之和最小。

氣孔檢測是單目標檢測任務,同類目標的特征具有很大的相似性。本文對所有氣孔圖像標注目標的長度、寬度占整幅顯微鏡圖像的比例進行測算,發現氣孔的長度和寬度相對于整幅圖像的大小總是在一定范圍內波動。氣孔寬度占整幅顯微圖像的比例集中在2.5%~12.5%之間,長度占整幅顯微圖像的比例集中在5%~15%之間。

通過對YOLO v3主干網絡結構和實驗結果的分析發現,較深的模型在顯微圖像這種單一目標的識別未必取得更佳的實驗效果。對于通用的目標檢測模型,其檢測的目標類別較多,特征復雜,而對于單一目標,其特征較為簡單,并不一定需要很深的網絡模型才能表達。加深網絡反而可能帶來優化問題,梯度下降不穩定,增加訓練成本并導致學習能力下降[32]。根據氣孔圖像數據集的特點,本文對YOLO深度學習模型中的預測端進行了優化,以降低誤檢率。同時結合氣孔目標的特征對16倍、32倍下采樣層進行簡化,以提高識別效率。

本文對YOLO v3主干網絡進行了改進。將第36層(8倍下采樣層)與第91層(8倍下采樣層與16倍下采樣層預測端的拼接處)的特征圖拼接結構刪除,取消了對小型目標的預測,有效地避免了將很小的氣泡或雜質誤判為氣孔。對5個下采樣層中的最后2個進行改進,使用Res1替代原來的Res4和Res8進行下采樣,在不影響采樣效果的前提下大幅度減少了網絡層數。由于網絡修改后層數發生相應的改變,將第79層(32倍下采樣層)的特征圖進行上采樣后與第39層(16倍下采樣層)的特征圖進行拼接,進一步提高提取特征的能力,提高檢測精確率。改進后的網絡結構如圖1所示。其中CBL層為卷積層(Convolution)、批歸一化(Batch normalization, BN)層、LeakyReLU激活函數層的組合模塊層;ResX中的X表示殘差塊中殘差單元數量;US表示上采樣層;Concat表示張量拼接,這里是將網絡中的第39層與第79層的特征圖進行拼接。改進前模型為222層,參數量為6.152 37×107;改進后模型為139層,參數量為3.556 07×107。改進后模型網絡層數和參數數目都大幅度減少。

圖1 改進YOLO v3模型結構圖

1.4 拉東變換

拍攝中由于人為原因,氣孔可能沒有呈水平狀。雖然本文的深度學習模型可以識別各種角度的氣孔,但是非水平狀的氣孔會給后續自動測量造成一定的困難。因此本文通過拉東變換(Radon transform)將圖像中的氣孔旋轉水平位置,再進行識別和精確測量。拉東變換就是將數字圖像矩陣在某一指定角度θ射線方向上做投影變換[33]。一個兩維函數f(x,y)的拉東變換定義為

式中R——拉東變換算子

ρ——極坐標極徑

δ——狄拉克(Dirac)函數

通過計算不同角度的拉東變換,可以完成圖像的傾斜校正?;诶瓥|變換的圖像旋轉校正是自動進行的,讀入圖像后不需要人為進行任何操作就可以自動將氣孔旋轉至水平位置。

2 結果與分析

2.1 氣孔自動識別

本文氣孔圖像數據集中共有2 150幅(擴增后為26 184幅)氣孔圖像。在深度學習模型的訓練時設定訓練集、驗證集比例為7∶3。YOLO模型對整個數據集迭代周期(Epochs)設定為300,在迭代中所使用的學習率設定為0.000 5。

在多個目標檢測模型上進行訓練測試,分別計算精確率(Precision)、召回率(Recall)、F1值(F1-score)。

分別對模板匹配方法(Template matching)、最大穩定極值區域特征方法(Maximum stable external regions, MSER)、級聯目標檢測方法(Cascade object detection, COD)、YOLO v3、Faster R-CNN以及改進YOLO v3深度學習模型進行實驗對比,結果如表1所示。從表1可以看出,改進YOLO v3模型的精確率、召回率和F1值優于其它模型,訓練時間也比YOLO v3模型有了較大的改善。改進YOLO v3模型訓練過程中的精確率、召回率、損失值曲線如圖2所示。

圖2 改進YOLO v3模型訓練過程中精確率、召回率、損失值變化曲線

表1 不同模型實驗結果對比

深度學習模型訓練完成后,利用訓練好的模型對測試集圖像進行氣孔檢測,檢測效果如圖3所示。氣孔目標用矩形框框出,識別框上角的數字代表置信度。雖然深度學習模型的訓練時間很長,但訓練完成后,檢測、識別一幅氣孔圖像的時間很短,只需要0.2 s就可以檢測識別出全部氣孔。

圖3 基于深度學習的氣孔自動識別結果

2.2 氣孔自動測量

氣孔的長、寬、面積等參數的傳統測算方法是根據顯微鏡圖像利用圖像處理軟件如ImageJ、Matlab進行人工測算。這種方法誤差較大且需要耗費大量時間。使用本文模型對旋轉的氣孔圖像進行識別后,每個識別出的氣孔都被一個邊界框框住,可以通過模型直接計算出每個最終邊界框的長、寬(像素值)。由于圖像在訓練過程中進行了縮放和旋轉,所以上述邊界框的長度和寬度并不等于真實葉片氣孔的長度和寬度。根據氣孔圖像的尺寸與圖像中比例尺對邊界框的長度和寬度進行換算,計算出真實氣孔的長度和寬度。本文模型可以完成氣孔圖像數據集中所有圖像的氣孔自動識別與自動測量工作,結果自動輸出為一個Excel文件。在Excel文件中,每幅氣孔圖像保存為一個sheet,圖像中每個氣孔的參數占一行,另外還自動計算了本幅圖像中全部氣孔的統計參數。

在統計氣孔數目時,位于圖像邊緣的氣孔如果1/2以上面積不在圖像中則不計入氣孔總數。本文將人工測量的數據與本文模型自動測量的數據進行對比,對比結果如表2所示,參數測量的平均精確率達到90%以上。其中長度與寬度指1幅圖像中所有氣孔的平均值。需要指出的是,大于氣孔總面積1/2但形態不完全的氣孔雖然被記入氣孔總數,但為了避免對測量結果有明顯影響,這類氣孔(約538個)并不參與氣孔平均長度和平均寬度的測量。為

表2 氣孔自動測量實驗結果

了科學地反映計算機自動測量的準確性,通過與人工統計的數目作相關性分析,長、寬、數目的平均相關系數達到0.93,說明本文方法具有實用性。

通過對實驗結果進行分析,發現容易漏檢或誤檢的氣孔有兩種:一種是被人工標注但是深度學習模型沒有檢測到的氣孔,通常產生的原因是圖像存在遮擋、圖像亮度和對比度較低、雜質過多以及氣孔形態變異;另一種是被深度學習模型檢測出來但未被人工標記的氣孔,產生的原因可能是存在形態類似氣孔的偽影或小氣泡、水滴等。

3 結束語

結合氣孔圖像數據集特點對YOLO v3模型進行了改進,考慮到識別對象氣孔的大小處于某一狹窄的范圍內,簡化了YOLO模型的主干網絡結構。在人工拍攝過程中由于人為原因造成非水平狀的氣孔會給后續的自動測量造成一定的困難,基于拉東變換對氣孔圖像進行了旋轉校正。采用改進YOLO v3深度學習模型完成了玉米葉片氣孔的自動識別與自動測量工作。改進后模型的精確率、召回率和F1值優于模板匹配、最大穩定極值區域特征、級聯目標檢測等非深度學習方法,以及YOLO v3、Faster R-CNN等深度學習方法,訓練時間也比改進前的YOLO v3模型有了改善。本文方法解決了傳統的氣孔分析方法效率低、誤差大的問題,可以幫助農業科學家、植物學家開展植物氣孔相關分析研究。

猜你喜歡
氣孔自動深度
玉米葉氣孔特征對氮素和水分的響應及其與葉氣體交換的關系
深度理解一元一次方程
自動捕盜機
某灰鑄鐵汽油機缸體電機面氣孔的解決探討
KD490:一種軟包鋰離子電池及其制作工藝
深度觀察
深度觀察
深度觀察
基于STM32的自動喂養機控制系統
自動搖擺的“蹺蹺板”
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合