包梓群
(浙江理工大學 信息學院,杭州 310018)
仰臥起坐是國內各個階段學生體育測試中的一項重要運動。在日常測試過程中,需要人工對其動作是否規范進行評判并計數。隨著深度學習中目標檢測技術被廣泛應用于生產生活中,同時也為機器檢測的實現提供了技術基礎。目標檢測為當今計算機視覺的熱門研究方向。其主要工作就是預測目標在視頻或者圖片中的具體位置,現已在安防、自動駕駛、行為分析等應用領域起著至關重要的作用。
目標檢測,旨在從數字圖像中檢測出特定類別的實例,這是計算機視覺中一項基本且具有挑戰性的任務。但近年來,隨著卷積神經網絡(Convolutional Neural Network,CNN)不斷發展與演進,使得目標檢測算法越來越成熟。采用CNN 的目標檢測算法因其在特征提取上具有良好的泛化性,逐漸取代了基于人工特征的目標檢測算法?;贑NN 的目標檢測算法在不同的場景中產生多種類型:
(1)基于區域候選目標檢測算法,如Faster-RCNN。
(2)基于端到端回歸的算法模型,如YOLO、RetinaNet。
2 種模型的特點較為明顯:基于區域候選的模型可以得到較好的檢測準確率,但檢測速度較慢;基于回歸的模型目標檢測速度快,但準確率較低。為了使模型能在實時檢測的同時又不有損精度,本文提出了一種改進的RetinaNet 網絡目標檢測算法。
RetinaNet 網絡模型主要由主干網絡、頸部網絡、分類子網絡和回歸自網絡組成。其中,主干網絡即為卷積池化層的堆疊網絡,一般為ResNet網絡和VGG網絡;頸部網絡則用于特征的堆疊和融合,一般使用特征金字塔網絡(Feature Pyramid Network,FPN)。FPN 將多尺度特征加以融合,使得最后的預測結果包含各幀圖片內各個尺度的信息,模型的性能也得以提升;分類子網絡利用全卷積層對頸部網絡的輸出進行處理,再對圖像中的目標對象去做類別預測;回歸子網絡利用全卷積層對頸部網絡的輸出進行處理,并對圖像中的目標對象實現定位。RetinaNet 網絡模型結構如圖1 所示。

圖1 一般RetinaNet 網絡模型圖Fig.1 General RetinaNet network model diagram
針對原始網絡對于視頻中目標檢測精度不高的問題,采用2 個RetinaNet 網絡模型級聯,即將第一個RetinaNet 網絡的輸出作為第二個RetinaNet 網絡的輸入,用來對待檢測圖像進行目標檢測,增加模型的泛化能力。但是網絡模型的級聯會增加資源消耗和參數數量。為了解決此問題,引入深度可分離卷積(Depth Separable Convolution,DSC)取代原始的卷積模塊,以降低網絡級聯帶來的資源消耗和計算量。使用深度卷積模塊,雖然簡化了模型的骨干網絡,但會弱化模型的特征提取能力,導致模型精度下降。為此,提出了一種新的函數,用來計算定位框的損失,彌補丟失的精度。
深度可分離卷積(Depth Separable Convolution,DSC)是把常規卷積分為深度卷積(Depthwise Convolution,DW)和點卷積(Pointwise Convolution,PW)兩個階段。其中,DW 階段實質上起到一個濾波的作用,通過使用和輸入圖像通道數相同的卷積核,提取每一個單獨通道的特征信息。PW 階段可以看作是對DW 階段的輸出進行組合的過程,使用一個11 × C ×C(這里,C為輸入通道數,C為輸出通道數)的卷積核對DW 的輸出進行整合,其結構如圖2 所示。

圖2 深度可分離卷積Fig.2 Depth Separable Convolution
深度可分離卷積的計算量和參數量都比一般卷積要小,可以極大地增加模型檢測的速度,滿足仰臥起坐實時檢測的需求。但因其簡化了特征提取模塊,因此就需要改進預測回歸的損失函數,來彌補準確率的丟失。
在目標檢測中,常常利用預測框(Prediction Box,)與真實框(Ground Truth,)之間的交并比(Intersection over Union,)作為衡量兩者之間關系的重要度量,的計算公式如下:

相對于其它預測回歸的損失函數,具有更好的效果,但也存在一定的局限性。研究給出了幾種預測框與真實框間的關系如圖3 所示。由圖3(b)、圖3(c)可知,當預測框與真實框沒有重疊時,2 種情況的損失值相同,但圖3(b)的效果略好于圖3(c)。另一方面,當損失函數的值為0 時,在反向傳播中其梯度為0,無法對網絡進行優化。當初始值選擇不佳時,會使訓練出來的模型擬合效果極差。

圖3 幾種預測框與真實框之間的關系Fig.3 Relationship between several prediction frames and real frames
為了解決上述問題,對回歸損失函數進一步優化。對此可表示為:



其中,表示真實框與預測框之間的偏差。
將其求導得到:

從式(4)中可以看出,Smooth在較小時,對的梯度也較??;當變大時,也只能在1 之內,限制了梯度跌漲自由,不會破壞網絡參數,解決了當值比較大時導致訓練損失值出現明顯變化而引起的訓練不穩定問題。
比較F和函數,引入正則項,改變了I的正負號,使得其與正則項有一樣的梯度朝向。構建預測回歸的損失函數L公式如下:


由式(5)可知,若出現被測試人員半臥起、臥起姿態的特殊情況時,雖然2 種情況具有相同的IoU值,即與公式(5)中的F值相同。但得益于Smooth正則項,邊框損失函數L的梯度仍然可以得到反向傳播。實驗測得3 時,在仰臥起坐測試上有著較好的效果。
人體姿態估計、即關鍵點檢測,目的是檢測人體身上個關鍵點的位置(頭部、手肘、膝蓋等),抽象出人體的當前行為。目前,最先進的方法是把該問題轉變為估計熱圖。需要一提的是,每個熱圖的值,表示第個關鍵點的位置置信度。
在網絡設計方面,當前大多數方法都是將高分辨率到低分辨率的子網絡串聯起來,且每個子網絡形成一個階段,相鄰子網絡之間存在一個下采樣層,將分辨率縮小一半。本文采用HRNet 并行地連接高到低的子網,保持了高分辨率的表示,生成了整個過程的空間精確熱圖估計。通過重復融合高到低子網產生的高分辨率,生成可靠的高分辨率表示。
本文將HRNet 引入到模型中,測試時被測試人員各個姿態的關鍵點效果如圖4 所示。
具體地,圖4(a)表示被測試人員平躺姿態的骨架圖;圖4(b)表示被測試人員半臥起姿態的骨架圖;圖4(c)表示被測試人員臥起姿態的骨架圖。

圖4 被測試人員各個姿態的關鍵點提取Fig.4 Key points extraction of each pose of the tested target
實驗所用的計算機系統配置:CPU 為Intel(R)Xeon(R)Silver 4110 CPU @ 2.10 GHz;GPU 為24 G RTX3090 顯卡;主頻為4.00 GHZ;系統為CentOS 7.7。采用Python3.6 語言編寫實驗代碼,深度學習框架選取Pytorch1.4.0。
由于將網絡用于仰臥起坐的實時檢測具有一定的特殊性,無法使用召回率、等常用指標來進行評價。因此,本文設計了一些合理的評價指標,用于實驗檢測,對此擬做闡釋分述如下。

(1)平均測得仰臥起坐數量可由如下公式計算求出:

(2)平均實際仰臥起坐數量??捎扇缦鹿接嬎闱蟪觯?/p>

(3)平均反應時間。可由如下公式計算求出:

(4)平均測試準確率??捎扇缦鹿接嬎闱蟪觯?/p>

為了驗證本文提出的改進目標檢測網絡相對于原始效果有所提升,使用4.1 節中采集的數據集展開對比試驗,并使用上述指標進行評價。實驗結果見表1。為了得出式(5)中最好的超參數,在[0,10]的區間內,設置步長為1 進行調參。實驗結果如圖5 所示。

表1 改進前后網絡各個指標具體數值表Tab.1 Specific values of network indicators before and after improvement

圖5 獲取最佳超參數λ 的實驗結果圖Fig.5 Experimental results of getting the best super parameters λ
由圖5、表1 可以看出,改進后的網絡相對于原網絡在速度和精度上有了質的飛躍。模型反應時間由原來的1 570 ms 降低到了50 ms,達到了實時檢測的效果。得益于速度的增長和損失函數的改進,模型的準確率提高了0.498。以上結論驗證了改進網絡的有效性。
本文提出了一種改進的RetinaNet 網絡目標檢測算法。為了提高檢測效果,將2 個RetinaNet 網絡級聯,采用深度可分離卷積代替了原網絡中的骨干模塊,以減小級聯網絡帶來的額外計算量;而后對邊框損失函數加以改進,引入了Smooth正則項,在給出了重合度信息的基礎上,Smooth又提供了預測框與真實框的位置信息,使得網絡效果得到提升,并且訓練也更加穩定。由實驗結果可知,改進后的網絡針對仰臥起坐測試計數具有良好的效果,滿足正確檢測的實時要求。