李鵬松, 李俊達, 吳良武, 胡建平
(1. 東北電力大學 理學院, 吉林 吉林 132012; 2. 大連測控技術研究所, 遼寧 大連 116013)
在計算機視覺領域, 圖像識別問題一直備受關注[1]. 卷積神經(jīng)網(wǎng)絡(convolutional neural network)是完成圖像識別任務的主要方法之一. 為達到對圖像更好的識別效果, 研究者們開始不斷改進卷積神經(jīng)網(wǎng)絡的結構, 在改進過程中卷積神經(jīng)網(wǎng)絡的深度和參數(shù)量不斷增加[2-4], 使卷積網(wǎng)絡產(chǎn)生兩點不足[5-7]: 1) 網(wǎng)絡的識別性能過分依賴于數(shù)據(jù)量; 2) 網(wǎng)絡在訓練過程中, 收斂速度慢, 計算成本高. 數(shù)據(jù)增強和減少參數(shù)量是解決卷積神經(jīng)網(wǎng)絡存在不足的有效方法, 將兩者結合用于改進卷積網(wǎng)絡, 可使網(wǎng)絡在數(shù)據(jù)量較少的任務中取得理想的識別性能[8].
均值迭代閾值分割法是一種經(jīng)典的閾值分割方法, 因其運算量小而被廣泛應用[9]. 由于卷積神經(jīng)網(wǎng)絡無法直接提取圖像目標的特征, 只能逐漸聚焦于圖像目標[10], 因此, 卷積神經(jīng)網(wǎng)絡需大量的訓練數(shù)據(jù)和參數(shù), 用以區(qū)分圖像的目標和背景. 均值迭代閾值分割法可增強圖像目標, 使卷積神經(jīng)網(wǎng)絡在池化操作中舍棄無用的背景特征, 降低圖像背景對識別效果的干擾, 即通過閾值分割法簡化識別任務, 進而減少卷積神經(jīng)網(wǎng)絡所需的訓練數(shù)據(jù)量和參數(shù)量. AlexNet是深度最小的卷積神經(jīng)網(wǎng)絡之一, 因其參數(shù)較少被廣泛應用于實際應用中[11]. 但在數(shù)據(jù)量較小時, AlexNet識別準確度較低且收斂速度較慢, 其原因是: 1) 卷積核步長過大, 使大量圖像特征丟失, 增加了所需的訓練數(shù)據(jù)量; 2) 池化步長較短, 使許多特征被重復選擇, 浪費了有效計算資源.
根據(jù)上述分析, 本文提出一種基于均值迭代閾值分割法和卷積神經(jīng)網(wǎng)絡的圖像識別算法. 首先用均值迭代閾值分割法區(qū)分圖像的目標和背景, 并擴大兩者灰度值之間的差異; 然后改進卷積神經(jīng)網(wǎng)絡適應處理后的數(shù)據(jù), 并識別測試集數(shù)據(jù); 最后, 計算出測試集的識別準確度和損失值, 作為評價算法識別性能的指標. 本文算法流程如圖1所示.
圖1 本文算法流程Fig.1 Flowchart of proposed algorithm
均值迭代閾值分割法的基本思想是利用圖像的目標和背景在灰度特性上的差異, 把圖像視為具有不同灰度級兩類區(qū)域的組合, 通過閾值T把像素劃分為兩類----目標和背景.
均值迭代閾值分割法步驟如下:
1) 初始化閾值, 本文使用圖像的灰度平均值;
2) 用閾值T將圖像的像素分為G1和G2兩部分,G1所包含的灰度值大于T, 否則屬于G2;
3) 分別計算G1和G2中所有像素的灰度均值μ1和μ2;
4) 更新閾值T=(μ1+μ2)/2;
5) 重復步驟2)~4), 直至相鄰兩次的均值變化小于限定值;
6) 用最后確定的閾值T′進行分割,G1為目標,G2為背景.
圖2為利用均值迭代閾值分割法進行區(qū)域分割的實例.
圖2 均值迭代閾值分割法分割實例Fig.2 Example of mean iteration threshold segmentation method
Krizhevsky等[11]建立了AlexNet, 其特點是參數(shù)量較少, 運算成本較低, 其網(wǎng)絡結構如圖3所示. AlexNet的首層卷積核步長較大、 池化操作步長較小, 使網(wǎng)絡在卷積核提取特征時丟失了部分特征, 在池化操作選擇特征時重復選擇部分特征. 同時, AlexNet全連接層參數(shù)量為58 621 955, 約占總參數(shù)量的96%, 大部分運算成本集中在全連接層. 因此, 本文主要針對卷積神經(jīng)網(wǎng)絡嚴重依賴數(shù)據(jù)量的問題進行改進, 目標是使卷積神經(jīng)網(wǎng)絡在訓練數(shù)據(jù)較少時也可達理想的識別效果. 因此, 本文以層數(shù)和參數(shù)較少的AlexNet為基礎改進卷積神經(jīng)網(wǎng)絡, 改進后的卷積網(wǎng)絡結構如圖4所示, 其中N為圖像邊長,n為圖像種類數(shù).
圖3 AlexNet結構示意圖Fig.3 Structure diagram of AlexNet
圖4 改進的卷積網(wǎng)絡結構示意圖Fig.4 Structure diagram of improved convolutional neural network
本文算法改進主要有以下幾點:
1) 在卷積層上, 為提取圖像更多的局部特征, 增加了前兩層的卷積核個數(shù), 并縮小了前兩層卷積核的尺寸和步長;
2) 在池化層上, 為防止在選擇特征時出現(xiàn)重復, 將池化步長增加為2;
3) 在全連接層上, 圖像經(jīng)過均值迭代閾值分割后, 無效圖像像素數(shù)量大幅度減少, 因此, 本文將全連接層所需的參數(shù)量降低了50%以上.
本文以減少算法參數(shù)量和所需的訓練數(shù)據(jù)量為目的, 結合均值迭代閾值分割法與改進后的卷積神經(jīng)網(wǎng)絡對圖像進行識別. 圖像識別算法步驟如下:
1) 用均值閾值迭代法求出圖像目標和背景的分界值, 區(qū)分背景和目標;
2) 處理背景像素的灰度值;
3) 用處理后的圖像訓練卷積神經(jīng)網(wǎng)絡模型, 并計算每次迭代結果的識別準確度和損失誤差;
4) 根據(jù)卷積神經(jīng)網(wǎng)絡的收斂情況確定模型參數(shù), 輸出測試集的識別準確度和損失誤差.
均值迭代閾值分割法主要用于區(qū)分圖像的背景和目標, 處理背景像素的灰度值以擴大圖像目標與背景灰度值之間的差異; 卷積神經(jīng)網(wǎng)絡主要用于圖像的識別, 網(wǎng)絡通過卷積核提取圖像特征, 通過池化層選擇特征. 均值迭代閾值分割法可減少卷積神經(jīng)網(wǎng)絡的參數(shù)及所需的數(shù)據(jù)量, 其原理如下:
1) 被弱化后的背景特征因其激活值較小極易被池化操作濾除, 因此, 卷積神經(jīng)網(wǎng)絡的權重更新主要受圖像目標影響, 網(wǎng)絡只需少量樣本即可提取圖像目標的特征, 從而減少網(wǎng)絡所需的訓練數(shù)據(jù)量和參數(shù)量;
2) 均值迭代閾值分割法減少了無效像素的數(shù)量, 因此可減少全連接層所需的參數(shù)量, 由于卷積神經(jīng)網(wǎng)絡的參數(shù)主要集中在全連接層, 因此本文即使增加了少量卷積核的個數(shù), 但總的參數(shù)量仍降低50%以上.
本文算法中的卷積神經(jīng)網(wǎng)絡主要由卷積層、 池化層和分類器組成[12]. 卷積層計算公式為
(1)
(2)
池化層主要對每層得到的特征進行選擇, 本文采用最大池化對特征進行選擇. 池化后的特征將作為分類器的輸入, 對圖像進行識別. 本文使用的分類器為Softmax, 計算公式為
(3)
其中:zj為輸出層第j個神經(jīng)元的輸出值;pij為第i個樣本屬于第j類的概率值. 本文算法使用梯度下降法訓練卷積神經(jīng)網(wǎng)絡, 通過不斷迭代更新權重, 其權重更新規(guī)則為
(4)
實驗在Tensorflow 1.5.0上實現(xiàn), 最大迭代次數(shù)為500, 學習率為0.000 1, 參數(shù)的初始值設為服從均值為0的高斯分布. 本文用數(shù)據(jù)的平均識別準確率評價算法的識別準確度, 用數(shù)據(jù)的平均損失值評價算法的識別誤差, 用收斂速度評價算法的運算成本[14]. 平均識別準確率和平均損失值的計算公式分別為
(5)
(6)
本文使用3組數(shù)據(jù)集對算法進行驗證, 其中訓練集占80%, 測試集占20%, 數(shù)據(jù)集的基本信息列于表1. 分別用AlexNet,VGGNet和本文算法對3組數(shù)據(jù)集進行實驗, 檢驗本文算法的識別性能. 選擇AlexNet和VGGNet作為對比算法的原因: AlexNet和VGGNet分別為深度學習中深度最小和寬度最小的卷積神經(jīng)網(wǎng)絡之一, 參數(shù)量小于其他卷積神經(jīng)網(wǎng)絡[15-19], 因此, 相比傳統(tǒng)卷積神經(jīng)網(wǎng)絡更適合樣本數(shù)較少的識別任務.
表1 實驗所用數(shù)據(jù)集基本信息
用基于均值迭代閾值分割法和卷積神經(jīng)網(wǎng)絡的圖像識別算法分別識別Dog&Cat,Cifar-10和 Corel-1000數(shù)據(jù)集, 實驗結果列于表2. 由表2可見, 本文算法的測試集平均準確率分別約為98.8%,96.2%,97.5%, 具有較高的平均識別準確率, 驗證了算法的優(yōu)越性. 在Dog&Cat數(shù)據(jù)集上, 算法的平均準確率最高, 平均損失最小, 其原因是算法類別數(shù)較少, 識別任務簡單. 本文算法識別效果符合客觀規(guī)律, 驗證了算法的合理性: 在Cifar-10數(shù)據(jù)集上, 算法的平均準確率最低, 平均損失最大, 其原因是圖像尺寸相比于卷積核尺寸較小, 但識別結果并未因為結構問題出現(xiàn)巨大差異, 體現(xiàn)了算法在數(shù)據(jù)量不足識別任務中的普適性; 在Corel-1000數(shù)據(jù)集上, 算法的平均準確率與平均損失均居中等. 本文算法在3個數(shù)據(jù)集上的平均準確率與平均損失雖然不同, 但均大于人眼的識別準確率(94.9%), 進一步驗證了該算法的優(yōu)越性.
表2 訓練結果隨迭代次數(shù)的變化
為進一步評價算法的識別性能, 分別使用AlexNet和VGGNet對3組數(shù)據(jù)集進行識別. 將在測試集中出現(xiàn)的最高平均準確率作為算法最終的識別準確率, 將達到最終平均識別準確率時的最小平均損失值作為算法最終的平均損失值, 識別結果列于表3. 由表3可見: 在平均準確率與損失誤差方面, 本文算法優(yōu)于AlexNet和VGGNet; 在Dog&Cat數(shù)據(jù)集上, 本文算法的平均準確率比AlexNet和VGGNet分別高3.8%和1.3%, 平均損失值分別低0.176和0.053; 在Cifar-10數(shù)據(jù)集上, 本文算法的平均準確率比AlexNet高3.7%, 平均損失值低0.088; 本文算法的平均準確率比VGGNet高2.5%, 但本文算法的平均損失值低于VGGNet; 在Corel-1000數(shù)據(jù)集上, 本文算法的平均準確率比AlexNet和VGGNet分別高3.7%和6.2%, 平均損失值分別低0.116和0.122. 平均準確率的提升和平均損失值的降低, 進一步說明本文算法在樣本數(shù)較少的情況下識別性能優(yōu)于傳統(tǒng)卷積神經(jīng)網(wǎng)絡, 對數(shù)據(jù)量的依賴程度更低.
表3 不同算法實驗結果對比
卷積神經(jīng)網(wǎng)絡的收斂速度直接決定網(wǎng)絡的訓練時間, 快速收斂的網(wǎng)絡只需較少的迭代次數(shù)即可確定網(wǎng)絡的參數(shù), 進而節(jié)省運算成本. 因此, 本文比較了3種算法在不同數(shù)據(jù)集上的收斂速度, 結果如圖5所示, 其中各算法的收斂點(首次到達最終平均識別準確率的點)用三角形標記.
圖5 測試集平均準確率對比Fig.5 Comparison of average accuracy on test set
由圖5(A)~(C)可見: 在Dog&Cat數(shù)據(jù)集上, 本文算法在迭代150次時收斂, 識別準確度基本不變, 而AlexNet和VGGNet分別在200次和230次迭代時逐漸收斂, 同時, AlexNet和VGGNet在訓練過程中, 平均準確率一直出現(xiàn)明顯波動, 不利于網(wǎng)絡參數(shù)的最終確定; 在Cifar-10數(shù)據(jù)集上, 本文算法在280次迭代時收斂, AlexNet在340次迭代時收斂, VGGNet在380次迭代附近收斂, 3種算法的收斂速度均較慢, 但本文算法仍比AlexNet和VGGNet的收斂速度快; 在Corel-1000數(shù)據(jù)集上, AlexNet和VGGNet分別在310次和330次時收斂, 本文算法在第260次迭代時收斂. 因此, 本文算法的收斂速度更快、 平均準確率更穩(wěn)定、 識別效果更好, 進一步驗證了本文算法具有較好的識別性能, 可用于樣本數(shù)量不足時的識別任務. 由圖5(D)可見: 算法在Corel-1000數(shù)據(jù)集和Dog&Cat數(shù)據(jù)集上具有較好的識別效果, 這是由于這兩個數(shù)據(jù)集的背景區(qū)域更復雜, 均值迭代閾值分割法可有效發(fā)揮作用; 算法在Cifar-10上的識別性能改進不顯著, 這是由于卷積網(wǎng)絡的前兩層卷積核尺寸和步長相比于圖像尺寸過大, 提取的信息相對較少; 雖然3組數(shù)據(jù)背景的復雜程度不同, 但本文算法的識別效果仍較理想, 可用于樣本數(shù)量不足時的識別任務. 因此, 本文算法適用于背景區(qū)域復雜、 圖像尺寸較大、 樣本數(shù)量不足的圖像識別問題.
綜上所述, 針對傳統(tǒng)卷積神經(jīng)網(wǎng)絡嚴重依賴數(shù)據(jù)量的問題, 本文提出了一種基于均值迭代閾值分割法和卷積神經(jīng)網(wǎng)絡的圖像識別算法. 在Dog&Cat,Cifar-10和Corel-1000數(shù)據(jù)集上的測試結果表明, 該算法對數(shù)據(jù)量的依賴程度較小, 在樣本數(shù)量不足的圖像識別任務中仍有較好的識別性能, 比傳統(tǒng)卷積神經(jīng)網(wǎng)絡有更高的識別準確度、 更低的損失值和更快的收斂速度.