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