李大華,孔 舒,李 棟,于 曉
(1.天津理工大學 電氣工程與自動化學院,天津 300384;2.天津市新能源電力變換傳輸與智能控制重點實驗室,天津 300384;3.天津市復雜系統控制理論及應用重點實驗室,天津 300384)
我國是重要的果蔬生產大國,果蔬在生長、采摘、運輸和倉儲過程中,不可避免地會產生缺陷和損壞,因此,果品分級是果蔬加工銷售過程的重要環節[1]。但目前企業主要還是采用人工來識別果蔬品質的好壞,其耗時長、工作量大、依賴程度高,果品分級效果不佳[2]。因此,實現工業化果蔬品質分級是提高經濟收益、占據更大市場份額的重要途徑[3]。
隨著計算機視覺和深度學習技術的進步,許多國內外學者對水果缺陷、分級檢測進行了大量研究,使分級檢測變得更加簡單[4-7]。JI 等[8]將基于粒子群優化的支持向量機(SVM)應用于蘋果分級,結果表明mAP 值達到91%。王迎超等[9]將K-means 聚類和改進的多層感知器(MLP)神經網絡運用于蘋果分級,識別準確率達到94.25%。SUSTIKA 等[10]使用不同深度的卷積神經網絡對草莓進行分級檢測,結果顯示,VGGNet 達到了最好的精度,而GoogLeNet 計算結構達到最高效。李善軍等[11]采用改進SSD 算法對采集擴充后的柑橘數據集進行實時分類檢測,最終該模型的mAP 達到87.89%,檢測時間相較于原SSD 降低436.90%。劉敬宇等[12]提出一種改進的YOLOX 模型,通過使用融合因子和引入基于卷積塊的注意力機制(CBAM)來提高檢測精度,櫻桃表面缺陷的平均檢測精度為97.59%,大小和顏色分級的平均檢測精度為95.92%。王川等[13]通過增加特征層、引入注意力機制以及改用Soft-NMS 算法對YOLOX 模型進行改進,改進模型在芝麻蒴果檢測中準確率達到96.84%。
現有研究中深度學習算法往往要消耗大量的計算資源,雖然近幾年已有較多研究學者提出了輕量化算法,但對于實際應用的場景,仍然需要在保證準確率的情況下降低檢測模型和算法對計算資源的依賴程度。為此,提出了一種基于YOLOv7 的輕量級網絡,使用GhostNetV2 作為backbone 進行特征提取,降低模型復雜度。并通過使用無參注意力機制SimAM,避免模型輕量化導致過多的精度損失。利用快速歸一化的雙向特征金字塔進行特征融合,加強深層語義信息和淺層位置信息之間的聯系,進一步提升蘋果表面缺陷的識別精度。最后改用ECIOU 損失函數,實現對蘋果缺陷檢測速度和準確率的進一步提升。
供試蘋果采集于山東省菏澤市某蘋果種植園。使用華為nova5pro 的后置攝像頭,于自然光照條件下進行拍攝,圖像分辨率為4 000 像素×3 000 像素。共采集600 張圖片,包含腐爛、病害、蟲蛀、機械傷、褶皺、裂紋6類蘋果缺陷,每張圖片中有一至多個缺陷類型,如圖1所示。

圖1 蘋果表面缺陷類型Fig.1 Type of apple surface defect
為避免因樣本數量較少產生過擬合現象,保證數據集可用性,通過對蘋果表面缺陷圖像進行增強,來擴充數據集的大小。為提升數據集圖像多樣性,采用旋轉、翻轉、裁剪、灰度變換、噪聲、色調變換、部分剪切等圖像增強方法,以2種方法組合的形式對圖像進行增強。圖像增強操作方法如圖2所示。

圖2 圖像增強操作方法Fig.2 Image enhancement operation method
擴充后數據集共包含4 200 張蘋果表面缺陷圖片,采用LabelImg 軟件對圖像進行標注,所得到的XML 文件中包括圖片的缺陷位置和類別。訓練集、驗證集和測試集按照6∶2∶2的比例進行劃分。在該數據集上分別進行消融試驗和對比試驗,訓練并驗證改進模塊和改進算法的有效性。
YOLOv7 作為目前較先進的目標檢測網絡,相較于其他網絡而言已經較為輕量且準確率很高,但對于一些嵌入式設備仍然較大,對自建數據集的準確率也有提升空間。為了進一步改善YOLOv7算法的語義可分辨能力和輕量化程度,進一步提高對邊緣模糊的蘋果缺陷的檢測效果,提出了基于改進YOLOv7 的蘋果表面缺陷輕量化檢測算法。首先,采用輕量化GhostNetV2網絡替換原YOLOv7算法的特征提取網絡CSPDarkNet53,其中將第4、10、15 層作為主干網絡的輸出特征層與Neck部分相連,構建出新檢測模型GhostNetV2-YOLOv7,從而減小模型規模,提高檢測速度。其次,為了避免由于使用了輕量級的特征提取網絡而導致的精確率下降,在backbone 輸出的3 個特征層后加入無參輕量型注意力機制SimAM,來強化特征層對特征信息的表達,提高模型的特征提取能力。頸部網絡部分采用BiFPN 結構代替原有的FPN+PANet 結構,進一步提高特征聚合的效果,減少計算量,提高對蘋果表面缺陷的檢測能力。最后改用ECIOU 作為損失函數,實現檢測速度和準確率協同優化。改進的YOLOv7網絡模型結構如圖3所示。

圖3 改進的YOLOv7網絡模型結構Fig.3 Improved YOLOv7 network model structure
1.3.1 使用GhostNetV2 作為特征提取網絡
GhostNetV2[14]是北京華為諾亞方舟實驗室于2022年提出的一種更輕量級的網絡模型。GhostNetV1的核心是使用Ghost 模塊代替標準卷積,以達到降低模型參數量的目的。而GhostNetV2 相較于GhostNetV1 的改進主要是在Ghost 模塊的基礎上添加了一種長距離注意力機制模塊(DFC),其不僅可以在常見硬件上快速執行,也可以捕獲長距離像素之間的依賴關系,有效解決了原始GhostNet 無法有效提取全局感受野的問題。
GhostNetV2 中 的GhostV2 bottleneck 是 一 個 反向殘差瓶頸結構,主要包含DFC模塊和2個Ghost模塊,結構如圖4 所示。其中第1 個Ghost 模塊與DFC模塊分支并行,對輸入信息進行特征提取,以增強擴展特征。之后通過逐元素相乘來豐富其語義信息。當Stride=2 時,還需通過一個DW 卷積模塊,隨后特征傳入到第2個Ghost模塊中進行通道壓縮,以產生輸出特征。該結構使GhostV2獲得了長距離編碼能力,極大地增強了網絡的特征提取能力。因此,本研究使用GhostNetV2 作為YOLOv7 的主干網絡。首先使用16 個GhostV2 bottleneck 模塊進行特征提取,其次提取主干GhostV2 bottleneck 模塊中的4、10、15層特征信息與YOLOv7的Neck部分相連,然后使用SPPCSPC 實現局部特征和全局特征的 融 合。 選 用GhostNetV2 作 為YOLOv7 的backbone,做到了在損失小部分準確度的情況下減少了較多計算量,提高了檢測速度,更易嵌入到硬件移動設備中。

圖4 GhostNetV2 bottleneck結構Fig.4 GhostNetV2 bottleneck structure
1.3.2 引入SimAM 注意力機制 因為模型輕量化
過程導致了一部分的精度損失,而注意力機制通過對網絡輸入部分賦予不同的權值,忽略無關信息,使網絡模型更加關注蘋果表面缺陷分類和定位任務所需要的重要信息。因此,本研究在主干網絡輸出的3 個特征層之后加入SimAM 注意力模塊來提高模型的特征提取能力,避免模型輕量化導致過多的精度損失。SimAM[15]注意力機制不同于現有的基于通道1D 和空間2D 的注意力模塊,SimAM 是一種輕量型3D 注意力模塊,其核心在于使用能量函數來計算注意力權重,無需向原始網絡添加參數。SimAM 注意力模塊結構如圖5 所示,其中X 是特征圖,C 指通道數,H 指特征圖的高,W 指特征圖的寬。SimAM 通過在蘋果缺陷的相鄰神經元上產生空間抑制來減少復雜背景對蘋果表面缺陷檢測的干擾,突出了蘋果表面缺陷的關鍵特征。

圖5 SimAM注意力機制結構Fig.5 Structure of SimAM attention mechanism
1.3.3 引入雙向加權特征金字塔網絡 YOLOv7 的頸部網絡是用于特征聚合的部分。在原有的FPN+PANet 結構中,FPN 用于自上而下地傳遞深層語義信息,PANet 則增加了一條自下而上的層間傳輸路徑,改善了深層語義信息和淺層位置信息之間的聯系。這種結構能夠處理不同尺寸的特征圖,減少信息的丟失,提高目標檢測的精確率,但網絡訓練的參數量有所增加。
BiFPN 網絡[16]是一種基于PANet 的改進網絡,它忽略只有一個輸入的節點,在保證重要信息提取的前提下簡化網絡結構。BiFPN 實現跨層連接,能更充分地提取位置信息,提高對小目標蘋果缺陷及邊緣模糊缺陷目標的檢測能力,網絡結構如圖6所示。

圖6 BiFPN網絡結構Fig.6 BiFPN network structure
但是由于不同的輸入特征具有不同的分辨率,也就意味著不同特征層有著不同的貢獻。因此,為了進一步提高特征聚合的效果,根據不同特征層的重要性,對每個特征層分配一個額外的權重,采用快速歸一化融合(Fast normalized fusion)進行特征層加權特征融合[17]。融合過程如下:
本研究采用BiFPN 結構代替原有的FPN+PANet結構,能一定程度上減少參數量,提高網絡模型的檢測效率,同時提高對小目標蘋果缺陷的檢測能力。
1.3.4 采用改進損失函數ECIOU YOLOv7 模型使用CIOU[18]作為回歸損失函數,其定義如下:

由公式(6)可以看出,回歸期間預測框的寬高不能同時增加或者減少,因此,一旦預測框和邊界框是等比縮放的時候,CIOU 有時會阻止模型有效地優化。而損失函數EIOU[19]在CIOU 的基礎上拆分了α,計算預測框和真實框的長度和寬度,解決CIOU存在的問題。公式如下:

而當對存在距離很遠邊緣的目標進行檢測時,只使用EIOU 會使得計算變慢,且沒有早期收斂。因此,本研究提出使用ECIOU 作為損失函數,前期先使用CIOU 損失函數進行計算,當它收斂到合適的范圍時,再利用EIOU 損失函數對缺陷邊緣進行細微調整[20],直至收斂到正確的值。ECIOU 損失函數定義如下:
本試驗在Windows10 操作系統、硬件配置Intel(R)Core(TM)i5-11260H@2.60GHz、機帶RAM 16 GB、Nvidia Geforce RTX 3050Ti、顯存4 GB 的筆記本電腦上進行,所使用的Pytorch 版本為1.12.1,CUDA版本為11.3。
算法使用隨機梯度下降(SGD)作為優化器進行訓練,默認權重衰減系數為0.000 5,其參數動量為0.9,初始學習率為0.01,訓練時采用余弦退火方法動態調整學習率。其中batch size 設置為8,模型一共迭代300 輪。
采用精確率(Precision)、召回率(Recall)、檢測幀速、平均精度均值(mAP@0.5)、mAP@0.5:0.95 作為主要性能指標,同時以模型運算量、參數量以及模型大小作為輕量化指標,來評估模型對蘋果表面缺陷的綜合檢測性能。計算公式如下:
其中,TP表示正確識別的蘋果表面缺陷樣本數;FP表示錯誤識別的缺陷樣本數;FN表示未識別到的缺陷樣本;APi指一個類別的平均精度;n表示類別數目。mAP@0.5是指將IoU設為0.5時,求得的6 種蘋果缺陷的平均精確度,mAP@0.5:0.95 是指在不同的IoU 閾值(0.5—0.95,步長為0.05)上的平均mAP。
為了證明提出的使用GhostNetV2 替換CSPDarkNet53、引入注意力機制模塊SimAM、利用BiFPN 進行快速歸一化融合、改用ECIOU 損失函數的改進方法的有效性,進行消融試驗,評估不同改進措施在相同試驗條件下對算法性能的影響。消融試驗采用YOLOv7 作為基線模型,在增強后的蘋果表面缺陷數據集中進行試驗,輸入圖像大小為640像素×640像素,訓練300輪后,結果如表1所示。

表1 消融試驗結果Tab.1 Ablation experimental results
Model_1 是使用YOLOv7 作為基線模型的試驗結果。由Model_2 結果可以看出,在使用輕量化網絡GhostNetV2 替換YOLOv7 的特征提取網絡后,模型比原來小20.8 MB,檢測速度提高33.10幀/s,但是精確率和召回率都有明顯降低,說明GhostNetV2 作為輕量化網絡,其特征提取能力相對較弱。Model_3 是在此基礎上加入了注意力機制SimAM,強化了特征層對特征信息的表達,一定程度上彌補了輕量化帶來的不足,提高了網絡對小目標特征的融合能力,使精確率提高了2.2 百分點,召回率提高了0.9百分點,SimAM 作為無參模塊沒有增加模型大小,但小幅度降低了運算速度。Model_4 為結合快速歸一化融合的BiFPN 結構,可知BiFPN 并不增加模型的復雜度,還將精確率提高了0.4 百分點,召回率提高了4.7 百分點,表明了改進的特征融合方法相比PANet 而言更具有優勢。Model_5 為改用ECIOU 作為回歸損失函數,提高了模型的收斂速度,使召回率提升了1.1 百分點,檢測速度又提升了2.69 幀/s。改進模型整體性能優于基線模型YOLOv7,證明改進算法是有效的。
如圖7、圖8 所示,與原YOLOv7 模型相比,改進模型在訓練和驗證過程中收斂速度更快、振蕩幅度更小、召回率更高。通過圖9、圖10 模型效果熱力圖可以明顯看出,改進YOLOv7算法的精確率更高。經過300 輪訓練后,與YOLOv7 相比,改進模型的平均精確度mAP@0.5 和mAP@0.5:0.95 分別提高了2.0、12.0 百分點,召回率提升了3.9 百分點,模型減小20.8 MB,速度提升36.43幀/s,改進模型具有更好的性能,能夠更好地對蘋果缺陷進行有效的檢測。

圖7 YOLOv7模型訓練結果Fig.7 YOLOv7 model training results

圖8 改進YOLOv7模型訓練結果Fig.8 Improved YOLOv7 model training results

圖9 YOLOv7識別效果熱度圖Fig.9 YOLOv7 recognition effect heat map

圖10 改進YOLOv7識別效果熱度圖Fig.10 Improved YOLOv7 recognition effect heat map
為了驗證本研究設計的蘋果表面缺陷檢測網絡的先進性,在蘋果缺陷數據集上,將改進YOLOv7與SSD 等主流目標檢測算法以及Efficientnet-YOLOv3 等輕量級改進模型在mAP、模型大小和檢測幀速上進行比較,結果見表2、3。

表2 與主流目標檢測算法結果對比Tab.2 Comparison with the results of mainstream target detection algorithms
從表2 可以看出,和主流目標檢測網絡相比,改進YOLOv7 模型的內存占比最小,僅為50.5 MB,其檢測速度最快,達到83.33 幀/s,在精度上也明顯優于其他檢測方法。主要是因為本研究采用了輕量級網絡提取特征,以達到輕量化的目的。
從 表3 可 以 看 出,Efficientnet-YOLOv3 和Ghostnet-YOLOv4 模型進行輕量化操作導致檢測精度損失嚴重,雖然YOLOv4-tiny 和YOLOv7-tiny 的內存大小比改進YOLOv7 模型的小,但改進YOLOv7 的mAP@0.5 比 兩 者 分 別 高15.8、3.5 百 分點。與輕量級網絡比較,改進YOLOv7 能夠達到檢測精度和檢測速度的平衡,保證實際應用中準確性和實時性的要求,且模型更易嵌入到移動設備中。改進YOLOv7 檢測精度mAP@0.5 和mAP@0.5:0.95分別達到99.0%和85.3%,均優于其他輕量級模型,是由于引入了SimAM 注意力模塊和快速歸一化融合BiFPN 結構,融合更有效的缺陷特征,確保了更高的檢測精度。

表3 與輕量級檢測算法結果對比Tab.3 Comparison with the results of lightweight detection algorithms
由圖11 可以看出,YOLOv7 存在對病害缺陷這類小目標病斑的漏檢情況,對褶皺缺陷和腐爛缺陷的定位不準確。相較于YOLOv7,改進的YOLOv7模型對于小目標蘋果缺陷檢測效果更好,對腐爛等這類邊緣模糊的缺陷的定位更準確,檢測精度更高。說明引入SimAM 注意力模塊、BiFPN 結構和ECIOU 不僅彌補了模型輕量化造成的精度下降,還較原YOLOv7提高了檢測準確率。

圖11 蘋果表面缺陷檢測效果示意圖Fig.11 Detection effect diagram of apple surface defects
針對如何提高蘋果表面缺陷檢測的速度與精度以及減小模型大小等問題,提出一種基于改進YOLOv7 的蘋果表面缺陷輕量化檢測方法。設計以GhostNetV2 作為YOLOv7 的特征提取網絡,進而實現網絡的輕量化。此外,通過引入SimAM 注意力機制以及采用快速歸一化融合的BiFPN 結構,進一步提升蘋果表面缺陷的識別能力,采用改進的損失函數ECIOU 進一步提升了收斂速度。結果表明,改進模型在提高檢測準確度的同時提高了檢測速度,減小了內存占比,達到了輕量化的目的,能對蘋果缺陷進行有效檢測。改進YOLOv7 模型的mAP@0.5、模型大小和檢測速度分別為99.0%、50.5 MB、83.33幀/s,其 綜 合 性 能 優 于 YOLOv7、CenterNet、Efficientnet-YOLOv3 等算法,可實現對蘋果表面缺陷的快速準確診斷,滿足農業實際使用要求。研究過程中發現,YOLOv7-tiny 有比YOLOv7 更高的檢測幀數,內存占比也更小。之后的工作可以側重在以YOLOv7-tiny作為基線模型進行研究。