






doi:10.15889/j.issn.1002-1302.2024.20.029
摘要:為了快速準確地識別番茄葉片病蟲害,從而提升番茄產量和品質,在有限設備資源條件下實現番茄病蟲害的精準防治,針對以往番茄病蟲害識別算法數據標注成本過高的問題,提出一種基于改進FixMatch算法的半監督番茄病害圖像識別方法。首先,對真實場景采集的番茄病蟲害數據進行深入分析,挖掘出數據集規模不明、類間數據不均衡性較為嚴重的特性,在原始FixMatch算法的基礎上,引入k-means聚類算法篩選出代表性數據進行標注,以提高標注數據的性價比。其次,設計一種自適應偽標簽數據補充模塊,使得在半監督分類算法迭代過程中,自適應地調整不同類別的偽標簽判定閾值,并且引入Focal Loss,以保證模型免受類別不均衡的影響。試驗結果表明,在kaggle提供的公開數據集New Plant Diseases Dataset的10種番茄病害上,本研究提出的半監督番茄病蟲害識別算法僅使用2 000張(約訓練數據的10%)的標注數據進行模型訓練,在測試集上的準確率可達到98.16%,比原始FixMatch算法提高了1.34百分點。經過對比試驗表明,本研究提出的基于k-means聚類算法的代表數據預選模塊比隨機挑選的準確率提高23.92百分點,基于自適應閾值截斷的偽標簽判斷模塊在困難樣本類別上比原始FixMatch算法高出5.00百分點。綜上所述,本研究所提出的基于改進FixMatch算法的半監督番茄病蟲害識別算法能夠提高半監督圖像識別任務的準確率,對于真實場景下如何挑選數據標注以及如何制定訓練過程中的偽標簽監督策略都有著積極的參考意義,降低了番茄病蟲害識別模型的數據標注成本,助力智慧農業發展。
關鍵詞:番茄;病蟲害;改進FixMatch算法;半監督學習;圖像分類
中圖分類號:S126;TP391.41" 文獻標志碼:A
文章編號:1002-1302(2024)20-0244-06
收稿日期:2024-04-24
基金項目:河南省重點研發與推廣專項(科技攻關)(編號:232102111118);信陽農林學院青年基金(編號:QN2022020、QN2021046);信陽農林學院科技創新團隊項目(編號:XNKJTD-011)。
作者簡介:嚴露露(1995—),女,河南信陽人,碩士,助教,主要從事溫室智能化栽培與環境調控研究。E-mail:2020190001@xyafu.edu.cn。
通信作者:程湞湞,博士,講師,主要從事圖像處理與模式識別研究,E-mail:2021190008@xyafu.edu.cn。
番茄是我國重要的蔬菜之一,在我國的栽培面積和總產量均居世界首位[1]。番茄種植過程中常遭遇多種病害,嚴重影響番茄的產量,導致番茄品質降低,對病害的防治也大大增加了作物種植成本。針對番茄的病蟲害檢測可以進行早期預警,基于準確的病蟲害診斷進行精準施藥,是番茄病蟲害防控體系中至關重要的一個環節[2-3]。傳統農業生產中,番茄病蟲害識別主要依靠種植者的經驗和生物檢驗。前者主觀性強,容易出現誤判,后者損傷植物組織且呈現滯后性,影響藥劑的及時噴施[4-5]。因此,提供一種快速、無損且準確的番茄病蟲害識別方法十分必要。
隨著人工智能領域的發展,圖像處理、神經網絡等技術廣泛應用到農業作物圖像提取與分類中[6-8]。近幾年,基于神經網絡的方法進一步應用于番茄葉片病蟲害識別。倪智濤等提出了一種將圖像分類技術與目標檢測技術協同融合的細粒度病蟲害識別方法,提高了番茄細粒度病蟲害識別的精確度[9]。張俊寧等提出了一種基于注意力機制與改進YOLO v5s的溫室番茄目標快速檢測方法,提高了邊界框回歸速率和果實目標定位精度[10]。郭小燕等在ResNet 50中引入雙層注意力機制與通道特征提取機制,設計并驗證了基于全局特征提取的深度學習網絡的有效性[11]。馬麗等改進了MobileNet v3模型用于番茄病害識別,改進后模型平均識別準確率可達97.29%[12]。陳林琳等利用計算機視覺中的圖像識別與特征提取技術建立了芋頭病害識別監測理論模型和識別系統,該系統對芋頭病害的識別率平均維持在88%以上[13]。與傳統基于特征分類的病蟲害識別算法相比,深度神經網絡圖像分類算法的識別精度更高,應用場景更廣泛[14-16]。為了充分訓練深度神經網絡模型,提高識別效果,需要使用大規模含標注信息的數據集作為支撐,但在實際農業生產中,如此高成本的方案難以施行。
基于以上問題,研究者們提出了多項基于半監督學習的病蟲害識別算法[17-19]。使用半監督病蟲害識別算法,僅需要少部分的標注數據,同時訓練標注數據和未標注數據,便可實現較好的識別效果。本研究基于FixMatch半監督圖像分類算法,引入 k-means聚類算法用于篩選代表數據進行標注,聚焦模型前期能力差和類間數據不均衡性的問題引入了基于自適應閾值截斷的偽標簽判斷和圖像分類Focal Loss,以改善原模型對于類別不均衡情況下樣本較少類別識別率差的缺陷,提升半監督模式下番茄病蟲害識別的準確率[20]。
1" 材料與方法
1.1" 數據集介紹
本試驗使用的番茄葉片病害數據集是Kaggle提供的2個番茄葉片病害數據集New Plant Diseases Dataset(https://www.kaggle.com/datasets/ashishmotwani/tomato/data和https://www.kaggle.com/datasets/noulam/tomato)整理而成,整理后的數據共包含19 349張訓練集圖片和4 837張驗證集圖片,包含10種不同類型的番茄病害葉片圖像和1種類型的番茄健康葉片圖像,是專門用于番茄葉片病害識別模型訓練和驗證的數據集。具體數據詳情見表1。
從表1可以看出,不同葉片病害的數據數量差異較大,對于模型訓練存在較大干擾,使得模型極易向數據多、易于識別的病害類別上傾斜,而忽視了數據少、較難識別的病害類別。本研究所提出的半監督番茄病害識別算法針對這種類間數據不均衡問題有較好的表現。
1.2" 基于改進FixMatch的半監督番茄葉片病害識別算法設計
本研究提出的基于改進FixMatch的半監督番茄葉片病害識別模型是基于公認有效的半監督框架構建的,利用一致性正則化和偽標簽2種技術手段來有效利用未標注數據,使得未標注數據參與模型訓練,提升模型在有限標注數據下的學習效果。原始FixMatch算法的流程分為3步:(1)數據增強策略。半監督的理論依據是:對同一張圖像進行不同的數據增強后,模型識別出該圖像所屬的類別應該是一致的。算法使用雙路徑數據增強方案,弱增強(如隨機反轉、裁剪等基本變換)用于生成偽標簽,而強增強(如色彩區域變換、隨機空洞等進階變換)用于強化模型對輸入擾動的魯棒性。(2)偽標簽生成。模型在訓練過程中,對弱增強后的未標注數據進行預測,并設置1個截斷閾值來篩選具有高度置信度的偽標簽,只有當模型對某個樣本的預測概率超出預設截斷閾值時,才會將其作為可靠的偽標簽保留下來參與模型損失計算。(3)一致性正則化。對于未標注樣本,模型的目標是在同一個樣本強增強后預測出的結果和弱增強后生成的偽標簽一致的結果,從而實現一致性約束。
原始FixMatch算法對于選擇哪些數據進行標注以及類間不均衡問題未進行深入研究,針對這些問題,本研究提出了改進后的FixMatch算法。算法框架如圖1所示。在原始FixMatch框架的基礎上,新增了基于k-means聚類算法的代表數據預選模塊、基于自適應閾值截斷的偽標簽判斷模塊和多分類Focal Loss。首先,算法使用k-means的聚類結果來預選更具代表性的數據進行標注,有利于模型迅速、準確地迭代訓練。隨后,使用隨機數據增強策略,對未標注數據分別進行弱增強和強增強。針對模型對這2種增強方式的預測結果,使用基于自適應閾值截斷的偽標簽判斷模塊來確定哪些未標注數據被納入訓練過程,而不是FixMatch算法的固定截斷閾值。最后,使用多分類Focal Loss計算標注數據的監督損失和未標注數據的一致性損失,聯合進行模型迭代訓練。
1.2.1" 基于k-means聚類算法的代表數據預選模
塊" 對于現實采集的數據集,相比于有監督數據而言,半監督數據無法知曉數據集的全部信息,僅知道類別的數量卻不知道各個類別的數量等信息。而現有的方案均是假設已知各類別數據數量的前提下進行標注數據預選,這是不符合真實情形的。除此之外,在試驗過程中本研究還發現,選取不同組合的標注數據,對模型訓練結果影響較大,其影響原因是選取的標注數據是否能更好的代表此類數據的平均特征。經過試驗發現,選取更具代表性的數據作為半監督模型中的標注數據,比隨機選擇數據的方式模型效果更好。針對這種情況,本研究提出了基于k-means聚類算法的代表數據預選模塊。首先,設置數據集X的類別種數N及半監督抽樣比例μ,μ為構建代表性待標注數據子集的抽樣比例。隨后,采用經過ImageNet預訓練的ResNet 101卷積神經網絡模型對原始圖像數據進行特征提取,生成對應的高維特征向量集合F,此步驟利用了深度學習模型強大的特征學習能力,將復雜的圖像信息轉化為易于處理的特征表示。接著運用k-means聚類算法對提取出的特征向量F進行迭代優化,以N個聚類中心為基礎,不斷更新類別劃分直至收斂。最后進行代表性樣本選擇,選取原則是距離該類聚類中心越近的數據,在此類數據中的代表性越高。具體過程為:針對每個類別,計算其余圖像特征與當前類別中心的距離,并根據距離排序;選取距離當前類別中心最近的(X×μ)/N個數據為該類別的代表性樣本。最終,可以獲得一個包含 X×μ 個樣本的待標注數據集,其中每個類別均有 (X×μ)/N 個最具代表性的樣本,這些數據可用于進一步的人工標注,從而豐富有監督信息,更有效地提升后續分類任務的性能。圖2為基于k-means聚類算法的代表數據預選模塊選出的各類前3名代表性數據和最不具代表性的數據。可以看出,具有代表性的數據更能代表該類的平均特征,而最不具代表性的數據往往與該類其余數據特征差異較大。
1.2.2" 基于自適應閾值截斷的偽標簽判斷模塊" 在半監督訓練過程中,公認的難點在于如何判斷未標注數據經過模型推理得到的偽標簽是否可納入無監督訓練。先進的半監督算法一般采用對預測分布進行置信度截斷的方式來作為判斷標準,如FixMatch算法便是將預測分布中最大置信度大于0.9的數據納入到無監督訓練中。但這種方法存在2個局限性,首先是未考慮到模型前期預測能力弱的問題,在模型訓練前期,由于尚未學習到有效分類能力,亂預測的結果參與到訓練過程會導致模型整體學偏,產生惡性循環。其次是未考慮到類別不均衡問題,對于少樣本的類別而言,其參與到訓練的未標注數據自然也比多樣本類別要少,從而導致模型向多樣本類別偏向。針對以上2個局限性問題,本研究提出了基于自適應閾值截斷的偽標簽判斷模塊。該模塊的工作流程如下:(1)判斷當前訓練處于哪個階段,若當前參與進訓練的未標注數據比例在50%以下,則處于訓練前期,否則處于訓練后期。(2)若當前處于訓練前期,在判斷當前樣本是否應該被納入訓練中時,其截斷閾值還需加入該樣本的k-means聚類結果來輔助評估。若該樣本的模型推理結果和k-means聚類結果一致,則截斷閾值設置為0.80,若不一致,則截斷閾值設置為0.95。
(3)若當前處于訓練后期,僅通過模擬的推理結果來判斷,不再借用k-means的聚類結果來輔助評估。且在判斷過程中,根據上一輪各類別已納入訓練的非標注樣本數量比例,來自適應地調整每一類的截斷閾值。自適應截斷閾值的計算準則為:具有最多納入訓練樣本數量的類別的截斷閾值設為0.95,最少的類別設為0.80,其余類別分別按比例在二者之間取值。
1.2.3" 圖像多分類Focal Loss" 雖然在“1.2.2”節中針對類別不均衡問題進行了優化,但由于k-means聚類結果的不確定性和自適應閾值截斷方案的滯后性,少樣本類別在模型訓練過程中的重要程度依然偏弱。為了進一步優化類別不均衡問題,本研究引入了多分類Focal Loss[21]作為損失函數,在損失反向傳播過程中均衡各類別間的重要性。本研究中用到的多分類Focal Loss見公式(1)。
FL(pt)=-αt(1-pt)γlg(pt)。(1)
式中:FL(pt)為第t類數據計算得到的損失值;αt是第t類的加權因子,類別樣本數越少的加權因子越大;γ為常數,用于提高困難樣本的權重;pt為該樣本被預測為真值類的估計概率。
1.3 "評價指標
為了評估所提出算法在番茄葉片病害識別任務上的有效性,本研究使用平均識別準確率和各類識別準確率來進行模型效果評估。除此之外,為了評估模型篩選健康番茄和患病番茄的能力,本研究還采用了健康樣本識別精確率(health precision,HP,所有健康樣本被正確識別為健康的比例)和病害樣本識別精確率(disease precision,DP,所有病害樣本被正確識別為病害的比例)2個指標來進行算法效果評估。本研究中平均識別準確率是所有樣本被正確識別的比例。
2" 結果與分析
2.1" 試驗平臺和參數設置
試驗平臺設置:試驗所涉及到的全部模型均在CPU為18 vCPU AMD EPYC 9754 128-Core Processor、GPU為NVIDIA GeForce RTX 4090D、顯存為24 GB的臺式計算機上進行訓練和測試。該計算機的操作系統為Unbutu 20.04,CUDA庫版本為11.3,深度學習框架為Python 3.8、Pytorch 1.10.0。
訓練參數設置:整體訓練分為2個階段,訓練前期和后期,通過判斷當前參與訓練的未標注數據比例是否大于50%來區分。在訓練前期,對模型推理結果與k-means聚類結果一致的樣本,其置信度截斷值設置為0.80,不一致的樣本設置為0.95。在訓練后期,根據該類別被納入訓練樣本的數量,置信度最大截斷值固定設置為0.95,而最小截斷值設定為0.80。模型共訓練100輪,樣本批量大小(batchsize)設置為4,每次迭代均使用batchsize個標注樣本和batchsize×7個未標注樣本。初始學習率設置為0.03,學習率衰減策略為余弦退火衰減,優化器為SGD、nesterov動量系數為0.9。損失函數中,Focal Loss的值設置為2.0。半監督訓練數據抽取比例μ為10%(2 000張)。
試驗使用的模型為WideResNet(wide residual networks),是ResNet的變種網絡模型。在本研究中,使用了深度為28層、寬度為2的WideResNet模型。本研究中使用到的所有數據增廣方式均與FixMatch算法一致。
2.2" 消融試驗
2.2.1" 基于k-means聚類算法的代表數據預選模塊消融試驗" 為了判斷基于k-means聚類算法的代表數據預選模塊的有效性,本研究設置了3組試驗,第1組為從全部數據中隨機挑選X×μ個數據作為標注數據,第2組為從k-means聚類結果中在各類別數據中隨機挑選X×μ/N個樣本組成訓練數據,第3組為本研究實際應用的方案,即從k-means聚類結果中抽取距離各聚類中心最近的X×μ/N個數據作為標注數據。基于這3種方案選取的數據,本研究分別使用相同的試驗設置進行模型訓練和測試,測試結果如表2所示。
表2" 代表數據預選模塊消融試驗結果
方案精度最差類別準確率(%)病害樣本識別精確率(%)健康樣本識別精確率(%)平均識別準確率(%)
第1組:隨機挑選30.6096.7695.8473.39
第2組:類間隨機挑選87.5099.2098.5496.82
第3組:本研究方案90.6299.8299.8997.31
從表2可以看出,本研究實際使用方案的平均識別準確率最高,超出第2組方案0.49百分點,超出第1組方案23.92百分點。在精度最差類別上以及健康/病害樣本識別任務上,本研究方案的識別精度同樣大幅領先。這充分說明了本研究提出的基于k-means聚類算法的代表數據預選模塊在半監督圖像分類任務中發揮了正向作用。試驗中發現,使用第1組隨機挑選方案的試驗出現多次無法收斂的情況,這是由于抽取到的數據過于偏向于某一類或極其不具備代表性導致的。
2.2.2" 基于自適應閾值截斷的偽標簽判斷模塊消融試驗" 為了優化半監督圖像分類任務中模型訓練前期亂預測和類別不均衡的問題,本研究提出了基于自適應閾值截斷的偽標簽判斷模塊,為驗證此模塊的有效性,本研究設計了2組試驗,第1組是將原始FixMatch的偽標簽判斷模塊替換到本研究提出的方案中,第2組是本研究提出的方案,其他試驗設置均相同,測試結果如表3所示。從表3可以看出,使用自適應閾值截斷偽標簽判斷模塊的第2組模型在番茄葉片病害識別任務上比第1組表現更優異,平均識別準確率超出0.81百分點。除此之外,第2組模型在少樣本類別(白粉病)上的識別準確率比第1組模型更是超出2.27百分點,在困難類別(早疫病)上超出5.00百分點。這充分說明了本研究所提出的偽標簽判斷模塊的有效性。
2.2.3" 圖像多分類Focal Loss" 在其他試驗設置均使用最優方案的基礎上,本研究還設置了2組對比試驗用于驗證引入的圖像多分類Focal Loss的有效性,分別使用原始交叉熵損失和使用多分類Focal Loss作為模型損失函數。從表4可以看出,使用Focal
Loss使得困難類別早疫病識別準確率提升1.67百分點,少樣本類別葉霉病識別準確率提升0.55百分點,平均識別準確率超出0.52百分點,由此可見,在數據均衡度較嚴重的數據上,Focal Loss一定程度上可以提升半監督圖像分類模型識別番茄葉片病害的準確率。
2.3" 算法性能分析
為了驗證改進后的FixMatch算法相比于原始FixMatch算法的優越性,將二者在番茄葉片病害識別任務上進行對比測試,除本研究所提出的3個創新點外,其余的試驗設置均一致,以保證試驗結果對比的公平性。除此之外,使用同一個網絡模型和訓練設置,使用挑選出來的數據進行有監督訓練,和半監督結果進行對比測試。
本研究提出的改進后FixMatch和原始FixMatch算法在番茄葉片病害識別任務上的最終結果對比結果(表5)顯示,在抽樣比例為10%的情況下,改進后的FixMatch算法在番茄葉片病害識別任務上均表現的更好,平均識別準確率達到了98.16%,相比于原始FixMatch算法提升了1.34百分點,相比于部分標注數據進行有監督訓練的方案提升了3.92百分點。除此之外,改進后FixMatch算法在健康樣本識別和病害樣本識別任務上的識別精確率也超出原始FixMatch算法。圖3為原始FixMatch方法和本研究方法在測試集上的準確率迭代曲線圖,可以看出,本研究方法相比于原始FixMatch方法而言迭代流程更穩定,收斂的更快。
3" 討論與結論
本研究提出的改進后的FixMatch算法經過試驗驗證,在番茄葉片病害識別半監督任務上表現優異。改進后的FixMatch算法在原始FixMatch算法的基礎上做了3個方面的改進:(1)提出了基于k-means聚類算法的代表數據預選模塊。通過預先使用k-means聚類算法,挑選出各類的代表性數據進行標注,保證半監督模型向著收斂更快、更精確的方向迭代訓練。(2)提出了基于自適應閾值截斷的偽標簽判斷模塊,優化了原始FixMatch算法未考慮到模型前期預測能力弱以及類別不均衡的問題。(3)通過將k-means算法的聚類結果作為訓練前期的參考值來彌補模型前期預測置信度較低的情況,并且使用自適應閾值截斷的方案來使得各類別參與無監督訓練的樣本數量盡可能維持均衡,以使得模型更好的迭代訓練。與原始FixMatch算法相比,本研究提出的改進后的FixMatch算法在番茄葉片病害識別任務上僅用10%的標注數據便取得了98.16%的平均識別準確率,相比原始FixMatch算法有較大提升,且訓練過程收斂更快、迭代更平穩,這表明本文提出的改進后FixMatch算法可以很好地解決現實場景中的番茄葉片病害識別任務。
本研究所提出的改進后FixMatch半監督算法目前僅在公開數據集上進行真實采集情況模擬,后續將進行番茄葉片病害數據集的真實采集,并且將此算法推廣到其他半監督植物病害識別任務上去。
參考文獻:
[1]高艷娜,牛華琳,李" 營,等. 基于主成分分析和聚類分析對不同番茄品種的綜合評價[J]. 江蘇農業科學,2023,51(12):106-113.
[2]張領先,景嘉平,李淑菲,等. 基于圖像自動標注與改進YOLO v5的番茄病害識別系統[J]. 農業機械學報,2023,54(11):198-207.
[3]儲 "鑫,李" 祥,羅" 斌,等. 基于改進YOLO v4算法的番茄葉部病害識別方法[J]. 江蘇農業學報,2023,39(5):1199-1208.
[4]柴" 帥,李壯舉. 基于遷移學習的番茄病蟲害檢測[J]. 計算機工程與設計,2019,40(6):1701-1705.
[5]李大華,仲" 婷,王" 筍,等. 基于改進ShuffleNet v2的輕量化番茄葉片病害識別[J]. 江蘇農業科學,2024,52(3):220-228.
[6]王哲豪,范麗麗,何" 前. 基于MobileNet v2和遷移學習的番茄病害識別[J]. 江蘇農業科學,2023,51(9):215-221.
[7]程湞湞,祁力鈞,程一帆,等. 基于M-LP特征加權聚類的果樹冠層圖像分割方法[J]. 農業機械學報,2020,51(4):191-198,260.
[8]馮世杰,王艷平. 基于機器視覺的溫室作物行間雜草的識別[J]. 信陽農林學院學報,2012,22(2):115-117.
[9]倪智濤,胡偉健,李寶山,等. 一種基于圖像分類與目標檢測協同的番茄細粒度病害識別方法[J]. 江蘇農業科學,2023,51(22):221-228.
[10]張俊寧,畢澤洋,閆" 英,等. 基于注意力機制與改進YOLO的溫室番茄快速識別[J]. 農業機械學報,2023,54(5):236-243.
[11]郭小燕,于帥卿,沈航馳,等. 基于全局特征提取的農作物病害識別模型[J]. 農業機械學報,2022,53(12):301-307.
[12]馬" 麗,周巧黎,趙麗亞,等. 基于深度學習的番茄葉片病害分類識別研究[J]. 中國農機化學報,2023,44(7):187-193.
[13]陳林琳,姜大慶,蔡銀杰,等. 基于計算機視覺的芋頭病害監測與識別[J]. 農機化研究,2020,42(6):224-229.
[14]姜晟久,鐘國韻. 基于可分離擴張卷積和通道剪枝的番茄病害分類方法[J]. 江蘇農業科學,2024,52(2):182-189.
[15]胡文藝,王洪坤,杜育佳. 基于SE模塊和ResNet的番茄病蟲害識別方法[J]. 農業工程,2022,12(9):33-40.
[16]楊英茹,吳華瑞,張" 燕,等. 基于復雜環境的番茄葉部圖像病蟲害識別[J]. 中國農機化學報,2021,42(9):177-186.
[17]孔江波,朱" 賀,張延文,等. 基于實例置信度推斷的半監督小樣本植物病害圖像識別[J]. 江蘇農業科學,2022,50(12):229-237.
[18]賈俊杰,李" 捷. 基于半監督生成對抗網絡的病蟲害圖像識別算法[J]. 武漢輕工大學學報,2019,38(4):45-52.
[19]江侯濤,馬善農. 基于半監督的植物病害智能檢測研究[J]. 機電工程技術,2024,53(2):221-224,290.
[20]Sohn K,Berthelot D,Li C L,et al. FixMatch:simplifying semi-supervised learning with consistency and confidence[C]//Advantes in Neural lnformation Processing Systems,2020,33:596-608.
[21]Lin T Y,Goyal P,Girshick R,et al. Focal loss for dense object detection[C]. 2017 IEEE International Conference on Computer Vision (ICCV),2017:2980-2988.