包梓群
(浙江理工大學(xué) 信息學(xué)院,杭州 310018)
仰臥起坐是國(guó)內(nèi)各個(gè)階段學(xué)生體育測(cè)試中的一項(xiàng)重要運(yùn)動(dòng)。在日常測(cè)試過(guò)程中,需要人工對(duì)其動(dòng)作是否規(guī)范進(jìn)行評(píng)判并計(jì)數(shù)。隨著深度學(xué)習(xí)中目標(biāo)檢測(cè)技術(shù)被廣泛應(yīng)用于生產(chǎn)生活中,同時(shí)也為機(jī)器檢測(cè)的實(shí)現(xiàn)提供了技術(shù)基礎(chǔ)。目標(biāo)檢測(cè)為當(dāng)今計(jì)算機(jī)視覺(jué)的熱門(mén)研究方向。其主要工作就是預(yù)測(cè)目標(biāo)在視頻或者圖片中的具體位置,現(xiàn)已在安防、自動(dòng)駕駛、行為分析等應(yīng)用領(lǐng)域起著至關(guān)重要的作用。
目標(biāo)檢測(cè),旨在從數(shù)字圖像中檢測(cè)出特定類別的實(shí)例,這是計(jì)算機(jī)視覺(jué)中一項(xiàng)基本且具有挑戰(zhàn)性的任務(wù)。但近年來(lái),隨著卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)不斷發(fā)展與演進(jìn),使得目標(biāo)檢測(cè)算法越來(lái)越成熟。采用CNN 的目標(biāo)檢測(cè)算法因其在特征提取上具有良好的泛化性,逐漸取代了基于人工特征的目標(biāo)檢測(cè)算法?;贑NN 的目標(biāo)檢測(cè)算法在不同的場(chǎng)景中產(chǎn)生多種類型:
(1)基于區(qū)域候選目標(biāo)檢測(cè)算法,如Faster-RCNN。
(2)基于端到端回歸的算法模型,如YOLO、RetinaNet。
2 種模型的特點(diǎn)較為明顯:基于區(qū)域候選的模型可以得到較好的檢測(cè)準(zhǔn)確率,但檢測(cè)速度較慢;基于回歸的模型目標(biāo)檢測(cè)速度快,但準(zhǔn)確率較低。為了使模型能在實(shí)時(shí)檢測(cè)的同時(shí)又不有損精度,本文提出了一種改進(jìn)的RetinaNet 網(wǎng)絡(luò)目標(biāo)檢測(cè)算法。
RetinaNet 網(wǎng)絡(luò)模型主要由主干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)、分類子網(wǎng)絡(luò)和回歸自網(wǎng)絡(luò)組成。其中,主干網(wǎng)絡(luò)即為卷積池化層的堆疊網(wǎng)絡(luò),一般為ResNet網(wǎng)絡(luò)和VGG網(wǎng)絡(luò);頸部網(wǎng)絡(luò)則用于特征的堆疊和融合,一般使用特征金字塔網(wǎng)絡(luò)(Feature Pyramid Network,F(xiàn)PN)。FPN 將多尺度特征加以融合,使得最后的預(yù)測(cè)結(jié)果包含各幀圖片內(nèi)各個(gè)尺度的信息,模型的性能也得以提升;分類子網(wǎng)絡(luò)利用全卷積層對(duì)頸部網(wǎng)絡(luò)的輸出進(jìn)行處理,再對(duì)圖像中的目標(biāo)對(duì)象去做類別預(yù)測(cè);回歸子網(wǎng)絡(luò)利用全卷積層對(duì)頸部網(wǎng)絡(luò)的輸出進(jìn)行處理,并對(duì)圖像中的目標(biāo)對(duì)象實(shí)現(xiàn)定位。RetinaNet 網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1 所示。
圖1 一般RetinaNet 網(wǎng)絡(luò)模型圖Fig.1 General RetinaNet network model diagram
針對(duì)原始網(wǎng)絡(luò)對(duì)于視頻中目標(biāo)檢測(cè)精度不高的問(wèn)題,采用2 個(gè)RetinaNet 網(wǎng)絡(luò)模型級(jí)聯(lián),即將第一個(gè)RetinaNet 網(wǎng)絡(luò)的輸出作為第二個(gè)RetinaNet 網(wǎng)絡(luò)的輸入,用來(lái)對(duì)待檢測(cè)圖像進(jìn)行目標(biāo)檢測(cè),增加模型的泛化能力。但是網(wǎng)絡(luò)模型的級(jí)聯(lián)會(huì)增加資源消耗和參數(shù)數(shù)量。為了解決此問(wèn)題,引入深度可分離卷積(Depth Separable Convolution,DSC)取代原始的卷積模塊,以降低網(wǎng)絡(luò)級(jí)聯(lián)帶來(lái)的資源消耗和計(jì)算量。使用深度卷積模塊,雖然簡(jiǎn)化了模型的骨干網(wǎng)絡(luò),但會(huì)弱化模型的特征提取能力,導(dǎo)致模型精度下降。為此,提出了一種新的函數(shù),用來(lái)計(jì)算定位框的損失,彌補(bǔ)丟失的精度。
深度可分離卷積(Depth Separable Convolution,DSC)是把常規(guī)卷積分為深度卷積(Depthwise Convolution,DW)和點(diǎn)卷積(Pointwise Convolution,PW)兩個(gè)階段。其中,DW 階段實(shí)質(zhì)上起到一個(gè)濾波的作用,通過(guò)使用和輸入圖像通道數(shù)相同的卷積核,提取每一個(gè)單獨(dú)通道的特征信息。PW 階段可以看作是對(duì)DW 階段的輸出進(jìn)行組合的過(guò)程,使用一個(gè)11 × C ×C(這里,C為輸入通道數(shù),C為輸出通道數(shù))的卷積核對(duì)DW 的輸出進(jìn)行整合,其結(jié)構(gòu)如圖2 所示。
圖2 深度可分離卷積Fig.2 Depth Separable Convolution
深度可分離卷積的計(jì)算量和參數(shù)量都比一般卷積要小,可以極大地增加模型檢測(cè)的速度,滿足仰臥起坐實(shí)時(shí)檢測(cè)的需求。但因其簡(jiǎn)化了特征提取模塊,因此就需要改進(jìn)預(yù)測(cè)回歸的損失函數(shù),來(lái)彌補(bǔ)準(zhǔn)確率的丟失。
在目標(biāo)檢測(cè)中,常常利用預(yù)測(cè)框(Prediction Box,)與真實(shí)框(Ground Truth,)之間的交并比(Intersection over Union,)作為衡量?jī)烧咧g關(guān)系的重要度量,的計(jì)算公式如下:
相對(duì)于其它預(yù)測(cè)回歸的損失函數(shù),具有更好的效果,但也存在一定的局限性。研究給出了幾種預(yù)測(cè)框與真實(shí)框間的關(guān)系如圖3 所示。由圖3(b)、圖3(c)可知,當(dāng)預(yù)測(cè)框與真實(shí)框沒(méi)有重疊時(shí),2 種情況的損失值相同,但圖3(b)的效果略好于圖3(c)。另一方面,當(dāng)損失函數(shù)的值為0 時(shí),在反向傳播中其梯度為0,無(wú)法對(duì)網(wǎng)絡(luò)進(jìn)行優(yōu)化。當(dāng)初始值選擇不佳時(shí),會(huì)使訓(xùn)練出來(lái)的模型擬合效果極差。
圖3 幾種預(yù)測(cè)框與真實(shí)框之間的關(guān)系Fig.3 Relationship between several prediction frames and real frames
為了解決上述問(wèn)題,對(duì)回歸損失函數(shù)進(jìn)一步優(yōu)化。對(duì)此可表示為:
其中,表示真實(shí)框與預(yù)測(cè)框之間的偏差。
將其求導(dǎo)得到:
從式(4)中可以看出,Smooth在較小時(shí),對(duì)的梯度也較?。划?dāng)變大時(shí),也只能在1 之內(nèi),限制了梯度跌漲自由,不會(huì)破壞網(wǎng)絡(luò)參數(shù),解決了當(dāng)值比較大時(shí)導(dǎo)致訓(xùn)練損失值出現(xiàn)明顯變化而引起的訓(xùn)練不穩(wěn)定問(wèn)題。
比較F和函數(shù),引入正則項(xiàng),改變了I的正負(fù)號(hào),使得其與正則項(xiàng)有一樣的梯度朝向。構(gòu)建預(yù)測(cè)回歸的損失函數(shù)L公式如下:
由式(5)可知,若出現(xiàn)被測(cè)試人員半臥起、臥起姿態(tài)的特殊情況時(shí),雖然2 種情況具有相同的IoU值,即與公式(5)中的F值相同。但得益于Smooth正則項(xiàng),邊框損失函數(shù)L的梯度仍然可以得到反向傳播。實(shí)驗(yàn)測(cè)得3 時(shí),在仰臥起坐測(cè)試上有著較好的效果。
人體姿態(tài)估計(jì)、即關(guān)鍵點(diǎn)檢測(cè),目的是檢測(cè)人體身上個(gè)關(guān)鍵點(diǎn)的位置(頭部、手肘、膝蓋等),抽象出人體的當(dāng)前行為。目前,最先進(jìn)的方法是把該問(wèn)題轉(zhuǎn)變?yōu)楣烙?jì)熱圖。需要一提的是,每個(gè)熱圖的值,表示第個(gè)關(guān)鍵點(diǎn)的位置置信度。
在網(wǎng)絡(luò)設(shè)計(jì)方面,當(dāng)前大多數(shù)方法都是將高分辨率到低分辨率的子網(wǎng)絡(luò)串聯(lián)起來(lái),且每個(gè)子網(wǎng)絡(luò)形成一個(gè)階段,相鄰子網(wǎng)絡(luò)之間存在一個(gè)下采樣層,將分辨率縮小一半。本文采用HRNet 并行地連接高到低的子網(wǎng),保持了高分辨率的表示,生成了整個(gè)過(guò)程的空間精確熱圖估計(jì)。通過(guò)重復(fù)融合高到低子網(wǎng)產(chǎn)生的高分辨率,生成可靠的高分辨率表示。
本文將HRNet 引入到模型中,測(cè)試時(shí)被測(cè)試人員各個(gè)姿態(tài)的關(guān)鍵點(diǎn)效果如圖4 所示。
具體地,圖4(a)表示被測(cè)試人員平躺姿態(tài)的骨架圖;圖4(b)表示被測(cè)試人員半臥起姿態(tài)的骨架圖;圖4(c)表示被測(cè)試人員臥起姿態(tài)的骨架圖。
圖4 被測(cè)試人員各個(gè)姿態(tài)的關(guān)鍵點(diǎn)提取Fig.4 Key points extraction of each pose of the tested target
實(shí)驗(yàn)所用的計(jì)算機(jī)系統(tǒng)配置:CPU 為Intel(R)Xeon(R)Silver 4110 CPU @ 2.10 GHz;GPU 為24 G RTX3090 顯卡;主頻為4.00 GHZ;系統(tǒng)為CentOS 7.7。采用Python3.6 語(yǔ)言編寫(xiě)實(shí)驗(yàn)代碼,深度學(xué)習(xí)框架選取Pytorch1.4.0。
由于將網(wǎng)絡(luò)用于仰臥起坐的實(shí)時(shí)檢測(cè)具有一定的特殊性,無(wú)法使用召回率、等常用指標(biāo)來(lái)進(jìn)行評(píng)價(jià)。因此,本文設(shè)計(jì)了一些合理的評(píng)價(jià)指標(biāo),用于實(shí)驗(yàn)檢測(cè),對(duì)此擬做闡釋分述如下。
(1)平均測(cè)得仰臥起坐數(shù)量可由如下公式計(jì)算求出:
(2)平均實(shí)際仰臥起坐數(shù)量??捎扇缦鹿接?jì)算求出:
(3)平均反應(yīng)時(shí)間??捎扇缦鹿接?jì)算求出:
(4)平均測(cè)試準(zhǔn)確率。可由如下公式計(jì)算求出:
為了驗(yàn)證本文提出的改進(jìn)目標(biāo)檢測(cè)網(wǎng)絡(luò)相對(duì)于原始效果有所提升,使用4.1 節(jié)中采集的數(shù)據(jù)集展開(kāi)對(duì)比試驗(yàn),并使用上述指標(biāo)進(jìn)行評(píng)價(jià)。實(shí)驗(yàn)結(jié)果見(jiàn)表1。為了得出式(5)中最好的超參數(shù),在[0,10]的區(qū)間內(nèi),設(shè)置步長(zhǎng)為1 進(jìn)行調(diào)參。實(shí)驗(yàn)結(jié)果如圖5 所示。
表1 改進(jìn)前后網(wǎng)絡(luò)各個(gè)指標(biāo)具體數(shù)值表Tab.1 Specific values of network indicators before and after improvement
圖5 獲取最佳超參數(shù)λ 的實(shí)驗(yàn)結(jié)果圖Fig.5 Experimental results of getting the best super parameters λ
由圖5、表1 可以看出,改進(jìn)后的網(wǎng)絡(luò)相對(duì)于原網(wǎng)絡(luò)在速度和精度上有了質(zhì)的飛躍。模型反應(yīng)時(shí)間由原來(lái)的1 570 ms 降低到了50 ms,達(dá)到了實(shí)時(shí)檢測(cè)的效果。得益于速度的增長(zhǎng)和損失函數(shù)的改進(jìn),模型的準(zhǔn)確率提高了0.498。以上結(jié)論驗(yàn)證了改進(jìn)網(wǎng)絡(luò)的有效性。
本文提出了一種改進(jìn)的RetinaNet 網(wǎng)絡(luò)目標(biāo)檢測(cè)算法。為了提高檢測(cè)效果,將2 個(gè)RetinaNet 網(wǎng)絡(luò)級(jí)聯(lián),采用深度可分離卷積代替了原網(wǎng)絡(luò)中的骨干模塊,以減小級(jí)聯(lián)網(wǎng)絡(luò)帶來(lái)的額外計(jì)算量;而后對(duì)邊框損失函數(shù)加以改進(jìn),引入了Smooth正則項(xiàng),在給出了重合度信息的基礎(chǔ)上,Smooth又提供了預(yù)測(cè)框與真實(shí)框的位置信息,使得網(wǎng)絡(luò)效果得到提升,并且訓(xùn)練也更加穩(wěn)定。由實(shí)驗(yàn)結(jié)果可知,改進(jìn)后的網(wǎng)絡(luò)針對(duì)仰臥起坐測(cè)試計(jì)數(shù)具有良好的效果,滿足正確檢測(cè)的實(shí)時(shí)要求。