蔣 平
(榆林學院信息工程學院,陜西 榆林 719000)
隨著產品市場化程度越來越高以及人們消費水平的提高,給紅棗產業帶來了巨大發展機遇,同時也為紅棗產業的發展帶來了新的挑戰。機遇在于果品企業將紅棗產品進行分級、包裝后可大大提高紅棗的附加值,為企業創造更多的利潤。而挑戰也在于此,傳統的分級是通過人工進行,人工分選的問題在于主觀性強、錯誤率高、勞動強度大、分選效率低,同時大大增加了人工成本,這嚴重阻礙了紅棗產業的發展,因此研究開發一種紅棗分級設備,由機器代替人工成為當前亟待解決的問題。
文章針對場景如圖1 所示,利用輥輪傳輸帶輸送紅棗從照相機下方通過,紅棗可以滾動,所以能夠拍攝到紅棗的全部表面。紅棗和輥輪都在一起運動前進,換而言之,連續視頻中運動的不僅有紅棗,還有輥輪,因而基于背景差分類的快速目標分割方式不適合該場景。

圖1 紅棗傳輸示意圖
文章采用卷積神經網絡分割圖像方式分割紅棗區域,然后對紅棗單體目標再進行識別。設計的方法 采 用ERFNet (Efficient Residual Factorized Network) 分 割 紅 棗, 然 后 再 用GCN(Gabor Convolutional Network)對紅棗進行分類。
文章主要貢獻有兩點:
(1)設計了一種快速紅棗分割以及紅棗權限識別的方法,紅棗分割耗時約0.02 s,單個紅棗識別耗時約0.03 s;
(2)構建了一個紅棗數據集,含有3 737 張用于分割訓練紅棗圖像;3 022 張用于訓練識別的單體紅棗圖片。
文章方法采用的ERFNet 框架如圖2 所示,整個網絡分成兩個部分,第一部分是編碼,第二個部分是解碼。

圖2 文章采用的ERFNet 主干網絡
輸入圖像大小為320×240×3 彩色圖像,經過三次降采樣,然后再經過三次上采樣,最終輸出320×240×2 特征圖,一個320×240 的特征圖對應背景,另一個對應目標紅棗區域。
GCN 結合了普通卷積神經網絡和Gabor 濾波兩者的優勢,對紋理檢測非常有效,通常只需普通卷積神經網絡的1/3 資源就能達到同等的性能。
文 章 采 用 的GCN 結 構 如 圖3 所 示, 輸 入100×100 的RGB 圖像,先經過一個標準卷積層,轉換為4×100×100 特征圖,然后連續經過4 個Gabor 卷積層,再經過一個最大化操作和全卷積,最終輸出2 000×1 的特征向量。該模型非常輕量,準確率與ResNet-18 相當,但計算速度快4~5 倍。

圖3 文章采用的GCN 網絡框架圖
文章提出的紅棗表面缺陷快速檢測方法首先采用ERFNet 檢測紅棗區域,然后利用GCN 對單體紅棗目標提取特征并識別。
提出方法主要流程如圖4 所示,算法步驟如下:

圖4 紅棗表面缺陷快速識別流程圖
(1) 單 幀640×480×3 圖 像Img 轉 換 成320×240×3 后輸入ERFNet(如圖2 所示),輸出2 個320×240 特征圖,并變換成640×480 特征圖,最后兩個特征圖中對應像素點值大設1,反之設0,得到紅棗區域對應的掩模mask。
(2)在mask 中采用OpenCV 中的findContours提取輪廓,若輪廓面積大于2 000 則認為是紅棗區域,再采用minAreaRect 方法獲得矩形坐標,在原圖Img 中剪裁出相應的區域,并轉換成100×100 大小,形成單體紅棗圖像img_crop。
(3)img_crop 輸入GCN(如圖3 所示),輸出結果中最大值對應的類別就是識別結果。
紅棗外部缺陷檢測,實質上就是一個圖像分割任務,再加分類任務。
3.1.1 數據集
采集了3 737 張紅棗圖像,利用Labelme 標注工具標注紅棗輪廓,共有3 737 張圖像用于訓練ERFNet 模型。
利用訓練好的方法分割模型,切割出4 908 張單棗圖片,每張圖片由10 名觀察者給出選項(正常棗、爛棗、霉棗、不確定),定義為得票超過5 的類別,最終獲得1 880 正常棗、678 爛棗、464 霉棗圖像。
3.1.2 模型訓練
文中涉及到EFRNet 和GCN 兩個模型參數的訓練。訓練分割模型EFRNet 時,共有3 737 張圖像,其中90%用于訓練,10%用于驗證。損失是Dice 損失和標準交叉熵損失(Softmax 損失)之和,采用RMSProp(Root Mean Square Propagation) 優化方法,迭代100 Epoch,每批處理64 張圖片;初始學習率設置為0.005,分別在第30、80 Epoch 時下降90%。
訓練GCN 模型時,共有4 908 張圖片,其中正常棗、爛棗、霉棗各選取100 張,共300 張用于測試,訓練圖像4 608 張。采用標準交叉熵損失和標準隨機梯度下降優化方法,初始學習率0.001,訓練100 Epoch,40 Epoch 后每隔10 Epoch,學習率下降20%;每批處理64 張圖片。
訓練機配置為:Intel 至強銀牌CPU,內存32G,RTX 3090 顯 卡, 操 作 系 統 為Windows Server 2020, 開 發 環 境 是Python 3.8 + Torch 1.12.0。
EFRNet 模型訓練時的損失如圖5(a),交叉熵損失和Dice 損失均保持在0.01 左右,總損失0.02。驗證集的精度(Dice 系數)如圖5(b)所示,最后保持在0.985 左右,非常接近于理想值1。

圖5 EFRNet 和GCN 模型訓練時損失和精度
GCN 模型訓練時的損失如圖5(c)所示,訓練集的損失幾乎是平穩下降,測試集的損失在前期波動非常大,后期也有較小的波動。識別準確度如圖5(d)所示,訓練集的準確率穩定上升,后期一直保持在100%,而測試集的準確度有較大波動,后期基本保持在97.5%左右,最高達到98.7%。
提出方法的仿真系統如圖6 所示,PyQT 編寫界面,在CPU 處理下,紅棗分割耗時0.02 s,單個紅棗識別耗時0.03 s。

圖6 紅棗檢測仿真系統
文章設計了一種快速檢測紅棗表面缺陷的方法,采用了先分割紅棗區域,后識別的方法,速度達到20幀/秒,基本達到實時要求。