胡莉娜,高盛華
(1 中國科學院上海微系統(tǒng)與信息技術研究所, 上海 200050; 2 上海科技大學信息學院, 上海 201210; 3 中國科學院大學, 北京 100049)(2019年3月15日收稿; 2019年5月29日收修改稿)
人體解析是計算機視覺領域新興的研究課題,在人體姿態(tài)估計[1]、場景理解[2]、自動駕駛[3]等領域有著廣泛應用和重要意義。近年來,隨著卷積神經網絡在物體分類[4]、目標檢測[5]和語義分割[6]等任務的性能上取得大幅度的提升,以及大型人體解析數據集的發(fā)布,深度學習作為一個數據驅動的方法同樣可以在人體解析任務上進行實踐。
針對人體解析,目前已有很多深入的研究工作。這些研究可以大致分為兩大類,一種是基于傳統(tǒng)手工設計特征的方法,另一種則是基于卷積神經網絡的方法。Bourdev和Malik[7]在行人分割問題上提出人體解析的概念,同時發(fā)布了具有行人分割標注的PennFudan數據集,包含170張圖片。Bo和Fowlkes[8]進一步標注頭、上身、下身、鞋子等人體部位。此外, Yamaguchi等[9]提出以服裝配飾為主的人體解析數據集Fashionista。基于數據集的不同特性,傳統(tǒng)方法設計了不同的解決方案。PennFudan中的行人只對人體的主要部位進行標注,而主要部位有相似的形狀。針對這個特性,Bo和Fowlkes[8]提出基于形狀特征的方法,首先建立一個包含不同部位的樣例池并對樣例提取形狀特征,然后對圖像進行過分割操作,獲取潛在區(qū)域,并對這些區(qū)域進行同樣的特征提取,隨后與樣例特征進行相似性度量,將屬于同一部位的區(qū)域合并,得到最終的解析結果。類似地,Rauschert和Collins[10]提出先建立包含形狀參數的人體模型,然后對該模型進行渲染操作得到對應的圖像,通過合成的圖像與原圖像之間的特征約束得到理想的解析模型。而對于Fashionista數據集,它包含更多的類別,且標注中包含復雜的衣物配件,因此之前基于形狀特征的方法不再適用。Dong等[11]提出用樹狀結構構建人體不同部位之間的關系,第一步仍是利用過分割算法獲得潛在區(qū)域,但隨后利用樹狀結構對潛在區(qū)域建立連接和從屬關系,最后對預測的樹狀結構與真實樹狀結構進行比較,采用得分機制,進行獎懲以獲得最佳的人體解析結果。
隨著包含5萬張圖的大規(guī)模數據集LIP[12]的出現,基于卷積神經網絡(convolutional neural networks, CNN) 的模型才真正在人體解析問題上得以應用。與之前的數據集相比,LIP數據集結合了人體部位和衣物配件屬性,最終得到19類精細標注,如圖1所示。LIP數據集包含室內和室外的各種現實場景,復雜多變的人體姿態(tài)、光照條件以及不同程度的人體遮擋情況。這些問題使人體解析任務變得更具有挑戰(zhàn)性,但同時也讓人體解析更具有現實意義和商業(yè)價值。
圖1 LIP 數據集中的樣例圖片以及對應的人體解析標注Fig.1 Images on the LIP dataset and their annotations for human parsing
人體解析是對人體在像素層面上進行的分類,它與場景中的物體語義分割具有極大的相似性。目前語義分割問題的研究已經取得了很大的進展,從FCN[13]首次使用全卷積網絡進行分割到DeepLab[14]選擇用膨脹卷積來替代普通卷積,擴大單個神經元的感受野。對于場景的語義分割,圖片的尺度是另一個值得重視的方面,對圖片進行不同尺度的放縮,能改善圖片中物體尺寸的極端狀況。圖片中的小物體經過放大后,能夠在神經網絡的深層保留特征,過大的物體則能縮小到正常的范圍,讓神經網絡感知并提取全局信息。由此,基于注意力機制的Attention-DeepLab[15]被提出,它將輸入圖片進行不同尺度的放縮,經過同樣的網絡結構后,對每個尺度的輸出結果添加不同的權重,使其對最終的分割結果有不同程度的貢獻。近幾年,隨著卷積神經網絡結構的不斷改進,分割的準確率也不斷提高,以上方法都已經被應用到人體解析當中,但由于兩個研究問題之間存在著差異性,對應的網絡結構需要做進一步的調整才能提升人體解析的性能。除此之外,針對于人體解析而設計的方法也不斷被提出,比如基于自監(jiān)督機制的SSL[12], 利用每個解析部位的中心坐標來加強對解析結果的約束??紤]到現實場景中人體姿態(tài)多變的問題, MULA[16]則是將人體解析與人體姿態(tài)估計進行多任務并行學習,通過設計兩個任務參數關聯的模塊,進行不同任務之間的特征遷移,使得估計的人體姿態(tài)與解析圖結果保持一致性。 此外,還有基于對抗生成網絡的MMAN[17]、多尺度圖像NAN[18]以及利用人體各部位的邊緣圖作為額外監(jiān)督信息的CE2P[19]被提出。
本文提出基于層次化標簽的卷積神經網絡(hierarchical labeling networks, HLNet),受傳統(tǒng)方法中構建解析樹結構的啟發(fā),同時結合當前基于大數據學習的卷積神經網絡CNN,實現對人體更為精確的解析。該方法改進了金字塔特征抽取模塊,將人體的精細解析圖進行不同程度的類別標簽合并,獲取由粗糙到精細的解析圖,對金字塔結構不同層級的特征進行對應層次的監(jiān)督,最后將所有層級的特征進行融合,生成最終的人體解析圖。
本文的主要貢獻如下:
1)提出一種基于層次化標簽結構的卷積神經網絡,該方法有別于其他方法,是基于人們分層次觀察事物的視覺行為特性對語義分割模型做出的改進。針對人體解析任務,改進了特征金字塔的池化模塊,使網絡獲取到圖像的上下文信息。
2)設計加權交叉熵損失函數,用來解決圖片內類別像素數量不均衡問題。針對數據集上不同類別圖片數量不均衡問題,則提出加權采樣策略。
3)在LIP數據集上的實驗證明,本文所提的方法與之前基于卷積神經網絡的方法相比,精度有了明顯的改進,具有實際應用價值。
1.1.1 特征金字塔池化模塊
特征金字塔池化模塊(pyramid pooling module, PPM) 是由Zhao等[20]提出的網絡結構,最先用于場景的語義分割問題中。之前大部分場景理解和人體解析網絡都是基于全卷積神經網絡,這種結構存在幾點明顯的問題:1)全卷積神經網絡是卷積層和下采樣層不斷堆疊的單支結構,沒有考慮到一個區(qū)域的場景信息,比如手腿應在頭部的下方,帽子則在頭部的上方;2)全卷積神經網絡沒有考慮不同標簽之間的關聯,比如人體下半身不可能同時穿著褲子和裙子,它們之間具有互斥關系。另外,全卷積神經網絡只利用最深層的特征進行解碼,當只占少量像素的小部位經過多層的池化操作后,它們已經丟失了大部分特征,因此在解碼操作時,無法恢復出原有的語義信息。
針對這些缺陷,特征金字塔池化模塊做出了較大改進。特征金字塔池化模塊通過將輸入的特征進行不同尺度的池化操作,得到不同大小的特征圖,每個尺度的特征圖對應不同大小的感受野。針對人體解析任務,實驗設計了5個層級上的池化操作,池化后特征圖尺寸分別為1×1,3×3,6×6,9×9,12×12, 如表1所示。由于1×1大小的特征圖只對全局進行粗糙估計,實驗對該層級不進行特征的解碼。
表1 不同層級上的池化尺度和解析類別數Table 1 The pooling sizes and the numbers of parsing categories in different branches
1.1.2 解碼模塊
如圖2所示,解碼模塊主要由兩個卷積層組成,沒有使用任何激活函數,中間添加歸一化層和Dropout層,分別用來加快網絡訓練的收斂速度和避免網絡陷入過擬合。第一層卷積采用1×1大小的卷積核,用于特征圖通道的降維。最后一層卷積則是用于解碼成對應類別數量的解析圖,因此在不同層級的解析分支上采用不同通道數的卷積核。
圖2 基于層次化標簽的卷積神經網絡結構Fig.2 The architecture of hierarchical labeling network
1.1.3 不同層級結構的特征融合
為使網絡能夠捕獲不同層級上的特征和場景信息,在網絡設計時,將不同層級輸出的特征圖上采樣到同樣大小,然后用通道連接操作 (concatenate)實現特征融合,再經過解碼模塊,獲得最終的解析結果。這種融合方式,保留了特征的空間位置結構,讓不同層級的特征圖在對應區(qū)域之間進行信息互補。既能避免大面積的錯誤分類,又可以維持邊緣的細節(jié)特性。
(1)
(2)
本次使用的數據集為LIP數據集,包含現實場景中拍攝并截取出的4萬張單人圖像,其中3萬張作為訓練集,其余1萬張作為測試集。
考慮到現實場景中的人是一個非剛體,與普通的物體相比,存在復雜的姿態(tài)變化以及不同程度的衣物遮擋問題,實驗中需要對數據做數據增強,包括圖片的旋轉、放縮和翻轉,如圖3所示。這些變換可以通過一個仿射矩陣A實現,即利用仿射矩陣建立起同一個像素點在變換前后的兩張圖片中的坐標位置關系x→y,公式如下
(3)
y=Ax.
(4)
圖3 在原始數據集上的數據增強樣例Fig.3 An example of data augmentation on the LIP dataset
實驗中使用Pytorch 深度學習框架作為實驗平臺,訓練時把ResNet101作為基礎網絡,使用在ImageNet分類問題訓練好的模型參數作為初始化的參數,網絡輸入的圖像大小為473×473。實驗采用隨機梯度下降(stochastic gradient descent, SGD)優(yōu)化器進行訓練,每次迭代處理24張圖片,并使用多項式衰減(polynomial decay)策略來調整每次迭代的學習率,具體公式如下
(5)
其中:lrk為第k次迭代的學習率,lr0為初始學習率,K為最大的迭代次數,α為衰減率,實驗中選取lr0=0.001,α=0.9,K=25 400。
與通用場景語義分割類似,使用平均準確率(mean accuracy, mAcc.)和平均交并比(mean intersection over union, mIoU)作為模型的性能評價指標。 平均準確率為正確分類的像素個數和該類別總像素數之間的比例,交并比為兩個集合的交集和并集之比。在人體解析的任務中,這兩個集合為真實解析圖的像素和預測解析圖的像素,先計算每個類內的交并比,再通過計算均值獲得mIoU,具體的公式如下,
(6)
(7)
(8)
其中:nji表示解析圖中實際屬于第i類而被預測為第j類的像素數量,ti表示圖片中所有被預測為第i類的像素總數,C表示解析的總類別數。
由表2可知,與其他算法相比,HLNet在LIP的驗證集上平均準確率和平均交并比都有明顯的提升,其中CE2P算法使用額外的邊緣信息作為監(jiān)督。實驗證明,基于層級的標簽結構設計對于人體解析任務是十分有效的。
表2 不同算法在LIP數據集上的性能比較Table 2 Parsing performance comparison among different algorithms on the LIP dataset %
表3對比添加不同層級對于整體解析性能的影響。由此可以看出,依次疊加層級結構,人體解析性能有明顯的提升,在添加所有層級后,mIoU達到53.47%。
表3 添加不同層級對人體解析性能比較Table 3 Comparison of parsing performance among different branches added %
此外,如圖4所示,HLNet在不同類別上存在明顯的性能差異,占據大面積像素的部位有較高的準確率,如四肢、上衣和頭部,而在小物體如太陽鏡、手套、圍巾上準確率略低。這樣的實驗結果與實際情況相符合,因為大部位在經過HLS不同尺度的池化操作后,都有對應的特征表達,但是小部位只能在較大尺度如9×9 和 12×12 上才能保留對應位置的特征信息。值得注意的是,對于連衣裙、連體衣、短裙這幾個類別,盡管它們不屬于小物體,但IoU值明顯偏低,這是由LIP數據集的特性所決定的,包含這3類物體的圖片總和在數據集中只占10%。而卷積神經網絡是基于數據驅動的監(jiān)督學習方法,訓練過程中這些訓練樣本的比重過少,直接導致網絡無法很好地學習到這些類別的特征,從而很難進行預測。
圖4 HLNet在LIP數據集上不同類別的性能Fig.4 Parsing performances of different categories on the LIP dataset
根據上述分析,可知單張圖片內不同類別所占像素數量具有明顯差異,即圖片內部的樣本不均衡問題,而這直接導致在訓練過程中網絡模型傾向于優(yōu)化像素多的大類。在實驗過程中,我們改進了損失函數,用加權的交叉熵損失函數Lw替換原來的交叉熵損失函數L,給每個類別的損失值分配不同的權重??紤]到背景類別在圖片中的樣本數量遠高于其他類別,對于整個網絡優(yōu)化有較大的影響,因此在所有圖片的訓練中,固定背景類別的權重大小,其他類別的權重按其與前景的比例進行分配,具體公式如下
(9)
(10)
(11)
LIP數據集除在圖片內存在不同類別像素數量不均衡之外,還存在不同類別圖片數量不均衡問題,比如包含連體衣、連衣裙、短裙等的圖片數遠低于包含頭部的圖片數,因此也需要采用策略來解決不同類別圖片數量不均衡問題。修改數據采樣策略能在一定程度上減輕這個問題的影響,實驗中采用加權采樣策略,以提高采樣到稀少類別的概率,加權采樣策略的權重計算公式如下所示
(12)
(13)
(14)
(15)
表4顯示加權交叉熵損失函數明顯提升人體解析性能,但權重調整系數r對網絡訓練影響較大。實驗中選取0.15, 0.25, 0.4共3個不同的值,當r=0.25時,mIoU能達到54.00%,比用一般的交叉熵損失函數,提升約0.6%,此外加權采樣策略也能提升0.1%,在每個類別上的IoU變化量比較如圖5所示。
表4 不同權重的加權交叉熵損失函數和加權采樣策略的性能Table 4 Parsing performances of the weighted cross entropy loss with different weight ratios and the weighted sampling strategy %
如圖6所示,對不同層級上預測出的解析圖進行可視化,用不同顏色標注不同的部位。經過可視化,不同層級的解析圖的確呈現出一個由粗糙到細致的解析過程,網絡學習到了對應部位的語義信息。在不同層級特征融合后,最終的解析圖明顯刻畫出每個部位的細節(jié),尤其對于頭部和面部、腿部之間的間隙做到了精細的分割。
圖5 加權交叉熵損失函數和加權采樣算法在單個類別IoU指標上的性能Fig.5 The performances of the weighted cross entropy loss and the weighted sampling strategy on the single class-IoU
圖7顯示HLNet與其他基于CNN的方法的解析結果。由圖可知, HLNet有兩點明顯的優(yōu)勢:1)在邊緣細節(jié)上有很好的分割效果,同時還能保持同一部位內部的連貫性。在第1行樣例中,HLNet并沒有丟失任一部位,而另外幾種算法都出現不同程度的部位丟失的情況;2)HLNet采用的是層級結構,綜合考慮了不同層級上的解析效果,因而在解析人體背面圖像時,依然能夠正確地區(qū)分肢體的左右位置關系,如第3行樣例所示。
圖6 不同層級上解析結果Fig.6 Parsing results on different scales
圖7 不同算法在LIP 數據集上解析結果的可視化Fig.7 Visualized parsing results predicted using different algorithms on the LIP dataset
本文提出一種基于層次化標簽的卷積神經網絡HLNet,用于人體解析任務。通過層次化的標簽監(jiān)督、特征金字塔池化以及不同層級之間的特征融合,網絡能夠充分利用人體各個部位的場景信息,并建立起卷積神經網絡與現實生活中人類分層觀察事物的習慣之間的聯系。在LIP數據集上的實驗表明,本文方法優(yōu)于當前其他基于卷積神經網絡的方法,具有較強的實際應用價值。
然而,由于本文方法屬于基于大數據驅動的方法,數據集中存在的不同類別圖片數量不平衡和小物體標注不精準的問題直接影響最終的解析效果。盡管本文采用的加權交叉熵損失和加權采樣的策略,不同類別之間仍然存在明顯的性能差距。因此,未來還將進一步考慮如何構造新的模塊和監(jiān)督學習方式以增強網絡的小樣本類別學習能力。