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