羅 楊,萬(wàn)黎明,李 理,劉知貴,2
(1.西南科技大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川 綿陽(yáng) 621000;2.西南科技大學(xué) 信息工程學(xué)院,四川 綿陽(yáng) 621000)
裂縫反映了混凝土結(jié)構(gòu)的受力狀態(tài)、耐久性與安全性等問(wèn)題,是一種十分常見(jiàn)的結(jié)構(gòu)損傷。受恒活載荷、溫度、沉降不均、過(guò)度使用、自然災(zāi)害等影響均可能導(dǎo)致裂縫的產(chǎn)生[1]。而裂縫的產(chǎn)生將導(dǎo)致保護(hù)層對(duì)內(nèi)部鋼筋的保護(hù)失效,引起鋼筋銹蝕等問(wèn)題加劇結(jié)構(gòu)耐久性的降低,即使在沒(méi)有鋼筋的路面結(jié)構(gòu),也會(huì)因裂縫的產(chǎn)生而對(duì)路基的穩(wěn)定性產(chǎn)生影響,嚴(yán)重時(shí)可能引發(fā)路面沉降、塌陷等問(wèn)題,因此對(duì)于裂縫的準(zhǔn)確檢測(cè)將有助于結(jié)構(gòu)健康的監(jiān)測(cè)與維護(hù)。伴隨著機(jī)器視覺(jué)技術(shù)及相關(guān)硬件的發(fā)展,利用數(shù)字圖像進(jìn)行裂縫檢測(cè)成為了一種有效的結(jié)構(gòu)表面損傷無(wú)損檢測(cè)方法,得到了廣泛的應(yīng)用,并逐漸代替人工實(shí)現(xiàn)自動(dòng)化檢測(cè)。
在裂縫檢測(cè)任務(wù)中,傳統(tǒng)的檢測(cè)方法主要利用閾值分割、邊緣檢測(cè)以及基于手工特征的機(jī)器學(xué)習(xí)方法,雖然取得了較大的進(jìn)步,但仍然存在精度不高、算法泛用性差等問(wèn)題,在應(yīng)用中具有一定的局限性。得益于GPU(Graphics Processing Unit,圖像處理器)的發(fā)展,Alex Krizhevsky等人[2]利用GPU高效的并行運(yùn)算能力,訓(xùn)練了1個(gè)包含5個(gè)卷積層和3個(gè)全連接層的神經(jīng)網(wǎng)絡(luò),使深度學(xué)習(xí)技術(shù)在圖像領(lǐng)域取得了突破。這是一種無(wú)需人工進(jìn)行特征設(shè)計(jì)的方式,深度學(xué)習(xí)的主干特征提取網(wǎng)絡(luò)可以自動(dòng)進(jìn)行特征提取,根據(jù)樣本數(shù)據(jù)訓(xùn)練深度學(xué)習(xí)網(wǎng)絡(luò)不斷地更新權(quán)重,直至最優(yōu)。利用深度學(xué)習(xí)的方式進(jìn)行裂縫檢測(cè)可以有效地提升任務(wù)效率,并且具有較高的可拓展性,受到了工業(yè)界的關(guān)注并進(jìn)行了大量研究。劉鑫等人[3]利用改進(jìn)的U-Net網(wǎng)絡(luò)實(shí)現(xiàn)巖層的裂縫圖像分割;余加勇等人[4]利用無(wú)人機(jī)與Mask R-CNN實(shí)現(xiàn)橋梁的裂縫識(shí)別;瞿中等人[5]利用空洞卷積神經(jīng)網(wǎng)絡(luò)和多特征融合的方式實(shí)現(xiàn)混凝土路面的裂縫圖像分割;劉凡等人[6]利用注意力機(jī)制與U-Net網(wǎng)絡(luò)實(shí)現(xiàn)路面與大壩的裂縫圖像分割。深度學(xué)習(xí)是以數(shù)據(jù)為驅(qū)動(dòng)的一種機(jī)器學(xué)習(xí)方式,需要大量的樣本數(shù)據(jù)及對(duì)應(yīng)標(biāo)簽,經(jīng)學(xué)習(xí)得到較為理想的結(jié)果,不過(guò)相較于圖像的獲取,數(shù)據(jù)的標(biāo)注是非常費(fèi)時(shí)費(fèi)力的。為此,該文提出利用CPS(Cross Pseudo Supervision,交叉?zhèn)伪O(jiān)督)的訓(xùn)練方式訓(xùn)練U-Net網(wǎng)絡(luò)進(jìn)行裂縫檢測(cè),并對(duì)U-Net網(wǎng)絡(luò)進(jìn)行改進(jìn),實(shí)現(xiàn)利用較少的標(biāo)簽數(shù)據(jù)達(dá)到較為理想的檢測(cè)效果。
卷積神經(jīng)網(wǎng)絡(luò)是一種具有權(quán)值共享和局部連接等特點(diǎn)的前饋網(wǎng)絡(luò),利用卷積層和池化層的堆疊來(lái)提取圖像特征,實(shí)現(xiàn)輸入圖像特征映射到輸出空間。U-Net網(wǎng)絡(luò)[7]則是利用卷積神經(jīng)網(wǎng)絡(luò),在FCN(Fully Convolutional Network)[8]的基礎(chǔ)上進(jìn)行改進(jìn)和優(yōu)化,用于醫(yī)學(xué)圖像分割,整體結(jié)構(gòu)如圖1所示,由編碼器和解碼器兩個(gè)部分組成。
圖1 U-Net網(wǎng)絡(luò)基礎(chǔ)框架
編碼器部分可分為4個(gè)子模塊,由卷積層和池化層組成,用于圖像特征提取與下采樣,而解碼器部分的4個(gè)子模塊與編碼器一一對(duì)應(yīng)并跳躍連接,同時(shí)利用反卷積操作使圖像尺寸逐漸變大,并與跳躍連接的編碼器輸出進(jìn)行融合。雖然U-Net網(wǎng)絡(luò)是針對(duì)醫(yī)學(xué)圖像分割提出的,不過(guò)其良好的表現(xiàn)使得很多領(lǐng)域的分割任務(wù)也都采用該網(wǎng)絡(luò)完成,如楊佳林等人[9]利用改進(jìn)U-Net方法進(jìn)行遙感圖像道路提取,李大海等人[10]利用改進(jìn)U-Net進(jìn)行遙感圖像云分割。
研究發(fā)現(xiàn),通過(guò)堆疊卷積層加深網(wǎng)絡(luò)可以帶來(lái)更好的效果,但同樣也面臨著梯度消失、梯度爆炸以及網(wǎng)絡(luò)退化等難題。為此,He等人[11]提出了ResNet網(wǎng)絡(luò),對(duì)于一個(gè)堆疊塊(如圖2所示),采用跳躍連接的方式進(jìn)行殘差學(xué)習(xí),使得底層映射為H(x),通過(guò)調(diào)整使學(xué)習(xí)到殘差F(x)=H(x)-x,再將原始映射重鑄為F(x)+x,從而令整個(gè)網(wǎng)絡(luò)最壞的結(jié)果也僅僅是等效于淺層網(wǎng)絡(luò),保證了網(wǎng)絡(luò)的特征提取能力。
圖2 殘差塊結(jié)構(gòu)
將注意力集中至圖像中的重要區(qū)域并忽略不相關(guān)信息,是人類視覺(jué)系統(tǒng)中常用的幫助高效理解和分析復(fù)雜場(chǎng)景的方法,即為注意力機(jī)制。研究人員將這一特性引入到計(jì)算機(jī)視覺(jué)任務(wù)中,設(shè)計(jì)了一個(gè)動(dòng)態(tài)選擇過(guò)程,根據(jù)輸入信息中的重要性來(lái)自適應(yīng)地加權(quán)特征,從而實(shí)現(xiàn)重點(diǎn)關(guān)注某一區(qū)域,在神經(jīng)網(wǎng)絡(luò)中,其核心思想是通過(guò)這一過(guò)程來(lái)獲取到每張?zhí)卣鲌D重要性的差異,將神經(jīng)網(wǎng)絡(luò)的計(jì)算資源集中[12]。因此注意力模塊的使用可以使圖像分割網(wǎng)絡(luò)獲得更加密集的上下文信息,從而輔助分割任務(wù)進(jìn)行更精確的像素分類。
圖像分割的標(biāo)簽數(shù)據(jù)相比于原始圖像的獲取,其成本較為高昂,因此,半監(jiān)督圖像分割的思想便是利用大量的無(wú)標(biāo)簽數(shù)據(jù)來(lái)提升算法的性能。常見(jiàn)的半監(jiān)督學(xué)習(xí)可分為兩類:一致性正則化(Consistency Regularization)和自訓(xùn)練(Self-training)。一致性正則化通過(guò)對(duì)圖像增加各種噪聲擾動(dòng),使算法不同變換的同一樣本有著相似的輸出,例如文獻(xiàn)[13]對(duì)編碼器加入特征擾動(dòng)。自訓(xùn)練[14]則是通過(guò)少量有標(biāo)簽的樣本訓(xùn)練網(wǎng)絡(luò),利用訓(xùn)練好的網(wǎng)絡(luò)對(duì)無(wú)標(biāo)簽數(shù)據(jù)生成分割標(biāo)簽,稱之為偽標(biāo)簽,最后將原標(biāo)簽數(shù)據(jù)與偽標(biāo)簽數(shù)據(jù)混合再次對(duì)網(wǎng)絡(luò)進(jìn)行訓(xùn)練。
池化操作就是利用固定大小的窗口對(duì)輸入圖像以固定步長(zhǎng)進(jìn)行遍歷,并對(duì)窗口區(qū)域內(nèi)的像素值按一定的規(guī)則輸出為一個(gè)像素值,用于降低計(jì)算量,并在一定程度上防止過(guò)擬合。常用的有最大池化和均值池化,即選擇區(qū)域內(nèi)的最大值或者平均值作為輸出,兩者的輸出效果也不盡相同,其對(duì)比結(jié)果如圖3所示。最大池化有助于保留較暗背景中的高亮目標(biāo),而平均池化有助于保留高亮背景中的較暗目標(biāo)[15]。在實(shí)際使用中普遍情況是目標(biāo)亮度大于背景亮度,故而更多地使用了最大池化,而在裂縫圖像中,往往是裂縫區(qū)域的亮度低于其他非裂縫區(qū)域(與圖3中的白底黑線類似),在進(jìn)行下采樣的過(guò)程中需要盡可能保留這一部分信息。因此,該文采用的是平均池化,代替原來(lái)的最大池化。
圖3 池化操作對(duì)比情況
對(duì)于常規(guī)的池化操作,通常是在一個(gè)范圍大小為h×w的區(qū)域內(nèi)進(jìn)行,這種方式在處理不規(guī)則物體時(shí)常常會(huì)不可避免地合并一些不相關(guān)的區(qū)域。為了緩解這一情況,SP(Strip Pooling)注意力[16]使用一個(gè)條帶狀的池化窗口沿著水平或垂直方向進(jìn)行池化操作,其結(jié)構(gòu)如圖4所示。對(duì)于輸入尺寸為H×W的特征圖,分別采用尺寸大小為H×1和1×W的池化窗口進(jìn)行池化遍歷,對(duì)窗口內(nèi)元素求平均值:
(1)
(2)
圖4 SP注意力結(jié)構(gòu)
整個(gè)網(wǎng)絡(luò)以具有34層深度的殘差網(wǎng)絡(luò)ResNet-34[11]為基礎(chǔ),第一卷積階段對(duì)輸入圖像以大小為7×7、通道數(shù)64的卷積核進(jìn)行卷積處理,第二卷積階段首先進(jìn)行3×3的平均池化操作,隨后的卷積操作由殘差塊構(gòu)成,每個(gè)塊分別由兩次卷積、批正則化、ReLU組成,并在Cov2到Cov5的四個(gè)卷積階段中分別進(jìn)行3、4、6、3次的殘差塊堆疊,并且在每個(gè)殘差塊中,加入了SP注意力模塊,用于提升網(wǎng)絡(luò)特征提取能力。主干網(wǎng)絡(luò)采樣過(guò)程中,采用擴(kuò)邊padding=1的方式使3×3卷積前后圖尺寸大小保持一致,而7×7的卷積層則填充為3。
改進(jìn)后整個(gè)U-Net的網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示,SP模塊與卷積模塊處理同一輸入,隨后融合。編碼器的輸出與解碼器對(duì)應(yīng)跳躍連接,用于輔助解碼器恢復(fù)下采樣過(guò)程中所丟失的特征信息,從而更好地恢復(fù)圖像。跳躍連接首先對(duì)特征圖經(jīng)過(guò)1×1卷積,再與解碼器中上采樣后的特征圖進(jìn)行拼接,隨后進(jìn)行3×3卷積,反復(fù)4次后再次經(jīng)過(guò)1×1卷積調(diào)整通道數(shù),經(jīng)Softmax激活后得到與原圖尺寸相同的概率圖。
圖5 SP-Unet網(wǎng)絡(luò)結(jié)構(gòu)
數(shù)據(jù)集的標(biāo)簽制作是一個(gè)非常耗時(shí)且費(fèi)力的過(guò)程,對(duì)于標(biāo)簽數(shù)據(jù)有限的數(shù)據(jù)集而言,利用半監(jiān)督學(xué)習(xí)訓(xùn)練網(wǎng)絡(luò)是一種行之有效的方法。自訓(xùn)練可以利用偽標(biāo)簽擴(kuò)充標(biāo)簽數(shù)據(jù),而一致性學(xué)習(xí)則通過(guò)約束條件使網(wǎng)絡(luò)學(xué)習(xí)到更加緊密的特征編碼,CPS[17](Cross Pseudo Supervision,交叉?zhèn)伪O(jiān)督)則是將兩者相結(jié)合,利用兩種方法的優(yōu)勢(shì),提高網(wǎng)絡(luò)精度。CPS結(jié)構(gòu)如圖6所示。訓(xùn)練時(shí),隨機(jī)初始化兩個(gè)網(wǎng)絡(luò)f(θ1)和f(θ2)處理用于同一輸入X,得到兩個(gè)不同的softmax輸出Out1和Out2,以及對(duì)應(yīng)的偽分割圖Y1和Y2,利用偽分割圖對(duì)Out1和Out2進(jìn)行損失監(jiān)督。
圖6 CPS結(jié)構(gòu)(---?表示損失監(jiān)督)
該文所使用的混凝土裂縫數(shù)據(jù)集為自建數(shù)據(jù)集,共包含尺寸為1 024×1 024的圖像數(shù)據(jù)241張并全部由專業(yè)工程師利用Labelme工具進(jìn)行標(biāo)注,將其按7∶1∶2的比例分別設(shè)置為訓(xùn)練集、驗(yàn)證集和測(cè)試集。訓(xùn)練時(shí)使用Adam算法[18]作為優(yōu)化器,學(xué)習(xí)率初始值設(shè)定為0.000 1,因同時(shí)訓(xùn)練兩個(gè)網(wǎng)絡(luò),需要更大的顯存空間,受制于硬件設(shè)備,參數(shù)batch_size設(shè)定為2,并且為了防止數(shù)據(jù)量過(guò)大,訓(xùn)練時(shí)將輸入圖像尺寸重塑為512×512大小。全部實(shí)驗(yàn)均基于pyTorch深度學(xué)習(xí)框架,在顯存為 8 GB的NVIDIA RTX3070 Ti GPU上進(jìn)行,編程語(yǔ)言為Python3.8,操作系統(tǒng)為Windows 10。
圖像分割可視為一個(gè)對(duì)像素點(diǎn)進(jìn)行前景與背景分類的二分類任務(wù),正樣本被正確分類時(shí)記為TP(True Positive),正樣本被錯(cuò)誤分類時(shí)記為FN(False Negative),負(fù)樣本被正確分類時(shí)記為TN(True Negative),負(fù)樣本被錯(cuò)誤分類時(shí)即為FP(False Positive),則常用的評(píng)價(jià)指標(biāo)精度(precision)和IOU(Intersection Over Union)為:
(3)
(4)
為了更加準(zhǔn)確地評(píng)估算法性能,還選取了DICE系數(shù)、MIOU(Mean IOU)和FPS(Frames Per Second,每秒傳輸幀數(shù))作為補(bǔ)充評(píng)價(jià)指標(biāo),其中DICE系數(shù)是一種用于度量相似度的函數(shù),當(dāng)達(dá)到完美分割時(shí)其值為1,因此也常用于分割網(wǎng)絡(luò)的損失函數(shù),其公式為:
(5)
MIOU為真實(shí)值和預(yù)測(cè)值兩個(gè)集合間的交并比,其公式為:
(6)
式中,pij表示真實(shí)值為i,被預(yù)測(cè)為j的數(shù)量,k+1為類別個(gè)數(shù),pii為真值的數(shù)量,pij和pji分別表示假正例和假負(fù)例。mIOU的計(jì)算是基于全局進(jìn)行的,因此是一個(gè)全局性的評(píng)價(jià)。
FPS用于分割速度的評(píng)價(jià),值越大速度越快,其計(jì)算公式為:
(7)
式中,Snum表示測(cè)試集樣本數(shù)量,T表示測(cè)試所用時(shí)長(zhǎng)。
為了評(píng)估方法的有效性,該文對(duì)比了U-Net、Res-UNet、PSPNet[19]和DeepLabv3+[20]等經(jīng)典的圖像分割方法,結(jié)果如表1所示。
表1 分割效果對(duì)比實(shí)驗(yàn)
可以看出,該方法的分割精度最佳,并且其他各項(xiàng)指標(biāo)也均取得最佳結(jié)果,這是由于在加入了SP注意力模塊與平均池化后,網(wǎng)絡(luò)特征提取效果得到了提高,更有利于裂縫的特征提取,并且交叉?zhèn)伪O(jiān)督的訓(xùn)練方式變相擴(kuò)充了數(shù)據(jù)集,對(duì)網(wǎng)絡(luò)訓(xùn)練更有利。在方法的速度方面,由于使用了注意力機(jī)制,在圖像處理過(guò)程中,插入的注意力模塊會(huì)參與到特征提取過(guò)程中進(jìn)行特征的細(xì)化,這部分的計(jì)算帶來(lái)了些許時(shí)間成本,導(dǎo)致了速度的下降。雖然改進(jìn)后的方法對(duì)FPS指標(biāo)略有影響,但分割精度有較大提升,整體上依然具有一定的優(yōu)勢(shì)。
為了評(píng)估交叉?zhèn)伪O(jiān)督訓(xùn)練的有效性,該文將訓(xùn)練集減少至50%再次進(jìn)行訓(xùn)練,并利用相同測(cè)試集進(jìn)行測(cè)試,結(jié)果如表2所示。
表2 訓(xùn)練結(jié)果對(duì)比(使用50%數(shù)據(jù)集) %
可以看出,幾乎所有的方法在分割效果上都出現(xiàn)了不同程度的降低,這是訓(xùn)練數(shù)據(jù)不足所引起的,網(wǎng)絡(luò)沒(méi)有得到足夠多的訓(xùn)練樣本從而在特征提取方面表現(xiàn)不佳。相比于其他方法,文中方法影響最小,精度降低1.0%,IOU降低0.1%,這兩項(xiàng)指標(biāo)略有降低,而mIOU和DICE系數(shù)與原來(lái)持平,總體上該方法還是保持在了一個(gè)較高的水平。
圖7 不同分割方法對(duì)比
圖7展示了不同算法的分割結(jié)果,第一列為原圖,從無(wú)標(biāo)簽數(shù)據(jù)中隨機(jī)選取的圖像,后面5列分別為5種算法分割后的二值化圖像??梢钥闯觯珼eepLab3+、PSPNet和U-Net分割方法出現(xiàn)了不同程度的不連續(xù)分割,沒(méi)能完全分割出裂縫的整體輪廓,而Res-UNet方法則在第三張的左下角處出現(xiàn)了錯(cuò)誤分割。相較于其他方法,文中分割方法整體上表現(xiàn)較好,整體分割更為細(xì)致,更少的像素被錯(cuò)誤分類。
以U-Net為基礎(chǔ)網(wǎng)絡(luò)進(jìn)行改進(jìn),提出了一種嵌套條帶注意力機(jī)制的分割方法(SP-Unet),將網(wǎng)絡(luò)主干下采樣部分替換為具有更強(qiáng)特征提取能力的ResNet-34,并在其中插入SP注意力模塊,同時(shí)將全部的池化層替換為平均池化,強(qiáng)化下采樣部分對(duì)裂縫區(qū)域的特征提取能力。另外,為了應(yīng)對(duì)數(shù)據(jù)集不足的問(wèn)題,引入了交叉?zhèn)伪O(jiān)督訓(xùn)練方法,同時(shí)訓(xùn)練兩個(gè)網(wǎng)絡(luò)并利用輸出約束彼此,從而使網(wǎng)絡(luò)在具有較少標(biāo)簽數(shù)據(jù)時(shí)依然能夠保持一個(gè)較高的精度。