宋 杰,于 裕,駱起峰
(安徽大學(xué)計算機科學(xué)與技術(shù)學(xué)院,合肥230039)(*通信作者電子郵箱yyu_ah@163.com)
邊緣檢測是圖像處理和計算機視覺中的一個基本問題,目標(biāo)是從自然圖像中提取對象邊界和感知上突出的邊緣,從而保留圖像的要點并忽略不重要的細(xì)節(jié)。它通常被認(rèn)為是一種低層次的技術(shù),各種高層次的任務(wù)[1-2]從邊緣檢測的發(fā)展中受益匪淺,如對象檢測[3]、對象建議[4]和圖像分割[5]。
早期的邊緣檢測利用圖像的一階和二階梯度信息的原理來檢測邊緣。如:Sobel[6]算子、Canny[7]算子。這些算法盡管實時性較好,但抗干擾性差,不能有效克服噪聲影響,定位方面欠佳。早期的邊緣檢測器是人工設(shè)計的,用于發(fā)現(xiàn)強度和顏色上的不連續(xù)性。Martin等[8]發(fā)現(xiàn)將亮度、顏色和紋理的變化轉(zhuǎn)化為特征,并訓(xùn)練分類器將這些特征信息組合起來,可以顯著提高性能。最近的工作探索基于學(xué)習(xí)的邊緣檢測方法。Dollár等[9]使用隨機決策森林來表示局部圖像斑塊中的結(jié)構(gòu),輸入顏色和梯度特征,結(jié)構(gòu)化森林輸出高質(zhì)量的邊緣信息。然而,上述方法都是基于手工設(shè)計,成本高,設(shè)計繁瑣,實用性不強,且對于語義上有意義的邊緣檢測來說,手工特征表示高級信息的能力是有限的。
此外,近年來有一種使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的發(fā)展浪潮,強調(diào)自動分層特征學(xué)習(xí)的重要性,極大地提高了邊緣檢測的性能。Ganin 等[10]提出將CNN 與近鄰搜索結(jié)合起來,用CNN 算出圖像中每個斑塊的特征,然后在字典里面進(jìn)行檢索,查找與其相似的邊緣,最后把這些相似的邊緣信息集成起來,輸出最終的結(jié)果。Xie等[11]提出了第一個端到端的邊緣檢測模型HED(Holistically-Nested Edge Detection),該網(wǎng)絡(luò)基于全卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)[12]架構(gòu),采用多尺度和多層級的特征學(xué)習(xí)方式,在VGG16(Visual Geometry Group)[13]網(wǎng)絡(luò)的基礎(chǔ)上顯著提高了邊緣檢測的成績。Liu 等[14]在HED 模型基礎(chǔ)上提出RCF(Richer Convolutional Features for edge detection),使用了更豐富的卷積特征,并提出了一個更魯棒的損失函數(shù),提升了檢測性能。
在邊緣檢測領(lǐng)域,像HED 和RCF 這類經(jīng)典的模型,雖然在邊緣處理領(lǐng)域取得了不小的進(jìn)展,但都是基于VGG16 傳統(tǒng)卷積(Convolution,conv)結(jié)構(gòu),不能提取圖像的全局特征,且采用了過多的下采樣,影響測試集的泛化能力。另外,在網(wǎng)絡(luò)的較低階段產(chǎn)生的特征圖往往太過于雜亂,包含過多無關(guān)重點的細(xì)節(jié)紋理,雖然網(wǎng)絡(luò)在最后做了一層融合,用于融合多尺度特征,但是簡單地將5 個stage 使用1×1 的卷積層融合,會丟失一些多尺度信息。為了解決這些問題,本文提出了一種跨層融合特征的邊緣檢測(Cross-layer Fusion Feature for edge detection,CFF)模型。該模型在VGG 主干網(wǎng)絡(luò)中引入了CBAM(Convolutional Block Attention Module)注意力機制[15],并采用Zhang[16]提出的讓卷積網(wǎng)絡(luò)具有移位不變性的方法,增強網(wǎng)絡(luò)的特征提取能力。另外在主干網(wǎng)絡(luò)的第5個stage中使用擴張卷積技術(shù)(dilation,dil)[17]增加網(wǎng)絡(luò)的感受野,以提取更多的語義信息。針對每個階段產(chǎn)生的特征信息,使用了一種類似特征金字塔[18]的方式充分融合多尺度特征,使得低層也能夠關(guān)注高層的全局特征,并對每個階段進(jìn)行監(jiān)督學(xué)習(xí),最后再對這些多尺度特征使用1×1的卷積層融合,生成最終的邊緣圖。在伯克利分割數(shù)據(jù)集(Berkeley Segmentation Data Set,BSDS500)[19]和PASCAL VOC Context[20]數(shù)據(jù)集上訓(xùn)練。在測試時,使用圖像金字塔技術(shù)進(jìn)一步提高邊緣的質(zhì)量,實驗結(jié)果表明,CFF 模型能夠有效地解決邊緣圖像線條模糊的問題。
RCF[14]模型在HED[11]的基礎(chǔ)上,優(yōu)化了網(wǎng)絡(luò)的結(jié)構(gòu)。RCF 網(wǎng)絡(luò)使用了更豐富的卷積特征,分別每個stage 進(jìn)行監(jiān)督學(xué)習(xí),提高了模型的收斂速度。最后對各層的多尺度特征使用1×1 卷積層融合,并監(jiān)督學(xué)習(xí)。RCF 相比HED 網(wǎng)絡(luò),利用了VGG16 所有卷積層提取的特征信息,并且提出了一個更魯棒的損失函數(shù),使得檢測結(jié)果有了大幅度的提升。
本文基于RCF 網(wǎng)絡(luò),提出了一種跨層級融合多尺度特征的CFF 模型,結(jié)構(gòu)如圖1 所示。在下面小節(jié)中,將介紹各個模塊的改進(jìn)。
1.2.1 主干網(wǎng)絡(luò)
如圖1所示,使用VGG16作為CFF模型的主干網(wǎng)絡(luò),并去掉了全連接層,采用全卷積網(wǎng)絡(luò)框架。在主干網(wǎng)絡(luò)中引入了CBAM 注意力機制[15],并將下采樣技術(shù)[16]應(yīng)用到主干網(wǎng)絡(luò)的前3 個stage。在 第4 個stage 之后使用2×2 的最大池化(Maxpool),步長設(shè)為1,使得第5個stage的特征圖分辨率保持不變,保留圖像的細(xì)節(jié)信息。因此網(wǎng)絡(luò)只有3 次下采樣操作,分辨率降低1/8。另外,為了解決去除下采樣操作后感受野被限制的問題,在第5 個stage 的卷積操作中使用了擴張卷積技術(shù)[17],擴張參數(shù)設(shè)為2,保證網(wǎng)絡(luò)參數(shù)不變的情況下增加模型的感受野。
圖1 CFF網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of CFF network
1.2.2 基于CBAM注意力的主干網(wǎng)絡(luò)
CFF 模型在主干網(wǎng)絡(luò)中引入了CBAM[15]注意力模塊。另一個相關(guān)工作是SENet(Squeeze-and-Excitation Networks)[21],網(wǎng)絡(luò)根據(jù)loss 去學(xué)習(xí)特征權(quán)重,使得有效的特征圖權(quán)重大,無效或效果小的特征圖權(quán)重小的方式訓(xùn)練模型,以達(dá)到更好的結(jié)果。然而SENet 的不足之處只考慮到不同通道的像素的重要性,忽略了不同位置的重要性。而CBAM 模型比SENet 多了空間注意力機制,這個空間注意力模塊能夠?qū)W習(xí)到每個特征圖不同位置的重要性。CBAM模塊結(jié)構(gòu)如圖2所示。
圖2 CBAM模塊結(jié)構(gòu)Fig.2 Module structure of CBAM
CBAM 模塊可以分為通道注意力模塊(圖3)和空間注意力模塊(圖4)。細(xì)致來說,在通道注意力模塊中,使用平均池化和最大池化對輸入的特征圖F在空間維度上進(jìn)行壓縮,得到兩個不同的空間描述符,分別表示平均池化特征和最大池化特征,然后將兩個描述符發(fā)送到多層感知器(Multi-Layer Perceptron,MLP)中,將MLP 輸出的特征進(jìn)行基于element-wise 的加和操作,再經(jīng)過sigmoid 激活操作,生成以生成通道關(guān)注圖Mc。最后將Mc與F相乘得到具有通道關(guān)注的特征圖F'。
在空間注意力模塊中Stage1,首先對F'沿著通道維度應(yīng)用平均池化和最大池化操作,得到,然后將這兩個特征連接起來,并通過標(biāo)準(zhǔn)卷積層進(jìn)行卷積,再經(jīng)過sigmoid激活生成空間關(guān)注圖Ms。最后將空間關(guān)注圖Ms與F'相乘得到具有注意力機制的特征圖F''。
圖3 通道注意力模塊Fig.3 Channel attention module
圖4 空間注意力模塊Fig.4 Spatial attention module
考慮到網(wǎng)絡(luò)參數(shù)的問題,只在網(wǎng)絡(luò)的部分卷積層添加了CBAM 注意力機制,如圖1中所示。在加入CBAM 模塊之后,網(wǎng)絡(luò)能夠?qū)W習(xí)到不同特征圖和不同位置像素點的重要性,從而增強模型的特征提取能力。
1.2.3 最大池化
現(xiàn)代卷積網(wǎng)絡(luò)并不是移位不變的,是因為常用的下采樣方法,如Maxpool、strided-Conv 和Avgpool 忽略了采樣定理,所以小的輸入移位或平移會導(dǎo)致輸出發(fā)生劇烈變化。為解決這一問題,Zhang[16]提出了一種模糊采樣方法(BlurPool)。
如圖5 所示,最大池化的第一步是先計算區(qū)域的最大值,然后進(jìn)行下采樣。而BlurPool 則將抗鋸齒操作嵌入到中間,通過引入模糊核來平滑輸入信號,使得平移后的結(jié)果與未平移的結(jié)果相近。
以一維信號為例,如圖6,當(dāng)輸入信號是[0,0,1,1,0,0,1,1],傳統(tǒng)最大池化會得到[0,1,0,1],若將輸入信號移位1步,最大池化會得到[1,1,1,1],兩個結(jié)果變化較大,鋸齒化明顯。而MaxBlurPool 操作先將輸入信號做步長為1 的求最大值操作得到[0,1,1,1,0,1,1,1],再對兩端補位得到[1,0,1,1,1,0,1,1,1,0],然后引入模糊核kernel=[1,2,1],將模糊核與信號做點積運算,并除以模糊核的和值,得到[0.5,0.75,1,0.75,0.5,0.75,1,0.75],再做下采樣后得到[0.5,1,0.5,1]。同樣,若將輸入信號移位1 步之后,最后將會得到[0.75,0.75,0.75,0.75],結(jié)果相對來說比傳統(tǒng)最大池化更平滑。需要注意的是,文獻(xiàn)[16]提供了多個模糊核,且使用模糊核時需要手動選擇。
圖5 抗鋸齒的最大池化Fig.5 Anti-aliased max-pooling
圖6 一維信號的抗鋸齒操作Fig.6 Anti-aliasing operations for one-dimensional signals
CFF 模型在網(wǎng)絡(luò)的前3 個階段后使用該下采樣技術(shù)[16],增強了模型的魯棒性和泛化能力。
1.2.4 多尺度特征提取
在深度學(xué)習(xí)中,通常存在兩種方式讓網(wǎng)絡(luò)學(xué)習(xí)到多尺度特征:第一種方法是在神經(jīng)網(wǎng)絡(luò)的內(nèi)部,在網(wǎng)絡(luò)中以越來越大的感受野和下采樣層的方式,這樣每層學(xué)到的特征自然是多尺度的;第二種方法是通過調(diào)整輸入圖像的尺寸。
CFF 采用和RCF 網(wǎng)絡(luò)相同的方式提取圖像的多尺度特征。將主干的網(wǎng)絡(luò)中的每一層側(cè)輸出通過1×1的卷積層進(jìn)行特征壓縮,并以stage為單位將所有側(cè)輸出相加。隨后經(jīng)過1×1的卷積層降維,輸出一張單通道的特征圖。1.2.5 特征金字塔融合模塊
為了充分融合各層級的多尺度特征,CFF 模型采用特征金字塔的方式,通過將高層特征傳遞給低層,使得低層也能夠關(guān)注全局特征。在充分融合多尺度特征的同時有效解決了低階段生成的特征圖中細(xì)節(jié)雜亂模糊的問題。
如圖1中的特征融合模塊(Feature Fusion Module,F(xiàn)FM),首先對高層的特征做上采樣,然后與低層的特征連接,隨后通過一層1×1 的卷積進(jìn)行特征壓縮。通過這種方式使得低層能夠很好地融合高層特征。另外,為避免模型過度忽略低層特征包含的重要細(xì)節(jié),借鑒了殘差網(wǎng)絡(luò)[22]的結(jié)構(gòu),在本模塊中將原始特征圖與輸出特征圖相加,并將結(jié)果作為FFM 的最終輸出。在第4個stage中的FFM 結(jié)構(gòu)如圖7所示。其他層次中的結(jié)構(gòu)類似。
圖7 特征融合模塊Fig.7 Feature fusion module
對于特征融合模塊的輸出:一方面作為前一階段的融合模塊的輸入;另一方面使用反卷積(Deconvolution,deconv)操作實現(xiàn)上采樣,使每一個stage 都輸出一張邊緣圖,并且模型對每一個stage輸出的邊緣圖都進(jìn)行監(jiān)督學(xué)習(xí)。
經(jīng)過特征金字塔模塊后,多尺度特征已經(jīng)充分融合,所以模型只使用一個1×1 卷積層融合所有層級的多尺度特征,作為CFF模型最后的輸出邊緣圖像,并進(jìn)行監(jiān)督學(xué)習(xí)。
邊緣檢測數(shù)據(jù)集通常由多個注釋者來標(biāo)記。對于每個圖像,平均所有注釋者的標(biāo)記以生成邊緣概率圖,范圍從0到1。其中:0 表示沒有注釋者在該像素上標(biāo)記;1 表示所有注釋者都在此像素處標(biāo)記。將邊緣概率高于η的像素視為正樣本,將邊緣概率等于0 的像素視為負(fù)樣本;否則,如果像素被小于η的注釋者標(biāo)記,則該像素在語義上可能是有爭議的邊緣點,無論將其視為正樣本還是負(fù)樣本,都可能使網(wǎng)絡(luò)混淆,所以模型忽略了這個類別中的像素。
由于邊緣檢測是對像素做分類,因此本模型使用交叉熵函數(shù)作為目標(biāo)函數(shù),與文獻(xiàn)[14]相同,計算每個像素相對于像素標(biāo)簽的損失為:
其中:|Y+|和|Y-|分別代表正負(fù)樣本的數(shù)量,超參數(shù)λ用來平衡正負(fù)樣本數(shù)量差,Xi表示神經(jīng)網(wǎng)絡(luò)的激活值,yi表示標(biāo)簽圖中像素點i是邊緣點的概率值,W表示神經(jīng)網(wǎng)絡(luò)中可學(xué)習(xí)的參數(shù)。
網(wǎng)絡(luò)中每個階段輸出的邊緣圖像之間差異較大,各階段損失的量級可能不一致,且融合階段的損失應(yīng)該占主要地位。另外,在實驗中發(fā)現(xiàn),模型在訓(xùn)練至第20 個epoch時,前2 個階段的特征圖幾乎不再包含任何細(xì)節(jié)紋理,猜想這可能是低層融合高層特征后帶來的負(fù)面影響。這些問題對最終的預(yù)測都是不利的。為了抑制這種現(xiàn)象,本文降低了網(wǎng)絡(luò)中5 個階段的損失比重,提高了融合階段損失比重,以平衡各階段損失和融合損失之間的關(guān)系。
將網(wǎng)絡(luò)的5個stage的損失權(quán)重設(shè)置為Sside,最終融合層的損失權(quán)重為sfuse,因此總損失函數(shù)可寫為:
其中:Sk表示第k個stage的損失權(quán)重,sfuse表示融合層的損失權(quán)重,代表第k個stage輸出圖片中的第i個像素點的激勵值,代表融合模塊輸出的圖片中的第i個像素點的激勵值,|I|代表每張圖片像素點的總數(shù),K代表主干網(wǎng)絡(luò)中stage的數(shù)量。
為了進(jìn)一步提高邊緣的質(zhì)量,在測試時采用了圖像金字塔技術(shù)。具體來說,在測試時調(diào)整圖像的大小來構(gòu)建一個圖像金字塔,每個圖像分別輸入到已經(jīng)訓(xùn)練好的單尺度檢測器中;然后,使用雙線性插值將所有得到的邊緣概率圖調(diào)整為原始圖像的大?。蛔詈?,對這些結(jié)果進(jìn)行加權(quán)平均,得到最終的預(yù)測邊緣圖。本模型使用了3個不同的尺度,分別為0.5、1.0和1.5。
BSDS500[19]數(shù)據(jù)集和PASCAL VOC Context[20]數(shù)據(jù)集是邊緣檢測中廣泛使用的數(shù)據(jù)集。BSDS500 數(shù)據(jù)集由200 張訓(xùn)練圖像,100 張驗證圖像和200 張測試圖像組成,每個圖像由4到9 個注釋者標(biāo)記。為了防止模型出現(xiàn)過擬合現(xiàn)象,對BSDS500 的訓(xùn)練集和驗證集共計300 張圖片進(jìn)行旋轉(zhuǎn)、擴大、剪裁等操作,進(jìn)行數(shù)據(jù)集增強。最后將BSDS500 的增強數(shù)據(jù)集與PASCAL VOC Context數(shù)據(jù)集混合作為訓(xùn)練數(shù)據(jù)。
CFF 網(wǎng)絡(luò)基于Python3 編寫,使用pytorch 1.0.1 深度學(xué)習(xí)框架,以及其他一些庫。在一臺ubuntu服務(wù)器上進(jìn)行實驗,硬件包括E5-2678 v3 2.50 GHz 的CPU 和1 塊NVIDIA Tesla K40C的顯卡,顯存12 GB。
模型通過隨機梯度下降算法訓(xùn)練30 個epoch,batch size設(shè)為1,基準(zhǔn)學(xué)習(xí)率learning rate 設(shè)為1E-6,為不同卷積層指定不同的學(xué)習(xí)率,momentum 設(shè)置為0.9,weight decay 設(shè)置為0.000 2。在訓(xùn)練時,不使用任何預(yù)訓(xùn)練模型,網(wǎng)絡(luò)參數(shù)使用Gaussian分布初始化。
給定邊緣概率圖,需要閾值來產(chǎn)生邊緣圖像,設(shè)置此閾值有兩種選擇:第一個是最佳數(shù)據(jù)集規(guī)模(Optimal Dataset Scale,ODS),它對數(shù)據(jù)集中的所有圖像采用固定閾值;第二種是最佳圖像比例(Optimal Image Scale,OIS),它為每個圖像選擇最佳閾值。通常使用ODS 和OIS 作為邊緣檢測模型的指標(biāo)。
將非最大抑制技術(shù)[9]應(yīng)用于模型輸出的邊緣圖像以獲得用于評估的細(xì)化邊緣圖像,并用Edge Box[4]工具包進(jìn)行評估,圖8 顯示了評估結(jié)果。RCF 網(wǎng)絡(luò)的邊緣檢測相對于人類已經(jīng)取得了更好的結(jié)果,而CFF模型優(yōu)化了RCF網(wǎng)絡(luò)的短板,其多尺度策略將ODS評分提高到了0.818。
圖8 BSDS500評估結(jié)果Fig.8 Evaluation results on BSDS500
將CFF 與其他相關(guān)算法進(jìn)行了比較,結(jié)果如表1 所示。從表中的各項指標(biāo)可以看出,CFF 模型的ODS 和OIS 分別比RCF模型提高了0.7個百分點和0.9個百分點。
表1 CFF模型和其他算法的比較Tab.1 Comparison between CFF model and other algorithms
CFF 與RCF 網(wǎng)絡(luò)輸出的邊緣圖像的對比結(jié)果如圖9 所示。通過對比可以看出,RCF 模型產(chǎn)生邊緣圖像中有一些線條比較模糊,而CFF 模型能夠清晰地將圖像中的邊緣檢測出來,且對一些細(xì)節(jié)模糊的問題處理得較好。
圖9 CFF與RCF結(jié)果對比Fig.9 Comparison of the results of CFF and RCF
為進(jìn)一步展示CFF 模型的優(yōu)化細(xì)節(jié),在圖10中給出了CFF模型在各個階段輸出的邊緣圖像與RCF網(wǎng)絡(luò)的對比。在圖中每一列從上到下分別為階段1~5 生成的邊緣圖像,可以看出RCF 網(wǎng)絡(luò)的各個階段對一些無關(guān)的細(xì)節(jié)處理能力較差,每個階段中都包含了一些模糊的線條。而CFF模型通過跨層融合不同層次的特征,使得模型在低層能夠關(guān)注一些全局的輪廓信息,幫助多尺度特征充分融合。從圖中可以看出,CFF輸出的邊緣圖像相較于RCF 只包含了很少的無關(guān)細(xì)節(jié),尤其是在第1,2階段,沒有過多的雜亂紋理。
圖10 CFF與RCF各階段輸出圖像的對比Fig.10 Comparison of output images of CFF and RCF at each stage
在本節(jié)中,對CFF 模型的內(nèi)部結(jié)構(gòu)進(jìn)行性能分析。如表2所示,在主干網(wǎng)絡(luò)中引入CBAM注意力模塊和抗鋸齒的下采樣技術(shù)后,模型的ODS 分?jǐn)?shù)提高了0.4%,OIS 提高了0.5%,證明了本模型的主干網(wǎng)絡(luò)提取的特征信息更加豐富有效。另外,通過跨層融合不同階段的輸出特征,ODS 和OIS 都進(jìn)一步提高了0.2%,說明通過將高層特征傳遞給低層后,能夠充分融合多尺度特征。為了平衡各階段損失之間的關(guān)系,抑制低層細(xì)節(jié)丟失的問題,通過設(shè)置不同階段的損失權(quán)重后,模型的ODS和OIS分別提高了0.1%和0.2%。
表2 各模塊改進(jìn)效果的比較Tab.2 Comparison of improvement effect of different modules
本文基于RCF 網(wǎng)絡(luò),提出了一種關(guān)注全局的邊緣檢測網(wǎng)絡(luò)。CFF 模型在VGG16 主干網(wǎng)絡(luò)中加入CBAM 模塊,并采用具有平移不變性的下采樣技術(shù),提高了網(wǎng)絡(luò)的特征提取能力。去除部分下采樣層,防止圖像分辨率過低,影響模型精度。并在第5 個stage 采用空洞卷積技術(shù)提升網(wǎng)絡(luò)的感受野。另外,模型采用了一種由深到淺的特征融合方式,使得網(wǎng)絡(luò)能夠更加注重全局信息,并在計算損失時,給不同階段設(shè)置不同的損失權(quán)重以平衡各階段損失,防止模型過度忽略低層的細(xì)節(jié)。實驗表明,CFF模型能夠生成更清晰的邊緣圖像。