王九清,邢素霞*,王孝義,曹 宇
(北京工商大學計算機與信息工程學院,食品安全大數(shù)據(jù)技術北京市重點實驗室,北京 100048)
隨著雞肉在人類日常飲食中的比重日益增加,人們對雞肉品質(zhì)的重視也在不斷增長,這極大地推動了肉制品品質(zhì)及安全檢測技術的發(fā)展[1]。傳統(tǒng)的檢測方法,如感官分析、理化檢測等,都十分繁瑣,且難以實現(xiàn)對雞肉的快速、無損檢測[2-3]?;诠庾V分析的高光譜圖像檢測技術[4]將傳統(tǒng)的成像技術和光譜技術結(jié)合起來,光譜數(shù)據(jù)能夠反映樣本的內(nèi)部品質(zhì),圖像數(shù)據(jù)能夠反映樣本的外部特征[5-6],將二者結(jié)合起來可以實現(xiàn)對雞肉的無損檢測,并且在食品質(zhì)量評估領域中也得到大量的應用[7-8]。然而,高光譜數(shù)據(jù)維度高、數(shù)據(jù)量大,具有非線性和復雜性,如果人為地對高光譜數(shù)據(jù)進行特征提取和數(shù)據(jù)重建,過程十分復雜,耗時較長,并且難免會造成有效信息的浪費[9-10]。
卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)是將人工神經(jīng)網(wǎng)絡和深度學習技術結(jié)合產(chǎn)生的一種新型人工神經(jīng)網(wǎng)絡方法[11-12],可以直接將原始數(shù)據(jù)作為網(wǎng)絡的輸入,由特征檢測層通過訓練數(shù)據(jù)進行學習[13-15],避免了前期復雜的人工特征抽取,極大地簡化人為參與的操作過程,在圖像識別領域獲得了廣泛的應用[16-17]。
本研究以雞肉為研究對象,使用CNN結(jié)合高光譜成像技術對雞肉進行品質(zhì)分類檢測。從雞肉高光譜數(shù)據(jù)中提取光譜、彩色圖像等信息作為并行輸入,建立基于光譜及圖像的綜合CNN模型,實現(xiàn)對雞肉的品質(zhì)檢測,并探究高光譜數(shù)據(jù)中的光譜和圖像數(shù)據(jù)在雞肉品質(zhì)分類檢測中的作用。
超市盒裝冰鮮雞肉,500 g/盒,每盒作為1 組(3 個樣品),共90 組、270 個樣品。將每個樣本分為2 份,同時貯存在冷藏室中,以待進行理化檢測和高光譜信息采集。
M Sorter肉制品光譜檢測儀 北京卓立漢光有限公司;Matlab軟件(R2014b) 美國MathWorks公司;PyCharm軟件(2017.3 x64) 捷克JetBrains公司;Tensorf l ow框架 美國谷歌公司。
1.3.1 雞肉理化指標測定
雞肉理化指標委托華測科技有限公司進行測定。參照GB 5009.228—2016《食品安全國家標準 食品中揮發(fā)性鹽基氮的測定》[18]中的半微量定氮法測定揮發(fā)性鹽基氮(total volatile basic nitrogen,TVB-N)含量;參照GB 4789.2—2016《食品安全國家標準 食品微生物學檢驗菌落總數(shù)測定》[19]測定菌落總數(shù)。90 組樣本的TVB-N含量及菌落總數(shù)如表1所示。
表 1 雞肉樣品的TVB-N含量及菌落總數(shù)Table 1 TVB-N content and total bacterial count of chicken samples
1.3.2 高光譜數(shù)據(jù)采集
采樣時間為貯藏第1、6、7、10、13、16、20、23、27、31天的每天下午2點,共計10 個采樣時間點。每個時間點取出9 組高光譜樣品和9 組理化樣品,同時進行高光譜數(shù)據(jù)采集和理化指標測定。其中,高光譜樣品貯藏在冷藏箱中,由華測公司在實驗前1 h將樣品送到實驗室。
高光譜數(shù)據(jù)采集過程:在實驗室內(nèi),使用M Sorter肉制品光譜檢測儀采集雞肉的高光譜數(shù)據(jù),波長范圍390~1 020 nm,曝光時間3.75 ms。
剛采集到的高光譜數(shù)據(jù)可能會受到光照不均或鏡頭暗電流的影響,帶有大量噪聲,需要對其進行黑白校正[20]。校正后的雞肉高光譜數(shù)據(jù)按照公式(1)計算。
式中:R為校正后的雞肉高光譜數(shù)據(jù)[21];I為原始雞肉高光譜數(shù)據(jù);W為鏡頭對準白板時的全白標定圖像;B為鏡頭蓋住時的全黑標定圖像。
1.3.3 高光譜數(shù)據(jù)提取
高光譜數(shù)據(jù)有極高的分辨率,其龐大的數(shù)據(jù)中存在大量冗余的多重共線性信息,其中既包含灰度值、紋理、TVB-N含量及菌落總數(shù)等有用信息,也包含無用的噪聲信息[22-23]。使用CNN省略了人為數(shù)據(jù)降維和特征抽取過程,只需對高光譜數(shù)據(jù)中的光譜數(shù)據(jù)及彩色圖像數(shù)據(jù)進行提取和預處理,主要步驟如下:1)提取感興趣區(qū)域[24],并進行非均勻性校正。在雞肉的原始高光譜圖像上隨機提取尺寸為66×66的區(qū)域作為感興趣區(qū)域,采用光譜標準化的非均勻性校正方法進行處理;2)提取校正后感興趣區(qū)域的平均光譜及彩色圖像。采集到的高光譜數(shù)據(jù),其光譜范圍為390~1 020 nm,大約每2.47 nm為1 個波段,共分為256 個波段,平均光譜是對感興趣區(qū)域的每個波段上的光譜值取平均,即平均光譜是長度為256的一維向量;分別取第107、70、36個波段的灰度圖像作為R、G、B分量,合成彩色圖像;3)對光譜進行去噪預處理,保存處理前后的數(shù)據(jù);4)對彩色圖像進行濾波等預處理,保存處理前后的數(shù)據(jù)。
1.3.4 高光譜數(shù)據(jù)預處理
光譜數(shù)據(jù)預處理方法主要有標準化、微分預處理及多元散射校正等[25-27]。標準化能夠消除由微小光程或樣品薄厚不均勻引起的光譜變化;微分預處理可以分辨重疊峰,辨識較小但是較為明顯的特征峰,消除背景層的干擾并提高圖像分辨率,由于該過程中會引入一定的噪聲,故不使用該方法;多元散射校正可以有效消除雞肉樣品顆粒不一致、分布不均勻所導致的散射問題,修正高光譜掃描樣本的光程誤差。因此,本研究使用標準化和多元散射校正對高光譜數(shù)據(jù)進行預處理。
高光譜圖像的采集過程中難免會帶有一定的噪聲干擾,影響圖像的質(zhì)量,進而影響模型的分類效果,因此要對采集到的圖像進行濾波,本研究采取均值濾波的方法對雞肉的彩色圖像進行預處理。
CNN的主要結(jié)構(gòu)如圖1所示,其主要由輸入層、若干個卷積層和池化層、全連接層以及輸出層構(gòu)成[28-29]。
圖1 CNN結(jié)構(gòu)Fig. 1 Structure of CNN
利用從高光譜數(shù)據(jù)中提取并經(jīng)過預處理的光譜及圖像數(shù)據(jù)建立光譜-圖像聯(lián)合的綜合CNN模型,模型結(jié)構(gòu)如圖2所示。一維光譜數(shù)據(jù)輸入到一維卷積部分,提取光譜特征;二維彩色圖像輸入到二維卷積部分,提取圖像特征。通過特征融合層,將光譜特征和圖像特征聯(lián)合起來,連接到全連接層,最后通過輸出層得出分類結(jié)果。
圖2 綜合CNN模型結(jié)構(gòu)Fig. 2 Structure of integrated CNN model
1.3.5.1 一維卷積部分
圖3 一維卷積部分結(jié)構(gòu)Fig. 3 Structure of one-dimensional convolution
經(jīng)過預處理的光譜數(shù)據(jù)長度為256,深度為1,將其作為一維卷積部分的輸入,其結(jié)構(gòu)如圖3所示。其中,設計為三層卷積是為了與二維卷積層數(shù)一致,便于對比。3 個卷積層的卷積核尺寸要與輸入數(shù)據(jù)相匹配,將卷積步長設置為1,設計多種核尺寸組合,如(9,9,9)、(9,5,9)、(9,5,7)等,將分類效果最好的尺寸組合(9,9,9)作為一維卷積部分的核尺寸,各層卷積核的數(shù)量根據(jù)經(jīng)驗設置;池化層選擇最大池化,核尺寸均為2,步長為2,即將特征圖的尺寸壓縮為原來的1/2;最后,一維卷積部分輸出結(jié)果為120 個長度為25的特征向量。
1.3.5.2 二維卷積部分
經(jīng)過預處理后的彩色圖像尺寸為66×66,深度為3,將其作為二維卷積部分的輸入,其結(jié)構(gòu)如圖4所示。其中,根據(jù)輸入的尺寸將卷積層數(shù)設置為3最佳,設置步長為1,3 個卷積層的核尺寸也設計了多種:(3×3,5×5,5×5)、(3×3,5×5,7×7)等,效果最佳的是(3×3,5×5,5×5),各層核數(shù)量根據(jù)經(jīng)驗設置;池化層選擇最大池化,核尺寸均為2×2,步長均為2,相當于將特征圖壓縮為原來的1/4;最后,二維卷積部分的輸出結(jié)果為270 張尺寸為5×5的特征圖。
圖4 二維卷積部分結(jié)構(gòu)Fig. 4 Structure of two-dimensional convolution
1.3.5.3 特征融合層
從卷積部分得到的圖像特征,其特征值的數(shù)量6 750(5×5×270)遠大于光譜特征值的數(shù)量3 000(25×120),因此在本層首先要對圖像特征進行壓縮。數(shù)據(jù)壓縮層就是一個包含3 000 個神經(jīng)元的全連接層,將6 750 個圖像特征值作為輸入,輸出個數(shù)為3 000,即為特征值數(shù)量壓縮;然后,將3 000 個光譜特征加上3 000 個圖像特征,組成長度為6 000的高光譜特征,接入到全連接層。
1.3.5.4 全連接層
其次,在實際進行教學內(nèi)容分層的過程當中,必須要綜合考慮學生的實際接受能力,并在此基礎上保證教學內(nèi)容的針對性,是每一名學生能夠有效地了解到所講解的具體內(nèi)容。
全連接層共有2 層,神經(jīng)元的個數(shù)分別設定為2 000和800,即將特征值數(shù)量進一步壓縮。為了防止過擬合,在每一層后都增加了Dropout層[30-31],其作用是將全連接層的神經(jīng)元輸出以一定概率將其暫時置零,這樣每一次訓練的都是不同的網(wǎng)絡。Dropout示意圖如圖5所示,左側(cè)為一個正常的神經(jīng)網(wǎng)絡,右側(cè)是引入Dropout層的神經(jīng)網(wǎng)絡。
圖5 Dropout示意圖Fig. 5 of Dropout
1.3.5.5 模型的主要參數(shù)
Dropout層只在訓練時起作用,其將全連接層神經(jīng)元輸出置零的概率P=1-Keep_prob,如果Keep_prob的值過小,將大大增加訓練時間;其值過大則起不到很好的防止過擬合的效果。訓練時Keep_prob的理想值為0.5,此時Dropout隨機生成的網(wǎng)絡結(jié)構(gòu)最多,實際應用中一般選擇0.5~0.8之間的值,本研究中Keep_prob設置為0.7。測試時,由于Dropout層不起作用,將Keep_prob設置為1.0。
由于Dropout層的存在,使用固定學習率會使得模型精度產(chǎn)生振蕩,不利于精度的收斂。因此,本研究使用指數(shù)衰減法,即每經(jīng)過一定的迭代周期,學習率乘以固定的衰減系數(shù),獲得指數(shù)衰減學習率[32],使后期模型的訓練更加穩(wěn)定。初始學習率為0.001,衰減率為0.96,衰減周期為10,即每訓練10 次,學習率衰減為原來的96%。
1.3.5.6 模型評價標準——準確率和損失函數(shù)
準確率是指使用測試集對訓練好的模型進行分類檢測時,分類正確數(shù)據(jù)的百分比。準確率按照公式(2)計算。
式中:acc為準確率/%;n為測試集的數(shù)據(jù)總數(shù);a為分類正確的個數(shù)。
損失函數(shù)表示預測值與實際值的不一致程度[33],損失函數(shù)越大表示不一致程度越高,模型的效果越差;反之,模型的魯棒性就越好。本研究使用交叉熵損失,損失函數(shù)按照公式(3)計算。
式中:J為損失函數(shù);N為樣本個數(shù);k為類別數(shù);ezi為類別i的網(wǎng)絡輸出指數(shù);yi為類別i的真實標簽。
根據(jù)測得的TVB-N含量和菌落總數(shù)數(shù)據(jù)以及GB 16869—2005《鮮、凍禽產(chǎn)品》[34]和GB 2707—2016《食品安全國家標準 鮮(凍)畜、禽產(chǎn)品》[35],可將雞肉品質(zhì)等級劃分為可食用和不可食用2 類,在此基礎上將雞肉品質(zhì)等級進一步劃分為新鮮、次新鮮、初級腐敗、中度腐敗和重度腐敗5 個等級,劃分依據(jù)如表2所示。根據(jù)表2中的分類標準,結(jié)合采集到的理化指標,將所有樣本分為5 類。
表 2 雞肉品質(zhì)分級標準Table 2 Chicken quality grading criteria
將分類好的數(shù)據(jù)按照5∶1的比例隨機分成訓練集和數(shù)據(jù)集。使用訓練集進行訓練,即將高光譜數(shù)據(jù)作為輸入,將分類標簽作為輸出來調(diào)試模型;使用測試集來檢驗模型的雞肉品質(zhì)分類預測精度,即將高光譜數(shù)據(jù)作為輸入預測樣本分類,然后將預測分類與實際分類進行對比。
首先,將光譜和圖像數(shù)據(jù)作為并行輸入,即將一維光譜數(shù)據(jù)輸入到一維卷積部分,將二維圖像數(shù)據(jù)輸入到二維卷積部分,對綜合CNN模型進行訓練,共訓練5 000 次;然后,去掉綜合CNN模型的二維卷積部分,得到1D-CNN模型,將一維光譜數(shù)據(jù)作為1D-CNN模型的輸入,對模型進行訓練,共訓練5 000 次;去掉其一維卷積部分,形成2D-CNN模型,將二維圖像數(shù)據(jù)作為2D-CNN模型的輸入,對模型進行訓練,共訓練5 000 次。
由于采集到的高光譜圖像中或多或少含有曝光過度點,這會對分類產(chǎn)生極大的影響,在提取目標區(qū)域后,采用光譜標準化的方法進行非均勻性校正。校正后的三維高光譜數(shù)據(jù)按照公式(4)計算。
式中:Xij為校正后的三維高光譜數(shù)據(jù)在(i,j)像元上的光譜;Dij為原始三維高光譜數(shù)據(jù)在(i,j)像元上的光譜;N為原始高光譜數(shù)據(jù)D中所有光譜的總均值;n為Dij中256 個光譜值的平均值。
處理前后的彩色圖像如圖6所示,校正前的圖像中亮點即為過曝點。
圖6 非均勻性校正效果圖Fig. 6 Rendering of non-uniformity correction
對高光譜數(shù)據(jù)進行預處理的結(jié)果如圖7所示??梢?,經(jīng)過標準化和多元散射校正的光譜,其反射特性得到保留,差異性和平均光譜得到加強。
圖7 光譜預處理效果圖Fig. 7 Raw and pretreated spectra
圖像數(shù)據(jù)預處理過程如圖8所示,經(jīng)過均值濾波的圖像雖然濾除了噪聲,但圖像也變得模糊,邊緣輪廓不明顯,因此對濾波后的圖像再進行銳化,銳化后的圖像邊緣輪廓得到了加強,雞肉的紋理更加清晰。
圖8 彩色圖像預處理效果圖Fig. 8 Rendering of color image pretreatment
表 3 實驗結(jié)果Table 3 Experimental results
使用測試集來檢驗模型精度。由表2可知:基于光譜數(shù)據(jù)的1D-CNN模型準確率為84.97%,損失函數(shù)為5.72;基于彩色圖像數(shù)據(jù)的2D-CNN模型準確率為41.60%,損失函數(shù)為33.98;基于處理后光譜數(shù)據(jù)和彩色圖像數(shù)據(jù)的綜合CNN模型準確率達93.58%,損失函數(shù)為0.30。實驗結(jié)果證明了CNN結(jié)合高光譜技術在雞肉品質(zhì)檢測中的可行性,并且聯(lián)合使用雞肉的光譜和圖像數(shù)據(jù)模型準確率更高,損失函數(shù)更小,其分類效果優(yōu)于使用單一數(shù)據(jù)的分類模型,同時也證明光譜數(shù)據(jù)所包含的雞肉品質(zhì)信息遠高于彩色圖像數(shù)據(jù)。另外,基于預處理之前數(shù)據(jù)的綜合CNN模型準確率為75.10%,損失函數(shù)為9.51,說明對輸入數(shù)據(jù)進行預處理是十分必要的,這一過程能夠有效提高模型的精度。
以雞肉為研究對象,結(jié)合國家生化檢驗標準(TVB-N含量和菌落總數(shù)),根據(jù)高光譜數(shù)據(jù)的圖像、光譜等信息,建立CNN模型,對雞肉進行品質(zhì)分類研究。其中,綜合雞肉高光譜數(shù)據(jù)中的光譜及圖像信息的綜合CNN模型,分類效果最好,準確率和損失函數(shù)分別達93.58%和0.30,而基于光譜信息的1D-CNN模型和基于圖像信息的2D-CNN模型的準確率分別為84.97%和41.60%,損失函數(shù)分別為5.72和33.98。這表明綜合使用雞肉的光譜和圖像數(shù)據(jù),雞肉的內(nèi)、外特征得到了充分利用,使信息更加豐富,有效提高了模型的精度;并且,光譜數(shù)據(jù)可以提供比圖像數(shù)據(jù)更多的有效信息,在雞肉品質(zhì)信息中占比重更大,對雞肉品質(zhì)檢測的影響更大;另外,使用未經(jīng)過預處理數(shù)據(jù)的綜合CNN模型準確率為75.10%,略低于基于經(jīng)過預處理數(shù)據(jù)的綜合CNN模型,說明CNN雖然省去了人工特征提取的過程,可以直接將原始數(shù)據(jù)作為輸入進行實驗,但是對數(shù)據(jù)進行預處理仍然是必不可少的,這一過程可以使模型得到優(yōu)化,從而更有效地對雞肉品質(zhì)進行快速、無損的分類檢測。