翟正利,孫 霞,周 煒,梁振明
(青島理工大學(xué) 信息與控制工程學(xué)院,山東 青島 266520)
顯著性目標(biāo)檢測通過人類視覺和認(rèn)知系統(tǒng)識(shí)別圖像中最重要和最顯著的對(duì)象區(qū)域,目前許多計(jì)算機(jī)視覺研究人員提出許多用于模擬人類視覺注意過程或識(shí)別顯著對(duì)象的計(jì)算模型[1]。多目標(biāo)檢測可以幫助盲人知道避開什么樣的障礙物,有助于他們提前做好心理準(zhǔn)備。
在算法策略方面,顯著性目標(biāo)檢測方法可以分為兩類,一個(gè)是自上而下的數(shù)據(jù)驅(qū)動(dòng)方法;另一個(gè)是自上而下的任務(wù)驅(qū)動(dòng)方法。對(duì)于大多數(shù)自下而上的方法,使用低級(jí)特征來計(jì)算顯著特征值,例如顏色、紋理和對(duì)比度。Itti等人[2]提出了中心-圓形方案,使用多尺度顯著圖的線性和非線性組合方法來提取顏色、強(qiáng)度、方向和紋理等低級(jí)特征[3]。然而這些方法仍然存在一些需要解決的問題,比如大多數(shù)全局對(duì)比度方法[4]在進(jìn)行全局統(tǒng)計(jì)時(shí)依賴于顏色唯一性。Fareed等人[5]提出了一種基于稀疏表示和圖形排序的顯著區(qū)域檢測算法,它結(jié)合了高斯和貝葉斯過程,生成平滑精確的顯著圖。以上方法存在兩個(gè)主要的問題:首先,這些方法主要依賴于手工制作的低級(jí)特征,這些特征可能無法用于目標(biāo)與背景相似的圖像以及具有復(fù)雜背景的圖像;其次,這些方法可能不足以捕獲自然圖像中的語義特征,并且它們通常會(huì)忽略圖像中不同部分之間的空間關(guān)系。
隨著深度網(wǎng)絡(luò)的迅速發(fā)展,已有研究人員將神經(jīng)網(wǎng)絡(luò)應(yīng)用于計(jì)算機(jī)視覺中并取得成功。包括圖像分類[6]、物體檢測[7]、語義分析[8]等。利用深度神經(jīng)網(wǎng)絡(luò)可以直接通過網(wǎng)絡(luò)訓(xùn)練模型獲得物體特征以及相互之間的關(guān)系。Li等人[9]提出了一種基于深度卷積神經(jīng)網(wǎng)絡(luò)的由粗到細(xì)顯著性目標(biāo)檢測,首先利用完全卷積網(wǎng)絡(luò)產(chǎn)生粗略顯著圖,然后將得到的粗顯著圖與原始灰度圖加黑色圖作為基于超像素CNN模型的輸入,進(jìn)行精確邊界細(xì)化檢測。Zhu D等人[10]提出了一種基于深度殘差網(wǎng)絡(luò)的局部和全局顯著性目標(biāo)檢測,該方法分別利用深度殘差網(wǎng)絡(luò)來提取顯著目標(biāo)的局部特征和全局特征,通過貝葉斯結(jié)合來獲得最終顯著性圖。Cao F等人[11]使用具有特征選擇的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行高效的顯著性檢測,他們提出了一種特征圖選擇方法用于選擇有用的特征圖并丟棄其余部分。為了解決顯著性目標(biāo)的邊界不清晰問題,文中提出了一種具有跳躍連接的全卷積神經(jīng)網(wǎng)絡(luò),通過結(jié)合低級(jí)特征來增強(qiáng)邊界信息。實(shí)驗(yàn)表明基于跳躍連接的全卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測方法明顯優(yōu)于之前的方法,在增強(qiáng)特征提取的同時(shí)還增強(qiáng)邊界信息。
近年來卷積神經(jīng)網(wǎng)絡(luò)一直在驅(qū)動(dòng)著圖像識(shí)別領(lǐng)域的進(jìn)步。無論是整張圖像的分類,還是物體檢測等都在CNN的幫助下取得非常大的發(fā)展。語義分割是計(jì)算機(jī)視覺中的基本任務(wù),也是計(jì)算機(jī)視覺的熱點(diǎn),在語義分割中需要將視覺輸入分為不同的語義可解釋類別。傳統(tǒng)用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行語義分割的方法是將像素周圍的一個(gè)小區(qū)域作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,然后做訓(xùn)練和預(yù)測。但在用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行語義分割的過程也存在一些需要進(jìn)一步改進(jìn)的地方,如下:
(1)占用內(nèi)存比較大;
(2)存在過多的重復(fù)計(jì)算,導(dǎo)致計(jì)算效率比較低;
(3)區(qū)域大小如何確定,同時(shí)也限制了感受野的大小。
為了解決這些問題,Long[12]提出了全卷積網(wǎng)絡(luò)FCN用于語義分割,F(xiàn)CN能夠?qū)D像進(jìn)行像素級(jí)的端到端的分類檢測。與傳統(tǒng)的CNN在卷積層之后使用全連接層得到固定長度的特征向量進(jìn)行分類不同,F(xiàn)CN可以接受任意尺寸的輸入圖像,并對(duì)最后一層卷積后得到的特征圖采用反卷積層進(jìn)行上采樣操作,得到與原始輸入圖像相同尺寸大小的特征圖,從而可以進(jìn)行像素級(jí)的預(yù)測,同時(shí)還保留了原始輸入圖像中的空間信息進(jìn)而解決了語義分割問題。
FCN主要由三部分組成,分別是卷積層、池化層和上采樣層。
在卷積層的前向傳播過程,輸入特征映射X與具有偏置b的可學(xué)習(xí)內(nèi)核W卷積,并且通過激活函數(shù)Relu,形成輸出特征映射。為了更加詳細(xì)地理解卷積過程,首先對(duì)圖像的每個(gè)像素進(jìn)行編號(hào),用Xij表示圖像的第i行第j列元素;對(duì)filter的每個(gè)權(quán)重進(jìn)行編號(hào),用Wmn表示第m行第n列權(quán)重,用Wb表示filter的偏置項(xiàng);對(duì)Feature Map的每個(gè)元素進(jìn)行編號(hào),用aij表示Feature Map的第i行第j列元素;用f表示激活函數(shù)。然后,使用下列公式計(jì)算卷積:
(1)
FCN的卷積層以VGG19為基礎(chǔ),VGG19的原始結(jié)構(gòu)有19個(gè)卷積層,由5個(gè)池化層隔開,并使用完全連接層來進(jìn)行分類[13]。19個(gè)卷積層采用3×3的卷積核。為了使VGG19適應(yīng)完全卷積網(wǎng)絡(luò),將全連接層轉(zhuǎn)換為卷積層。第一個(gè)完全連接層被轉(zhuǎn)換為具有7×7內(nèi)核的卷積層,第二個(gè)完全連接層被轉(zhuǎn)換為具有內(nèi)核大小為1×1的卷積層,這兩個(gè)卷積層之后進(jìn)行Dropout操作。第三個(gè)完全卷積層被轉(zhuǎn)換為具有內(nèi)核大小為1×1的卷積層。如果沒有完全連接層,輸入圖像的大小可以為任意尺寸,使得操作更容易,因此不需要像傳統(tǒng)網(wǎng)絡(luò)那樣將輸入調(diào)整為固定大小。在全卷積神經(jīng)網(wǎng)絡(luò)中,多個(gè)卷積運(yùn)算采用的是全零填充方法,以保留圖像邊界信息,并且更容易控制輸出圖像的大小[14-15]。與完全連接層相比,卷積層的好處在于實(shí)現(xiàn)權(quán)重稀疏和權(quán)重共享,減少神經(jīng)網(wǎng)絡(luò)中的參數(shù)量。
池化層也稱為欠采樣或下采樣,池化操作主要分為最大池化和平均池化。如圖1所示,數(shù)據(jù)被分成相鄰非重疊塊,每個(gè)塊由四個(gè)元素組成。平均池化操作是計(jì)算四個(gè)元素的平均值,類似的最大池化的操作是輸出四個(gè)元素中的最大值。
在全卷積神經(jīng)網(wǎng)絡(luò)中,經(jīng)過卷積層進(jìn)行卷積之后,還需要對(duì)得到的特征圖進(jìn)行進(jìn)一步處理。處理得到的特征圖需要面臨計(jì)算的挑戰(zhàn),并增加了網(wǎng)絡(luò)中的參數(shù)量,同時(shí)也會(huì)增加過度擬合的風(fēng)險(xiǎn)。因此,在卷積層之后進(jìn)行2×2的最大池化操作[16](即圖像中的每個(gè)通道的每個(gè)2×2非重疊區(qū)的最大值),并輸出作為下一層的輸入。對(duì)于大小為ch×h×w的輸入,經(jīng)過最大池化計(jì)算之后,其大小為ch×h/2×w/2。最大池化的定義如下:
f(x)=max(0,x)
(2)
圖1 平均池化和最大池化
上采樣,也稱為反卷積或者轉(zhuǎn)置卷積,與卷積層相反。在FCN全卷積網(wǎng)絡(luò)中,由于要對(duì)圖像進(jìn)行像素級(jí)的分割,需要將圖像尺寸還原到原來的大小。當(dāng)反卷積步幅>1時(shí),需要在中間填充圖像。
首先,對(duì)卷積層的最后一層進(jìn)行反卷積,輸入為ESP模塊的最后一層,輸出層的形狀為池化層第四層,反卷積核為4×4,使得特征圖的大小擴(kuò)大兩倍。然后,將得到的結(jié)果作為下一次反卷積的輸入。第二次反卷積的輸出為池化層第三層的形狀,反卷積核為4×4,使得特征圖的大小在第一次反卷積之后繼續(xù)擴(kuò)大兩倍。第三次反卷積核的大小為16×16,得到與原始圖像相同大小的特征圖。通過微調(diào)預(yù)訓(xùn)練VGG19,可以用很少的訓(xùn)練數(shù)據(jù)有效地訓(xùn)練模型。
高效金字塔網(wǎng)絡(luò)是一種基于新的卷積模塊的能有效對(duì)高分辨率圖片進(jìn)行語義分割的網(wǎng)絡(luò)[17],其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。高效金字塔卷積模塊主要包含兩部分:第一部分是采用1×1的逐點(diǎn)卷積,通過逐點(diǎn)卷積操作可以減少計(jì)算量;第二部分是擴(kuò)張卷積的空間金字塔,擴(kuò)張卷積的空間金字塔首先通過空洞卷積對(duì)特征圖進(jìn)行不通膨脹率的進(jìn)一步提取,以獲得更大感受野,最后進(jìn)行分層特征融合。
ESP網(wǎng)絡(luò)是基于ESP模塊的,ESP模塊的核心是“reduce-split-transform-merge”,過程如下:
(1)Reduce(point-wise convolution):對(duì)于H×W×M的輸入,使用d個(gè)1×1×M的卷積核,將M維的輸入特征圖降到d維,得到的輸出是H×W×d。
(2)Split & Transform(spatial pyramid of dilated convolutions):使用k個(gè)不同膨脹率的卷積核對(duì)第一步的輸出特征圖并行進(jìn)行卷積,輸出將是k個(gè)相同大小的特征圖。
(3)HFF(hierarchical feature fusion):分層特征融合,將第二步得到的k個(gè)相同大小的特征圖按照一定規(guī)則進(jìn)行拼接,得到最終的輸出特征圖。
圖2 金字塔網(wǎng)絡(luò)結(jié)構(gòu)
在ESP網(wǎng)絡(luò)中通過不同膨脹率的空洞卷積進(jìn)行特征提取不僅獲得更大的感受野,而且減少了參數(shù)量,因?yàn)槭紫鹊谝徊竭M(jìn)行的降維使得通道數(shù)減少之后,每一個(gè)空洞卷積的參數(shù)也隨之減少。拼合策略與普通空洞卷積特征融合的方法不同,這里為了避免gridding artifacts現(xiàn)象,采用了逐級(jí)相加的策略。
全卷積神經(jīng)網(wǎng)絡(luò)可以高效且有效地預(yù)測顯著圖,尤其是顯著對(duì)象與背景類似時(shí)。但是顯著對(duì)象的邊界難以進(jìn)行精確分割,因?yàn)槌鼗^程通常忽略局部信息以便擁有更大的感受野。為了實(shí)現(xiàn)在擁有更大的感受野的同時(shí)更好地捕獲對(duì)象邊界,實(shí)驗(yàn)在FCN的基礎(chǔ)上結(jié)合了空洞卷積以及跳躍連接方法。
首先采用VGG19的前5個(gè)卷積塊來進(jìn)行特征提取,然后將完全連接的層轉(zhuǎn)換為ESP模塊。ESP模塊首先將輸入的特征圖進(jìn)行降維,然后使用k個(gè)不同膨脹率的卷積核對(duì)降維后的特征圖并行進(jìn)行卷積,實(shí)驗(yàn)中采用5個(gè)不同膨脹率的卷積核,分別為1×1、2×2、3×3、5×5、16×16。然后將會(huì)得到5個(gè)相同大小的特征圖。最后一步進(jìn)行分層特征融合HFF(hierarchical feature fusion),將得到的5個(gè)相同大小的特征圖按照一定的規(guī)則進(jìn)行拼接,得到模塊最終的特征圖。
目前主要采用的跳躍連接方法有兩種,其主要是將池化層的淺層特征圖與多層卷積之后的深度特征圖進(jìn)行結(jié)合,使其包含更多的邊界細(xì)節(jié)。
(1)反卷積+連接。
反卷積加連接是最終深度特征圖通過反卷積擴(kuò)大特征圖尺寸,選定的池化層通過反卷積擴(kuò)大特征圖尺寸,使通過反卷積得到的特征圖具有相同的尺寸大小,然后把具有相同尺寸的特征圖在通道級(jí)別上連接在一起。
(2)反卷積+連接+反卷積。
反卷積加連接加反卷積是首先對(duì)最后一層卷積層卷積得到的深度特征圖進(jìn)行反卷積,得到與池化層pool3相同尺寸大小的特征圖,然后在像素級(jí)別上對(duì)應(yīng)相加(即進(jìn)行加和運(yùn)算),然后進(jìn)行下一步的反卷積,反卷積之后得到的特征圖的形狀與池化層pool4的相同,進(jìn)而與池化層pool4進(jìn)行加和運(yùn)算。然后進(jìn)行最后一次反卷積,得到與原始圖像相同形狀的特征圖。
文中所采用的跳躍連接方法結(jié)合以上兩種方法,如圖3所示。
圖3 具有跳躍連接的FCN架構(gòu)
在本節(jié)中,將介紹網(wǎng)絡(luò)中出現(xiàn)的各種中間層的設(shè)計(jì)。改進(jìn)網(wǎng)絡(luò)的各層參數(shù)如表1所示。將尺寸3×224×224圖像(即具有RGB3個(gè)通道且邊長為224個(gè)像素的彩色圖像)輸入到所構(gòu)造的神經(jīng)網(wǎng)絡(luò)中。在計(jì)算之后,最終輸出圖像是151×224×224(即有151個(gè)類別和邊長為224個(gè)像素的圖像)。通道數(shù)與分類數(shù)相同,對(duì)于每個(gè)像素而言,NUM_OF_CLASSESS個(gè)通道中哪個(gè)數(shù)值最大,這個(gè)像素就屬于哪個(gè)分類。
表1中列出了每個(gè)層的詳細(xì)操作:
1.Conv表示卷積層
2.Relu表示Relu激活函數(shù);
3.Pooling表示最大池化層;
4.deConv表示反卷積層;
5.Concat表示兩個(gè)圖像在通道級(jí)別上連接為一個(gè)圖像;
6.Softmax表示Softmax激活函數(shù)。
以下詳細(xì)介紹這些層及其相應(yīng)的操作。
實(shí)驗(yàn)采用的處理器為英特爾i7-8750H,運(yùn)行內(nèi)存為8 GB,使用GPU加速,GPU為GTX1060,顯卡為6 G。同時(shí)采用pycharm開發(fā)工具進(jìn)行訓(xùn)練測試實(shí)驗(yàn)。
為了驗(yàn)證改進(jìn)模型的有效性,選取常用于目標(biāo)檢測的MITSceneParsing數(shù)據(jù)集。MITSceneParsing數(shù)據(jù)集中包含了151個(gè)物體類別,包括天空、道路、草地、人、車、床等離散對(duì)象,并且圖像中所存在的對(duì)象是不均勻分布的,更自然地模擬了日常場景中所存在的對(duì)象。MITSceneParsing數(shù)據(jù)集總共22 210張圖片(包括用于訓(xùn)練模型的20 210張圖片和用于驗(yàn)證模型的2 000張圖片)。在模型訓(xùn)練中,對(duì)數(shù)據(jù)集總共訓(xùn)練11 000次,訓(xùn)練集每10次輸出訓(xùn)練損失率,驗(yàn)證集每500次輸出驗(yàn)證損失率。為了防止出現(xiàn)過擬合現(xiàn)象,在訓(xùn)練過程中運(yùn)用參數(shù)正則化方法,以0.85的概率保留部分權(quán)重參數(shù)參與訓(xùn)練。
表1 改進(jìn)網(wǎng)絡(luò)的各層參數(shù)
網(wǎng)絡(luò)輸入圖像大小為3×224×224,輸出特征圖大小為224×224,實(shí)現(xiàn)像素級(jí)端到端的目標(biāo)檢測。文中使用Adam算法來優(yōu)化模型,Adam算法結(jié)合了Momentum算法和RMSprop算法的優(yōu)點(diǎn)。Adam算法也是基于梯度下降法,但Adam算法在每次迭代期間的參數(shù)變化都在一定范圍內(nèi)。由于在特定時(shí)間計(jì)算的梯度值,參數(shù)不會(huì)急劇變化,并且參數(shù)的值相對(duì)穩(wěn)定。文中初始η為0.000 1,一階矩估計(jì)的指數(shù)衰減率為β1=0.9,并且二階矩估計(jì)的指數(shù)衰減率為β2=0.999。具體在優(yōu)化可訓(xùn)練變量時(shí),采用的是Adam的改進(jìn),LazyAdam是Adam的變體,可以更有效地處理稀疏更新,使其訓(xùn)練速度更快。原始的Adam算法為每個(gè)可訓(xùn)練變量維護(hù)兩個(gè)移動(dòng)平均累加器,累加器在每一步都會(huì)更新。而LazyAdam算法僅更新當(dāng)前batch中出現(xiàn)的稀疏變量索引的移動(dòng)平均累加器,而不是更新所有索引的累加器。
文中利用深度學(xué)習(xí)框架Tensorflow進(jìn)行網(wǎng)絡(luò)模型的訓(xùn)練和測試,實(shí)驗(yàn)采用交叉熵?fù)p失函數(shù)作為目標(biāo)檢測模型的評(píng)測指標(biāo)。交叉熵是Shannon信息論中一個(gè)重要概念,在神經(jīng)網(wǎng)絡(luò)中用于度量模型中預(yù)測標(biāo)記分布概率與真實(shí)標(biāo)記分布概率之間的差異性信息。當(dāng)交叉熵?fù)p失函數(shù)越小,模型中預(yù)測標(biāo)記分布概率與真實(shí)標(biāo)記分布概率之間的差異性越小,顯著性目標(biāo)檢測越準(zhǔn)確。
基于文中所改進(jìn)的模型與全卷積神經(jīng)網(wǎng)絡(luò)模型在同一數(shù)據(jù)集上分別進(jìn)行多次迭代實(shí)驗(yàn),獲得的迭代次數(shù)與交叉熵的變化曲線如圖4所示。從實(shí)驗(yàn)結(jié)果觀察可知,所改進(jìn)的檢測模型在相同的數(shù)據(jù)集上驗(yàn)證損失更少,達(dá)到相同的損失所需迭代次數(shù)更少。在時(shí)間成本上,模型進(jìn)行批處理所消耗的時(shí)間如表2所示。所改進(jìn)的模型雖然卷積層數(shù)增加,但所消耗的時(shí)間幾乎與FCN基礎(chǔ)模型所消耗的時(shí)間相同。所以,降低損失率的同時(shí)沒有增加時(shí)間成本。
圖4 迭代次數(shù)與交叉熵的變化曲線
表2 批處理所消耗的時(shí)間
實(shí)驗(yàn)結(jié)果表明,在相同的數(shù)據(jù)集上文中所提出的目標(biāo)檢測模型具有更小的損失率,并且時(shí)間成本并沒有顯著增加,證明該方法具有更加良好的性能。
目標(biāo)檢測結(jié)果分別使用MIOU以及精確率的方式進(jìn)行評(píng)價(jià)。表3給出了文中算法與相關(guān)算法在場景分析ADE20K數(shù)據(jù)集中的實(shí)驗(yàn)結(jié)果,在MIOU評(píng)價(jià)方式中,文中的目標(biāo)定位稍微弱于其他相關(guān)算法,但相差數(shù)據(jù)并不大。例如平均目標(biāo)定位相比于級(jí)聯(lián)分割網(wǎng)絡(luò)降低了0.001 4。若單獨(dú)使用MIOU等作為評(píng)估指標(biāo),由于真值是目標(biāo)整體,評(píng)估結(jié)果具有較大的誤差。文中通過像素精度和像素平均精度結(jié)合的評(píng)估方法,進(jìn)一步驗(yàn)證算法的有效性。文中目標(biāo)檢測模型相比較于分割網(wǎng)絡(luò)和空洞網(wǎng)絡(luò)的像素精度和平均精度都有明顯提高,在平均像素精度方面,文中方法比表現(xiàn)最好的級(jí)聯(lián)空洞網(wǎng)絡(luò)提升了0.73%,比級(jí)聯(lián)分割網(wǎng)絡(luò)提升了8.13%。表明文中算法的檢測性能遠(yuǎn)優(yōu)于其他相關(guān)算法。
表3 場景分析數(shù)據(jù)庫ADE20K驗(yàn)證集上的表現(xiàn)
提出一種改進(jìn)的基于全卷積神經(jīng)網(wǎng)絡(luò)的多目標(biāo)顯著性檢測模型。主要是對(duì)經(jīng)典的全卷積神經(jīng)網(wǎng)絡(luò)的部分卷積過程和反卷積過程進(jìn)行改進(jìn),即用ESP模塊代替部分卷積層并且將深層特征圖和淺層特征圖在通道級(jí)別上進(jìn)行連接并進(jìn)一步進(jìn)行特征提取,使得顯著性目標(biāo)特征圖具有更多的邊界信息。這樣可以增強(qiáng)模型的魯棒性和準(zhǔn)確性,使得顯著性目標(biāo)更精確,并且模型的訓(xùn)練次數(shù)要求更低。雖然在損失上有改進(jìn),但是由于卷積層的增加,實(shí)驗(yàn)也存在著計(jì)算量大的缺點(diǎn)。由于硬件配置的原因,不能對(duì)模型進(jìn)行更高迭代次數(shù)的訓(xùn)練及驗(yàn)證。模型的最終穩(wěn)定狀態(tài)需要進(jìn)一步的探究。在未來的研究中,可以進(jìn)一步減少計(jì)算成本和時(shí)間成本。