徐正則,張文俊
(1.上海大學(xué)上海電影學(xué)院,上海 200072;2.華東師范大學(xué)傳播學(xué)院,上海 200241)
便攜式且可穿戴的虛擬現(xiàn)實(shí)(virtual reality,VR)和增強(qiáng)現(xiàn)實(shí)(augmented reality,AR)設(shè)備要求對(duì)傳統(tǒng)的交互手段進(jìn)行變革,因此手部姿態(tài)估計(jì)[1]和手勢(shì)識(shí)別技術(shù)[2-3]的研究與應(yīng)用激發(fā)了廣大研究人員的興趣.該技術(shù)可以使用雙手模擬控制器與下一代數(shù)字媒體設(shè)備進(jìn)行交互,提供更加自然舒適、無拘無束的交互操作體驗(yàn).
研究人員首先開發(fā)了基于光學(xué)的手勢(shì)識(shí)別技術(shù)[4],但是應(yīng)用環(huán)境、光線、膚色、背景復(fù)雜度和手勢(shì)運(yùn)動(dòng)快慢的變化對(duì)識(shí)別結(jié)果的影響非常大,甚至?xí)?duì)手勢(shì)區(qū)域與背景的分離造成巨大干擾.基于深度圖像(depth image)的識(shí)別技術(shù)可以在很大程度上克服以上缺陷,逐漸成為了目前主流的手勢(shì)姿態(tài)估計(jì)方法.
文獻(xiàn)[5-9]中的主流方法是把手勢(shì)估計(jì)和識(shí)別分解成3 個(gè)階段的算法:檢測(cè)和手部分割、手勢(shì)姿態(tài)估計(jì)、驗(yàn)證和精細(xì)調(diào)整.事實(shí)上,通過深度相機(jī)建立一套高效、穩(wěn)定、實(shí)用的手勢(shì)識(shí)別和控制系統(tǒng)仍然是一項(xiàng)非常艱難的工作,其中從深度圖像中準(zhǔn)確分割出“干凈”的手部圖像顯得尤為重要,這是因?yàn)楫?dāng)前一階段的算法出錯(cuò)后,后一階段的算法無法從錯(cuò)誤中恢復(fù).幾種應(yīng)用效果較好的圖像分割算法主要有:隨機(jī)森林(random decision forest,RDF)算法、區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(region-based convolutional neural networks,R-CNN)系列算法、YOLO(you only look once)算法和全卷積神經(jīng)網(wǎng)絡(luò)(fully convolutional neural networks,FCNN)系列算法.
應(yīng)用RDF 進(jìn)行圖像分割是一種像素級(jí)(pixel-wise)的方法,該方法從體感技術(shù)開始流行,Shotton 等[10]通過RDF 算法對(duì)深度圖像進(jìn)行分類,把姿勢(shì)估計(jì)問題轉(zhuǎn)換為基于像素的分類問題,可以對(duì)全身各個(gè)部位對(duì)應(yīng)的像素進(jìn)行分割.在手部分割和手勢(shì)估計(jì)領(lǐng)域,Tompson 等[2]首先提出了通過文獻(xiàn)[10]的方法把三棵隨機(jī)樹訓(xùn)練到20 層,通過原像素深度值與一個(gè)經(jīng)過像素偏移后的深度值之間的差值來二值分類深度圖像中的每個(gè)像素是屬于手部還是屬于背景區(qū)域,并且發(fā)現(xiàn)需要一個(gè)較大動(dòng)態(tài)范圍的像素偏移才能得到比較好的分類結(jié)果.Sharp 等[11]首先從連續(xù)的深度圖像序列中利用前幾幀的運(yùn)動(dòng)信息來推斷手部的感興趣區(qū)域(region of interest,ROI),然后使用更加準(zhǔn)確的像素級(jí)別的分類器來分割定位手部.Srinath 等[12]進(jìn)一步把RDF像素分類方法擴(kuò)展到手的20 個(gè)部分.RDF 是比較高效的算法,但是存在邊界像素分類模糊的缺點(diǎn),文獻(xiàn)[11]已證明這點(diǎn).
R-CNN[13]首先使用選擇性搜索(selective search)在圖像中產(chǎn)生大量候選區(qū)域(region proposal),支持向量機(jī)(support vector machine,SVM)分類后應(yīng)用邊框盒回歸(bounding box regression)對(duì)最終結(jié)果進(jìn)行精調(diào).R-CNN 對(duì)圖像進(jìn)行分割的缺點(diǎn)在于速度非常慢.Fast RCNN[14]直接使用Softmax 替代了R-CNN 中的SVM 進(jìn)行分類,同時(shí)在網(wǎng)絡(luò)中加入了多任務(wù)函數(shù)邊框回歸,在一定程度上提升了準(zhǔn)確度和速度,但每張圖像仍耗時(shí)約3 s,無法滿足實(shí)時(shí)應(yīng)用.Faster R-CNN[15]應(yīng)用了區(qū)域生成網(wǎng)絡(luò)(region proposal network,RPN)代替R-CNN 和Fast R-CNN 中的選擇性搜索方法,大幅改善了因選擇性搜索產(chǎn)生候選區(qū)域速度較慢的問題,但只能達(dá)到5 幀/s,還是無法滿足實(shí)時(shí)性.此外,先獲取候選區(qū)域再對(duì)每個(gè)區(qū)域進(jìn)行分類的兩階段(two-stage)算法的計(jì)算量還是比較大.
YOLO[16-18]直接在輸出層回歸邊界框(bounding box)的坐標(biāo)、寬高、所屬類別,以及置信度.與R-CNN 類似,YOLO 是一種基于框(anchor-based)的圖像識(shí)別和分割算法,分離圖像有外邊框.YOLO 比R-CNN 要快很多,其v1 版本在GPU 上能達(dá)到45 幀/s,滿足實(shí)時(shí)性要求.但YOLO 對(duì)于非常規(guī)的物體形狀或比例,以及小物體的檢測(cè)效果較差.
R-CNN 和YOLO 系列檢測(cè)的手部目標(biāo)具有邊框盒,其他部位經(jīng)過投影后也可能落在2D邊框盒內(nèi),因此分離出的手部圖像還不能直接用于手勢(shì)識(shí)別,需要利用深度信息進(jìn)行前后景分離.比如,James 等[19]應(yīng)用3D 立體空間作為掃描窗口,去除在3D 空間體之外的雜亂背景,3D掃描體能夠忽略這些無用的深度數(shù)據(jù),可分割得到更加純粹的手部區(qū)域.相比之下,類FCNN方法是端到端的像素級(jí)手部深度圖像分割算法.
FCNN 系列由一對(duì)編碼器(encoder)和解碼器(decoder)組成,編碼器把輸入圖像轉(zhuǎn)換成低維的特征空間,而解碼器上采樣(upsample)低維特征圖以重建高分辨率的分割圖像.FCNN[20]使用多個(gè)卷積和最大池化層作為編碼器,使用雙線性插值算法進(jìn)行上采樣,由于這種機(jī)械的算法不具備學(xué)習(xí)能力,因此只能重建出模糊的像素級(jí)分割圖像.不同于簡(jiǎn)單的插值操作,DeconvNet[21]和SegNet[22]的解碼器仍然是可學(xué)習(xí)的.DeconvNet 應(yīng)用了多個(gè)反卷積層(deconvolution layers,也稱轉(zhuǎn)置卷積)進(jìn)行上采樣操作來恢復(fù)圖像維度,而SegNet 編碼時(shí)把最大池化的位置記錄為索引,然后解碼時(shí)通過在每個(gè)對(duì)應(yīng)層上的索引反向操作把特征圖像重新放大,并且上采樣后加入了可學(xué)習(xí)的卷積層.由于編-解碼器都具備學(xué)習(xí)能力,因此相比只有編碼學(xué)習(xí)性的FCNN,DeconvNet 和SegNet 在圖像分割時(shí)可以得到更好的準(zhǔn)確性.以上3 種架構(gòu)稱作類FCNN 方法.
類FCNN 方法作為端到端的手部深度圖像分割算法,結(jié)構(gòu)更加簡(jiǎn)潔,檢測(cè)速度較快,分割結(jié)果準(zhǔn)確,且分割算法本身就是像素級(jí)的,因此獲取的手部區(qū)域沒有背景的干擾,更加“干凈”,這樣有利于提高下一階段手勢(shì)姿態(tài)估計(jì)的準(zhǔn)確性.對(duì)于主流的三階段手勢(shì)識(shí)別算法來說,類FCNN 方法特別是編-解碼器都具備學(xué)習(xí)能力的DeconvNet 和SegNet 更適合作為預(yù)處理階段的方法來檢測(cè)和分割手部.逐像素對(duì)左右手進(jìn)行同步分割屬于語義分割的范疇,但以往語義分割主要針對(duì)的是彩色光學(xué)圖像,而本工作使用了代表物體離相機(jī)距離信息的深度圖像,并且通過實(shí)驗(yàn)證明了類FCNN 方法能夠應(yīng)用于基于深度圖像的語義分割任務(wù)中.
本工作的主要貢獻(xiàn)在于:①比較了DeconvNet 和SegNet 模型架構(gòu)和超參數(shù)對(duì)于分割性能和速度的影響;②借鑒了殘差神經(jīng)網(wǎng)絡(luò)(residual neural network,ResNet)和U-net 中的跳層連接(skip-connection)方法,在對(duì)應(yīng)的編碼和解碼層之間加入跳層連接,可大幅度提升準(zhǔn)確度,并比較了直接相加和拼接合并兩種跳接模式;③使用了空洞卷積,在增大感受野的同時(shí)減少了計(jì)算量,加快了訓(xùn)練和推理速度,且能夠進(jìn)一步提升模型的準(zhǔn)確度.
由于FCNN 采用簡(jiǎn)單的插值操作進(jìn)行上采樣,語義分割效果較差.本工作采用的基準(zhǔn)架構(gòu)(見圖1)同時(shí)在編碼和解碼層都具備學(xué)習(xí)性,類似于DeconvNet 和SegNet,因此準(zhǔn)確性上會(huì)有大幅提升.網(wǎng)絡(luò)結(jié)構(gòu)中只有卷積層、池化層和反卷積層,沒有全連接層,原始模型架構(gòu)比較大,主要適用于光學(xué)圖像,而對(duì)于深度圖像,是否可以去除部分卷積層,通過縮減架構(gòu)來提高訓(xùn)練和檢測(cè)速度?因此本實(shí)驗(yàn)首先分別采用了單、雙層模型,之后分別測(cè)試常規(guī)的Relu 和新興的Leaky Relu 激活函數(shù).相較使用最大池化層,實(shí)驗(yàn)網(wǎng)絡(luò)嘗試以步長(zhǎng)(stride)為2 進(jìn)行跳動(dòng)卷積的方式實(shí)現(xiàn)降維,并比較了兩種降維方式的分割效果.
圖1 手部分割網(wǎng)絡(luò)基本架構(gòu)Fig.1 Fundamental framework of hand segmentation network
在此基礎(chǔ)上,本工作主要的改進(jìn)方法是嘗試對(duì)基準(zhǔn)架構(gòu)應(yīng)用多種策略來提升模型性能,并通過實(shí)驗(yàn)來驗(yàn)證策略的改進(jìn)效果.
在輸入圖像中標(biāo)注3 種類別:背景、左手、右手,但是不同類別在圖像中出現(xiàn)的頻次差異很大,深度圖像中被標(biāo)注為背景的像素占據(jù)了絕大部分,直接為每個(gè)分類后的像素采用Softmax計(jì)算損失函數(shù),會(huì)使訓(xùn)練出來的模型在檢測(cè)左右手這樣的小物體時(shí)敏感度較低.而手部深度圖像分割算法的目標(biāo)在于準(zhǔn)確地識(shí)別出雙手所在像素,背景像素是否準(zhǔn)確識(shí)別并不重要.為了提升左右手這樣小物體的識(shí)別率,需要應(yīng)用類別平衡(class balancing)技術(shù).Eigen 等[23]首先引入頻率中值平衡,即在損失函數(shù)中加入根據(jù)類別出現(xiàn)頻率的中值來確定的權(quán)重,計(jì)算方法為
式中:pixelc是類別為c 的像素總數(shù);n×w×h 為圖像總數(shù)乘以長(zhǎng)和寬;fc是類別c 出現(xiàn)的頻率;median of fc是所有類別的中間值;Weightc是最終計(jì)算出的該類別的權(quán)重系數(shù).訓(xùn)練數(shù)據(jù)集有150 000 張320×240 像素的深度圖,經(jīng)過統(tǒng)計(jì),背景、左手、右手像素的數(shù)量分別為11 716 963 591,231 537 532,185 898 877,經(jīng)計(jì)算得到的權(quán)重設(shè)定為0.02,1.00,1.24.由于像素大小差別太大,背景權(quán)重太小,會(huì)嚴(yán)重影響計(jì)算時(shí)FLOAT32 類型數(shù)值的精度,因此同時(shí)放大15 倍,即背景、左手、右手的權(quán)重分別為0.345 2,17.480,21.760.此外,作為結(jié)果對(duì)比,實(shí)驗(yàn)中還使用了一組經(jīng)驗(yàn)權(quán)重值1,10,10.
為了擴(kuò)大卷積層的感受范圍,常見做法為增加卷積核的大小,但是會(huì)造成算法計(jì)算量呈幾何級(jí)數(shù)增加.使用空洞卷積[24]可以在不引入額外卷積核參數(shù)的情況下擴(kuò)大感受野.但是空洞卷積存在“網(wǎng)格效應(yīng)”(gridding),即卷積結(jié)果是來自上一層沒有相互依賴的獨(dú)立集合,因此結(jié)果之間沒有相關(guān)性,可能會(huì)造成局部信息丟失.混合式空洞卷積(hybrid dilated convolution,HDC)[25]方案在卷積層引入特殊的多層結(jié)構(gòu)設(shè)計(jì),空洞率(rate)不再采用文獻(xiàn)[24]中固定的2,而是采用r=1,2,3 這3 個(gè)連續(xù)增加空洞率的卷積層組合使用,可以有效減輕“網(wǎng)格效應(yīng)”.
實(shí)驗(yàn)中采用卷積核為3×3、空洞率分別為r=1 和2 的兩層卷積層組合使用,可以代替一層卷積核為7×7 的常規(guī)卷積層.二者的感受野同樣是7,但是前者計(jì)算量小,且會(huì)帶來更多的非線性.
在池化時(shí),將存儲(chǔ)最大特征值的位置作為索引,解碼器使用該索引對(duì)特征圖進(jìn)行上采樣操作來恢復(fù)圖像維度,這種技術(shù)最先被SegNet[22]引入,稱為最大池化層索引.與之相對(duì)應(yīng)的是,DeconvNet[21]采用反卷積層(deconvolution layers)進(jìn)行上采樣,實(shí)質(zhì)是轉(zhuǎn)置卷積操作,功能與常規(guī)卷積相反.
包括tensorflow 等多個(gè)機(jī)器學(xué)習(xí)框架里都沒有實(shí)現(xiàn)最大池化層索引算法,只能手動(dòng)編碼,通過CPU 計(jì)算來完成任務(wù),其他步驟仍可由GPU 實(shí)現(xiàn)加速,這會(huì)影響此時(shí)的訓(xùn)練速度.此外,與直接通過索引來恢復(fù)圖像維度相比,雖然轉(zhuǎn)置卷積的計(jì)算量較大,但其卷積核還具備學(xué)習(xí)能力.在實(shí)驗(yàn)中,采用相同架構(gòu)的網(wǎng)絡(luò)模型分別同時(shí)應(yīng)用這兩種上采樣操作,并比較分割效果和計(jì)算速度.
殘差神經(jīng)網(wǎng)絡(luò)(ResNet)[26]就是采用了經(jīng)典的跳層連接(skip-connection)方法把上一層直接與卷積后的特征圖對(duì)齊再相加,這樣在每層特征圖中添加了上一層的特征信息,可使網(wǎng)絡(luò)更深,解決了增加深度帶來的退化問題,即網(wǎng)絡(luò)層數(shù)雖然增加,但是訓(xùn)練集上的準(zhǔn)確率卻飽和甚至下降了.跳層連接只是簡(jiǎn)單執(zhí)行了相加運(yùn)算,不會(huì)增加計(jì)算復(fù)雜度,也不會(huì)產(chǎn)生額外的訓(xùn)練參數(shù),而且整個(gè)網(wǎng)絡(luò)依舊可以通過端到端的反向傳播訓(xùn)練,加快了反饋與收斂.
ImageNet 上的實(shí)驗(yàn)證明了彩色圖像中ResNet 是一種通用的改進(jìn)物體識(shí)別效果的方法.本實(shí)驗(yàn)在SegNet 網(wǎng)絡(luò)架構(gòu)所對(duì)應(yīng)的編-解碼層中直接加入類似ResNet 這種直接相加的跳層連接,測(cè)試其應(yīng)用于深度圖像分割時(shí)是否具有同樣的優(yōu)化效果.相加后的結(jié)果應(yīng)乘以以保持相加前后的均值相同.從圖2 改進(jìn)的網(wǎng)絡(luò)架構(gòu)上可以看到有4 次融合過程,相對(duì)應(yīng)的FCNN 網(wǎng)絡(luò)只在最后一層進(jìn)行融合.
圖2 編-解碼層間加入跳層連接示意圖Fig.2 Illustration of skip-connections between encoder and decoder
ResNet 所代表的直接跳層連接把網(wǎng)絡(luò)變“深”,在圖像的像素級(jí)分割領(lǐng)域,相比傳統(tǒng)的跳層連接采用對(duì)應(yīng)點(diǎn)相加的方式,U-net[27]采用了拼接(concatenate)這種完全不同的特征融合方式,在多個(gè)通道維度把特征拼接合并成一個(gè)更大的向量,從而形成更“厚”的特征.由于增厚了特征,相較直接相加,拼接合并會(huì)增加少許計(jì)算量.U-net 網(wǎng)絡(luò)結(jié)構(gòu)在靠近輸入的較淺層提取較小尺度上的信息(即簡(jiǎn)單特征),靠近輸出的較深層提取較大尺度上的信息(即復(fù)雜特征),通過直接把原始信息不進(jìn)行任何操作與后續(xù)結(jié)果合并拼接的方式可以整合多尺度的信息.在本實(shí)驗(yàn)中,在對(duì)應(yīng)的編-解碼層間分別加入了特征直接相加和拼接合并兩種模式的跳層連接用于特征融合,并比較了深度圖像的手部分割效果.
圖3 為改進(jìn)方法的模型架構(gòu),有以下幾個(gè)創(chuàng)新特點(diǎn):①類別權(quán)重采用1∶10∶10,有效提升了對(duì)左右手這樣小物體的識(shí)別率;②空洞卷積采用r=1,2 的混合式空洞卷積組合,有效減輕了“網(wǎng)格效應(yīng)”,且計(jì)算量小,分割效果好;③由于最大池化層索引恢復(fù)圖像維度后分割效果略差,因此把SegNet 中上采樣采用的最大池化索引替換為DeconvNet 中采用的轉(zhuǎn)置卷積;④跳層連接可以使編碼層的特征直接傳遞到解碼層,使得網(wǎng)絡(luò)定位像素更加準(zhǔn)確,分割精度更高,差別在于采用特征直接相加還是特征拼接,后者形成更“厚”的特征,在增加少許計(jì)算量的同時(shí),分割效果也略好于特征直接相加的模式,因此跳層連接采用拼接合并的方法.
圖3 改進(jìn)后的手部分割網(wǎng)絡(luò)架構(gòu)Fig.3 Improved framework of hand segmentation network
表1 列出了常見手部深度圖像數(shù)據(jù)集,其中大部分只包含了單手信息,而本工作中的網(wǎng)絡(luò)模型具有同時(shí)分割左右手的能力,因此實(shí)驗(yàn)數(shù)據(jù)集應(yīng)同時(shí)包含左右手.
表1 常用的手部深度圖像數(shù)據(jù)集Table 1 Widely used hand datasets of depth images
HandSeg 數(shù)據(jù)集共有158 315 張深度圖像,同時(shí)每張深度圖像對(duì)應(yīng)掩膜(mask)文件,里面保存了每個(gè)深度像素對(duì)應(yīng)位置的左右手標(biāo)簽信息,完全符合實(shí)驗(yàn)測(cè)試需求.但是目前GPU 普遍內(nèi)存不超過8 GB,640×480 的深度圖直接輸入分割網(wǎng)絡(luò)會(huì)因架構(gòu)太大造成網(wǎng)絡(luò)參數(shù)過多,超過硬件的限制,因此對(duì)數(shù)據(jù)集首先下采樣到320×240.其次,158 315 張深度圖像被隨機(jī)分配到訓(xùn)練集、驗(yàn)證集和測(cè)試集,分別為150 000,8 000,315 張手部深度圖像.
在實(shí)驗(yàn)過程中,統(tǒng)一使用HandSeg 數(shù)據(jù)集對(duì)多種改進(jìn)的分割網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,其他超參數(shù)盡量保持一致,比如采用相同初始學(xué)習(xí)率、相同的訓(xùn)練迭代周期,以使對(duì)比結(jié)果具備可比較性.
手部分割其實(shí)是深度像素的分類問題,在推理階段每個(gè)像素都會(huì)被分類為背景、左手或右手,準(zhǔn)確率(precision)和召回率(recall)都是評(píng)估分類準(zhǔn)確度的重要指標(biāo).為了統(tǒng)一這兩種評(píng)估指標(biāo),分類方法還經(jīng)常用F-Score 評(píng)判標(biāo)準(zhǔn)來評(píng)估模型好壞,計(jì)算公式為
不同的應(yīng)用場(chǎng)景對(duì)于準(zhǔn)確率和召回率的重視程度也不一致,可以分別賦予不同的權(quán)重,通過式(2)中β 值來調(diào)節(jié).本工作引入幾種常見的F1-Score,F2-Score 和F0.5-Score 評(píng)價(jià)標(biāo)準(zhǔn),β 分別為1,2,0.5,其中F1-Score 是指準(zhǔn)確率和召回率一樣重要,F2-Score 是指召回率比準(zhǔn)確率重要一倍,F0.5-Score 是指準(zhǔn)確率比召回率重要一倍.
在本實(shí)驗(yàn)的測(cè)試場(chǎng)景中,左手準(zhǔn)確率是指所有分類為左手的像素中有多少真實(shí)是左手,而左手召回率是指所有真實(shí)是左手的像素中有多少被正確分類出來.如果分類器預(yù)測(cè)為左手的像素較少,那么準(zhǔn)確率自然較高,但這樣的分類結(jié)果可能丟失很多真實(shí)的左手像素,造成分割結(jié)果不完整.而左手召回率高說明分類器分割的左手圖像完整度很高,但可能把部分背景像素也錯(cuò)誤分類為左手.這兩種錯(cuò)誤對(duì)后續(xù)手勢(shì)識(shí)別算法的影響是不同的,少量錯(cuò)誤的背景像素會(huì)被丟棄,而不完整的手部分割圖像會(huì)嚴(yán)重影響后續(xù)的手勢(shì)識(shí)別效果.因此,在本實(shí)驗(yàn)場(chǎng)景中召回率比準(zhǔn)確率更加重要,測(cè)試結(jié)果更適合使用F2-Score作為綜合評(píng)判標(biāo)準(zhǔn).
為了盡量縮短訓(xùn)練時(shí)間,本工作應(yīng)用了基于GPU 的計(jì)算設(shè)備,硬件使用常用的4 核CPU和單塊NVidia RTX 2070 GPU,軟件環(huán)境應(yīng)用CUDA 版的tensorflow.實(shí)驗(yàn)采用學(xué)習(xí)率衰減策略,隨著訓(xùn)練周期的增加和樣本的不斷迭代來逐漸降低學(xué)習(xí)率,初始學(xué)習(xí)率設(shè)定為0.000 2,對(duì)訓(xùn)練集經(jīng)過60 個(gè)迭代周期完成模型的訓(xùn)練.
應(yīng)用上述各種改進(jìn)策略可組合出很多種網(wǎng)絡(luò)模型架構(gòu),這里選取一部分具有代表性的架構(gòu)參數(shù)和性能列在表2 中.
改進(jìn)方法的目標(biāo)是對(duì)手部進(jìn)行分割,而背景分類結(jié)果的重要性較低,因此不作單獨(dú)統(tǒng)計(jì).表2 中正確占比表示深度圖像上所有分類正確的像素/像素總數(shù)(每張圖像320×240),包含了背景分類的結(jié)果,但只具有參考性,這是由于深度圖像中背景占比較大,而重要性較低,把背景和左右手合并在一起統(tǒng)計(jì),無法清晰明確地比較采用各種模型進(jìn)行手部圖像分割的實(shí)際效果.
表2 手部分割網(wǎng)絡(luò)架構(gòu)主要參數(shù)和性能Table 2 Performance and main features of hand segmentation network
為了更方便地評(píng)估模型性能,忽略背景,只統(tǒng)計(jì)左右手的分類結(jié)果,包括左手的召回率、左手的準(zhǔn)確率、右手的召回率、右手的準(zhǔn)確率,以及根據(jù)F2-Score 計(jì)算出左右手綜合評(píng)價(jià)指標(biāo)(見圖4).
以F2-Score 為評(píng)估標(biāo)準(zhǔn),由圖4 可得以下結(jié)論.
圖4 左右手召回率、準(zhǔn)確率和F2-ScoreFig.4 Recall,precision and F2-Score of the left and right hand
(1) 雙層卷積比單層卷積效果提升3%~8%;
(2) Relu 和LeakyRelu 效果基本一致;
(3) 下采樣采用最大池化層與步長(zhǎng)為2 的卷積效果基本一致;
(4) 上采樣采用轉(zhuǎn)置卷積略好于最大池化層索引;
(5) 采用跳層連接后效果提升4%~5%,而且采用拼接合并比直接相加略高1%~2%;
(6) 采用類別權(quán)重后效果提升3%~4%,當(dāng)權(quán)重為1∶10∶10 時(shí),準(zhǔn)確率和召回率都最高;
(7) 采用r=1 和2 的空洞卷積組合不僅能提升2%~3%的分割效果,還能大幅縮減訓(xùn)練參數(shù),在其他條件一致的情況下加快訓(xùn)練和推理速度.
實(shí)驗(yàn)結(jié)果顯示,改進(jìn)方法與基于雙層卷積的SegNet 基本模型相比,左手召回率從84.5%提高到92.7%,準(zhǔn)確率從83.1%提高到88.4%;右手召回率從90.8%提高到95.3%,準(zhǔn)確率從79.7%提高到89.9%;左手F2-Score 從84.2%提高到91.8%,右手F2-Score 從88.3%提高到94.2%,分別提高了7.6%和5.9%.可見改進(jìn)方法使得深度圖像的手部分割效果得到了較大幅度的提升.由于計(jì)算量有所增加,改進(jìn)后的模型在沒有使用空洞卷積的情況下,GPU 推理速度下降到23.8 ms/幀,但使用空洞卷積后達(dá)到20.5 ms/幀,甚至相較基準(zhǔn)模型略有提高,完全能夠?qū)崟r(shí)處理25 幀/s 的動(dòng)態(tài)深度圖像序列.
圖5 展示了基準(zhǔn)模型和本工作改進(jìn)模型的分割結(jié)果,可以看出在幾乎所有的案例中,改進(jìn)模型的分割精度更高.第1,2 行是基本的單、雙手情況下的分割結(jié)果;第3,4 行為雙手重疊、相連的情況,改進(jìn)方法可以正確分類指尖重疊縫隙中的像素;第5 行由于訓(xùn)練數(shù)據(jù)是自動(dòng)標(biāo)注,出現(xiàn)像素錯(cuò)誤標(biāo)注,但算法的分類結(jié)果仍是正確的;第6 行由于雙手緊貼身體造成小部分緊貼的像素出現(xiàn)分類錯(cuò)誤;第7,8 行雙手緊握,這也是手部分割中最富挑戰(zhàn)性的情況,改進(jìn)方法比以往的分割結(jié)果更加接近準(zhǔn)確分類.
本工作特意從實(shí)驗(yàn)結(jié)果中挑選出幾種左右手重疊時(shí)的分割案例(見圖5),從第6~8 行可以看出算法具備相應(yīng)的分割能力,但受限于數(shù)據(jù)集中只有很少一部分深度圖像是這種情況,分割結(jié)果有時(shí)會(huì)出現(xiàn)少許錯(cuò)誤.如果有大量重疊左右手的訓(xùn)練數(shù)據(jù)對(duì)網(wǎng)絡(luò)模型有針對(duì)性地進(jìn)行訓(xùn)練,改進(jìn)后的算法能夠更加準(zhǔn)確地對(duì)左右手分別進(jìn)行分割.
圖5 手部分割結(jié)果舉例Fig.5 Examples of hand segmentation results
本工作提出了一種基于深度圖像的左右手同步分割改進(jìn)方法,在基準(zhǔn)SegNet方法的基礎(chǔ)上,加入了類別權(quán)重、混合式空洞卷積組合、轉(zhuǎn)置卷積和拼接合并跳層連接.本方法使左右手的F2-Score 相較基準(zhǔn)方法分別提高了7.6%和5.9%,推理速度在GPU 上達(dá)到了20.5 ms/幀,可以實(shí)時(shí)處理深度圖像序列,取得了更加精準(zhǔn)的手部分割結(jié)果.