李 舒 唐夢笛 同思遠 孫 柯
(安徽師范大學生命科學學院,安徽 蕪湖 241000)
雞蛋在收售加工過程中容易形成裂紋。裂紋雞蛋容易受微生物侵染而腐敗,內容物流出還會污染其他雞蛋。目前,裂紋雞蛋的檢測主要采用人工視覺輔助的半自動式透光檢測方法或人工通過分辨雞蛋的敲擊聲音判斷,效率低。對雞蛋裂紋自動檢測方法的研究主要集中在聲學震動和計算機視覺兩個方面。基于聲學振動法的雞蛋裂紋檢測需要振動或敲擊,識別速度無法進一步提高,且當敲擊點遠離裂紋位置時容易造成誤判[1-2]。與聲學振動方法相比,計算機視覺方法所用設備簡單,成本較低,易于實現,裂紋雞蛋在強光穿透照射下裂紋較為明顯,可通過采集雞蛋透光圖像,然后使用圖像處理及模式識別方法實現。
早期學者多利用基于閾值分割的傳統圖像處理方法識別裂紋雞蛋圖像[3-5],但由于雞蛋蛋殼透光性及蛋黃吸光性的影響,雞蛋透光圖像灰度值不均勻,細長的裂紋區域灰度值變化較大,難以找到適合分割的閾值,較小的裂紋容易被忽略。基于此,Priyadumkol等[6]、Yoon等[7]設計并實現了一種基于改進壓力室和連續旋轉雞蛋的雞蛋裂紋檢測機器視覺系統,通過壓力變化擴大雞蛋裂紋后檢測,但會導致檢測速率下降而且設備復雜。此后,Sun等[8]根據雞蛋圖像中裂紋區域局部灰度值的變化規律,提出了有序波信號提取和識別算法,適合對圖像中具有亮度差異的細條狀區域進行提取,對寬度為0.06~1.13 mm的裂紋雞蛋的識別準確率為98.9%,完好雞蛋的識別準確率為96%。
使用復雜的圖像算法能夠提取雞蛋圖像中的裂紋信號,但往往也會受到雞蛋表面亮斑的干擾,將一部分完好的雞蛋判定為裂紋雞蛋。隨著深度學習技術的發展和完善,卷積神經網絡在圖像識別中展現出強大的學習能力。陳羽立等[9]利用 EfficientNet 搭建遷移學習網絡,訓練含裂紋蛋與完好蛋的分類模型,最終測試集綜合準確率達到97. 2%;Nasiri等[10]使用基于VGG16結構的CNN模型,對裂紋雞蛋圖像進行判別,準確度為96.55%;Turkoglu[11]利用深度學習技術,使用DenseNet模型從6個不同方向采集的圖像中提取特征,然后將獲得的特征輸入雙向長短期記憶模型(BiLSTM),對裂紋雞蛋的識別準確率達到了99.17%;Botta等[12]使用改良后的LeNet-5 架構建立了裂紋雞蛋圖像識別的CNN模型,其準確率為95.38%;趙祚喜等[13]利用機器視覺技術,并結合深度學習網絡深層次特征提取、高精度檢測分類的特性,提出一種基于YOLOv4網絡的破損雞蛋檢測方法,在線檢測時,YOLOv4模型對含不同比例的破損蛋識別正確率平均為86.22%;Tang等[14]使用改進的MobileNetV3_large模型對破損皮蛋圖像進行識別,準確率達96.3%。Wong等[15]使用AlexNet卷積神經網絡模型,提取蛋殼上斑駁圖案的學習圖像特征,對裂紋特征檢測準確率為91.8%;姚學峰等[16]建立了一種改進的YOLOv5裂紋雞蛋圖像檢測模型,將輕量級網絡MobileNetv3添加到YOLOv5模型中,以降低模型復雜度,刪除頸部網絡和輸出端小目標檢測結果,其檢測準確率達95%以上。
相比于傳統的圖像處理方法,卷積神經網絡模型能夠達到更高的識別準確度。卷積神經網絡模型種類繁多,有以YOLO、R-CNN卷積神經網絡為代表用于圖像目標定位的模型和ResNet、SuffleNet等用于整體圖像識別的卷積神經網絡模型。因此,不同模型對裂紋雞蛋圖像識別準確率的差異有待研究。此外,雞蛋圖像的預處理會占用部分運算時間,卷積神經網絡模型能否對未經預處理的原始雞蛋圖像進行準確識別有待進一步確認。
研究擬使用在線式雞蛋圖像采集設備采集裂紋雞蛋和完好雞蛋的圖像作為數據集,分別建立用于雞蛋裂紋識別的YOLO-v5、ResNet和SuffleNet模型,并比較不同模型對裂紋雞蛋的識別準確率和對未經預處理雞蛋圖像的適應性,以期獲得準確率更高的裂紋雞蛋圖像判別模型。
來航雞產新鮮白殼蛋500枚,采購于南京市童衛路農貿市場,送入實驗室后未進一步清洗以保證其狀態與實際生產中雞蛋狀態一致,其中250枚雞蛋使用自制禽蛋模擬撞擊設備產生,禽蛋模擬撞擊設備參考文獻[17]28制作,結構如圖1所示。從10 cm長30°的V型斜坡滾落以不同位置撞擊與蛋殼曲率近似的塑料弧面撞擊頭,共產生250枚裂紋雞蛋,剩余250枚為完好雞蛋,經數碼顯微鏡檢測,裂紋蛋裂紋寬度為(65±28) μm。

圖1 禽蛋模擬撞擊設備示意圖
1.2.1 雞蛋圖像采集 使用文獻[17]82中的雞蛋圖像采集設備,如圖2所示,該設備利用禽蛋輸送裝置下方的輸送輥將禽蛋輸送至光源正上方,雞蛋遮擋住感應模塊探頭,感應模塊向計算機發送電位信號,連續觸發圖像采集,且該過程中沒有禽蛋的拍攝位下方光源在圖像采集時保持關閉,不影響其他拍攝位禽蛋圖像的采集,實現了穩定的禽蛋在線動態圖像采集。分別模擬雞蛋裂紋實際檢測過程采集雞蛋圖像,共采集不同角度裂紋雞蛋圖像473張和完好雞蛋圖像576張,并使用文獻[5]中圖像預處理方法,即使用紅色和藍色的差值分量進行自適應雙峰閾值分割,得到雞蛋區域的二值圖像,然后以此二值圖像為模板將圖像中除雞蛋外的區域設定為純黑色,預處理效果如圖3所示。雞蛋蛋殼形成過程中產生的長條狀低密度區域會在透光圖像中形成長條狀亮斑,是影響裂紋雞蛋識別的主要因素。

圖2 雞蛋動態圖像采集設備[17]82

圖3 裂紋和完好雞蛋圖像
1.2.2 裂紋雞蛋圖像識別的YOLO模型建立 YOLO模型可以識別出圖像中特定類別目標的位置,訓練前需要手動標記出雞蛋圖像中裂紋位置。如圖4所示,為了研究YOLO-v5模型對裂紋雞蛋的檢測效果,使用Python平臺的LabelImg工具(https://github.com/tzutalin/labelImg)對原始和經過預處理的裂紋雞蛋圖像中的雞蛋裂紋區域進行人工標記,并將每種標記后的圖像按照6∶4的比例劃分為建模集和驗證集,以作為YOLO-v5模型的訓練數據集。

圖4 雞蛋圖像裂紋標記
使用Python平臺的Yolov5-master工具(https://github.com/ultralytics/yolov5)建立原始和經預處理后的雞蛋圖像中裂紋區域的識別模型,YOLOv5中包含s、m、n、l和x 5種規模的模型架構,其中s規模的模型架構深度和寬度分別為正常架構的33%和50%,更適合普通計算機的訓練及部署。因此,以其進行模型的建立。此外,建模過程中采用了馬賽克增強、圖像左右翻轉和上下翻轉策略,并使用CoCo數據集(美國Microsoft公司)作為預訓練模型以減少訓練次數。模型輸入圖像尺寸寬度設置為640像素,批尺寸設為4以節約顯存,訓練次數為100,其余建模參數采用模型推薦參數。模型驗證時,置信度閾值選擇0.3,訓練時記錄模型每次訓練后的目標損失和邊界框損失,并計算最佳模型的判別準確率。計算準確率時凡檢測出包含裂紋的圖像均被判定為裂紋雞蛋圖像。
1.2.3 裂紋雞蛋圖像識別的ResNet和SuffleNet模型建立 使用Python平臺的Deep learning for image processing master(https://github.com/WZMIAOMIAO/deep-learning-for-image-processing)工具建立原始和經預處理后的裂紋雞蛋圖像的ResNet和SuffleNet識別模型。ResNet和SuffleNet沒有圖像目標識別能力,只能對圖像整體進行分類,因此無需對裂紋進行標記。ResNet模型建立時建模集和驗證集圖像比例為6∶4,而SuffleNet建模算法中自動劃分建模集和驗證集比例為7∶3。ResNet學習速率設為0.000 1,SuffleNet學習速率設為0.01,均為默認參數,批尺寸均為4,訓練次數均為50。訓練時記錄模型每次訓練后的誤差和準確率,并計算最終訓練模型的判別準確率。
由于圖像中的裂紋為連續的線形或網狀信號,而非邊界明確的單個信號,因此僅以邊界框損失評價YOLO-v5模型訓練效果。如圖5所示,3種卷積神經網絡模型訓練時收斂速度均較快,ResNet、YOLO-v5和SuffleNet分別在5,10,30次訓練后,其對驗證集識別誤差達到穩定狀態,過渡訓練容易造成過擬合。但訓練用于原始裂紋雞蛋識別的ResNet模型時,驗證集準確率波動較大,ResNet模型不適用于原始裂紋雞蛋圖像的識別。

圖5 不同模型訓練過程誤差變化
如表1所示,YOLO-v5模型對預處理后的圖像和原始圖像中裂紋區域的識別準確率都能達到0.95左右。YOLO-v5模型能夠有效識別雞蛋圖像中的裂紋區域,并進行定位,但部分較小的裂紋未被識別出來。這是由于雞蛋圖像中裂紋錯綜復雜且形態多變,無固定的人工標定依據,導致部分細小裂紋在訓練時被忽略。而且裂紋區域識別準確度是機器對裂紋區域標定結果與人工標定結果的對比。由于難以形成統一的標定標準,同一條裂紋機器標定區域與人工標定區域會存在少部分的偏差,造成裂紋區域識別準確度下降,但這并不影響后續的判別結果。

表1 YOLO-v5模型對圖像中裂紋區域識別準確度
YOLO-v5、ResNet和SuffleNet模型對經過預處理后的裂紋雞蛋圖像識別效果如表2所示。其中,SuffleNet模型識別準確率達99%以上,YOLO-v5和ResNet模型對驗證集的識別準確率分別為98.8%和97.8%。而潘磊慶等[3]的方法識別準確率為92.9%,Priyadumkol等[6]的方法識別準確率為94%,可以看出,這3種卷積神經網絡模型與傳統基于邊緣檢測和閾值分割的圖像處理方法相比具有更高的識別準確率,且對完好雞蛋圖像的識別錯誤率控制強于基于連續波信號的裂紋雞蛋識別法[8]。此外,Nasiri等[10]使用VGG模型識別準確率為96.55%,Botta等[12]使用LeNet-5模型識別準確率為95.38%,Wong等[15]使用AlexNet模型識別準確率為91.8%,可見相對于VGG、LeNet-5、AlexNet等前期經典卷積網絡模型,YOLO-v5、ResNet和SuffleNet模型在裂紋雞蛋圖像識別中也展示出了更強的識別能力。

表2 經預處理后的裂紋雞蛋圖像識別結果
YOLO-v5能夠實現對裂紋等細節目標位置的識別,但并不是準確率最高的識別模型。此外,YOLO-v5的建模工作量比ResNet和SuffleNet大很多,且人工標記的失誤會影響模型的檢測準確度。雖然SuffleNet無需標記裂紋位置,但依然可以在較少的訓練次數中找出不同類別的圖像特征差異,這得益于其較高的圖像輸入分辨率和較小的卷積核尺寸。因此,相對于YOLO-v5模型,SuffleNet模型更適合于裂紋雞蛋圖像的識別。
YOLO-v5、ResNet和SuffleNet模型對未經預處理的原始裂紋雞蛋圖像識別準確率如表3所示。YOLO-v5和SuffleNet模型對未經預處理的裂紋雞蛋圖像的識別準確率與經預處理后的圖像相比變化不大,而ResNet模型對未經預處理的裂紋雞蛋識別準確率較低,說明ResNet模型較容易受到冗余圖像信息的干擾。從圖5也可以看出,使用未經預處理的雞蛋圖像建模時,ResNet模型無法收斂。而SuffleNet模型對未經預處理的裂紋雞蛋圖像識別準確率接近100%,是理想的雞蛋裂紋圖像檢測模型。

表3 未經預處理裂紋雞蛋圖像識別結果
實際生產過程中,雞蛋在生產線上高速運動。采集雞蛋圖像時不可避免會拍攝到輸送雞蛋的輸送輥和鏈條。使用圖像處理方法能夠有效去除這些冗余信息,但會增加設備的運算量,而使用SuffleNet模型能夠實現雞蛋圖像采集后立即識別,節約了算力和時間,有利于檢測速度的提升。
研究建立了用于裂紋雞蛋圖像識別的YOLO-v5、ResNet和SuffleNet模型,其中,SuffleNet模型對經過和未經過預處理的裂紋雞蛋圖像均能夠準確識別,準確率達99%,超過了傳統機器學習方法和前期的卷積神經網絡模型。從識別準確率來看,能夠實現圖像目標定位的YOLO-v5模型并不是裂紋雞蛋檢測的最佳模型,用于圖像整體識別的卷積神經網絡也能夠有效分辨雞蛋圖像中的裂紋信號。此外,ResNet模型易受冗余圖像信息干擾,難以適應未經預處理的雞蛋圖像。因此,這3種模型中最適合裂紋雞蛋圖像識別的模型為SuffleNet模型,該模型能夠準確識別裂紋雞蛋圖像且不需要圖像預處理過程,可節約算力和時間提升檢測速度。但試驗所用的裂紋雞蛋樣本為人工制得,對實際生產中出現的裂紋雞蛋是否適用,特別是裂紋位于雞蛋兩個尖端情況的檢測方法有待于進一步研究討論。