任博涵
(,陜西 咸陽 712000)
隨著計算機科學技術(shù)以及深度學習的不斷發(fā)展,圖像處理和分析逐漸形成了自己的體系。圖像分割是圖像處理中的一項關鍵技術(shù)也是計算機視覺、圖像處理等領域的基礎性問題之一,同時是圖像分類、場景解析、物體檢測、圖像3D重構(gòu)等任務的關鍵步驟。從20世紀60年代開始,這項研究至今仍然是研究的熱點之一,并且被廣泛應用于交通控制、氣象預測、地質(zhì)勘探、醫(yī)學影像分析、人臉與指紋識別等諸多領域。
傳統(tǒng)的圖像分割方法,如閾值法,邊緣檢測法等,雖然原理都是不同的,但是這些傳統(tǒng)的圖像分割方法用的都是像圖像的顏色特征,紋理特征,統(tǒng)計直方圖等的一些比較低級的圖像特征。在一些比較簡單的圖像分割應用中可能會有比較好的效果,但是在一些更加復雜的應用場景下,這些傳統(tǒng)算法的效果就不是非常理想。利用圖像本身涵蓋的內(nèi)容信息更加有效與圖像中級,高級語言結(jié)合來提升圖像分割效果是在深度學習出現(xiàn)以前的研究熱點。規(guī)范割算法是Shi等人在2000年提出的一種圖像分割方法,在考慮了子圖間的差異性的基礎上,同時考慮了子圖內(nèi)部的相似性。規(guī)范割算法根據(jù)圖像的輪廓特征以及紋理特征來全局最小化損失函數(shù)來得到細尺度分割結(jié)果,因此在當時取得了不錯的效果。超像素算法是Moorer 等人于2008年基于最小割的概念提出的算法,該算法以二維圖像邊界代價圖作為輸入,保存了兩個像素之間存在邊界的概率值,它的分割準確度相對來說也比較高。2004年,F(xiàn)elzenswalb 和 Huttenloche提出 FH 算法,該算法將圖像映射成無向圖,綜合考慮了區(qū)域內(nèi)部相似度和區(qū)域之間的差異性,通過對圖中的頂點進行聚類實現(xiàn)分割,能夠較好地保持圖像邊界,因此可以準確的分割出圖像的整個輪廓。Girshick等人于2014年提出了R-CNN方法,該方法首先使用搜索算法搜多到大量的可能存在物體的候選框,然后使用alexnet等網(wǎng)絡進行分割或者檢測,在一定的程度上提高了圖像分割的準確率,但是速度非常慢。
語義圖像分割的任務是對于圖像中的每一個像素點來進行分類,這是目前在計算機數(shù)據(jù)領域最重要的問題之一,這項工作包含了圖像分類,物體檢測以及多類別的物體檢測,還有圖像分割所有的計算機視覺的基本任務。語義分割可以為其他的任務,如物體定位,獲得物體的形狀以及大小等提供大量的信息,比如說提供物體的一個邊緣的細節(jié)以及大概的位置等。
圖像分割的一般過程主要分為三部分,首先需要根據(jù)需求定制我們自己的數(shù)據(jù)集,包括訓練數(shù)據(jù),測試數(shù)據(jù)以及交叉驗證數(shù)據(jù)等,具體的構(gòu)造方法可以請專門的標注人員標注自己的數(shù)據(jù),或者使用目前已經(jīng)公開可訪問的數(shù)據(jù)集,本文選擇后者。另外由于圖像分割的特性,不需要對圖片進行縮放,但是為了增加模型的準確性,我們?nèi)匀辉谟柧毜臅r候?qū)D像縮放至640×384大小。第二步需要我們根據(jù)數(shù)據(jù)的不同特征,構(gòu)造不同的分割方法,進行大量的實驗,調(diào)試超參數(shù)以獲得比較優(yōu)秀的分割模型。第三步是使用我們已經(jīng)訓練好的模型對圖像進行測試,查看或者觀察我們的模型的效果如何。
本文所采用的網(wǎng)絡結(jié)構(gòu)分別是如下的方法,由于我們的基網(wǎng)絡是vgg16以及ResNet110,因此首先需要使用已經(jīng)在ImageNet訓練好的模型對網(wǎng)絡進行初始化,這樣可以獲得比較好的初值,加速網(wǎng)絡的收斂速度,然后在我們的數(shù)據(jù)集上進行訓練。
利用深度學習進行圖像分類在整個圖像領域變得越來越普遍,尤其是隨著最近幾年硬件技術(shù)的進步,以及相關研究發(fā)現(xiàn),越深的網(wǎng)絡在分類領域所能獲得的效果也越來越好。但是這樣往往伴隨著一個問題,就是隨著網(wǎng)絡深度的增加,我們不得不去增加很多池化層來減少網(wǎng)絡的參數(shù),增加網(wǎng)絡的訓練以及預測的速度,同時還可以增加網(wǎng)絡的感受野。但是在圖像分割領域增加大量的池化層會降低網(wǎng)絡中特征圖的分辨率,同時也會降低最終網(wǎng)絡的預測結(jié)果的分辨率。另一方面網(wǎng)絡加入池化層后會增加網(wǎng)絡的不變性,這種不變性在對圖像進行分類的時候有著不錯的效果,但是在對圖像分割的時候從特征圖轉(zhuǎn)換到物體的位置的時候就比較的難了,這也是為什么很多深度學習方法的預測結(jié)果中對于物體的大概位置預測的都比價準確,但是對于一些細節(jié)的分割就比較的差。
為了解決如上兩個問題,DeepLab提出了使用空洞卷積來增加網(wǎng)絡的感受野,但是同時不會造成網(wǎng)絡中特征圖分辨率的減少。對于普通的卷積來說,如果只是想要增加網(wǎng)絡的感受野,可以增大卷積核的大小,但是增加卷積核的大小就會造成網(wǎng)絡參數(shù)的增多,進一步降低網(wǎng)絡的速度,但是空洞卷積是在不改變卷積核大小的基礎上增加了網(wǎng)絡的感受野,空洞卷積是這樣的,在我們做卷積的時候通常是需要對連續(xù)的像素進行卷積,但是在空洞卷積中如果設置速度為2,就是每隔一個像素點做一次卷積。這樣我們在卷積的時候就不需要進行池化操作了,而是用空洞卷積來替代池化操作。
為了解決神經(jīng)網(wǎng)絡對于位置的預測比較差的情況,現(xiàn)在的方法通常是使用多個網(wǎng)絡,獲得多個網(wǎng)絡的輸出結(jié)果,最后利用多個網(wǎng)絡的輸出結(jié)果做一個整合來解決這種情況。但是如果這么做的話就意味著我們的網(wǎng)絡參數(shù)會成倍的增加,這樣網(wǎng)絡的速度也會成倍的減慢,尤其是在一些對于速度要求比較高的場景,如自動駕駛中,我們不僅需要獲得比較好的分割結(jié)果,同時需要獲得非常快的速度。因此DeepLab提出了使用條件隨機場來使得網(wǎng)絡更好的對物體的邊緣做分割,實驗證明,這是一種在速度上以及進度上比較這種的一種方法。
DeepLabV1的網(wǎng)絡結(jié)果基本上是根據(jù)VGG16的網(wǎng)絡結(jié)構(gòu)修改而來的,由原來的一個分支設計成兩個分支,其中一個分支只有兩個卷積層,都是有128個卷積核,第一個卷積核的大小是3×3的,第二個卷積核的大小是1×1的,然后另外一個分支在第四個池化層之前的網(wǎng)絡結(jié)構(gòu)和原始的VGG都是基本保持一致的,但是在第四個池化層以后加了兩個卷積層,這兩個卷積層的結(jié)構(gòu)和第一個分支的結(jié)構(gòu)是一致的,最終對兩個分支的結(jié)果做一個整合。整合后的結(jié)果再接一個softmax就是網(wǎng)絡最后的輸出,針對最后的輸出做一個簡單的處理我們就可以獲得最終的預測圖。
我們很多時候如果想要獲得更加好的網(wǎng)絡輸出結(jié)果,往往意味著我們需要以更加慢的速度或者更加多的參數(shù)來實現(xiàn)。比如說現(xiàn)在最常見的對訓練多個平行的網(wǎng)絡,然后對多個平行的網(wǎng)絡的輸出結(jié)果進行合并,再作為最后的輸出結(jié)果。但是這樣做就意味著我們的網(wǎng)絡參數(shù)是成倍增加的。另外,多個不同分辨率的輸出在尺寸上是不相同的,這樣我們需要對每個網(wǎng)絡做不同的插值才可以獲得最終的結(jié)果,這樣就造成了不同分辨率的特征圖的合并。因此,提出一種更加高效的方法,就是使用相同大小的卷積核做卷積操作,但是每個卷積核的速度是不同的,本文中使用4個不同的速度,分別是6,12,18,24,這樣我們在沒有增加網(wǎng)絡參數(shù)的前提下增加了網(wǎng)絡的感受野。
本文所使用的DeepLabV2的網(wǎng)絡結(jié)果是在ResNet101的基礎網(wǎng)絡上修改而來的,雖然使用多種分辨率的輸入會造成網(wǎng)絡參數(shù)的增加,但是由于本文使用了多種不同速度的卷積核,因此所造成的網(wǎng)絡參數(shù)的增加并不是倍數(shù)的增加。本文還使用了三個不同的網(wǎng)絡,這里的三個不同的網(wǎng)絡是指的網(wǎng)絡的參數(shù)不同但是結(jié)構(gòu)是一致的。分別接受原圖,0.5倍的原圖以及0.25倍的原圖,接下來是33個殘差塊,每個殘差塊由兩個分支構(gòu)成,一個分支是由一個卷積一個批規(guī)范化層構(gòu)成的,另外一個分支是由三個卷積層構(gòu)成的,其中第一個和第二個卷積層后會有一個批規(guī)范化層和一個Relu函數(shù)層構(gòu)成,另外一個也就是最后一個卷積層是不經(jīng)過Relu層的,然后把兩個分支的結(jié)果合并成一個,再過一個Relu層就構(gòu)成了一個殘差塊。然后在第33個殘差塊的輸出后接4個不同的卷積層,每個卷積層的速度是不同的,也就是上文中介紹的4個速度,這里的卷積使用的是空洞卷積。然后對4個卷積層的輸出做一個整合,就可以獲得當前網(wǎng)絡的輸出結(jié)果了。最后分別接受低分辨率圖像的網(wǎng)絡輸出結(jié)果做一個插值,最后將三個網(wǎng)絡的結(jié)果疊加到一起就構(gòu)成了網(wǎng)絡最終的輸出結(jié)果。
對于圖像分割任務來說,目前主要的評價方法有兩種,一種是全局像素的準確率,另外一種是平均交并比。由于圖像分割是對圖像中每一個像素進行分類的任務,因此我們在評價模型的時候,可以使用全局像素的準確率。首先我們需要統(tǒng)計一副圖像中預測正確的像素點的個數(shù),然后除以當前圖像的所有像素的個數(shù),最后再將所有圖像的準確率加起來除以所有圖像的個數(shù)即可。但是有的時候會出現(xiàn)雖然全局準確率很高,但是人類所觀察到的效果比較差的情況,這就誕生了另外一種評價方法平均交并比,算法用一副圖像的并集比上交集。其中,交集表示我們預測出來的一類物體的所有區(qū)域與真實的標記的區(qū)域的交集,并集指這兩者的交集。這樣如果我們要使得這個評價標準最大,我們需要同時滿足使得模型的預測結(jié)果中對于預測正確的類別要越大對于預測錯誤的類別越少。
隨著計算機硬件技術(shù)的進步,尤其是大規(guī)模并行計算以及GPU的發(fā)展,利用深度學習解決圖像分割任務變得越來越簡單,同時準確性也變得越來越高。另外隨著最近幾年人工智能技術(shù)的火熱,尤其是無人駕駛技術(shù),以及大量可行駛機器人等,為圖像分割技術(shù)提供了高質(zhì)量的數(shù)據(jù)。本文主要介紹了圖像分割的背景意義,以及綜述了圖像分割的一般流程,并重點介紹了兩種圖像分割的方法,為了加速計算,減去了DeepLab中的條件隨機場后處理。但是,利用深度學習解決圖像分割問題仍然存在著比較多的不足之處,主要是部分網(wǎng)絡結(jié)構(gòu)太大,分割速度比較慢;部分邊緣信息分割不夠準確。