楊堅(jiān)偉,嚴(yán) 群,2*,姚劍敏,2,林志賢
(1.福州大學(xué)物理與信息工程學(xué)院,福州 350108;2.晉江市博感電子科技有限公司,福建晉江 362200)
(?通信作者電子郵箱qunfyan@gmail.com)
近年來,隨著深度學(xué)習(xí)的發(fā)展,使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行高效率的圖像語義分割已經(jīng)成為計(jì)算機(jī)視覺中的熱門研究課題。同時(shí),自動(dòng)人像分割技術(shù)也引起越來越多的關(guān)注,尤其是在短視頻、美拍興起的今天,越來越多的人們依賴手機(jī)等移動(dòng)設(shè)備來拍攝視頻和照片,以此來記錄日常生活,這種記錄生活點(diǎn)滴的方式已然成為人們生活中不可或缺的一部分?;谏疃壬窠?jīng)的人像分割技術(shù)有利于在圖像上進(jìn)行背景編輯(例如背景虛化、替換等)應(yīng)用,如圖1所示。
語義分割的目的是為每個(gè)像素預(yù)測類別標(biāo)簽,由于類別多樣繁雜,且類間表征相似度較大,語義分割要求模型具備強(qiáng)大的區(qū)分能力。近年來,基于全卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)的一系列研究[1-5],在該任務(wù)上取得了顯著的成績;然而,與一般的圖像分割相比,人像分割具有模糊的邊界與復(fù)雜的場景,且它包含至少一個(gè)人臉區(qū)域,覆蓋整個(gè)圖像的20%以上空間的特征[6]。在移動(dòng)設(shè)備應(yīng)用中,拍攝的人像往往存在背景復(fù)雜、遮擋、曝光和分辨率不高等問題。傳統(tǒng)的人像分割工作大多數(shù)具有邊沿鋸齒狀嚴(yán)重、分割粗糙且效率低的缺點(diǎn),同時(shí)存在部分誤分割、漏分割以及分割過多或分割過少的問題。
如何有效地解決這些問題,確保高精度、高效率地部署到移動(dòng)設(shè)備之中,是非常具有挑戰(zhàn)性的。在本文中,提出了一種基于深度神經(jīng)的新型人像分割網(wǎng)絡(luò),該網(wǎng)絡(luò)專門設(shè)計(jì)用于有限計(jì)算能力的移動(dòng)設(shè)備。在網(wǎng)絡(luò)架構(gòu)方面,采用MobileNet-V2[7]作為編碼器主干,用于特征提取,這有助于提高網(wǎng)絡(luò)推理速度。為了構(gòu)建豐富的空間信息,將編碼器各分支的特征信息映射至解碼器各層之中進(jìn)行融合,其中,解碼器部分主要由新定義的殘差塊[8]與上采樣塊構(gòu)成。另外,為了模型能夠更好地捕獲上下文語義信息,采用期望最大化注意力塊(Expectation Maximization Attention Unit,EMAU),放置于編碼器之后,使每個(gè)特征像素可以充分捕獲全局信息并提高網(wǎng)絡(luò)的魯棒性。對于卷積神經(jīng)網(wǎng)絡(luò)而言,解決前后背景邊界輪廓的精確分割與鋸齒狀問題是很困難的,針對該問題,在網(wǎng)絡(luò)訓(xùn)練階段,設(shè)計(jì)了多層邊界輔助損失函數(shù),幫助網(wǎng)絡(luò)更好地學(xué)習(xí)邊界信息。實(shí)驗(yàn)結(jié)果表明,所提模型在Veer 數(shù)據(jù)集上取得了高效率、高精度的結(jié)果。
圖1 移動(dòng)設(shè)備上的人像分割應(yīng)用Fig.1 Portrait segmentation applications on mobile device
人像分割模型與語義分割和輕量卷積神經(jīng)網(wǎng)絡(luò)的研究有關(guān),本章介紹了經(jīng)典的語義分割方法和增強(qiáng)上下文信息的有效操作。
語義分割是計(jì)算機(jī)視覺領(lǐng)域的一項(xiàng)基礎(chǔ)任務(wù),許多應(yīng)用需要高效率、高精度的分割結(jié)果作為分析和理解圖像的依據(jù)。隨著深度學(xué)習(xí)的發(fā)展,全卷積神經(jīng)網(wǎng)絡(luò)[1]被提出,解決了深度學(xué)習(xí)在圖像語義分割的瓶頸問題。對圖像進(jìn)行像素級分類,為語義分割領(lǐng)域的研究打開了一扇門。SegNet[9]提出了用于分割的經(jīng)典編碼器-解碼器結(jié)構(gòu),將編碼索引從編碼器轉(zhuǎn)移到解碼器之中,以生成稀疏特征圖。UNet[2]結(jié)合了高級特征和中級特征的優(yōu)點(diǎn),將高分辨率特征從編碼器傳輸?shù)浇獯a器中進(jìn)行上采樣,以恢復(fù)空間信息。DeepLab[3-5]系列網(wǎng)絡(luò)是在全卷積神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上提出來的圖像語義分割,屬于研究領(lǐng)域中比較經(jīng)典的算法。DeepLab[4]使用擴(kuò)張卷積來維持特征映射,并使用條件隨機(jī)場(Conditional Random Field,CRF)來重新定義分割結(jié)果。DeepLab-v2[3]相較于DeepLab 添加了空洞空間卷積池化金字塔(Atrous Spatial Pyramid Pooling,ASPP),實(shí)現(xiàn)了圖像語義分割。DeepLab-v3[5]刪除了條件隨機(jī)場模塊,并修改了空洞空間卷積池化金字塔模塊以提高準(zhǔn)確性。ExFuse[10]中提出了一種新的框架來彌合低級和高級特征之間的差距,從而提高了分割質(zhì)量。這些經(jīng)典的語義分割方法擁有較高的精度,但推理效率相對較低。
另外,為了彌補(bǔ)全卷積網(wǎng)絡(luò)受制于較小感知域的缺陷,諸多研究提出了高效的多尺度上下文融合模塊,例如全局池化層、DeepLab 的空洞空間卷積池化金字塔、金字塔場景分析網(wǎng)絡(luò)(Pyramid Scene Parsing Network,PSPNet)[11]的金字塔池化塊等。近年來,自注意力機(jī)制在自然語言處理領(lǐng)域取得了卓越成果。為了進(jìn)一步聚合來自空間中所有位置的信息,研究者們開始將自注意力機(jī)制引入圖像語義分割領(lǐng)域,提出了Nonlocal[12]操作,并驗(yàn)證了在語義分割中的有效性,它使得每個(gè)像素可以充分捕獲全局信息。然而,自注意力機(jī)制需要生成一個(gè)巨大的注意力圖,其空間復(fù)雜度和時(shí)間復(fù)雜度巨大,這對于輕量級網(wǎng)絡(luò)而言,并不適用。
出于模型輕量化的角度,本文采用以下幾個(gè)方法進(jìn)行輕量級網(wǎng)絡(luò)的構(gòu)建:1)提出的人像分割網(wǎng)絡(luò)使用MobileNet-v2作為主干來提取圖像特征,并使用深度可分離卷積來代替?zhèn)鹘y(tǒng)卷積。2)采用輕量級的期望最大化注意力塊作為理解圖像上下文的語義模塊。該模塊摒棄了在全圖上計(jì)算注意力圖的流程,轉(zhuǎn)而通過期望最大化(Expectation Maximization,EM)算法[13]迭代出一組緊湊的基底,在這組基底上運(yùn)行注意力機(jī)制,從而大大降低了復(fù)雜度。3)輕量化網(wǎng)絡(luò)模型相較于大型復(fù)雜的模型而言,其分割精度是有所下降的。為了保持模型的輕量化,且有效地提升分割精度,與復(fù)雜模型相媲美,將多層邊界輔助損失引入訓(xùn)練階段,提升模型的分割精度。4)后期推理階段,在保持高準(zhǔn)確度的情形下,對模型進(jìn)行量化,達(dá)到壓縮模型提升運(yùn)行速度的效果。
本章首先介紹了為移動(dòng)設(shè)備專門設(shè)計(jì)的人像分割架構(gòu),它包括編碼器模塊和解碼器模塊;接著,描述期望最大化注意力塊的核心算法與內(nèi)部結(jié)構(gòu);最后,講解模型訓(xùn)練階段引入的多層邊界輔助損失,該損失函數(shù)只參與訓(xùn)練過程,在測試階段不會(huì)增加額外的計(jì)算損耗。
在語義分割模型中,受輕量級模型研究的啟發(fā),采用深度可分離卷積取代標(biāo)準(zhǔn)卷積[14],可極大減少網(wǎng)絡(luò)的計(jì)算量,這有助于實(shí)現(xiàn)推理效率更高的分割模型,圖2 顯示了人像分割網(wǎng)絡(luò)框架?;诶碚撆c實(shí)踐結(jié)果,選擇MobileNet-V2 作為編碼器主干,用于從原始RGB 圖像中提取特征。為了成功部署到移動(dòng)設(shè)備上且實(shí)現(xiàn)實(shí)時(shí)性能,在編碼器中使用小的輸入尺寸224×224 和16 倍下采樣率。同時(shí),在解碼器中采用16 倍上采樣率的U 形架構(gòu)來重建空間信息,將編碼器各層信息映射至解碼器對應(yīng)層中進(jìn)行融合,以充分利用中高級語義特征。為了降低模型的復(fù)雜度,與編碼器相比,解碼器結(jié)構(gòu)相對簡單,主要包含上采樣塊與轉(zhuǎn)換塊。上采樣塊基于雙線性插值的上采樣操作,對每個(gè)層的特征映射進(jìn)行2 倍上采樣。轉(zhuǎn)換塊是基于深度可分離卷積修改得到的殘差塊[15],具體如圖2(b)所示。該模塊主要有兩個(gè)分支:一個(gè)分支包含兩個(gè)深度可分離的卷積,另一個(gè)分支包含單個(gè)1×1卷積來調(diào)整通道數(shù)。另外,要實(shí)現(xiàn)高精度分割,解決誤分割、漏分割的問題,模型必須充分了解豐富的全局空間信息,由此引入期望最大化注意力塊置于編碼器之后、解碼器之前,故總結(jié)構(gòu)為編碼器-期望最大化注意力塊-解碼器。
自我關(guān)注機(jī)制已被廣泛用于各種任務(wù),旨在通過所有位置的特征加權(quán)和來計(jì)算每個(gè)位置的表示,因此,它可以捕獲計(jì)算機(jī)視覺任務(wù)的遠(yuǎn)程關(guān)系;但是,該機(jī)制在計(jì)算損耗上是非常大的,不適合輕量化模型。針對該問題,Li等[16]從期望最大化算法的角度重新思考了注意力機(jī)制,提出了期望最大化注意力機(jī)制。該機(jī)制使用期望最大化算法迭代出一個(gè)更緊湊的基底,而不是將所有像素都視為重建基底,這可以極大降低計(jì)算復(fù)雜度。
圖2 人像分割網(wǎng)絡(luò)模型架構(gòu)Fig.2 Model architecture of portrait segmentation network
2.2.1 期望最大化算法
期望最大化算法[17]旨在為隱變量模型尋找最大似然解。對于易知的觀測數(shù)據(jù){X1,X2,…,XN},定義為X,每一個(gè)觀測數(shù)據(jù)點(diǎn)Xi都有其對應(yīng)的隱變量Zi。將{X,Z}稱為完整數(shù)據(jù),其似然函數(shù)為lnP(X,Z|μ),其中μ為模型的參數(shù)。期望最大化算法分為E 步和M 步,其中E 步根據(jù)當(dāng)前模型參數(shù)μold計(jì)算隱變量Z的后驗(yàn)分布,并尋找完整數(shù)據(jù)的似然解?(μ,μold):
M步通過最大化似然函數(shù)來更新網(wǎng)絡(luò)參數(shù)得到μ:
期望最大化算法交替執(zhí)行E 步和M 步,直到滿足收斂標(biāo)準(zhǔn)。該算法被證明會(huì)收斂到局部最大值,且迭代過程完整數(shù)據(jù)似然值單調(diào)遞增。
2.2.2 期望最大化注意力機(jī)制
期望最大化注意力機(jī)制由注意力估算(Attention Estimation,AE)、注意力最大化(Attention Maximization,AM)和注意力再估計(jì)(Attention Re-estimation,AR)三部分組成。其中,AE、AM 分別對應(yīng)于EM 算法的E 步和M 步,AE 負(fù)責(zé)估計(jì)隱變量,AM 負(fù)責(zé)更新基底[18]。由AE 和AM 交替執(zhí)行T步后,近似收斂的基底μ和隱變量Z,交由AR 環(huán)節(jié)進(jìn)行特征圖重估:
重估結(jié)果-X相較于X,具有低秩特性。實(shí)驗(yàn)中,迭代次數(shù)T=3,便達(dá)到近似收斂,輸出為基底的加權(quán)和,權(quán)重即為式(3)的Z,表示最終注意力圖。這種機(jī)制消除了許多不必要的噪聲,并使每個(gè)像素的最終分類更容易處理。
期望最大化注意力塊結(jié)構(gòu)如圖3 所示,除了核心的期望最大化注意力之外,還含有兩個(gè)1×1卷積分別放置于期望最大化注意力前后。前者將輸入特征進(jìn)行空間壓縮;后者將特征重估映射回觀測數(shù)據(jù)殘差空間之中。囊括進(jìn)兩個(gè)卷積,期望最大化注意力塊的每秒峰值速度FLOPS(Floating-Point Operations Per Second)僅為同樣輸入輸出大小的3×3 卷積的1/3。
圖3 期望最大化注意力塊結(jié)構(gòu)Fig.3 Structure of Expectation Maximization Attention Unit(EMAU)
為了提高模型的推理速度,本文設(shè)計(jì)的編碼器模塊、解碼器模塊是采用深度可分離卷積替代傳統(tǒng)卷積。相較于復(fù)雜模型而言,其分割精度有所下降,故在模型訓(xùn)練階段,引入高效的邊界損失函數(shù)[19],有助于提高模型對人物邊界的分割精度。
與一般的目標(biāo)分割相比,人像分割模型對分割前后景邊界更敏感,需要網(wǎng)絡(luò)產(chǎn)生更清晰的掩膜邊界,以利于后期圖像編輯。為了充分利用語義邊界中包含的有用信息,除了語義分割的交叉熵作為損失之外,本文設(shè)計(jì)了邊界輔助損失函數(shù)。通過對掩膜標(biāo)簽圖像的膨脹、腐蝕操作后,基于二者相減,進(jìn)一步得到形態(tài)學(xué)梯度結(jié)果,以此生成邊界輪廓圖,如圖4 所示,在待分割物體的邊界圖中,物體邊界區(qū)域的像素值為1,其他區(qū)域的像素值均為0。本文在編碼器到解碼器的各分支跳線上,利用邊界輔助損失指導(dǎo)多層卷積,進(jìn)一步學(xué)習(xí)圖像的關(guān)鍵特征,使得有效地用于推斷更好的結(jié)果。邊界輔助損失函數(shù)的定義由Focal Loss[20-21]得到,具體的總損失有:
其中:Lce是分割交叉熵值;LB是邊界損失值;為了避免交叉熵值與邊界損失值產(chǎn)生無端競爭,在總損失式中設(shè)置權(quán)重參數(shù)α。為確保式(4)、(5)的可行性,式中yi代表掩膜標(biāo)簽像素i的真實(shí)值,由于在數(shù)據(jù)加載階段將圖像像素點(diǎn)進(jìn)行歸一化操作,使值介于0-1 兩極分布。pi代表掩膜預(yù)測像素i的預(yù)測值,該預(yù)測值由特征圖經(jīng)softmax 函數(shù)取得。另外,式中的τi是基于形態(tài)學(xué)梯度的像素權(quán)重值,其表達(dá)式如下:
其中:dilate(·)是對掩膜標(biāo)簽進(jìn)行膨脹操作;erode(·)是對掩膜標(biāo)簽進(jìn)行腐蝕操作;kernel代表卷積核參數(shù),該參數(shù)大小決定待分割物體的邊界區(qū)域大小。經(jīng)實(shí)踐總結(jié),本實(shí)驗(yàn)采用5×5的卷積核進(jìn)行圖像處理。通過對邊界損失的實(shí)踐使用,可以更好地保留人物的邊緣輪廓,進(jìn)而提高模型對人像邊界的敏感度。
圖4 邊界損失輪廓Fig.4 Boundary loss contour
常規(guī)的損失函數(shù)利用神經(jīng)網(wǎng)絡(luò)最后一層的輸出與相應(yīng)的類別標(biāo)簽計(jì)算損失值,然后利用損失值計(jì)算參數(shù)的梯度,為網(wǎng)絡(luò)完成參數(shù)更新??紤]到卷積神經(jīng)網(wǎng)絡(luò)往往具有深層結(jié)構(gòu),不同層級之間存儲(chǔ)著不同等級的特征信息。傳統(tǒng)的損失函數(shù)只能宏觀地指導(dǎo)網(wǎng)絡(luò)整體的訓(xùn)練方向,無法準(zhǔn)確地指導(dǎo)神經(jīng)網(wǎng)絡(luò)的某一部分完成相應(yīng)的任務(wù)。因此,本文引入多層損失,在網(wǎng)絡(luò)的多層次結(jié)構(gòu)中引出不同層級的特征圖進(jìn)行損失計(jì)算,從而在訓(xùn)練過程中指導(dǎo)網(wǎng)絡(luò)不同部分向正確的方向?qū)W習(xí),降低網(wǎng)絡(luò)的訓(xùn)練難度,提升網(wǎng)絡(luò)的分割精度。
本文的語義分割網(wǎng)絡(luò)經(jīng)過編碼器共下采樣了四次,然后通過解碼器逐漸將特征圖恢復(fù)成原尺寸。因此,利用不同下采樣尺度的特征圖進(jìn)行損失計(jì)算,可以指導(dǎo)神經(jīng)網(wǎng)絡(luò)中處理不同尺度特征圖的子網(wǎng)絡(luò)進(jìn)行正確的參數(shù)更新。將解碼器中第1、2、3、4 層的輸出特征圖分別經(jīng)過一個(gè)1×1 的卷積核后得到尺寸為112×112×2、56×56×2、28×28×2、14×14×2的分割圖像。然后將各層輸出分割結(jié)果同對應(yīng)尺寸的掩膜標(biāo)簽進(jìn)行交叉熵與邊界損失計(jì)算。多層損失計(jì)算示意圖如圖2 所示,圖中的⊕代表交叉熵與邊界損失操作,該損失計(jì)算模塊只在訓(xùn)練階段使用,前向推理階段直接去除。引入多層損失的計(jì)算式如下:
在本章中,首先介紹數(shù)據(jù)集的制作與擴(kuò)充方法,然后對實(shí)驗(yàn)裝置和模型量化進(jìn)行講解,最后進(jìn)行消融研究并評估網(wǎng)絡(luò)的性能。
目前公開的人像可用數(shù)據(jù)比較有限,例如EG1800、Supervise-Portrait 等。整體數(shù)據(jù)的掩膜標(biāo)簽分割精度較粗糙,且部分圖像分割帶有主觀色彩。為了更好地訓(xùn)練人像分割網(wǎng)絡(luò),本文要求數(shù)據(jù)應(yīng)具有注重頭發(fā)絲細(xì)節(jié)效果的掩膜標(biāo)簽。因此,從Veer 圖庫收集包含各種年齡、不同膚色、服裝、發(fā)飾、頭部位置、場景等的高質(zhì)量圖像,數(shù)據(jù)如圖5 所示。這些圖像主要是由移動(dòng)設(shè)備的前置攝像頭拍攝的自拍像。接著通過放大局部區(qū)域來對每個(gè)圖像的目標(biāo)進(jìn)行統(tǒng)一規(guī)格裁剪,然后使用K近鄰摳圖(K-Nearest Neighbor Matting,KNN-Matting)進(jìn)行掩膜標(biāo)簽的生成,并對生成結(jié)果進(jìn)行手動(dòng)檢查。對于不符合標(biāo)準(zhǔn)的圖像,使用Photoshop 軟件,手動(dòng)創(chuàng)建掩膜標(biāo)簽。在此標(biāo)記之后,收集了6 000 張高質(zhì)量的自拍圖像及對應(yīng)的掩膜標(biāo)簽。
但這批小量化數(shù)據(jù)不足以訓(xùn)練神經(jīng)網(wǎng)絡(luò),且其多樣性受到嚴(yán)重限制。為了減少數(shù)據(jù)籌建的工作量,決定通過將實(shí)際圖像中的前景對象合成到新背景上[22],以此創(chuàng)建更大的數(shù)據(jù)集。通過收集30 000 張背景圖,將透明的前景圖像與新背景圖進(jìn)行隨機(jī)圖像貼合。以上述方法創(chuàng)建了用于訓(xùn)練和測試的數(shù)據(jù)集,最終擁有25 862張訓(xùn)練圖像與350張測試圖像。
圖5 Veer人像數(shù)據(jù)示例Fig.5 Samples of Veer portrait data
考慮到自拍圖像一般有比較復(fù)雜的背景、曝光、天氣等因素,為了提高模型的泛化性,本文采用圖像形變增強(qiáng)和紋理增強(qiáng)兩種方式進(jìn)行數(shù)據(jù)增強(qiáng)。其中:形變增強(qiáng)會(huì)改變圖像中目標(biāo)的位置和大小,不影響圖像的紋理特性;紋理增強(qiáng)保持目標(biāo)的位置和大小,增強(qiáng)目標(biāo)所在背景的紋理性質(zhì),以此提高數(shù)據(jù)的多樣性。具體數(shù)據(jù)增強(qiáng)示例如圖6所示。
實(shí)驗(yàn)中圖像形變增強(qiáng)方法包括:
1)圖像上下前后隨機(jī)翻轉(zhuǎn){-0.25~0.25};
2)圖像隨機(jī)縮放{0.8~1.5},進(jìn)行原圖尺寸裁剪;
3)圖像隨機(jī)切邊{-0.15~0.15};
4)圖像隨機(jī)旋轉(zhuǎn){-45°~45°}。
實(shí)驗(yàn)中圖像紋理增強(qiáng)方法包括:
1)圖像天氣效果隨機(jī)添加{雨、霧、雪、云、陽光};
2)圖像色彩隨機(jī)調(diào)節(jié){0.4~2.0};
3)圖像對比度隨機(jī)調(diào)節(jié){0.6~1.8}。
圖6 數(shù)據(jù)增強(qiáng)示例Fig.6 Samples of data augmentation
本設(shè)計(jì)基于主流的深度學(xué)習(xí)框架TensorFlow,使用Pycharm 編輯器進(jìn)行編程,使用NVIDIA-1080Ti 設(shè)備進(jìn)行網(wǎng)絡(luò)訓(xùn)練工作。在訓(xùn)練期間,設(shè)置網(wǎng)絡(luò)可接收數(shù)據(jù)量batchsize 為35,初始學(xué)習(xí)率為0.01,終止學(xué)習(xí)率為0,采用多項(xiàng)式衰減方法調(diào)整學(xué)習(xí)率與標(biāo)準(zhǔn)動(dòng)量優(yōu)化方法進(jìn)行優(yōu)化。為了獲得更高的運(yùn)行速度,在具有3個(gè)通道的224×224的RGB 圖像上訓(xùn)練和測試模型性能。
隨著神經(jīng)網(wǎng)絡(luò)深度增加,網(wǎng)絡(luò)節(jié)點(diǎn)變得越來越多,規(guī)模隨之變得非常大。想要在有限資源的硬件設(shè)備上布置性能良好的網(wǎng)絡(luò),就需要對網(wǎng)絡(luò)模型進(jìn)行壓縮和加速。深層神經(jīng)網(wǎng)絡(luò)模型中含有大量的浮點(diǎn)權(quán)重,會(huì)占據(jù)大量空間。但是這些權(quán)重的分布范圍符合正態(tài)分布,集中在一個(gè)數(shù)字范圍內(nèi)。因此量化最簡單的動(dòng)機(jī)就是存儲(chǔ)每層的最值,并將最值區(qū)間的浮點(diǎn)數(shù)映射到0~255 的8 位整型上。另一個(gè)量化動(dòng)機(jī)是減少推斷時(shí)所需要的計(jì)算資源,帶來速度和空間上的收益。
本文使用的是Tensorflow Lite 中自帶的量化工具包。首先,在訓(xùn)練階段,計(jì)算損失函數(shù)后生成偽量化計(jì)算圖,進(jìn)而生成pb文件;接下來,使用freeze-graph操作凍結(jié)pb文件和ckpt,生成新的凍結(jié)的pb 文件;最后,使用toco 量化凍結(jié)后的pb 文件,生成tflite文件。
在本節(jié)中,評估所提出網(wǎng)絡(luò)的性能。首先,驗(yàn)證輕量級網(wǎng)絡(luò)的有效性;接著,將其與經(jīng)典的方法進(jìn)行各性能比較。
3.5.1 模型有效性分析
為了進(jìn)一步驗(yàn)證本文提出的輕量級網(wǎng)絡(luò)構(gòu)建的有效性,進(jìn)行了五組實(shí)驗(yàn):一組為編碼器-解碼器的結(jié)構(gòu),采用交叉熵計(jì)算網(wǎng)絡(luò)損失;二組為編碼器-EMAU-解碼器的結(jié)構(gòu),采用交叉熵計(jì)算網(wǎng)絡(luò)損失;三組為編碼器-EMAU-解碼器的結(jié)構(gòu),采用交叉熵與邊界損失進(jìn)行網(wǎng)絡(luò)損失值的計(jì)算;四組為編碼器-EMAU-解碼器的結(jié)構(gòu),采用交叉熵、邊界損失與多層損失指導(dǎo)網(wǎng)絡(luò)進(jìn)行損失值的計(jì)算;五組為編碼器-EMAU-解碼器的結(jié)構(gòu),采用交叉熵、邊界損失與多層損失指導(dǎo)網(wǎng)絡(luò)進(jìn)行損失值的計(jì)算,最后采用模型量化方式進(jìn)行模型壓縮。根據(jù)實(shí)踐經(jīng)驗(yàn),本文將式(6)的α設(shè)置為0.5 來平衡交叉熵和邊界損失。為保證結(jié)果的可對比性,在實(shí)驗(yàn)中,實(shí)驗(yàn)裝置的所有超參數(shù)都是相同的。
用于評估分割精度(精準(zhǔn)度)的指標(biāo)為交并比(Intersection-Over-Union,IOU),定義如下:
其中,mask_Pi和mask_GTi分別表示測試集的第i個(gè)圖像的預(yù)測結(jié)果和掩膜標(biāo)簽。各組實(shí)驗(yàn)的迭代次數(shù)及對應(yīng)精度如圖7所示,記錄迭代次數(shù)為10~95 的總體分割精度趨勢走向?;诘螖?shù)為90 輪時(shí),分割精度區(qū)域穩(wěn)定,故選取各實(shí)驗(yàn)的該輪迭代結(jié)果進(jìn)行性能分析,具體效果如表1 所示。對比實(shí)驗(yàn)一組、二組,在網(wǎng)絡(luò)中添加EMAU,網(wǎng)絡(luò)分割精度提升了9.52%,同時(shí),在NVIDIA-1080Ti 設(shè)備上的單張圖片推理時(shí)長增加了13.81 ms(289%);對比實(shí)驗(yàn)二組、三組,在相同的網(wǎng)絡(luò)結(jié)構(gòu)中,引入邊界損失,網(wǎng)絡(luò)分割精度提升了0.38%,不增加推理額外損耗;對比實(shí)驗(yàn)三組、四組,在相同的網(wǎng)絡(luò)結(jié)構(gòu)中,添加多層損失,網(wǎng)絡(luò)分割精度提升了0.52%,同樣不增加推理額外損耗;對比實(shí)驗(yàn)二組、四組,本文提出的多層邊界損失有助于模型目標(biāo)邊沿的細(xì)分割,網(wǎng)絡(luò)精度提升了0.90%;實(shí)驗(yàn)五組是在實(shí)驗(yàn)四組的訓(xùn)練結(jié)果上進(jìn)行模型量化操作,目的是方便部署至移動(dòng)端。相較于實(shí)驗(yàn)四組,實(shí)驗(yàn)五組在NVIDIA-1080Ti設(shè)備上的單張圖片推理時(shí)長大幅減少至5.03 ms,同時(shí)也帶來了分割精度下滑至95.57%的影響。從總體性能而言,模型量化帶來的效益是很可觀的。
表1 不同方法的精度與速度對比Tab.1 Comparison of accuracy and speed of different methods
3.5.2 準(zhǔn)確性分析
選擇PortraitFCN+[23]、ENet[24]、BiSeNet[25]、PortraitNet 作為基線,進(jìn)行性能比較,表2記錄了各方法在Veer測試集上的分割精度。對于部署到移動(dòng)端的實(shí)時(shí)推理測試,本文使用MobileNet-V2 作為骨干,用于從原始圖像中提取特征信息,并且通過期望最大化注意力塊捕獲像素與像素之間的關(guān)聯(lián)性,最后使用U 型架構(gòu)來生成清晰的分割邊界。在整個(gè)網(wǎng)絡(luò)中,采用深度可分離卷積來提高運(yùn)行速度。經(jīng)過實(shí)踐實(shí)驗(yàn),本文將網(wǎng)絡(luò)可接收輸入圖像尺寸設(shè)置為224×224 以進(jìn)行實(shí)時(shí)推斷。圖8顯示了不同方法產(chǎn)生的人像分割結(jié)果。
圖7 不同組實(shí)驗(yàn)的迭代精度對比Fig.7 Comparison of iteration accuracy of different groups of experiments
圖8 不同模型的分割結(jié)果Fig.8 Segmentation results of different models
3.5.3 速度分析
推理效率對部署到移動(dòng)端的應(yīng)用來講是至關(guān)重要的。本文對不同模型,進(jìn)行浮點(diǎn)運(yùn)算(FLOPS)、參數(shù)量(Parameters)的評估以及在NVIDIA-1080Ti 設(shè)備上測試各模型推理單張圖像的效率,詳情見表2。與其他方法相比,本文方法在精度和效率方面都取得了顯著的性能,能夠在Veer 數(shù)據(jù)集上得到95.57%的分割精度,在NVIDIA-1080Ti 設(shè)備上的單張圖像推理耗時(shí)約為5.03 ms。
表2 不同模型的定量性能比較Tab.2 Quantitative performance comparison of different models
在本文中,詳細(xì)介紹了人像分割網(wǎng)絡(luò),這是一種輕量級模型,專門為計(jì)算能力有限的移動(dòng)設(shè)備所設(shè)計(jì)。本文實(shí)驗(yàn)在原有的編碼器-解碼器結(jié)構(gòu)中,添加期望最大化注意力塊,能夠幫助模型更好地理解語義特征。另外,在訓(xùn)練階段,引入多層邊界輔助損失,有助于解決邊沿分割鋸齒化問題,使網(wǎng)絡(luò)產(chǎn)生更清晰的邊界,而這一過程無需額外的分割推斷損耗。實(shí)驗(yàn)結(jié)果表明了該方法的可行性,驗(yàn)證了該網(wǎng)絡(luò)可以用于移動(dòng)設(shè)備上的實(shí)時(shí)人像分割。