李慶旭 王巧華 顧 偉 施 行 馬美湖
(1.華中農業大學工學院, 武漢 430070; 2.農業農村部長江中下游農業裝備重點實驗室, 武漢 430070;3.國家蛋品研發中心, 武漢 430070)
根據2018年中國畜牧業協會與世界糧農組織(FAO)提供的數據,世界肉鴨出欄量約47.4億只,蛋鴨存欄量約1.87億只,我國鴨養殖占世界鴨養殖量的74.3%[1]。這表明我國鴨蛋孵化行業每年需要孵化數十億只鴨苗才能滿足國內養殖需求。但目前國內種鴨的養殖方式以散養為主,導致種鴨蛋的自然受精率低于80%[2]。在孵化過程中若不能將無精蛋及時剔除,不僅會對受精蛋造成污染,而且會造成資源的巨大浪費。當前國內鴨蛋孵化行業判別無精蛋的主要方法是在孵化7 d左右時通過人工照蛋的方式完成,費時、費力,且剔除出來的無精蛋已喪失食用價值,造成巨大浪費。因此,研究孵化早期鴨蛋的受精信息及無損檢測與判別具有重要價值和實際意義。
目前,國內外對禽蛋孵化的研究主要集中在雞蛋孵化方面,研究人員嘗試使用機器視覺[3-6]、光譜技術[7-10]、生物電[11-12]等技術手段,結合機器學習方法,實現對孵化早期受精雞蛋的無損檢測。但是針對孵化早期鴨蛋受精信息的研究卻鮮有報道。與種雞蛋相比,種鴨蛋孵化早期受精信息的無損檢測難度明顯增加。主要原因有:種鴨的養殖方式主要為散養,種鴨蛋的蛋殼表面會有很多難以去除的污漬,導致采集到的圖像信息被污漬遮擋;種鴨蛋的蛋殼厚度差異很大(種雞蛋的蛋殼差異相對較小),導致光源選擇難度大大增加。張偉等[13]將機器視覺和敲擊振動相結合,建立了LVQ神經網絡判別模型,在機器視覺方面僅提取了種蛋的顏色特征,實現了對種鴨蛋孵化5 d時的受精蛋與無精蛋的無損判別,但檢測孵化時間還有待提前,以及檢測裝置的實用性還有待改進。
卷積神經網絡(CNN)通過引入權值共享和局部連接等機制,使其能夠自動提取特征并表達特征,進而實現端對端的處理方式,智能優勢明顯。目前CNN在農業檢測領域也有較廣泛的應用[14-18],但將CNN應用于禽蛋無損檢測尚未見報道。本文經過反復試驗研究,在Alexnet卷積神經網絡基礎上,針對種鴨蛋孵化第3天的圖像,構建適用于圖像識別的卷積神經網絡。
試驗選取湖北省神丹種鴨養殖基地的縉云麻鴨種蛋2 665枚作為試驗材料。
將種鴨蛋清洗并消毒,消毒方法為:將種蛋浸泡在0.5%的高錳酸鉀溶液中1~2 min后取出晾干。將晾干后的種蛋進行編號并放入自動孵化箱內孵化。每隔24 h采集一次圖像。并在孵化10 d后對種蛋進行破殼處理,蛋殼內有網狀血絲判定為受精蛋,壞死的血圈蛋以及無血絲的種蛋判別為不可孵化種蛋(無精蛋)。
種鴨蛋透射圖像采集系統設置在孵化車間,由暗箱、光源、相機、鏡頭、有孔傳送帶、暗箱支架及計算機組成(圖1),相機為JAI AD-080GE型工業相機,分辨率為1 024像素×768像素,幀率為30 f/s,選擇Kowa公司的LM6NC3型鏡頭。光源為5 W的正白光LED燈。種鴨蛋放置于暗箱內,物距、焦距和光圈在采集過程中均保持不變。

圖1 圖像采集系統原理圖Fig.1 Image acquisition system1.計算機 2.數據傳輸線 3.相機及鏡頭 4.暗箱 5.種鴨蛋 6.有孔傳輸帶 7.光源 8.暗箱支架

圖3 無精蛋原始圖像Fig.3 Unfertilized egg original images
受精蛋的原始圖像如圖2所示,無精蛋的原始圖像如圖3所示。根據孵化經驗,受精鴨蛋在孵化第3天蛋黃部分會出現類似于櫻桃形狀的珠子。對比圖2和圖3,發現受精蛋與無精蛋的蛋黃顏色和形狀存在差異,但也存在幾乎無差異的情況,如圖2c與圖3b。有孵化經驗的技術人員在種鴨蛋孵化第3天,肉眼識別準確率在80%左右,這說明使用卷積神經網絡建立種鴨蛋孵化3 d的判別模型是可能的。本文共采集受精蛋圖像1 326幅,無精蛋圖像1 339幅。

圖2 受精蛋原始圖像Fig.2 Fertilized egg original images
采集到的原始圖像尺寸為1 024像素×768像素,如果將原始圖像直接輸入卷積神經網絡會增加網絡的訓練時間。由于原始圖像含有背景干擾,為了提高神經網絡的訓練和收斂速度,將原始圖像裁剪成尺寸為380像素×350像素的圖像,再將裁剪后的圖像尺寸調整為224像素×224像素,裁剪后的圖像如圖4所示。此外為了加快模型的收斂速度,將調整后的圖像進行歸一化操作。本文使用的圖像預處理工具為Python3.5+Pillow。
2.2.1Alexnet神經網絡
Alexnet神經網絡是由HINTON和KRIZHEVSKY設計的8層神經網絡[19],包括5個卷積層、3個全連接層、3個池化層,卷積層主要用于自動提取特征,池化層對卷積層提取的特征圖進行降維,以減少模型的參數量,全連接層通過大量神經元之間的相互連接將卷積或池化操作得到的特征圖重新組成完整的圖,具體結構如圖5所示。

圖4 裁剪后的圖像Fig.4 Cropped images

圖5 Alexnet神經網絡結構圖Fig.5 Alexnet neural network structure diagram
Alexnet神經網絡使用ReLU非線性激活函數解決網絡過深時梯度彌散問題。此外,Alexnet神經網絡引入局部響應歸一化層(LRN)和dropout層,可以防止模型過擬合。
2.2.2種鴨蛋受精信息識別網絡
Alexnet神經網絡雖然已被應用在很多領域[20-22],但是其學習參數有6×107個,神經元數量有6.5×105個,導致Alexnet神經網絡訓練速度過慢且存在一定程度的過擬合[23-24]。Alexnet神經網絡的數據集建立在ImageNet上,本文充分對比種鴨蛋孵化3 d時的圖像和ImageNet數據集的圖像質量差異,相比ImageNet數據集種鴨蛋孵化3 d的圖像背景更加簡單,干擾因素更少,圖像的特征(種蛋的蛋黃部分)更加清晰,這些差異使得本文的卷積神經網絡參數量可以適當減少。故本文對Alexnet神經網絡進行了改進,將 Alexnet神經網絡的卷積層1的卷積核尺寸由11×11改為5×5,更改后感受野的范圍不變但是參數量大幅減少。由于種鴨蛋孵化3 d的圖像特征比較明顯,可以適當減少卷積核個數,提取的特征數量略有減少,但是可以減少參數量加快模型的收斂,故將卷積核數量改為64個,可大大減少學習參數的數量。由于卷積層1已經將參數量大幅減少,為了防止模型參數過少導致欠擬合,故將本層的卷積核數量改為192,可增加提取的特征數。由于參數過多容易造成過擬合,故本文用卷積核(核數量為1 024)尺寸為6×6的卷積層代替全連接層1,可以避免過擬合,用卷積核(核數量為1 024)尺寸為1×1的卷積層代替全連接層2;由于本文將孵化3 d的種鴨蛋圖像分為受精和無精兩類,故將最后的輸出層輸出類別改為2個;改進后的Alexnet神經網絡既可以減少神經元的數量,又可以避免由于參數過多造成的過擬合。
改進后的Alexnet神經網絡具體實現過程如下:將種鴨蛋孵化3 d的原始圖像調整為224像素×224像素后輸入到卷積層1,卷積層1的卷積核尺寸為5×5,卷積核數量為64個,卷積后的輸出特征尺寸為55×55×64;卷積層1的輸出特征圖進入到池化層1,其核尺寸為3×3,步長設置為2,池化后的輸出特征尺寸為27×27×64。池化層1的輸出特征圖進入到卷積層2,其卷積核尺寸為5×5,卷積核數量為192個,卷積后的輸出特征尺寸為27×27×192。卷積層2的輸出特征圖輸入到池化層2,其核尺寸為3×3,步長設置為2,池化后的輸出特征尺寸為13×13×192。池化層2的輸出特征圖進入到卷積層3,其卷積核尺寸為3×3,卷積核數量為384個,卷積后的輸出特征尺寸為13×13×384。卷積層3的輸出特征圖輸入到卷積層4,其卷積核尺寸為3×3,卷積核數量為384個,卷積后的輸出特征尺寸為13×13×384。卷積層4的輸出特征圖輸入到卷積層5,其卷積核尺寸為3×3,卷積核數量為256個,卷積后的輸出特征尺寸為13×13×256。卷積層5的輸出特征圖輸入到池化層3,其核尺寸為3×3,步長設置為2,池化后的輸出特征尺寸為6×6×256。池化層3的輸出特征圖輸入到卷積層6,其卷積核尺寸為6×6,卷積核數量為1 024個,卷積后的輸出特征尺寸為1×1×1 024。卷積層6的輸出特征圖輸入到卷積層7,其卷積核尺寸為1×1,卷積核數量為1 024個,卷積后的輸出特征尺寸為1×1×1 024。卷積層7的輸出特征圖輸入到輸出層,最后經過softmax函數輸出受精和無精兩類的二維得分矩陣。改進后的Alexnet神經網絡結構如圖6所示。

圖6 改進后的Alexnet神經網絡結構圖Fig.6 Improved Alexnet neural network structure diagram
改進后的Alexnet神經網絡共8層,7個卷積層和1個輸出層。在每個卷積層后都使用ReLU非線性激活函數,卷積層1和卷積層2后使用局部響應歸一化層[25-26](LRN),在卷積層6、7后使用dropout層來防止過擬合。ReLU激活函數可以將數據變成稀疏矩陣,可以加快模型的收斂速度,其實現公式如下

(1)
LRN層可以對輸入的局部區域進行歸一化處理,可一定程度提高模型的精度,其具體實現公式如下
(2)


N——卷積核數量
n、k、α、β——常量
j——平方累加索引
dropout層可以提高模型的泛化能力,通過隨機關閉一些神經元來達到防止網絡過擬合的效果[27]。
2.2.3模型訓練
系統的硬件為 AMD Ryzen Threadripper 2920X CPU,主頻3.5 GHz,內存為128 GB, NIVIDIA GeForce RTX 2080Ti GPU;軟件平臺為CUDA Toolkit 9.2+CUDNN V9.2+Python 3.5+Tensorflow-GPU 1.8.0。由于深度學習需要大量的數據進行訓練,本文在采集得到的2 665幅種鴨蛋孵化3 d的圖像中抽取2 400幅圖像(受精和無精各1 200幅圖像)用于訓練,剩下的265幅圖像用于測試。本文訓練和測試時均使用GPU加速。
模型訓練的本質是通過反向傳播不斷迭代使得定義的損失函數(Loss function)不斷減小。本文采用自適應時刻估計法(Adaptive moment estimation)實現迭代過程中尋找最優梯度下降方向。學習率更新方法為指數衰減法,可以兼顧模型的穩定性和訓練速度。
采用均值平方差計算分類損失,用來表達預測值與實際值的差異。損失函數公式如下
(3)
式中m——樣本數
yt——第t個樣本的真實值
pret——第t個樣本的預測值
初始學習率(Learning rate)設置為0.000 1,訓練的批次樣本數(Batch size)設置為16,網絡模型的權重參數和偏置參數初值用均值μ為0、標準偏差σ為0.01的截斷正態分布隨機生成。模型的訓練和測試流程如圖7所示。

圖7 模型訓練和測試流程Fig.7 Model training and testing process

圖8 loss變化曲線Fig.8 Changing curve of loss
模型在訓練次數達到20 000次后結束訓練并保存,訓練過程中的損失函數變化如圖8所示。訓練過程中每訓練20次保存1次loss,故loss曲線不夠平滑。從loss曲線可以看出,在訓練的前12 000次時loss處于振蕩狀態,在訓練12 000次后loss開始迅速下降,并維持在很低水平,表明模型在訓練12 000次后開始收斂。將訓練集2 400幅圖像(受精和無精各1 200幅)和測試集265幅圖像(受精126幅圖像,無精139幅圖像)輸入訓練好的模型進行驗證。為了對比Eggnet神經網絡和Alexnet神經網絡在判別種鴨蛋孵化3 d受精信息的性能差異,本文也將數據輸入Alexnet神經網絡進行訓練,訓練參數設置與Eggnet神經網絡相同。兩個網絡的驗證結果如表1所示。
分別對比兩者的訓練集準確率、測試集準確率和測試集召回率,發現Alexnet神經網絡和Eggnet神經網絡均未出現過擬合現象。其中Alexnet神經網絡對訓練集的2 400幅圖像錯判了5幅(受精蛋錯判了5個,無精蛋錯判0個),對測試集的265幅圖像錯判了3幅(受精蛋錯判0個,無精蛋錯判3個)。Eggnet神經網絡對訓練集的2 400幅圖像錯判了2幅(受精蛋錯判了2個,無精蛋錯判0個),對測試集的265幅圖像錯判了3幅(受精蛋錯判2個,無精蛋錯判1個)。兩者雖然在訓練集和測試集的精度上區別不大,但是對比兩者的召回率發現,Eggnet神經網絡在判別種鴨蛋孵化3 d的受精信息方面的性能略優于Alexnet神經網絡。且兩者的訓練時間差別較大,Eggnet神經網絡由于學習參數和神經元數量大大減少,訓練時間僅為Alexnet神經網絡的1/3。單枚種蛋檢測時間僅為0.24 s,能夠滿足在線檢測的速度要求。

表1 模型測試結果Tab.1 Model test results

圖9 模型驗證流程圖Fig.9 Model verification process
為了驗證Eggnet神經網絡的泛化能力,本文進行了驗證試驗,試驗條件與之前保持相同。驗證試驗共采集得到640幅種鴨蛋圖像,其中受精蛋與無精蛋圖像各320幅。先將圖像裁剪且將尺寸調整為224像素×224像素,然后將圖像進行歸一化處理,最后傳遞給訓練好的Eggnet模型,模型輸出最終判別結果。判別過程如圖9所示,判別結果表明,320枚受精蛋錯判了6枚,受精蛋判別準確率為98.13%,320枚無精蛋錯判了7枚,無精蛋判別準確率為97.81%。驗證試驗精度達到97.97%,表明Eggnet神經網絡具有較好的泛化能力,模型的可靠性和效率較佳。
(1)采用端對端的卷積神經網絡,不必手工提取特征,解決了傳統識別方法在提取特征時費時、費力的問題。
(2)卷積神經網絡可以很好地對孵化3 d的種鴨蛋受精信息進行自動提取,并且能夠將受精信息較好地表達出來,測試集準確率達到了98.87%,驗證準確率達到了97.97%,能夠滿足在線檢測的精度要求。
(3)通過將Alexnet神經網絡的卷積核尺寸改小,全連接層用卷積層代替,可以大大減少模型學習參數和神經元的數量。Eggnet神經網絡的訓練時間僅為Alexnet神經網絡的1/3。
(4)在卷積神經網絡中加入LRN層和dropout可以加快模型收斂并抑制模型的過擬合。