張聲傳,喻松林,紀(jì)榮嶸
(廈門大學(xué)信息學(xué)院,廈門 361005)
計算機(jī)視覺(Computer Vision,CV)是人工智能領(lǐng)域的研究熱點(diǎn),自2012年AlexNet[1]網(wǎng)絡(luò)問世以來,CV經(jīng)歷了從簡單的圖像分類到更為精細(xì)的語義分割、實(shí)例分割等任務(wù)的發(fā)展。伴隨深度學(xué)習(xí)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)的發(fā)展,CV在識別精度和速度上取得了長足進(jìn)步,十年來涌現(xiàn)了大量的理論與方法,在諸多領(lǐng)域取得了豐碩的成果。實(shí)例分割的任務(wù)是輸入一張圖像,輸出圖像中每個物體的類別,同時為每個物體生成像素級別的實(shí)例掩碼[2]。圖像分類、目標(biāo)檢測、語義分割和實(shí)例分割四類CV任務(wù)難度遞增,圖像分類只需要指出圖像中有哪些物體類別;目標(biāo)檢測在圖像分類的基礎(chǔ)上同時需要輸出物體的邊界框;語義分割需要預(yù)測圖像上每一個像素點(diǎn)屬于哪個類別;實(shí)例分割在語義分割的基礎(chǔ)上還需要區(qū)分同一類別的不同實(shí)例。
以Mask R-CNN[3]為代表的雙階段實(shí)例分割方案遵循先檢測后分割的理念,通常會先由區(qū)域候選網(wǎng)絡(luò)[4](Region Proposal Network,RPN)提出候選區(qū)域,然后針對興趣區(qū)域(Region of Interest,ROI)進(jìn)行池化和對齊操作,最后將特征送入后續(xù)網(wǎng)絡(luò)進(jìn)行分類和掩碼生成。雙階段分割方案掩碼生成是基于候選區(qū)域特征進(jìn)行的,避免了圖像其他位置對掩碼生成的干擾,一般分割精度較高。雙階段分割方案的主要問題在于存在大量的負(fù)樣本候選區(qū)域,計算耗時。為了解決這個問題,以實(shí)時實(shí)例分割(Real-time Instance Se-gmentation,YOLACT)[5]和基于位置的實(shí)例分割(Segmenting Objects by Locations,SOLO)[6]等為代表的單階段分割方案產(chǎn)生,相比雙階段分割,這類方案放棄了提出候選區(qū)域的操作,轉(zhuǎn)而利用全卷積在全圖范圍進(jìn)行卷積操作,一步到位同時實(shí)現(xiàn)物體種類預(yù)測和掩碼生成,免去了RPN結(jié)構(gòu),提高了分割速率。但是全圖卷積在掩碼生成過程中無法避免背景影響,難以區(qū)分同一種類的不同實(shí)例,導(dǎo)致精度有所下降。
為了提高單階段分割精度,本文秉持通過增加不同實(shí)例特征區(qū)分度,以降低掩碼生成過程背景干擾的基本思想,針對全圖卷積的固有缺點(diǎn),提出了在特征圖上添加注意力機(jī)制的方法。該方法在特征圖每個位置的特征向量上進(jìn)行點(diǎn)積運(yùn)算,例如位置(i,j) 用向量[1,0,0]表示,位置(m,n) 用向量[0,1,0]表示,這樣(i,j)位置和(m,n)位置的特征向量在與自己點(diǎn)積后結(jié)果為1,相互點(diǎn)積后結(jié)果為0,以達(dá)到區(qū)分的目的。同一位置特征向量點(diǎn)積后結(jié)果變大,不同位置特征向量點(diǎn)積后結(jié)果變小,這樣便能提高不同實(shí)例間區(qū)分度,利于掩碼生成,提高了分割精度。
一個良好的特征表示是實(shí)例分割的基礎(chǔ)步驟,為后續(xù)準(zhǔn)確地分類和分割提供了必要保障。深度學(xué)習(xí)興起后,特征提取的工作基本由深度網(wǎng)絡(luò)來完成。利用深度網(wǎng)絡(luò)提取圖像特征能夠免去繁瑣的人工運(yùn)算,并且在效果上相較于傳統(tǒng)方法也有較大提升。深度網(wǎng)絡(luò)的淺層含有比較豐富的圖像細(xì)節(jié)信息,語義信息較少;而深層有更大的感受野,以及更豐富的語義信息,但圖像細(xì)節(jié)丟失嚴(yán)重。為了綜合深度網(wǎng)絡(luò)深層和淺層的優(yōu)勢,特征金字塔[7](Feature Pyramid Network,F(xiàn)PN)是一種被廣泛采納的方案。FPN結(jié)構(gòu)包括自下而上、自上而下和橫向連接三部分。自下而上路徑是用于特征提取的常規(guī)卷積網(wǎng)絡(luò),隨著層數(shù)加深,感受野變大,空間分辨率降低,檢測到更多上下文信息,逐層語義信息遞增。自上而下路徑采用上采樣方式,提高了圖像分辨率,同時還原了更多細(xì)節(jié)信息。橫向連接是對自上而下路徑的補(bǔ)充,將原始的高分辨率特征融合到自上而下的路徑中,更好地還原了圖像細(xì)節(jié)。
全卷積網(wǎng)絡(luò)[8](Fully Convolution Network,F(xiàn)CN)能對圖像進(jìn)行像素級別分類,與經(jīng)典CNN在卷積后使用全連接層進(jìn)行類別預(yù)測不同,F(xiàn)CN沒有全連接層,取而代之的是對最后一個卷積層的特征圖進(jìn)行上采樣,使它恢復(fù)到與輸入圖像相同的尺寸,從而對輸入圖像每一個像素點(diǎn)進(jìn)行分類。理論上,全卷積能對任意尺寸的圖像進(jìn)行處理,廣泛應(yīng)用于語義分割和實(shí)例分割中。
單階段實(shí)例分割以快速著稱,相較于雙階段實(shí)例分割其模型更加緊湊。一般而言,整體網(wǎng)絡(luò)分為特征提取、分類和掩碼生成三部分[9-10]。以SOLO算法為例,其基本思想是根據(jù)實(shí)例的位置和大小信息進(jìn)行區(qū)分。具體而言,將圖像分割成S×S個格子,坐標(biāo)(i,j)對應(yīng)圖像中第i行第j列位置的格子。對于某個實(shí)例,如果該實(shí)例的幾何中心落在了(i,j)格子內(nèi),那么該格子將負(fù)責(zé)預(yù)測這個實(shí)例的類別和掩碼生成。網(wǎng)絡(luò)結(jié)構(gòu)一體化不需要ROI操作,所有卷積都是全圖卷積,不對特征圖進(jìn)行裁剪,憑借這些特性,單階段實(shí)例分割速度快。然而當(dāng)圖像中出現(xiàn)同一種類的不同實(shí)例時,全圖卷積固有弊端顯現(xiàn),同一種類提取到的特征相似,而在掩碼生成過程中要求同一種類不同實(shí)例的掩碼單獨(dú)生成,全圖卷積難以區(qū)分,導(dǎo)致精度下降。針對該問題,本文提出了注意力模型,能夠提高同一種類不同實(shí)例特征的差異,方便全圖卷積區(qū)分,從而提高分割精度。
總體上,本文是以SOLO算法為框架進(jìn)行改進(jìn)。前文提到,SOLO算法將圖像分割成S×S個格子,對于每一個格子,預(yù)測幾何中心落在該格子的實(shí)例屬于C個類別的概率,其中C為數(shù)據(jù)集中實(shí)例的種類數(shù)。在分類網(wǎng)絡(luò)中,每一個格子對應(yīng)輸出空間為一個C維向量,由于圖像被分割成S×S個格子,因此分類網(wǎng)絡(luò)輸出空間為C×S×S。
同時,每一個格子將負(fù)責(zé)幾何中心落在該格子內(nèi)實(shí)例的掩碼生成,掩碼生成網(wǎng)絡(luò)輸出空間為S2×2h×2w,第k個通道對應(yīng)(i,j)位置格子的生成掩碼,滿足條件:k=i×S+j,圖1所示為網(wǎng)絡(luò)輸出空間。本文提出了添加注意力機(jī)制的掩碼生成網(wǎng)絡(luò)結(jié)構(gòu),如圖2所示。所提方法主要分為特征提取、預(yù)測頭網(wǎng)絡(luò)結(jié)構(gòu)、注意力機(jī)制、添加注意力機(jī)制的網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù)這五部分,下面分別進(jìn)行詳細(xì)介紹。
圖1 分類分支和掩碼分支輸出空間Fig.1 Classification branch and mask branch output space
圖2 添加注意力機(jī)制的掩碼生成網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Mask generation network structure with attention mechanism
特征提取使用了ResNet-FPN結(jié)構(gòu)。具體而言,輸入圖像經(jīng)過ResNet-50[11]前向計算,輸出4個特征層,該過程對應(yīng)FPN結(jié)構(gòu)中自下而上計算。然后每個特征層經(jīng)過1個1×1卷積橫向連接,將特征通道規(guī)整到256,同時與自上而下特征層上采樣后的結(jié)果相加,最后經(jīng)過1個3×3卷積輸出。提取特征自下而上分辨率逐層降低,語義信息逐層豐富。低層特征用于小物體分割,高層特征用于大物體分割。各層分辨率和通道數(shù)如表1所示。
表1 ResNet-FPN提取各特征層詳細(xì)信息
預(yù)測頭網(wǎng)絡(luò)由2個分支組成,一個分支負(fù)責(zé)類別預(yù)測,另一個分支負(fù)責(zé)掩碼生成。分類分支首先將提取到的各特征層分割成S×S個格子,不同特征層S取值如表2所示。
表2 各特征層S取值
將各層特征圖分割為不同的格子后,輸入到分類網(wǎng)絡(luò)進(jìn)行類別預(yù)測。分類網(wǎng)絡(luò)由7個卷積組和1個輸出卷積組成。每個卷積組由1個3×3卷積層、1個GN(Group Normalization)層[12]和1個ReLU激活層[13]組成。輸出卷積核大小為3×3,步長和填充均為1,輸出通道為類別數(shù)量。類似地,掩碼生成網(wǎng)絡(luò)也由7個卷積組和1個輸出卷積組成。不同于分類分支,掩碼生成網(wǎng)絡(luò)不需要將特征分割成S×S個格子,而是為特征層添加2個坐標(biāo)通道,以區(qū)分同一種類的不同實(shí)例。對于位置(i,j)添加的x、y坐標(biāo)信息,計算方式如下
(1)
其中,w和h分別表示特征圖的寬和高。然后將添加坐標(biāo)信息的特征送入掩碼分支進(jìn)行掩碼生成。
前文提到,對于同一種類的不同實(shí)例,分類網(wǎng)絡(luò)要求輸出相同的物體類別,掩碼生成網(wǎng)絡(luò)要求輸出不同的實(shí)例掩碼,為了實(shí)現(xiàn)這個目的,需要對特征圖進(jìn)行一定處理。本文提出了一種注意力機(jī)制,在經(jīng)過ResNet-FPN特征提取后,由輸出特征圖每個位置的c個通道組成一個c維向量表示該位置實(shí)例的特征,對于同一種類不同實(shí)例,在經(jīng)過注意力操作后應(yīng)當(dāng)具備區(qū)分能力。本文提出的注意力機(jī)制是基于向量點(diǎn)積的一種操作,要求某一位置的c維向量與其他位置的c維向量點(diǎn)積后結(jié)果最小化,而與自己點(diǎn)積后結(jié)果最大化,以達(dá)到區(qū)分不同實(shí)例的目的。具體而言,首先對特征位置進(jìn)行編號,編號方式如下
num=i×S+j
(2)
新特征與原特征對應(yīng)關(guān)系如下
Fnew(c,i,j)=Vnum=c?Vnum=i×S+j
(3)
其中,F(xiàn)new(c,i,j)表示新特征第c個通道(i,j)位置的特征值;Vnum=c表示編號為c的特征向量;Vnum=i×S+j表示編號為i×S+j的特征向量。圖3詳細(xì)說明了該過程。
圖3 注意力機(jī)制圖解(以編號為1、7、15的特征向量示例)Fig.3 Illustration of attention mechanism(take the index 1, 7, 15 as examples)
SOLO算法掩碼分支保留了特征圖h×w的大小,而注意力機(jī)制需要將特征圖分割成S×S的大小,不同格子對應(yīng)圖像中的不同實(shí)例。經(jīng)過注意力機(jī)制后,特征空間變?yōu)镾2×S×S。受到ResNet網(wǎng)絡(luò)結(jié)構(gòu)啟發(fā),將注意力機(jī)制單獨(dú)作為一個分支,該分支的輸出直接按位置加到原SOLO算法掩碼生成分支。因此,最后的掩碼將由兩部分構(gòu)成:原SOLO掩碼分支生成的掩碼和注意力分支生成的掩碼。
本文沿用SOLO算法損失函數(shù),定義為
L=Lcate+λLmask
(4)
其中,Lcate為Focal Loss[14];Lmask為掩碼損失,詳細(xì)參閱文獻(xiàn)[6]。
實(shí)例分割常用數(shù)據(jù)集為微軟發(fā)布的環(huán)境常見對象(Common Objects in Context, COCO)數(shù)據(jù)集[15],包含80個類別。然而COCO數(shù)據(jù)集較大,需要較高的算力。限于實(shí)驗(yàn)設(shè)備,本文實(shí)驗(yàn)過程中采用的數(shù)據(jù)集為CityScapes部分?jǐn)?shù)據(jù)集,并將其標(biāo)注轉(zhuǎn)化為COCO格式。構(gòu)造的數(shù)據(jù)集包含450張訓(xùn)練圖像和50張驗(yàn)證圖像,共5個類別,分別為person、rider、car、truck和bus。圖4所示為一個訓(xùn)練數(shù)據(jù)集示例。
圖4 訓(xùn)練數(shù)據(jù)集示例Fig.4 Training data examples
實(shí)驗(yàn)中將去除坐標(biāo)通道的SOLO算法作為基準(zhǔn),對比了去除坐標(biāo)信息的SOLO算法、原SOLO算法和添加注意力機(jī)制三種方法的分割效果。圖5所示為3個樣本的分割效果。在樣本1中,SOLO算法對于畫面中央的汽車生成的掩碼不準(zhǔn)確,去除坐標(biāo)信息的SOLO算法對于畫面徑深的汽車沒有生成掩碼,而注意力機(jī)制則對這些問題有所改善。在樣本2中,畫面右側(cè)多名行人重疊,SOLO算法和去除坐標(biāo)信息的SOLO算法無法將重疊行人進(jìn)行區(qū)分,而注意力機(jī)制區(qū)分效果明顯更好。在樣本3中,由于圖像較為空曠且實(shí)例面積小,SOLO算法和去除坐標(biāo)信息的SOLO算法幾乎無法生成掩碼,而注意力機(jī)制能對行人生成掩碼。本文對比了三種方法的準(zhǔn)確率,結(jié)果如表3所示。
圖5 分割效果示例Fig.5 Segmentation examples
表3 各算法分割精度對比
對比去除坐標(biāo)通道的SOLO算法和原始SOLO算法發(fā)現(xiàn),僅僅添加2個通道的坐標(biāo)信息就能將平均準(zhǔn)確率(Average Precision,AP)提高1.8%,足見差異化信息在實(shí)例分割中起到了舉足輕重的作用。對比SOLO算法和注意力機(jī)制,在添加了注意力機(jī)制后AP提高了1.9%,可見注意力機(jī)制提供了更為豐富的差異化信息,增強(qiáng)了不同實(shí)例的區(qū)分度,進(jìn)而更利于生成準(zhǔn)確的掩碼。
同時本文對比了不同算法對小、中和大物體的分割效果。仔細(xì)觀察圖5可以發(fā)現(xiàn),在樣本1中較大的汽車生成的掩碼比較小的行人生成的掩碼更準(zhǔn)確。在樣本2中,畫面前方較大的行人相比畫面后方較小的行人生成的掩碼更精確。在樣本3中,對于較小的行人SOLO算法甚至無法生成掩碼。本文對比了SOLO算法和注意力機(jī)制對不同面積實(shí)例的分割精度,結(jié)果如表4所示。
表4 不同大小的實(shí)例分割精度對比
結(jié)果顯示,不管哪類算法在對小物體的分割上精度都欠佳,而對大物體的分割則表現(xiàn)良好。小物體分割依舊是實(shí)例分割領(lǐng)域的瓶頸,有待未來突破。
本文針對單階段目標(biāo)檢測全圖卷積的固有缺點(diǎn)提出了一種注意力機(jī)制,該機(jī)制能增強(qiáng)不同實(shí)例間的區(qū)分度,從而提高分割精度。實(shí)驗(yàn)結(jié)果表明,注意力機(jī)制相比簡單的坐標(biāo)信息能提供更豐富的差異化信息,這也為提高單階段實(shí)例分割精度的后續(xù)研究提供了一種思路。CV領(lǐng)域有諸多不同的注意力機(jī)制,本文提出的注意力機(jī)制主要有以下優(yōu)點(diǎn):
1)基本思想?yún)^(qū)別。不同于其他注意力機(jī)制關(guān)注特定信息的理念,本文注意力機(jī)制的目的是增加不同實(shí)例間的區(qū)分度,以提高各類實(shí)例的分割精度。
2)思路清晰,運(yùn)算簡便。本文的注意力機(jī)制不需要求相似度,直接在原算法基礎(chǔ)上添加向量點(diǎn)積操作便可實(shí)現(xiàn)。
但是點(diǎn)積需要遍歷特征圖所有位置,運(yùn)算復(fù)雜且耗時有所增加。此外,實(shí)例分割雖然取得了一系列進(jìn)步,但也存在諸多挑戰(zhàn):
1)小物體分割精度低。網(wǎng)絡(luò)層數(shù)增加,感受野變大,但分辨率降低,這對小物體的分割是一種災(zāi)難。目前的分割方案普遍對于大物體有更好的分割效果,而對小物體則欠佳。
2)實(shí)時性、高精度的分割算法有待研究。在無人駕駛領(lǐng)域,不僅對識別的時效性有很高的要求,同時對精度也有很高要求。目前的實(shí)例分割方案應(yīng)對該領(lǐng)域還有些吃力,如何在保證高精度的前提下快速分割也是未來研究的重要方向。
3)三維圖像分割研究較少。目前主流方案都是針對平面圖像分割,然而三維點(diǎn)云應(yīng)用廣泛,且包含更多平面圖像無法表達(dá)的信息。因此實(shí)現(xiàn)對三維點(diǎn)云圖的分割,將極大程度豐富實(shí)例分割的應(yīng)用場景。