秦宋林,呂鵬,陳嘉浩,吳銳
(1.哈爾濱工業(yè)大學(xué) 計(jì)算學(xué)部, 黑龍江 哈爾濱 150001;2.中電建河南萬(wàn)山綠色建材有限公司, 河南 洛陽(yáng)市 471900)
骨料是構(gòu)成混凝土最主要的材料,約占混凝土的60%~80%,因此,骨料質(zhì)量的好壞直接決定了混凝土建筑強(qiáng)度和質(zhì)量,關(guān)系著建筑物的安全。據(jù)報(bào)道,建成于1984年的北京內(nèi)蒙古賓館在1998年拆除裝修中發(fā)現(xiàn),1~11層有34根柱子出現(xiàn)縱向裂紋,裂縫長(zhǎng)度由數(shù)十厘米至1.5 m 不等,裂縫寬度多為0.5~2 mm,大部分裂縫深度在20~40 mm,最深者達(dá)58 mm,超過混凝土保護(hù)層厚度,經(jīng)檢驗(yàn)證實(shí)是骨料質(zhì)量問題造成的損壞。水電工程中非常重視料源母料的穩(wěn)定性和骨料的綜合性能,包括骨料的強(qiáng)度、堅(jiān)固性和吸水率、骨料級(jí)配、粒形等,其中骨料的級(jí)配,即骨料中不同尺寸顆粒的粒度分布,是砂石骨料的重要質(zhì)量參數(shù),在骨料加工中需要對(duì)顆粒級(jí)配質(zhì)量進(jìn)行控制。根據(jù)中國(guó)砂石協(xié)會(huì)的數(shù)據(jù),近5年中國(guó)砂石產(chǎn)量均維持在190億t左右,2021年全國(guó)砂石產(chǎn)量為197億t,其中70%以上為人工骨料。因此,研究一種快速的基于圖像處理的砂石粒度檢測(cè)方法,對(duì)砂石骨料破碎工藝的優(yōu)化、對(duì)人工骨料產(chǎn)品質(zhì)量控制具有重要的意義,屬于人工骨料礦山智慧化生產(chǎn)的重要監(jiān)測(cè)手段[1]。
基于圖像處理的砂石粒度檢測(cè)方法可以分為兩種:基于傳統(tǒng)圖像的分割方法、基于神經(jīng)網(wǎng)絡(luò)的圖像分割方法。傳統(tǒng)視覺分割主要包括分水嶺[2]、Canny算子[3]和Graph cut算法[4]等。Beucher等提出了分水嶺算法,根據(jù)分水嶺的構(gòu)成來(lái)考慮圖像的分割,分水嶺算法在諸多分割任務(wù)中驗(yàn)證了操作的可行性。Canny開發(fā)出多級(jí)邊緣檢測(cè)算法Canny算子,創(chuàng)造了邊緣檢測(cè)計(jì)算理論并且應(yīng)用于圖像分割領(lǐng)域。Canny算子通過降噪、尋找圖像中的亮度梯度、在圖像中跟蹤邊緣等步驟完成圖像的邊緣檢測(cè),并且這種方法可以適用于不同的場(chǎng)合。Boykov等則將Graph cut用于分割任務(wù)當(dāng)中。此類方法把圖像分割看作像素標(biāo)記問題,目標(biāo)區(qū)域和背景區(qū)域標(biāo)記為不同的值。通過最小化能量函數(shù)來(lái)得到目標(biāo)區(qū)域和背景區(qū)域的邊界即可得到分割結(jié)果。由于砂石圖像對(duì)比度低,砂石互相遮擋,堆疊嚴(yán)重,分布密集,傳統(tǒng)分割算法很難取得較好的效果。
基于深度神經(jīng)網(wǎng)絡(luò)的方法憑借其優(yōu)異的特征提取和非線性映射能力,能夠?qū)崿F(xiàn)砂石圖像更好的分割結(jié)果。通過將圖像特征向量回歸為一組輸出向量來(lái)表示每個(gè)粒徑范圍的分布,可以對(duì)砂石粒度分布直接進(jìn)行估計(jì)。LONG Jonathan 等提出了Fully Convolutional Networks(FCN)使用全卷積網(wǎng)絡(luò)完成了像素級(jí)別的分割[5]。HE Kaiming 等提出了Mask-RCNN 網(wǎng)絡(luò)結(jié)構(gòu)同時(shí)解決了語(yǔ)義分割和目標(biāo)檢測(cè)問題,并且提出了ROI Align來(lái)解決傳統(tǒng)的檢測(cè)算法如Faster-RCNN 使用的ROI Pooling特征圖不對(duì)齊的問題[6]。
不足的是,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練嚴(yán)重依賴標(biāo)注數(shù)據(jù),實(shí)踐中發(fā)現(xiàn),對(duì)砂石圖像進(jìn)行正確的標(biāo)注是極為耗時(shí)的。為此,本文提出了一種基于半監(jiān)督學(xué)習(xí)的砂石細(xì)粒度檢測(cè)方法。此方法可以簡(jiǎn)單描述為:第一階段使用帶標(biāo)簽的數(shù)據(jù)進(jìn)行有監(jiān)督的學(xué)習(xí),獲得一個(gè)預(yù)訓(xùn)練模型;第二階段使用預(yù)訓(xùn)練模型對(duì)無(wú)標(biāo)簽數(shù)據(jù)打偽標(biāo)簽,然后使用偽標(biāo)簽數(shù)據(jù)和有標(biāo)簽數(shù)據(jù)進(jìn)行聯(lián)合訓(xùn)練。
砂石的分布信息無(wú)法從圖像中直接獲取,必須借助于統(tǒng)計(jì)圖像中砂石的個(gè)數(shù)并且依靠每個(gè)砂石的粒徑大小計(jì)算整體的粒度分布。對(duì)于一個(gè)砂石標(biāo)注信息定義為(x1,y1,x2,y2),其中坐標(biāo)系原點(diǎn)為圖像左上方。標(biāo)注如圖1所示。
圖1 砂石圖像的粒徑標(biāo)注
設(shè)計(jì)離散型隨機(jī)變量X,K個(gè)特定大小的粒徑{t0,t1,…,tk}且滿足t0≤t1≤…≤tk。標(biāo)注的圖像為一張圖像所有砂石的粒徑信息,因此需要完成粒徑信息到粒度信息的轉(zhuǎn)換。對(duì)于粒度分布P,有:
式中,P(tm≤X<tn)為一張圖像中粒徑范圍在[tm,tn)中砂石數(shù)目占總體砂石數(shù)目的比例;n為圖像中砂石的總數(shù)目;A為圖像中粒徑的集合;另外隨著數(shù)值K的增大,粒度分布P可以更好地對(duì)真實(shí)的粒度分布進(jìn)行表達(dá),設(shè)定K=6,即粒度分布曲線由6種指定的粒徑進(jìn)行劃分。
預(yù)訓(xùn)練過程如圖2所示,采用反向傳播方法訓(xùn)練模型,訓(xùn)練過程中采用KL[7]散度作為損失函數(shù)。骨架網(wǎng)絡(luò)采用DenseNet-121[8]結(jié)構(gòu),如圖3 所示。頭部網(wǎng)絡(luò)采用線性層。模型接受砂石圖像輸出粒度分布曲線,和真實(shí)分布曲線比較計(jì)算損失驅(qū)動(dòng)模型進(jìn)行學(xué)習(xí)。
圖2 預(yù)訓(xùn)練過程
圖3 DenseNet基本架構(gòu)
半監(jiān)督算法面臨的最主要問題是如何使用未標(biāo)注數(shù)據(jù)來(lái)提升模型的性能。目前應(yīng)用最廣泛的半監(jiān)督算法是基于偽標(biāo)簽的算法,即通過模型對(duì)未標(biāo)注數(shù)據(jù)進(jìn)行自動(dòng)打標(biāo)簽。基于偽標(biāo)簽的半監(jiān)督算法可以簡(jiǎn)單視作兩個(gè)階段的算法:第一階段使用帶標(biāo)簽的數(shù)據(jù)進(jìn)行有監(jiān)督的學(xué)習(xí),獲得一個(gè)預(yù)訓(xùn)練模型;第二階段使用預(yù)訓(xùn)練模型對(duì)無(wú)標(biāo)簽數(shù)據(jù)打偽標(biāo)簽并且使用偽標(biāo)簽數(shù)據(jù)和有標(biāo)簽數(shù)據(jù)進(jìn)行聯(lián)合訓(xùn)練。訓(xùn)練流程如圖4所示。
圖4 基于偽標(biāo)簽的半監(jiān)督訓(xùn)練
砂石粒度檢測(cè)問題則不同于圖像分類問題,需要的偽標(biāo)簽是砂石粒度的分布。偽標(biāo)簽需要從模型中獲取。形式上對(duì)于粒度檢測(cè)模型輸出z,經(jīng)過概率歸一化后(softmax)y表達(dá)為圖像砂石的粒度分布的預(yù)測(cè)值。表示為圖像砂石粒度的真實(shí)分布,對(duì)于有標(biāo)簽數(shù)據(jù)是可以獲取到的,對(duì)于無(wú)標(biāo)簽數(shù)據(jù)則無(wú)法獲取。
最簡(jiǎn)單的偽標(biāo)簽策略為將z當(dāng)作砂石粒度的真實(shí)分布,但這種方法無(wú)法對(duì)模型進(jìn)行優(yōu)化。此時(shí),,當(dāng)直接把模型輸出當(dāng)作偽標(biāo)簽處理則該樣本的損失函數(shù)為零,損失函數(shù)為零則無(wú)法正常地產(chǎn)生梯度,進(jìn)而無(wú)法對(duì)模型進(jìn)行優(yōu)化。
通過上述分析,輸入和輸出不可以完全一致,因此,需要對(duì)輸出進(jìn)行一定程度有意義的變換,使得輸出和輸入不再完全等價(jià),進(jìn)而產(chǎn)生分布的差異性,完成梯度反傳和模型參數(shù)的更新。
具體地引入一個(gè)噪聲分布ε~N(0,α),其中N代表高斯分布,α代表高斯分布的方差。對(duì)于輸出y={y1,y2,y3,y4,y5,y6},其中zi表示為粒徑范圍[yi,yi+1)的砂石占全部砂石的比例。對(duì)每一種粒徑范圍,本文引入的偽標(biāo)簽為,即每一種粒徑范圍獨(dú)立引入一個(gè)高斯噪聲的擾動(dòng)。引入高斯分布噪聲可以在一定程度上反應(yīng)工業(yè)相機(jī)無(wú)法拍攝的底層砂石分布對(duì)真實(shí)分布帶來(lái)的影響。如圖5所示,整體砂石粒度分布和表層砂石粒度分布存在一定程度上的差別,使用偽標(biāo)簽策略可以對(duì)這種差異性進(jìn)行較好的建模。
圖5 底層砂石對(duì)整體分布帶來(lái)的影響
引入噪聲之后用來(lái)監(jiān)督的真實(shí)分布發(fā)生改變,KL散度不再為零,模型可以通過無(wú)標(biāo)簽數(shù)據(jù)得到持續(xù)的優(yōu)化。生成的偽標(biāo)簽如圖6所示,模型預(yù)測(cè)結(jié)果和真實(shí)標(biāo)簽具有一定的差異性,生成的偽標(biāo)簽在一定程度上可以緩解這種差異性。
圖6 偽標(biāo)簽生成示例
損失函數(shù)如式(2)所示。
通過加入一個(gè)零均值的高斯分布N(0,α)的不確定性來(lái)完成偽標(biāo)簽的生成,對(duì)于超參數(shù)α,過高的超參數(shù)會(huì)導(dǎo)致模型難以收斂;但是較低的超參數(shù)無(wú)法提供有效的訓(xùn)練。因此,采用漸進(jìn)式訓(xùn)練,即逐步增大超參數(shù)α的數(shù)值,讓模型不斷進(jìn)行學(xué)習(xí)更新來(lái)達(dá)到收斂的目的。
式中,t代表訓(xùn)練期間的輪數(shù),t0和t1代表預(yù)先設(shè)定的輪數(shù)。
公式(3)的含義代表在初始訓(xùn)練階段,添加的噪聲為零方差的高斯分布,這時(shí)候無(wú)標(biāo)簽不參與訓(xùn)練,模型并不會(huì)收到無(wú)標(biāo)簽數(shù)據(jù)的影響。在充分使用標(biāo)簽數(shù)據(jù)訓(xùn)練之后,逐漸增大高斯分布的方差,模型開始對(duì)不確定性進(jìn)行建模。對(duì)于超參數(shù)進(jìn)行線性的穩(wěn)定增長(zhǎng)策略,這樣可以避免模型不確定性過高帶來(lái)的難以收斂問題。設(shè)置最大方差為0.05,即最大的不確定性,在訓(xùn)練后期超參數(shù)α不會(huì)再進(jìn)行增高。
提出的適用于砂石粒度檢測(cè)的半監(jiān)督算法有效果的原因除了之前分析的偽標(biāo)簽可以建模到砂石圖像下面掩蓋的砂石的分布情況,再者就是對(duì)模型提供了一種正則化的手段,通過對(duì)偽標(biāo)簽加入一定程度的不確定性使得樣本能夠持續(xù)不斷地提供損失讓模型進(jìn)行學(xué)習(xí)。
為了能更好地進(jìn)行比較,采用了兩種評(píng)價(jià)指標(biāo)分別是均方誤差和正確率。
均方誤差計(jì)算方法如式(4)所示:
式中,Ek為6種指定粒度中第k個(gè)粒度的誤差,N為測(cè)試集的大小,zi為預(yù)測(cè)粒度分布,為真實(shí)的粒度分布。
上述指標(biāo)是針對(duì)6個(gè)粒度范圍設(shè)計(jì)的各自評(píng)價(jià)指標(biāo),對(duì)于整體粒度分布的均方誤差如式(5)所示所有粒度誤差的平均值。
均方誤差指標(biāo)能夠較好地反應(yīng)模型對(duì)整體數(shù)據(jù)集預(yù)測(cè)結(jié)果和真實(shí)值之間的誤差,但是無(wú)法較好地衡量單個(gè)樣本的粒度檢測(cè)結(jié)果。因此提出正確率指標(biāo)衡量分割結(jié)果:
不同算法的均方誤差對(duì)比結(jié)果見表1,正確率比較見表2。
表1 不同算法均方誤差對(duì)比結(jié)果 %
表2 不同算法正確率對(duì)比結(jié)果 %
由表1可知,相對(duì)于基于神經(jīng)網(wǎng)絡(luò)的方法,提出的半監(jiān)督算法能有效降低各個(gè)粒徑的均方誤差。
在正確率評(píng)價(jià)指標(biāo)上可以看到,半監(jiān)督算法相比于神經(jīng)網(wǎng)絡(luò)而言有不同程度的提高??稍綄捤傻倪吔鐚?duì)于算法性能的提升越小,邊界效應(yīng)的存在導(dǎo)致提升困難。
基于神經(jīng)網(wǎng)絡(luò)的方法需要大規(guī)模數(shù)據(jù)進(jìn)行驅(qū)動(dòng)訓(xùn)練,對(duì)于數(shù)據(jù)集的標(biāo)注耗費(fèi)大量的時(shí)間。因此,使用半監(jiān)督算法來(lái)對(duì)粒度檢測(cè)任務(wù)進(jìn)行優(yōu)化。半監(jiān)督算法往往應(yīng)用在圖像分類任務(wù)中,在粒度檢測(cè)任務(wù)中屬于空白,將現(xiàn)有半監(jiān)督算法擴(kuò)展至粒度檢測(cè)中。提出了一種基于偽標(biāo)簽的半監(jiān)督算法。并且最終的試驗(yàn)結(jié)果證明了提出方法的有效性。該方法可以完成端到端砂石細(xì)粒度檢測(cè),并且展現(xiàn)了非常好的效果。在偽標(biāo)簽的半監(jiān)督算法中,由于偽標(biāo)簽的隨機(jī)性的存在將會(huì)帶來(lái)難以收斂的問題,在未來(lái)工作中將會(huì)使用基于學(xué)生老師的半監(jiān)督算法解決這個(gè)問題。