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