許偉棟,趙忠蓋
(江南大學輕工過程先進控制教育部重點實驗室,江蘇 無錫 214000)
中國是馬鈴薯資源大國,年種植面積和產量均位于世界前列[1]。馬鈴薯的經濟效益與馬鈴薯深加工業的水平息息相關,而去除有表面缺陷的馬鈴薯是實現馬鈴薯深加工的前提。目前,中國馬鈴薯表面缺陷檢測行業大都采用人工檢測方法,該方法存在效率低、主觀性強、成本高等缺點[2]。機器視覺檢測技術具有功能多、人工干預少、非接觸、精度高等優點[3],能很好地代替人來進行檢測。因此近年來,基于機器視覺的馬鈴薯表面缺陷檢測方法逐漸成為人們關注的焦點[4]。
Hassan[5]選取HSI三種顏色特征參數,結合馬鈴薯缺陷物理特征,人工設定閾值,對分類器進行訓練,實現馬鈴薯表面缺陷檢測。但是,該方法需要人工確定閾值,魯棒性和移植性較低。李錦衛等[6]采用快速灰度截留法分割出馬鈴薯表面疑似缺陷區域,并選擇面積比率和十色比率作為缺陷判別特征,對分割出的深色區域采用閾值法進行缺陷識別。但是,該方法只能檢測黃色薯皮的馬鈴薯,具有一定的局限性。Raz等[7]利用圖像分割算法對馬鈴薯表面缺陷區域進行提取,然后提取顏色特征訓練SVM分類器,對馬鈴薯圖片各像素進行分類,缺陷識別準確率達95%左右。Barnes等[8]提出基于機器視覺的像素級分類器的馬鈴薯表面缺陷檢測方法,該方法將馬鈴薯與背景分割后,首先提取與給定像素區域的顏色和紋理相關的候選特征集合,然后使用自適應增強算法(Adaptive Boosting,AdaBoost)自動選擇最佳特征,用于檢測馬鈴薯表面缺陷。但是,該方法分類準確率有待提高。現有研究雖然取得一定成果,但是傳統檢測方法均采用“檢測目標區域分割-人工特征提取和描述-分類算法識別”的模式,馬鈴薯特征的好壞對分類器性能有著至關重要的影響,而馬鈴薯生長環境復雜,缺陷種類繁多且部分缺陷目標非常細微,設計并提取好的特征絕非易事。因此,本試驗研究了采用卷積神經網絡自動提取馬鈴薯表面特征并利用支持向量機(Support Vector Machine, SVM)完成分類的新方法。
近年來,攜著“深度學習”之勢,神經網絡重新歸來,再次成為最強大的機器學習算法之一。卷積神經網絡(Convolution Neural Networks,CNN)是神經網絡的延伸,它的權值共享和稀疏連接特性使之更類似于生物神經網絡,不僅降低了網絡模型的復雜度,減少了權值的數量,而且直接將圖像作為網絡的輸入,避免了傳統識別算法中復雜的特征提取和數據重建過程[9]。當前CNN已被廣泛應用于各圖像分類問題中。Faghih-roohi等[10]采用深度卷積神經網絡檢測鋼軌表面缺陷,比較了不同大小和激活函數下的不同網絡體系結構的效果,試驗結果表明,深度卷積神經網絡的分類準確率達93.04%。余永維等[11]針對建立射線無損檢測智能化信息處理平臺的需求,提出一種基于卷積神經網絡和徑向基網絡的智能識別方法,該方法在精密焊件射線圖像中識別缺陷率達91%,有較高的準確率和較好的適應性。劉明等[12]為了解決傳統方法中T波檢測困難等問題,提出基于卷積神經網絡的T波分類算法,在MIT-BIH QT心電數據庫上進行測試,算法準確率達99.91%,能夠識別五類不同的T波形態。
本試驗提出基于改進的卷積神經網絡和支持向量機模型的馬鈴薯表面缺陷檢測新方法。首先利用機器視覺系統獲得馬鈴薯圖像,訓練采用包含1×1卷積層和dropout層的CNN,然后利用全連接層輸出的特征向量訓練分類性能更好的SVM來完成缺陷檢測。該方法通過網絡對圖像數據的學習,能得到馬鈴薯表面本質特征,克服了傳統方法中人工提取特征和特征描述的局限性,將特征提取和模式分類合二為一,為馬鈴薯等農產品表面缺陷檢測開辟了新思路。
卷積神經網絡是普通神經網絡的延伸,受到了早期延時神經網絡(TDNN)的影響[13]。CNN是第一個真正成功訓練多層網絡結構的學習算法,每層由多個二維平面組成,每個平面由一些具有學習能力的權值和神經元構成。CNN作為一個深度學習架構的提出是為了最小化數據的預處理要求。在CNN中,圖像的一部分(局部感受區域)作為層級結構的最低層的輸入,信息依次傳輸到不同的層,通過多層處理,逐漸將初始的“低層”特征表示轉化為“高層”特征表示后,用“簡單模型”即可完成復雜的分類等學習任務[14]。目前,CNN已在語音分析和圖像識別領域取得重大成果[15-16]。
典型的CNN模型由輸入層、卷積層、池化層、全連接層和輸出層構成,如圖1所示。
卷積層是特征提取層,增強原始信號特征的同時降低了噪聲。每個神經元的輸入都和前一層(輸入層或采樣層)的局部感受野相連,卷積核在該局部感受野上滑動來提取特征,形成特征圖,該局部特征被提取后,它與其他特征間的位置關系也相應確定;池化層為特征映射層,每個特征映射為一個平面,平面上所有神經元的權值相等。根據局部相關性原理對上一層特征進行子抽樣,既減小了圖像的空間大小,也控制了過擬合。在全連接層中,神經元與前一層的所有神經元相連接,所有的結點由一些帶權重的值連接起來,組成圖像的特征向量,最后在輸出層完成目標的分類。

圖1 典型CNN結構圖Fig.1 Structure diagram of typical convolution neural networks(CNN)
圖像的空間聯系是局部的,如同人是通過一個局部的感受野去感受外界圖像一樣,每一個神經元都不需要對全局圖像做感受[17]。如圖1所示,CNN中每個隱層內的神經元只與前一層的局部區域相連接,最后在更高層,將這些感受不同局部區域的神經元想結合,得到圖像的全局信息。此外,隱層中每個特征圖上的神經元共享同樣的權值。
綜上所述,CNN通過將局部感受、權值共享以及空間亞采樣這三種結構思想結合既減少了訓練的權重個數,降低了算法的復雜度,縮短了算法運行時間,又使得網絡獲得了某種程度的位移不變性。
圖1的CNN模型在分類性能上已經優于傳統方法,為了進一步提高算法效率和準確率,對其進行了改進。針對馬鈴薯搭建的CNN-SVM改進模型如圖2所示,該模型包括輸入層,依次連接的三組卷積層、1×1卷積層、池化層,以及Dropout層、全連接層和SVM分類層。可將該模型分為特征提取和模式分類兩個模塊。
3組依次相連的卷積層、1×1卷積層和池化層構成模型的特征提取模塊。在卷積層內,卷積核在與上一層相連接的局部感受野上滑動,進行卷積運算,完成特征提取,并通過激活函數形成該卷積核的特征圖。輸出如式(1)所示:
(1)

在CNN中,由于圖像包含3個維度,所以1×1卷積層能高效地進行3維點積,起到降維和減少計算量的作用。
池化層使用某一位置相鄰輸出的總體統計特征來代替網絡在該位置的輸出,實現對特征圖像素的二次挖掘,既減少了模型參數總量,又保留了激活值最大的圖像特征。池化層緊跟卷積層的特殊結構,使網絡具有更高的魯棒性。池化層計算公式如式(2)所示:
xm=down(xl-1)
(2)
其中,down(·)為下采樣函數。
在圖2所示模型中,通過合理設計卷積核尺寸、特征圖個數、全連接層結點數等參數來構建網絡。模型部分參數和輸出尺寸如表1所示。

圖2 馬鈴薯表面缺陷檢測模型Fig.2 Detection model of potato surface defect
表1部分CNN模型參數
Table1PartialparametersofCNNmodel

層特征圖個數卷積核尺寸參數個數輸出尺寸卷積層C1645×5×34 864227×227×64卷積層C2481×1×643 120227×227×48池化層S3482×2×480114×114×48卷積層C41285×5×48153 728114×114×128卷積層C5901×1×12811 610114×114×90池化層S6902×2×90057×57×90卷積層C72565×5×90576 25657×57×256卷積層C81801×1×25646 26057×57×180池化層S91802×2×180029×29×180Dropout D10180-029×29×180全連接層F11--75 690 5001×500
本試驗模型輸入是 227×227像素的RGB彩圖。C1和C4層采用 5×5卷積核與圖像進行卷積,并使用ReLU作為激活函數得到卷積層的輸出,部分樣本經C1層卷積后輸出(圖3)。C2和C5層采用 1×1卷積核,通過降低卷積核的數量,達到減少網絡中參數總量的目的。池化層均使用卷積核尺寸為 2×2、步長為2的最大值池化方式。此外,應用Dropout技術在訓練過程中每次更新參數時隨機斷開一定比率的神經元,達到減少過擬合和提高網絡泛化能力的效果[18],根據經驗法則,設置模型Dropout概率值為0.5;在3組卷積和池化之后,連接包含參數最多的全連接層,輸出一個500維的特征向量,并作為支持向量機的輸入,訓練得到SVM分類器。最后在測試集圖像上驗證CNN-SVM模型的分類性能。
卷積神經網絡通過學習大量帶標簽的圖像數據,提取出從簡單到復雜,從局部到全局的深度特征,形成一種端到端的學習結構和映射關系,最終實現模式分類的目標。CNN的訓練過程可分為前向傳播和反向傳播兩個階段。
(1)前向傳播階段
a.采用一些考慮非線性映射影響后的均值為0且服從高斯分布的不同小隨機數作為待訓練權值和偏置的初始值[19]。
b.將訓練樣本輸入初始化參數后的網絡,按照圖2中的網絡從左到右層層運算,得到模型預測輸出。
(2)反向傳播階段
a.按式(5)計算預測類別與實際類別間的誤差。
b.以最小化代價函數為原則,采用優化算法反向傳播,更新網絡中的權重ω和偏差b。對C1、C4和C7層中各10個卷積核學得參數進行可視化,結果如圖4所示。
(3)
(4)
其中,α為學習率;ε為一個常數;ω和b為要迭代更新的卷積核權重和偏置;Vdω和Vdb為經過指數加權平均后的導數均值;Sdω和Sdb為經過指數加權平均后的導數平方。
(5)
其中,E為交叉熵損失函數;k和N為類別和樣本個數;hj是模型對第j類的預測輸出;hyi是第i個樣本實際類別對應的預測輸出。
本試驗模型采用Adam[20]優化算法進行參數更新,具體公式見式(3)、(4)。該算法能減小批量梯度下降過程中梯度在垂直方向上的來回波動量,并加大在橫軸方向上的更新步長,加快收斂速度。
模型訓練結束后,將參數保存,能避免后期加入新數據時重新訓練,減少計算成本。

圖3 C1層輸出可視化Fig.3 Visualization of the output of C1 layer
試驗用馬鈴薯樣本均采購于無錫朝陽農貿市場。采集圖像前,對馬鈴薯進行簡單清洗,然后通過機器視覺實驗平臺采集馬鈴薯RGB彩色圖像。部分馬鈴薯樣本如圖5所示。
在機器視覺和深度學習任務中,更多的圖像數據能幫助模型學習更復雜的函數,提升算法的性能,為了節約成本,數據增廣是一種經常使用的技術。本試驗采用垂直鏡像對稱,隨機裁剪和彩色轉換3種方法來實現數據增廣[21]。樣本數據增廣效果如圖6所示。
本試驗通過GPU加速技術進行模型訓練與預測,試驗環境配置有GPU:Nvidia TITANX,內存:32G;軟件,操作系統:Linux,開發工具:Python。

圖5 部分試驗樣本圖Fig.5 The experimental samples

圖6 數據增廣結果Fig.6 The results of data augmentation
試驗圖像數據由機器視覺平臺和數據增廣方法所得圖片組成。共采用8 000張馬鈴薯彩色圖片作為數據集,按 6∶2∶2的比例劃分訓練集(4 800張)、驗證集(1 600張)和測試集(1 600張),分別用于模型訓練、模型參數與結構評估、模型性能評估。根據NY/T1006-2006《馬鈴薯等級規格》國家農業行業標準[22],對數據集中的馬鈴薯圖片進行類別標注,無缺陷和有缺陷(包括綠皮、機械損傷、發芽、腐爛和蟲咬五類較為常見缺陷)馬鈴薯分別用0和1標識。卷積神經網絡需要輸入相同尺寸的圖片,因此將樣本圖片尺寸縮放為 227×227×3。
在圖像處理中,圖像像素值可看成是一種特征,將圖像像素減去像素均值能去除圖像中的共有部分,凸顯個體差異。因此,通過計算訓練集圖像像素均值,分別將訓練集和測試集圖像減去該均值來使數據中心化。
卷積神經網絡有兩類參數,一類是基礎參數,如卷積層或全連接層的權重和偏置項,另一類是超參數,如網絡訓練時的學習率、學習次數等。卷積神經網絡要取得好的性能,需要選擇一組好的超參數。因此,試驗中對網絡訓練時的學習率和訓練次數這2個超參數進行了選擇。
4.3.1 學習率選擇 在模型訓練過程中,學習率對算法的收斂有重要影響。學習率太大,算法會在局部最優點附近來回跳動,不會收斂于最優點;但如果學習率太小,會使收斂速度變慢[23]。為了研究CNN模型訓練時學習率與模型準確率的關系,在固定模型訓練次數為30的條件下,觀察不同學習率下模型準確率的變化情況(表2)。試驗結果表明,當學習率為10-3時,驗證準確別率僅為70.3%,而學習率為10-4時,準確率最高,且隨著學習率的降低,訓練時間會逐漸變長。因此,試驗在保證準確率的基礎上,為了避免訓練時間過長,選擇10-4作為模型訓練時的學習率。
表2不同學習率下網絡收斂時的損失和準確率
Table2Lossandaccuracyatdifferentlearningrates

學習率損失測試集準確率(%)驗證集準確率(%)10-35.382×10-470.371.910-44.980×10-498.298.810-51.035×10-196.496.910-64.938×10-196.997.2
4.3.2 訓練次數選擇 為了研究試驗模型訓練次數對樣本準確率的影響情況,在學習率設為10-4的條件下,通過改變訓練次數來觀察模型準確率的變化情況(表3)。試驗發現,當訓練集訓練次數為1時,由于訓練次數太少,導致模型訓練不充分,沒有學習到足夠多的特征,驗證集準確率僅有59.3%,隨著訓練次數的提升,準確率逐步提高,當訓練次數為30時,準確率達到98.1%,網絡模型已基本學習到位,此時再繼續增加訓練次數,準確率基本不變,但訓練時間會逐步增加。因此,綜合考慮訓練速度與準確率的關系,把訓練次數設為30。
由于在CNN訓練時,卷積操作是一個對線性不可分數據增加其線性可分程度的過程[24],傳統模型中采用softmax算法需考慮全局數據,分類超平面會受任意樣本的干擾,相比之下,SVM分界面只依賴于部分支持向量樣本的優點就得到了體現。此外,SVM在處理小樣本時,有較好的性能。因此,試驗中訓練好CNN后,取出模型F11層中的特征向量,并利用其訓練SVM得到分類器。
表3訓練次數與準確率的關系
Table3Relationshipbetweentrainingtimesandaccuracy

訓練次數 1510203050100測試集準確率(%)59.394.295.696.798.198.198.2驗證集準確率(%)62.595.096.997.598.898.998.9
試驗中,采用網格搜索法對SVM核函數以及參數進行對比選擇,其中候選核函數為:多項式、線性、高斯徑向基核函數;參數搜索范圍為:γ∈(0,50)、C∈(1,200)、d∈(1,10),其中γ為徑向基函數的參數、C為懲罰因子、d為多項式函數的階數。
根據驗證集準確率選擇出最優核函數和參數組合,并用測試集評估模型性能(表4)。
表4SVM參數網格搜索結果
Table4Theresultsofgridsearchforsupportvectormachine(SVM)parameter

項目γC測試集準確率(%)高斯徑向基核函數1199.20
將本試驗方法與文獻[7]、文獻[8]和常規CNN模型的結果進行對比(表5)。試驗結果表明,本試驗算法在測試集上準確率最高,因為本試驗模型是一種基于“端到端”思想的新方法,不僅避免了缺陷區域的分割,而且無需人工特征提取,直接學習(從原始輸入數據到期望類別的映射)。與“分治”策略下的傳統方法相比,“端到端”的方式更能獲得全局最優解。
多層模型下的CNN更關注圖像局部信息的改變,能提取比手工設計更好的特征,而支持向量機比softmax分類器更適合本試驗圖像數據的分布,也提升了算法的性能。
表5CNN+SVM算法與其他算法對比
Table5ComparisonamongCNN+SVMandotheralgorithms

馬鈴薯表面缺陷分類方法 測試集準確率(%)特征提取+KNN分類識別[7]91.25顏色特征提取+SVM分類識別[7]95.00邊緣、紋理相關特征集+AdaBoost[8]89.60常規CNN分類識別98.10改進CNN+SVM分類識別99.20
馬鈴薯表面缺陷檢測技術在提升馬鈴薯外部品質、經濟價值和市場競爭力以及防范食品安全等方面有著重要的作用,是農產品檢測中的一個重要研究方向。傳統檢測方法依賴于人工提取特征,該過程費時費力,并且馬鈴薯多變的生長環境導致其表面缺陷種類多樣化和部分缺陷目標細微化,設計并提取好的特征較困難。本試驗提出基于改進的卷CNN+SVM模型,該模型能自動提取馬鈴薯圖像特征,完成分類,利用1×1卷積層和dropout層改進模型,達到加快算法運行時間和減少模型過擬合的效果。在測試集上對試驗方法進行評估,試驗結果表明,本試驗方法能克服現有研究中人工設計和提取特征費時費力等問題,能夠檢測有缺陷和無缺陷兩類馬鈴薯,準確率達99.20%。在接下來的研究中,一方面要擴充樣本集,進一步發揮CNN對大數據處理的優勢,另一方面要尋找更有效的方法,加快模型訓練速度。