李慶旭 王巧華,2
(1.華中農業大學工學院, 武漢 430070; 2.農業農村部長江中下游農業裝備重點實驗室, 武漢 430070)
計算機視覺作為禽蛋無損檢測領域中最常用的技術手段之一[1-2],對禽蛋內外部品質進行檢測時,一般需要根據人工經驗手動提取禽蛋圖像特征并利用機器學習算法建立禽蛋內外部品質的分類模型[3-4],或利用卷積神經網絡自動提取禽蛋圖像特征實現端對端的禽蛋圖像自動分類與檢測[5-6]。機器學習或深度學習算法需要大量禽蛋樣本才能取得較好的檢測精度[7],但禽蛋樣本數據的獲取是一個耗時耗力的過程。在禽蛋圖像檢測中,利用機器學習算法或深度學習算法建立的模型在缺乏足夠的樣本數據時均存在過擬合的風險。
元學習已成為近年來人工智能領域的研究熱點[8],旨在通過模擬人類智能在少樣本條件下快速且準確地完成分類或匹配任務,與深度學習需要海量訓練數據相比,是一種更為接近人類智能的算法。其可以分為3類:①基于度量的元學習,是使用深度神經網絡提取樣本的特征,將樣本數據映射至度量空間中,并在度量空間中計算樣本間的距離,最終實現樣本的分類或匹配,常見的基于度量的元學習算法有孿生網絡[9]、原型網絡[10]與關系網絡[11]等。②基于初始化的元學習,其核心思想是學習一個通用的初始化模型,使模型在處理新任務時能夠快速收斂,如模型無關的元學習算法(Model agnostic meta learning, MAML)[12]。③基于優化器的元學習,包含基網絡和循環神經網絡,利用循環神經網絡代替梯度下降算法作為基網絡的優化器,從而使基網絡在小樣本條件下依然能夠表現出較好的性能[13]。
元學習被廣泛應用于小樣本條件下的圖像分類任務中[14],但在農業領域尚未發現相關文獻,若能將元學習應用于禽蛋圖像檢測,將加速人類智能融入禽蛋無損檢測領域。考慮到禽蛋圖像的特征主要存在于禽蛋的蛋黃或者蛋殼表面部分[15-16],且禽蛋圖像檢測一般為2~3分類的專屬任務。經反復探究與嘗試,本文利用基于度量的元學習構造少樣本條件下禽蛋圖像檢測模型。在原型網絡的基礎上設計一種適用于禽蛋圖像檢測的原型禽蛋網絡(Prototypical-Egg network),利用引入注意力機制的逆殘差結構搭建的卷積神經網絡將禽蛋圖像映射到嵌入空間,從而實現對禽蛋圖像的分類。將為少樣本條件下的禽蛋圖像無損檢測提供一種更為智能的檢測思路,以避免因樣本數據不足而無法對禽蛋圖像進行分析檢測的問題。
禽蛋視覺無損檢測任務一般可分為種蛋孵化信息檢測、內部品質和外部品質檢測[17-19],分別采集孵化5 d的種鴨蛋圖像(檢測種鴨蛋是否受精)、雙黃鴨蛋與普通鴨蛋圖像(檢測雙黃蛋)和裂紋皮蛋與正常皮蛋圖像(檢測皮蛋裂紋),針對此3個禽蛋分類任務利用原型禽蛋網絡驗證分類效果,以驗證本文方法的可行性。
為采集孵化5 d的種鴨蛋透射圖像,選用300枚新鮮的國紹1號麻鴨種鴨蛋(其中無精蛋和受精蛋比例為1∶1)為試驗材料,將其消毒編號后置入智能孵化箱內進行孵化,待孵化5 d后利用圖1所示圖像采集系統采集種鴨蛋透射圖像,孵化10 d后對其進行破殼處理獲取精準的受精結果。
選用300枚高郵鴨蛋(雙黃蛋和單黃蛋各150枚)作為試驗材料,利用圖1所示圖像采集系統采集雙黃蛋與單黃蛋的透射圖像。
為采集禽蛋外部品質圖像,試驗選用產自湖北神丹公司的300枚皮蛋作為試驗材料,其中裂紋皮蛋和正常皮蛋各150枚,利用圖2所示圖像采集系統采集皮蛋表面反射圖像,圖像采集裝置包括工業相機及鏡頭、暗箱、光源和計算機。
采集得到孵化5 d種鴨蛋圖像300幅,無精蛋和受精蛋各150幅,如圖3所示。雙黃鴨蛋與單黃鴨蛋圖像共300幅,雙黃蛋與單黃蛋各150幅,如圖4所示。正常皮蛋和裂紋皮蛋圖像各150幅,如圖5所示。三者的原始圖像尺寸均為1 024像素×768像素,為方便將圖像輸入設計的原型網絡,利用雙線性插值法將原始圖像尺寸統一調整為256像素×256像素。圖像劃分為支撐集與查詢集,支撐集共300幅圖像(其中受精蛋、無精蛋、雙黃蛋、單黃蛋、正常皮蛋與裂紋皮蛋各50幅),查詢集共600幅圖像,每類含100幅圖像。
原型網絡是SNELL等提出的一種小樣本學習算法,利用非線性映射將支撐集圖像映射到嵌入空間內,計算嵌入空間內每類圖像的加權平均值得到該類的原型,測試圖像同樣經過非線性映射至嵌入空間,計算查詢集圖像在嵌入空間上到每個類別原型的歐氏距離,利用歐氏距離實現測試圖像的分類, 原型網絡的結構如圖6所示,包括由卷積層和池化層組成的卷積神經網絡、嵌入空間和歐氏距離計算。
原型網絡分為模型訓練和測試兩部分,訓練時通過卷積神經網絡強大的特征提取能力和非線性表達能力,將支撐集圖像映射至嵌入空間中。在嵌入空間計算每個類別圖像的嵌入支持點(圖像特征)的平均向量,得到每個分類的原型。測試時將查詢集圖像輸入至卷積神經網絡得到嵌入支持點,計算測試圖像嵌入支持點與支撐集每個類別的原型之間的距離。將距離測試圖像嵌入支持點最近的原型劃為一類,從而完成測試圖像的分類。
每類圖像原型ck和測試圖像與原型之間的距離pφ計算公式為
(1)
(2)
其中
(3)
式中fφ(xi)——嵌入函數,表示卷積神經網絡的映射關系
Sk——含k個類別的樣本集
|Sk|——k個類別的樣本集的數量
xi——Sk中第i個樣本的特征向量
yi——Sk中第i個樣本的標記向量
d——嵌入空間內樣本x到第k個原型的距離函數
k——支撐集樣本類別數
原型網絡在Omniglot和miniImageNet數據集上取得了較好的檢測效果,其中Omniglot數據集中的圖像是尺寸為105×105×1的單通道圖像,miniImageNet數據集圖像尺寸為84×84×3。原型網絡的卷積神經網絡部分由卷積層、池化層和批量歸一化操作組成,其網絡結構如圖7所示,本文以miniImageNet數據集為例說明原型網絡的圖像特征提取過程:
(1)輸入層(Inputs):輸入圖像尺寸為84×84×3,輸入至卷積層1(Conv1)。
(2)卷積層1(Conv1):卷積核尺寸為3×3,卷積核個數為64,步長為1,輸入圖像經過卷積后輸出的圖像尺寸為64×84×84。后對其進行批量歸一化(BN)操作,最后由ReLU函數激活后輸入至池化層1(Pool1)。
(3)池化層1(Pool1):池化核尺寸為2×2,輸入圖像(64×84×84)經過池化處理后輸出圖像尺寸為64×42×42,并將其輸入至卷積層2(Conv2)。
(4)卷積層2(Conv2):卷積核尺寸為3×3,卷積核個數為64,步長為1,輸入圖像經過卷積后輸出圖像尺寸為64×42×42。后對其進行批量歸一化操作,最后由ReLU函數激活后輸入至池化層2(Pool2)。
(5)池化層2(Pool2):池化核尺寸為2×2,輸入圖像(64×42×42)經過池化處理后輸出圖像尺寸為64×21×21,并將其輸入至卷積層3(Conv3)。
(6)卷積層3(Conv3):卷積核尺寸為3×3,卷積核個數為64,步長為1,輸入圖像經過卷積后輸出圖像尺寸為64×21×21。后對其進行批量歸一化操作,最后由ReLU函數激活后輸入至池化層3(Pool3)。
(7)池化層3(Pool3):池化核尺寸為2×2,輸入圖像(64×21×21)經過池化處理后輸出圖像尺寸為64×10×10,并將其輸入卷積層4(Conv4)。
(8)卷積層4(Conv4):卷積核尺寸為3×3,卷積核個數為64,步長為1,輸入圖像經過卷積后輸出圖像尺寸為64×10×10。后對其進行批量歸一化操作,最后由ReLU函數激活后輸入至池化層4(Pool4)。
(9)池化層4(Pool4):池化核尺寸為2×2,輸入圖像(64×10×10)經過池化處理后輸出圖像尺寸為64×5×5,并將其輸入至嵌入空間。
禽蛋圖像的特點與miniImageNet數據集中的數據分布情況有顯著區別,所有的禽蛋圖像均呈近似橢圓形,有效特征主要集中在蛋黃或蛋殼表面部分,如受精蛋和無精蛋相比蛋黃部分顏色呈暗紅色、雙黃鴨蛋的特征在于蛋黃面積較單黃蛋明顯增加、裂紋皮蛋的蛋殼表面有輕微的損傷。針對禽蛋圖像數據特征分布特點,要求卷積神經網絡具備更強大的特征提取能力。而原型網絡的卷積神經網絡部分僅為4層,對于禽蛋圖像特征的提取能力表現得略顯不足[20]。
卷積神經網絡的層數越深或寬度越大其特征提取能力會有明顯提升[21-22],MobileNet系列網絡因其具有參數量小和檢測性能強的特點,已成為機器視覺領域較為常用的網絡[23]。MobileNet網絡利用深度可分離卷積代替標準卷積(Conv),還增加了分辨率與寬度因子,極大地減少了網絡參數量,但其提取低維空間時存在線性瓶頸。MobileNet V2網絡針對MobileNet的缺陷,利用先升維再卷積后降維的逆殘差結構和對激活函數的改進[24],增強了網絡的性能,逆殘差結構如圖8所示。為了進一步提升網絡的速度和檢測精度,MobileNet V3在逆殘差結構的基礎上引入了注意力機制模塊[25],能夠有效地減少噪聲對梯度的影響。注意力機制逆殘差模塊結構如圖9所示。
為此,本文搭建了7層卷積神經網絡(Prototypical-Egg網絡),網絡含有逆殘差卷積、注意力機制逆殘差卷積。與原型網絡卷積部分相比增加了網絡的深度,增強了網絡的魯棒性。Prototypical-Egg網絡的卷積部分結構如圖10所示,具體實現過程如下:
(1)輸入層(Inputs):輸入禽蛋圖像尺寸為256×256×3。
(2)卷積層1(Conv2d_1):卷積核尺寸為3×3,核個數為16,步長為2。尺寸為256×256×3的圖像經過卷積處理后輸出圖像尺寸為128×128×16。
(3)逆殘差卷積層1(IRS_1): 逆殘差卷積包括2個1×1卷積和1個3×3卷積,每個卷積層后加BN層和ReLU激活函數。128×128×16的禽蛋圖像經過逆殘差卷積后輸出圖像尺寸為64×64×16,輸出至逆殘差卷積層2(IRS_2)。
(4)逆殘差卷積層2(IRS_2):尺寸為64×64×16的圖像經過逆殘差卷積后輸出圖像尺寸為32×32×24,輸出至逆殘差卷積層3(IRS_3)。
(5)逆殘差卷積層3(IRS_3):尺寸為32×32×24的圖像經過逆殘差卷積后輸出的圖像尺寸為32×32×24,輸出至SE逆殘差卷積1(SE IRS_1)。
(6)SE逆殘差卷積(SE IRS_1): 尺寸為32×32×24的圖像經過SE逆殘差卷積輸出圖像為32×32×40,輸出至SE逆殘差卷積2(SE IRS_2)。
(7)SE逆殘差卷積(SE IRS_2): 尺寸為32×32×40的圖像經過SE逆殘差卷積輸出圖像為16×16×40,輸出至SE逆殘差卷積3(SE IRS_3)。
(8)SE逆殘差卷積(SE IRS_3): 尺寸為16×16×40的圖像經過SE逆殘差卷積輸出圖像為16×16×64,輸出至嵌入空間。
試驗硬件平臺:AMD銳龍 Threadripper 2920X型CPU、NIVIDIA GeForce RTX 2080Ti 型GPU、128 GB內存。軟件平臺:Pytorch 1.6+Python 3.8。
采集的原始圖像尺寸為1 024像素×768像素,若直接將原始圖像輸入至原型網絡的卷積神經網絡部分,每幅圖像最終輸入給嵌入空間的特征尺寸為64×48×64,網絡的參數量將大大增加。為此,本文將原始圖像進行尺寸調整,但圖像尺寸過小則會損失大量特征導致模型性能表現不佳。以雙黃鴨蛋圖像為例,分別將其調整為84×84×3(miniImageNet數據集)、128×128×3、256×256×3(本試驗)、512×512×3,如圖11所示。不難發現,將禽蛋圖像尺寸調整為84×84×3和128×128×3,圖像像素信息丟失較多,考慮模型的參數量和速度,本文將禽蛋圖像統一調整為256×256×3。
原型網絡的訓練過程是不斷優化參數找尋最佳原型的過程。先從支撐集讀取6類禽蛋圖像構造15個分類任務,每次隨機抽取2類禽蛋圖像進行二分類。訓練時從支撐集中隨機抽取50幅圖像(每類含25幅圖像),利用卷積神經網絡將50幅圖像映射成嵌入空間的2個原型。再從這2類中選取16幅圖像輸入至卷積神經網絡映射到嵌入空間,并計算每幅禽蛋圖像與2個原型之間的歐氏距離,從而完成測試圖像分類。訓練流程如圖12所示,其中訓練過程中優化的目標(損失)函數為
J(φ)=-lgpφ(y=k|x)
(4)
式中φ——網絡學習參數
試驗利用Adam優化器尋找最優梯度下降方向,使原型網絡對禽蛋圖像的分類性能朝著更佳的方向發展。原型網絡和Prototypical-Egg網絡的初始學習率均設置為0.000 1,迭代次數設置為50次,每個迭代次數設置為10次。
原型網絡和Prototypical-Egg網絡訓練過程中損失值變化如圖13所示。從圖13可以發現,原型網絡的初始損失值較低,迭代20次后維持在較低水平。Prototypical-Egg網絡初始損失值較大,后總體呈下降趨勢,訓練25次后網絡收斂并維持在較低水平。
將查詢集600幅圖像(受精蛋、無精蛋、雙黃鴨蛋、單黃鴨蛋、裂紋皮蛋和正常皮蛋各100幅)分別輸入訓練好的原型網絡和Prototypical-Egg網絡,測試網絡性能,考慮到實際應用價值,本文主要測試網絡在受精蛋與無精蛋(受精任務)、雙黃鴨蛋與單黃鴨蛋(雙黃蛋任務)、裂紋皮蛋與正常皮蛋(裂紋任務)3個分類任務上的表現,測試結果如表1所示。

表1 網絡精度測試結果Tab.1 Network accuracy test results %
對比原型網絡和Prototypical-Egg網絡在查詢集上3個分類任務上的表現,Prototypical-Egg網絡在裂紋檢測任務上精度比原型網絡提升了5個百分點,在受精檢測任務上精度提升了2個百分點。其中兩者對皮蛋裂紋檢測精度略低,分析原因可能為裂紋特征不夠明顯。但Prototypical-Egg網絡相比原型網絡的性能提升明顯,更加適應于禽蛋圖像分類任務的檢測。
由于所采集禽蛋圖像的背景基本為純黑色,該部分為無用信息。故對原始圖像進行裁剪,將原始圖像尺寸裁剪為700像素×500像素,裁剪后的圖像如圖14所示,可去除大量背景信息。此外,對裁剪后的支撐集圖像進行旋轉、平移等操作以實現數據集的擴充,數據增強后的支撐集圖像為1 200幅(受精蛋、無精蛋、雙黃鴨蛋、單黃鴨蛋、裂紋皮蛋和正常皮蛋各200幅)。利用裁剪和增強后的圖像,以相同的訓練方法和網絡模型進一步驗證網絡性能,對裁剪后查詢集圖像的精度測試結果如表2所示。可以發現,改進前后的原型網絡對受精和裂紋任務的檢測性能均有一定程度的提升,且改進后的網絡性能仍優于改進前的原型網絡。

表2 裁剪和增強后的精度測試結果Tab.2 Cropped and enhanced accuraey test results %
(1)利用注意力機制改進的逆殘差模塊搭建原型網絡的卷積部分,更加適用于禽蛋圖像檢測任務,對受精、雙黃和裂紋檢測精度分別為95%、98%、88%,取得了較好的檢測結果,比原型網絡性能提升明顯。對原始圖像進行裁剪去除部分背景后并對支撐集圖像進行數據擴充,擴充后的受精、雙黃和裂紋蛋檢測精度分別為96%、98%、90%。
(2)試驗僅利用300幅圖像作為支撐集用于訓練,600幅禽蛋圖像作為查詢集用于測試,Prototypical-Egg網絡取得了較好的檢測精度,充分體現了小樣本學習的優勢。采集少量的禽蛋圖像便可完成禽蛋視覺無損檢測,節約大量人力物力成本,為禽蛋無損檢測提供了新的思路。
(3)試驗結果表明,將禽蛋圖像尺寸統一調整為256×256×3,可以在不丟失主要特征的情況下取得較快的訓練速度。