陳沛鑫,胡國清,Jahangir Alam SM
(華南理工大學 機械與汽車工程學院,廣東 廣州 510641)
圖像分割是指根據(jù)一定的相似性準則將圖像劃分成不同區(qū)域的過程,是計算機視覺、圖像處理等領(lǐng)域的基礎(chǔ)性問題之一,是圖像分類、場景解析、物體檢測、圖像3D重構(gòu)等任務(wù)的預(yù)處理[1]。其研究從20世紀60年代開始,至今仍然是研究的熱點之一,并且被廣泛應(yīng)用于醫(yī)學影像分析、交通控制、氣象預(yù)測、地質(zhì)勘探、人臉與指紋識別等諸多領(lǐng)域。傳統(tǒng)的圖像分割方法主要包括閾值法、邊界檢測法、區(qū)域法等。這些方法的實現(xiàn)原理有所不同,但基本都是利用圖像的低級語義,包括圖像像素的顏色、紋理和形狀等信息,遇到復(fù)雜場景時實際分割效果不盡理想。如何有效地利用圖像自身包含的內(nèi)容信息,結(jié)合圖像中級、高級語義提升圖像分割效果,成為近年來研究的熱點。圖像的中級語義是指將具有相似特征的相鄰像素構(gòu)成的圖像塊所具有的像素連成一體,如圖像塊的粗糙度、對比度、方向度、緊湊度等,以此輔助圖像分割并提升效果。圖像的高級語義是指圖像或圖像區(qū)域所包含的對象或?qū)嶓w的類別等語義信息,高級語義下的圖像分割稱為語義分割。
圖像分割問題一直都是計算機視覺領(lǐng)域的熱門話題之一,每年都有大量的新方法呈現(xiàn)。近年來,國內(nèi)外學者主要研究基于圖像內(nèi)容的分割算法。圖像分割算法基本分為基于圖論的方法、基于像素聚類的方法和語義分割方法這3種類型。譜聚類方法建立在譜圖理論的基礎(chǔ)之上,通過構(gòu)造關(guān)于原圖的拉普拉斯矩陣并求解特征值和特征向量,對圖中頂點進行前背景分離,以解決圖像分割問題。Shi等[2]提出規(guī)范割(normalized cut:NCut)算法,而Sarkar等[3]改進了NCut算法,提出了平均割(average cut:ACut)算法。Li等[4]提出了線性譜聚類(linear spectral clustering:LSC)算法,該算法基于K路NCut(K-way NCut)算法的代價函數(shù),使用核函數(shù)將像素值和坐標映射到高維特征空間,通過證明帶權(quán)k-means(weighted k-menas)算法和K-way NCut算法的代價函數(shù)共享相同的最優(yōu)點,迭代地使用k-means算法在高維特征空間聚類代替NCut算法中特征值和特征向量的求解,將算法復(fù)雜度降低到O(N)?;谙袼鼐垲惖姆指罘椒òɑ贛eanshift的方法、基于Turbopixels的方法和基于SLIC的方法。圖像語義分割算法包括基于候選區(qū)域的方法和端到端的方法。
深度神經(jīng)網(wǎng)絡(luò)圖像語義分割目前的基本研究思路是先進行編碼與解碼,也即下采樣+上采樣。再進行多尺度特征融合,也即特征逐點相加和特征維度拼接。最后獲得像素級別的分割特征圖,對每一個像素點進行判斷類別。目前的模型結(jié)構(gòu)在大目標表現(xiàn)比小目標更好,需要在細粒度特征上有針對性的強化。目前的分割精度仍然不能達到應(yīng)用級別,需要在結(jié)構(gòu)上進一步進行創(chuàng)新嘗試,高效利用特征圖表達。
YOLO是一種基于深度學習神經(jīng)網(wǎng)絡(luò)的對象識別和定位算法,其最大的特點是與運行速度很快,可用于實時系統(tǒng)[5]。它采用One-Stage策略,對輸入的一張圖片直接學習出特定對象的位置。對于輸入圖片,先進行一系列卷積池化操作。卷積的計算原理如下,設(shè)輸入矩陣格式4個維度依次為:樣本數(shù)、圖像高度、圖像寬度、圖像通道數(shù),輸出矩陣格式與輸出矩陣的維度順序和含義相同,但是后三個維度的尺寸發(fā)生變化。權(quán)重矩陣(卷積核)格式同樣是4個維度,但維度的含義與上面兩者都不同,為卷積核高度、卷積核寬度、輸入通道數(shù)、輸出通道數(shù)(卷積核個數(shù))。輸入矩陣、權(quán)重矩陣、輸出矩陣這三者之間的相互決定關(guān)系。卷積核的輸入通道數(shù)(in depth)由輸入矩陣的通道數(shù)所決定。輸出矩陣的通道數(shù)(out depth)由卷積核的輸出通道數(shù)所決定。輸出矩陣的高度和寬度(height, width)這兩個維度的尺寸由輸入矩陣、卷積核、掃描方式所共同決定。計算式如下:
(1)
池化層的過濾器長寬設(shè)為kernel*kernel,池化層的輸出維度也使用式1計算。
檢測框架采用416×416的輸入,經(jīng)過一系列卷積池化操作,最后連接全連接層輸出目標框大小位置及其類別。具體過程如圖1所示。
YOLO框架的損失函數(shù)由邊框中心誤差、邊框高寬誤差、置信度誤差(邊框內(nèi)有對象且對象為目標)、置信度誤差(邊框內(nèi)無對象)、對象分類誤差(邊框內(nèi)有對象)組成[6],具體函數(shù)為:
(2)
YOLO網(wǎng)絡(luò)是目標檢測的一個強大框架,使用已經(jīng)在大型目標檢測數(shù)據(jù)庫預(yù)訓練過的模型參數(shù),在該參數(shù)下的模型已經(jīng)學到了很多基本特征,與現(xiàn)有其他領(lǐng)域的做法一樣,筆者在自己的檢測對象繼續(xù)訓練模型進行微調(diào),使參數(shù)空間偏向于所需目標,這樣做可以達到很好的識別效果。
雖然訓練過程存在訓練速度較慢、收斂速度慢的特點,導致前期的訓練可能需要花費較多時間,所以前期的訓練優(yōu)化可以在GPU上完成。訓練完成后的檢測階段只需要進行網(wǎng)絡(luò)的前向傳播而不需要反向傳播優(yōu)化,前向傳播是卷積計算,基本是矩陣乘法,這可以很快部署到相應(yīng)硬件上,達到應(yīng)用水準。
YOLO框架的缺點在于,對相互靠得很近的物體,還有很小的物體檢測效果不好,因為1個網(wǎng)格只預(yù)測2個框且屬于同一類。對測試圖像中,同一類物體出現(xiàn)新的不常見的高寬比時效果不好。由于損失函數(shù)的問題,定位誤差是檢測效果的主要原因,尤其是對大小物體的處理上,定位誤差大,召回率低。
YOLO框架是一種有效的深度學習方法,已被大量實驗證明能很好地對目標進行標識和分類。深度學習框架學習都是由低級特征到高級特征、由簡單特征到復(fù)雜特征進行,所有中間層都可以視為特征圖,而不管該框架是用于何種圖像處理技術(shù),例如檢測、 跟蹤、 分割等。由于YOLO框架在目標識別領(lǐng)域的重要作用,其中間層很好地學習了物體的特征,筆者將YOLO框架其對物體的特征信息提取出來,其中間層可作為物體特征圖進行研究。傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)以單一尺度進行前向傳播和反向求導,往往導致不同分辨率下的誤差率不一致,對于小分辨率的物體識別精度不高,大分辨率物體整體輪廓信息得以保存的同時丟失一部分邊緣信息[7]。
圖1 YOLO框架
本文將YOLO網(wǎng)絡(luò)的前5層網(wǎng)絡(luò)提取出來作為新網(wǎng)絡(luò)的特征提取基礎(chǔ)架構(gòu),提出將不同層的特征圖加以整合形成一張新的特征圖的方法,具體模型如圖2所示。
圖2 本文模型
使用一組因子將輸入特征圖顯式降采樣為小尺寸,然后獨立進行卷積,從而得到不同比例的表示。最終將多尺圖上采樣到與輸入特征圖相同的分辨率,并將它們在通道維度上連接在一起。具體做法是,先使用一種CNN框架(本文使用YOLO)計算出一張?zhí)囟ǖ奶卣鲌D,將其進行3次不同的池化下采樣計算,然后分別進行卷積計算得到3張不同分辨率下的特征圖,最后將3張圖進行上采樣得到相同的高寬進行拼接形成最后的輸出,形成一種新的圖像分割模型。前5層的采用式1進行計算。后面的特征圖拼接需要使用上采樣,上采樣的方法有3種,分別是雙線性擬合、反卷積、反池化,本文使用雙線性插值。
插值問題實際上是一種擬合問題。所謂插值就是用x′某個領(lǐng)域內(nèi)的函數(shù)值按照一定規(guī)則擬合出一個函數(shù),再在其中查找f(x′)的值,圖3顯示了這一計算過程。
圖3 線性插值
雙線性插值過程如圖4所示,D點的具體值計算如下:
f(D1)=(1-y)f(P00)+yf(P01)
f(D2)=(1-y)f(P10)+yf(P11)
f(Dx)=(1-x)f(D1)+xf(D2)
f(D3)=(1-y)f(P00)+yf(P10)
f(D4)=(1-y)f(P01)+yf(P11)
f(Dy)=(1-x)f(D3)+xf(D4)
(3)
圖4 雙線性插值
由于進行的是分割,最后計算的是每一個像素點的類別,所以損失函數(shù)使用交叉熵[8],用以描述模型預(yù)測值與真實值的差距大小,交叉熵具體形式為:
(4)
式中,i是灰度圖像的每一個像素的值,對于計算出的邊緣圖,將所有像素的值與ground truth進行損失函數(shù)計算,然后在網(wǎng)絡(luò)中進行反向傳播,即可更新網(wǎng)絡(luò)參數(shù)。
本文采用VOC2007數(shù)據(jù)集進行試驗,試驗平臺配置為Windows10、python3.6、gpu nvidia 940M和tensorflow1.10.0。在進行網(wǎng)絡(luò)訓練后,選擇數(shù)據(jù)集的100張人像數(shù)據(jù)進行分割,并和經(jīng)典的分割網(wǎng)絡(luò)結(jié)果進行對比[9-10],部分試驗結(jié)果如圖5所示,最后使用平均分割精度統(tǒng)計,這里平均分割精度指的是模型分割結(jié)果和ground truth的像素重合比例(pixel accuracy),結(jié)果見表1。
表1 平均分割精度
圖5 部分試驗結(jié)果
從試驗結(jié)果來看,人像的大體框架都能被幾種模型分割出來,但是細節(jié)部分各有不足的地方。第1張圖人物手的部分在FCN和PSPNet模型中并沒有分割出來,模型把背景的一部分當成手,小尺度下的分割準確度不高。第2張圖在有物體遮擋時,前三種模型都識別不出人物的腿進行分割,導致人像分割不完整。第3張圖所有模型都分割出了2個任務(wù),但具體到像素級別進行比較,仍然是本文提出的方法更為準確。在試驗絕大部分圖像中,本文提出的方法與其他經(jīng)典方法比較,精度都要更好。而在所有圖像的分割精度上,本文方法達到了0.833,相較于傳統(tǒng)的CNN分割圖像模型有所提高。
本文基于YOLO檢測框架提出一種新的模型用于分割,使用檢測網(wǎng)絡(luò)的中間層作為分割模型的前段模型,省去了部分網(wǎng)絡(luò)的訓練過程,后半段模型是本文提出的多尺度卷積池化層,其中不同的層代表了不同的尺度下的特征,以此來解決以往網(wǎng)絡(luò)在不同尺度下表現(xiàn)不一致的問題。同時,由于進行了下采樣操作,使得計算效率更高,并且可以捕獲更大的范圍。本文提高了不同尺度下的分割精度,具有一定的應(yīng)用價值。