針對目前在檢測商用砂石骨料的過程中,人工檢測的效率低下且受到主觀因素的影響較大以及檢測的準確率不理想,提出一種基于卷積神經網絡(Convolutional Neural Network,CNN)的砂石骨料圖像分類模型CNN13,該分類模型參考經典卷積神經網絡VGG16(Visual Geometry Group 16)模型進行網絡結構的改進和參數(shù)優(yōu)化,利用TensorFlow深度學習框架搭建一個13層的卷積神經網絡結構。實驗數(shù)據集采集于某商用混凝土生產企業(yè)日常生產中的砂石骨料,共5000幅數(shù)字圖像,模型在訓練過程中采用GPU進行高速計算。相比于VGG16模型,CNN13模型的卷積層和參數(shù)量較少,對GPU內存的要求更低,訓練速度更快,分類的準確率更高,每個等級的砂石骨料的分類準確率都達到99%以上。
混凝土是常用的建筑材料之一,主要由水泥和砂石骨料組成,其中砂石骨料是混凝土組成材料中用量最多的材料。目前,在商用混凝土生產企業(yè)中對砂石骨料的檢測[1]大多采用的是人工檢測的方式,然而人工檢測不僅會受到人為因素的影響且檢測標準不統(tǒng)一,使得檢測效率低下。目前,國內的一些研究機構和企業(yè)利用數(shù)字圖像處理技術[2,3]和機器視覺技術對砂石骨料進行檢測[4,5,6]。李旭[7]利用圖像處理技術對混凝土粗骨料的長寬比系數(shù)進行提取,從而達到對混凝土粗骨料檢測的目的。劉春等[8]利用數(shù)字圖像處理技術分割出了巖石顆粒與孔隙,從而提取巖石顆粒的輪廓信息,這對砂石骨料的檢測具有借鑒意義。
然而數(shù)字圖像處理技術對光照環(huán)境具有很強的敏感性,實際上混凝土的生產過程和環(huán)境比較復雜且光照不穩(wěn)定,所以單純的數(shù)字圖像處理技術并不能很好地直接投入實際生產,僅僅適用于實驗環(huán)境。卷積神經網絡(CNN)[9,10,11,12]因其具有權值共享和局部視野的特點,所以具有很強的魯棒性,廣泛應用于圖像識別,特別是在圖像分類[13,14]、目標檢測[15]和預測結果[16]。Zhang等[17]利用改進的卷積神經網絡對汽車軟管表面上的缺陷進行分類,分類的準確率達到96%以上。Ye等[18]通過優(yōu)化VGG16(Visual Geometry Group 16)和VGG19中完整連接層的數(shù)量,使得蔬菜害蟲圖像的識別準確率得到了有效提高。Hsu等[19]提出了一種集成卷積神經網絡(ECNN)的框架,該框架對常見的晶圓倉圖(WBM)中的缺陷模式可以獲得很好的識別效果。Wang等[20]提出了一種深度多尺度卷積神經網絡(DMCNN),在檢測網絡入侵方面相比于傳統(tǒng)網絡具有較高的檢測準確率。程國建等[21]通過卷積神經網絡模型實現(xiàn)了巖石薄片圖像特征的自動提取,該模型基于巖石薄片圖像可以獲得高效且可靠的自動分類結果。
本文參考經典的VGG16模型[22]并綜合分析砂石骨料的特點,設計和搭建一個全新的由10層卷積層和三層全連接層組成的13層卷積神經網絡模型CNN13,通過優(yōu)化卷積層的數(shù)量和參數(shù)并以某商用混凝土生產企業(yè)的砂石骨料圖像為數(shù)據集,在GPU上分別對CNN13模型和VGG16模型進行高速訓練實驗。實驗結果表明,相比于VGG16模型,CNN13模型可以減少內存消耗以及加快訓練時間,收斂更快也更穩(wěn)定,同時能夠大幅度提高砂石骨料識別的準確率和可靠性。
卷積神經網絡是一種可以自動從數(shù)據庫中學習并更新權重參數(shù)的模型,其是深度學習的代表模型之一。卷積神經網絡由輸入層、隱藏層和輸出層組成,而權重參數(shù)“隱藏”在隱藏層中,隱藏層的數(shù)量越多則表明深度學習的深度越深。卷積神經網絡具有局部視野和權值共享的特點,在圖像分類中具有很強的魯棒性,能夠對復雜的圖像進行分類,而且因其結構簡單且應用性強,廣泛用于解決圖像分類的問題。
卷積神經網絡VGGNet由牛津大學的視覺幾何組開發(fā),其由多個卷積層和全連接層組成。根據層的深度,VGGNet可以分為VGG16和VGG19。VGGNet具有結構簡單、應用性強和識別率高的特點,是一種常用的深度學習經典模型,在比較模型性能的方面具有很好的對比意義。
VGG的卷積層中使用的是3×3的小型濾波器,首先利用連續(xù)卷積操作來提取局部特征,然后利用池化操作進行降采樣,最后由全連接層輸出結果。
對于輸入圖像數(shù)據,卷積運算是指濾波器按一定的步幅滑動進行計算,即濾波器中的各個元素與相對應的輸入圖像數(shù)據中的各個元素(像素值)相乘,然后求和并將結果輸出到對應位置。當輸入圖像數(shù)據在所有位置上都完成一次滑動計算時,即完成一次卷積運算。在相同的卷積神經網絡中,濾波器越小,則參數(shù)量就越少。使用5×5的濾波器進行卷機運算的參數(shù)量有5×5=25個,使用3×3的濾波器進行兩次卷積運算的參數(shù)量有2×3×3=18個,因此在卷積神經網絡中盡可能加深卷積層的深度(數(shù)量)以及使用小型濾波器。
池化是縮小長、高方向上的空間的運算,從而達到降采樣的目的,而池化計算即是在濾波器中選擇最大值或者平均值作為輸出值。池化對輸入圖像數(shù)據的偏差具有很高的魯棒性,當輸入圖像數(shù)據發(fā)生微小偏差時,池化仍會返回與沒有發(fā)生偏差的結果相同。最大池化運算過程如圖1所示。當在2×2的濾波器(虛線矩形框)中進行池化運算時,該濾波器中的最大值為2,輸出即為2,以此類推。
圖1 最大池化運算的過程
Fig.1 Process of maximum pooling calculation
每次卷積運算都使用Relu(Rectified Linear Units)函數(shù)進行激活,當Relu函數(shù)的輸入大于0時,直接輸出該值,當輸入不大于0時,輸出為0,可表示為
式中:x表示輸入信號;f(x)表示輸出信號。
卷積神經網絡中使用Softmax函數(shù)作為輸出函數(shù)來解決分類問題,當Softmax函數(shù)用于分類時,其輸入的種類與對應的標簽經過卷積神經網絡多次迭代后輸出映射到(0,1)區(qū)間,可以看作某一種類對應標簽的概率,因此整個Softmax層的輸出相加結果為1。Softmax函數(shù)作為輸出函數(shù),則輸出信號可表示為
式中:yk表示第k個神經元的輸出信號;ak表示第k個神經元的輸入信號;ai表示第i個神經元的輸入信號;n表示輸入神經元的總數(shù)量。
本文參考VGG16并對其進行優(yōu)化,設計一種基于TensorFlow深度學習框架的13層卷積神經網絡(CNN13),其由10層卷積層和三層全連接(FC)層組成,該網絡的結構設計如圖2所示。
圖2 CNN13的結構
Fig.2 Structure of CNN13
卷積神經網絡CNN13中各層網絡層的設計如下。
1)輸入圖像是經過預處理的單通道灰度圖(分辨率為384pixel×275pixel)。
2)卷積層使用3×3的濾波器,步長為1,邊界填充的像素值為0。每次卷積運算的輸出特征尺寸不變,數(shù)量為該層濾波器的數(shù)量。
3)池化層采用最大池化法進行處理,使用2×2的濾波器,步長為2,邊界填充的像素值為0。每次池化運算的輸出特征尺寸為輸入特征的1/2,數(shù)量不變。
4)全連接層使用1024個參數(shù)。
CNN13中各個網絡層的參數(shù)設置如表1所示。
表1 CNN13中各個網絡層的參數(shù)設置
Table 1 Parameter settings of each network layer in CNN13
CNN13采用反向傳播的方式對權重參數(shù)進行更新,每個網絡層使用非飽和線性激活函數(shù)Relu進行激活,使用神經元隨機刪除的方法隨機刪除全連接層的參數(shù)以防止網絡過擬合,使用自適應矩估計優(yōu)化器對整個網絡進行優(yōu)化,由Softmax函數(shù)輸出分類結果。
通過查閱某商用混凝土生產企業(yè)的砂石骨料分類標準和具體分類細則,對不同等級的砂石骨料進行隨機圖像采集以獲取數(shù)據集。
按照某商用混凝土生產企業(yè)的砂石骨料生產標準進行分類,砂石骨料的重要指標為粒徑尺寸和粒形組成含量。合格砂石骨料的粒徑分布在10~25mm;骨料的粒形以整形(正方體或者圓形)為主,針片狀含量越少越好。砂石骨料一共分為5個等級,每個等級具體的分類標準如表2所示。
隨機對生產使用中的混凝土骨料進行圖像采樣,每個等級采集1000幅數(shù)字圖像,總共采集5000幅數(shù)字圖像。將每個等級的數(shù)字圖像分為訓練集和測試集,分配比例為8∶2,即使用800幅數(shù)字圖像作為訓練集,200幅數(shù)字圖像作為測試集。圖像數(shù)據集包含了不同生產環(huán)境中的砂石骨料,包括表面干燥和表面潮濕的砂石骨料,如圖3所示,各個等級的砂石骨料如圖4所示。
表2 砂石骨料的分類標準
Table 2 Classification standard of sand and gravel aggregate
圖3 砂石骨料示意圖。(a)表面干燥的砂石骨料;(b)表面濕潤的砂石骨料
Fig.3 Schematic of sand and gravel aggregate.(a)Sand and gravel aggregate with dry surface;(b)sand and gravel aggregate with wet surface
圖4 各個等級的砂石骨料示意圖。(a)第一級;(b)第二級;(c)第三級;(d)第四級;(e)第五級
Fig.4 Schematic of all grades of sand and gravel aggregate.(a)1st level;(b)2nd level;(c)3rd level;(d)4th level;(e)5th level
對采集到的數(shù)字圖像采用雙線性插值的方法進行預處理,將原始圖像的寬和高壓縮至原圖像的10%,處理前與處理后的圖像數(shù)據如表3所示。
表3 原始圖像預處理前后的對比
Table 3 Comparison of original image before and after preprocessing
數(shù)字圖像同時在寬和高的方向上進行雙線性插值運算后,保留了原始數(shù)字圖像上的特征,同時數(shù)字圖像所占的內存也有效減少,因此預處理后的卷積計算和處理速度可以得到大幅度提升,并且對顯存的需求也降低了。
實驗過程中所采用的硬件平臺參數(shù):CPU為Inter Corei5-9400;GPU為NVIDIA GeForce GTX1660Ti,內存為6G。在計算過程中使用GPU硬件并調用深度神經網絡庫(cuDNN)進行深度學習計算,極大地提高了計算速度。
本文使用CNN13和VGG16兩種卷積神經網絡進行對比實驗,訓練過程中多次設置不同的超參數(shù)進行訓練。
其他超參數(shù)設置:訓練步幅設為10000,全部圖像參與65輪訓練;每25步保存一次損失函數(shù)值、準確率和步幅。
CNN13模型和VGG16模型的損失函數(shù)變化曲線如圖5所示。從圖5可以看到,兩種模型的損失函數(shù)曲線都在訓練幾百步之后快速收斂至一點幾,但是CNN13模型的損失函數(shù)曲線的下降梯度比VGG16模型大很多。
圖5 CNN13模型和VGG16模型的損失函數(shù)對比曲線
Fig.5 Comparison curves of loss function between CNN13model and VGG16model
CNN13模型的損失函數(shù)曲線的收斂速度較快且波動范圍較小,在訓練初期極速下降,然后在小范圍內波動,最后逐漸收斂至0。在訓練4000步即數(shù)據集迭代26輪后,損失函數(shù)值收斂至0。模型繼續(xù)訓練,即使損失函數(shù)曲線出現(xiàn)較小范圍的波動,但損失函數(shù)值最終收斂于0。
VGG16模型的損失函數(shù)曲線的收斂速度較慢且波動范圍較大,在訓練6000步即數(shù)據集迭代39輪后,損失函數(shù)值才逐漸收斂至0。模型繼續(xù)訓練,損失函數(shù)曲線出現(xiàn)小范圍的波動,損失函數(shù)值最終收斂于0。