計算機視覺技術是指利用相機與電腦連接成的一個系統,通過對目標的檢測、追蹤、測量和進一步的預處理得到能夠代表圖像特徵的信息,再對這些特徵信息通過計算機算法進行識別[1-2]。在選煤行業,隨着選煤廠智能化水平的提高,對各個生產崗位的要求也更加嚴格,同樣浮選車間的控制也要求精煤灰分儘可能穩定[3]。前人在浮選泡沫圖像的識別問題上已經做了大量的研究,例如,Kaartinen[4]在鋅粗選浮選槽中進行基於機器視覺的浮選控制實驗,在監控系統中,使用的泡沫圖像特徵主要包括泡沫顏色、泡沫坍塌率、氣泡尺寸和一些主要的藥劑的添加量,基於這些泡沫圖像特徵對生產工況進行分類。Brown[5]等設計了一個基於泡沫表面視覺特徵的浮選過程控制器來控制浮選泡沬流速和液位、起泡劑添加量、通風量3個浮選操作變量。結果表明,當浮選流速能夠很好地控制的時候,浮選性能也能穩定下來。中南大學的桂衞華、楊春華等[6]根據大量的樣本和實驗,利用機器視覺技術和圖像處理技術,設計了一套銅浮選泡沬圖像監控系統。利用BP神經網絡建立相關指標的預測模型,指導銅浮選生產過程。洪昇[7]研究建立了選礦過程中在線監控系統,採用了支持向量機(SVM)的預測方法,進行浮選回收率預測,此方法顯著提高了浮選指標的預測精度和模型的泛化能力,使其具有更好的應用性。可以看出浮選車間的自動化發展是當前研究的熱點問題。
由於浮選車間工況複雜[8-9],精礦的品位常常受入料性質、加藥量和工人操作等多方面條件的影響,應用在現場的識別精度並不是很高。因此,一種準確可靠的預測算法成為當前研究的重點。傳統的圖像識別技術更加適應於有明顯特徵背景簡單的情況[10-11],而選煤廠浮選車間工況複雜,煤泥浮選泡沫圖像特徵單一,並且捕捉到的圖像由於現場特殊環境的干擾往往帶有較大的噪聲,這樣給浮選車間智能化的進程帶來嚴重阻礙。
將卷積神經網絡(CNN)[12]和支持向量機(SVM)[13]結合,提出一種混合的煤泥浮選泡沫圖像識別算法,通過CNN自動提取圖像特徵,再將提取到的特徵作為SVM的輸入預測浮選實時灰分,通過調整網絡參數和結構,取得了不錯的分選結果。同時面對現場複雜的的環境,該混合算法具有較高的識別精度和較強的魯棒性(即算法對數據變化的容忍度)。
2 CNN-SVM模型概述
卷積神經網絡(CNN)是一種包含多層的深度卷積神經網絡模型,它由自動特徵提取部分和全連接層組成,特徵提取部分包括卷積層和池化層兩部分,通過卷積和池化2種過程的迭代從煤泥浮選泡沫圖像上提取特徵信息[14]。支持向量基(SVM)將特徵數據投影到特徵空間中尋找最優的分離面,根據其核函數的不同,它可以用來處理線性和非線性問題[15]。卷積神經網絡的神經元由權重和偏置項組成,每一個神經元接受輸入並執行卷積計算,每個神經元接受來自前端的輸入並執行一次點積運算,然後整個神經網絡表達出一個評分函數,對網絡的輸入到輸出進行評分[16]。在CNN中通常用一個損失函數對網絡中的參數進行估計,這就形成了一個將原始圖像變為特徵向量的特徵提取器[17]。另一部分就是全連接層,將提取到的特徵向量按照前向傳播網絡進行分類。
混合的CNN—SVM模型是將CNN最後的全連接網絡層替換為SVM分類器。CNN網絡的最外層實際上是指每個樣本標籤所對應的可能出現的概率估計值,每一個概率估計值對應一個激活函數,單查看隱含層的輸出對於分類結果是沒有任何意義的,它僅僅對CNN網絡模型本身有意義,但是這些值可以作為SVM分類器的特徵輸入。圖1為CNN—SVM模型的網絡結構圖。 首先,將煤泥浮選泡沫圖像通過多次卷積和池化,對原始帶有輸出層的CNN進行預訓練直到收斂,然後SVM將隱含層的輸出作為特徵輸入進行訓練,一旦SVM訓練合格,就會對自動提取特徵的煤泥圖像做出預測。混合的CNN—SVM模型的優點彌補了兩類分類器的侷限性,提高了單一模型的泛化能力和模型精度。
圖1 CNN—SVM混合模型結構
3 實驗與分
3.1 數據集
實驗採用CCD工業相機對浮選泡沫拍照,選取更加可靠LED背光源為泡沫的補光光源,這樣可以最大程度的減小浮選泡沫表面的反光現象。為了避免外界光源的干擾,對現場對採集系統進行遮光處理。針對浮選工況的不同,分散取樣化驗實時灰分作為圖像標籤,設置圖像大小為1024×1024像素,對每個灰分標籤連續採集30張照片,擇優選取20張作為該標籤對應的數據集。最終取得山東某選煤廠浮選車間的30 000張浮選泡沫圖像,按照灰分區間不同將其標籤劃分為小於7、7~7.99、8~8.99、9~9.99、10~10.99、11~11.99、12~12.99、大於13共8個類別,其中20 000張作為訓練集,7 000張作為驗證集,最後3 000張作為測試集。
3.2 圖像預處理
選煤廠浮選車間的實際環境比較特殊,因此在圖像採集、傳輸等過程中,難免受到周圍特殊環境和磁場等的影響,經過工業相機採集的圖像最終傳到計算機上時難免會帶有較大的噪聲和微小的失真現象,這樣的圖像喂入神經網絡就會出現過擬合或者準確率較低,無法達到較好的的分類效果,為了解決這類問題必須對採集到的圖像做去燥、增強等預處理。根據實際驗證對採集到的數據集進行了高斯椒鹽去燥和圖像增強預處理,處理前後的圖像如圖2所示。
圖2 預處理浮選泡沫圖像
3.3 模型構建與分類結果
3.3.1 CNN特徵提取
CNN被用來提取煤泥浮選泡沫圖像特徵被認為是有效的,本文在全連接層之前添加一個額外的卷積層,其中包含8個神經元的200個特徵圖。最大池化層進行全零填充和歸一化操作。卷積神經網絡的參數圖如表1所示。
表1 CNN模型參數設計
|
Layer |
Type |
Number |
Kernel size |
Stride |
|
1 |
Input |
577 neurons |
3*3 |
1 |
|
2 |
Convolutional |
6 maps with 512 neurons |
3*3 |
2 |
|
3 |
Max pooling |
6 maps with 256 neurons |
3*3 |
1 |
|
4 |
Convolutional |
8 maps with 128 neurons |
3*3 |
2 |
|
5 |
Max pooling |
8 maps with 64 neurons |
3*3 |
1 |
|
6 |
Convolutional |
11 maps with 32 neurons |
3*3 |
2 |
|
7 |
Max pooling |
11 maps with 16 neurons |
3*3 |
1 |
|
8 |
Convolutional |
11 maps with 8 neurons |
3*3 |
2 |
|
9 |
Fully connected |
|||
3.3.2 SVM分類
在SVM中首先將數據投影到特徵空間中,然後確定最優分離超平面,利用不同的核函數將線性問題轉化為非線性問題。該方法最初是為了解決兩類問題而提出的,然而現在這項技術已經被用來解決多分類問題。
首先將訓練集S定義如下:
其中:yi∈{1,2,3,4,5,6,7,8}代表灰分標籤的8個類別(小於7、7~7.99、8~8.99、9~9.99、10~10.99、11~11.99、12~12.99、大於13),並且i=2500。目前有2種方法用來解決多分類問題:一種是構件多個二分類SVM並將它們以一對一或一對多的方式聯合起來,另一種是將所有多分類數據集考慮在一個最優化問題中用SVM分類。Hsu[18]等人通過使用不同的數據集驗證得出一對一的方法更加合適實際應用。LIBSVM[19]是一種開源的SVM分類工具,本文將使用它來做分類處理,一對一的分類方法構建了一個k/(k-1)/2(k為分類數)分類器,其中每個分類器從k個類別中挑選出的2類作為訓練數據。下式主要計算如何獲取從第i和第j個類別的訓練數據:
其中αi是拉格朗日乘子,核函數K用來計算高維空間未完成分類映射的點積,C是控制最大分類誤差和最小分類誤差的一個懲罰因子。在分類決定的過程中,LIBSVM採用“max Wins”算法[20],即每個分類器對上一次的分類結果評分,來獲取最佳的分類結果。
3.3.3 實驗結果與分析
在CNN—SVM混合訓練模型中,使用SVM代替CNN最後的全連接層。為了構造混合模型中的SVM, 通過對數據集採用10倍交叉驗證的方法,採用徑向基函數來確定最佳的核參數S和懲罰因子C。各參數的範圍為C=[0.8,0.9,1.0,1.1,1.2], γ=[0.01,0.03,0.05,0.07,0.09],應用不同的組合最終選定C=1.0,γ=0.05。將這些參數代入混合模型,如圖3所示,設置batchsize=400,學習率為0.001,dropout=0.75,50個epoch之後模型的準確率達到了87.66%。
圖3 CNN-SVM模型識別度準確率
模型中各個灰分類別的準確率如圖4所示,從圖中可以看出,CNN—SVM模型對每個灰分類別的泡沫識別準確率都在80%以上,其中灰分小於7%和大於13%的泡沫識別精度最高,達到90%以上,這也與浮選現場這2種泡沫的形態差距明顯有一定關係。由於煤泥浮選泡沫圖像差異小,分別難度高,所以識別精度不如其他的特徵明顯的圖像高。但在未來的應用中,隨着數據集的擴大和計算機計算能力的增強,相信可以取得不錯的分類結果。
圖4 各灰分等級的泡沫識別精度
4 結 語
以選煤廠煤泥浮選泡沫為分類對象,提出一種CNN—SVM混合的網絡模型。先對輸入網絡前對所有圖像做了增強去噪的預處理,該模型結合了支持向量機和神經網絡的優點,利用CNN部分對預處理後的圖像自動提取特徵,之後將提取到的特徵輸給SVM預測分類,最終在本次煤泥浮選泡沫分類中取得了87.66%的準確率。在未來的研究中,通過繼續增加網絡的深度和獲取更多的數據集有可能獲得更高的準確率。