毛遠宏,賀占莊,劉露露
(西安微電子技術研究所,710065,西安)
目前,基于深度學習的方法在目標跟蹤領域得到了越來越多的應用,取得了很好的效果。但是,深度學習通常存在著參數(shù)過多和計算量過大的問題。目標跟蹤任務在保證精度的前提下,通常也需要考慮到實時性要求。因此,如何讓目標跟蹤任務的深度模型在存儲和計算資源有限的設備更快地運行,是一個迫切需要解決的問題。
目標跟蹤中的神經(jīng)網(wǎng)絡模型主要是通過卷積網(wǎng)絡來提取相應的特征。絕大部分的計算量和參數(shù)主要集中在卷積層。因此,如何減少卷積層的計算,是加快跟蹤速度的重點。除了提高硬件的計算能力之外,還可以通過優(yōu)化網(wǎng)絡模型,減少跟蹤網(wǎng)絡的參數(shù)量和計算量,加快跟蹤速度。
如何對于神經(jīng)網(wǎng)絡進行加速是目前業(yè)界研究的熱點。在卷積層的加速上,采用更加輕量化的卷積結構替換傳統(tǒng)的卷積結構是通常采用的辦法。例如:SqueezeNet的Fire模塊結構[1],GoogLeNet的Inception模塊結構[2],MobileNet中的深度可分離卷積[3]等。深度可分離卷積是在目前輕量化網(wǎng)絡中被廣泛使用的一種卷積結構。它可以在不改變網(wǎng)絡總體層次架構的情況下,將傳統(tǒng)的卷積層依次替換為深度可分離卷積。通過在訓練集上進行重新訓練,通常能夠有效地降低運算量和參數(shù)量?;谏疃瓤煞蛛x卷積的跟蹤網(wǎng)絡,參數(shù)量和計算量已經(jīng)進行了很大精簡。在此基礎上,如何采用網(wǎng)絡剪枝的方法進一步加快運行速度,也更加具有挑戰(zhàn)性。
剪枝作為網(wǎng)絡壓縮的一種重要方法而被廣泛使用[4-5]。為了實驗方便,之前大部分剪枝研究使用分類任務來評估方法效果,而在跟蹤網(wǎng)絡中的剪枝研究則很少涉及。因此,在實時性的要求下,跟蹤網(wǎng)絡剪枝非常有意義。網(wǎng)絡剪枝按照裁剪的粒度,可以分為非結構化剪枝和結構化剪枝兩種。非結構化剪枝方法[6-7]主要通過網(wǎng)絡稀疏化來實現(xiàn),將不重要的權重設置為0。但是,在卷積計算過程中,神經(jīng)網(wǎng)絡需要大量條件和額外空間來判斷和表示非零參數(shù)及其位置,依賴于專門的運行庫和硬件設備來進行加速。結構化剪枝方法[8-11]通過刪除濾波器或者特征圖等結構化信息,減少網(wǎng)絡的計算。裁減后的網(wǎng)絡無需專門的軟硬件來進行支持,使得剪枝方法有很好的通用性。
在跟蹤任務中,可以采用結構化剪枝的方法對跟蹤網(wǎng)絡進行進一步精簡。在剪枝過程中,本文根據(jù)深度可分離卷積的特點,充分利用深度分離卷積模型中的先驗信息,更加有針對性地進行剪枝操作。
深度分離卷積包含逐層卷積和逐點卷積兩個部分,其中逐點卷積占據(jù)了大部分的計算。剪枝的過程中,1×1卷積被認為是對于輸入特征圖中不同通道的線性組合。在線性組合中,通常權重越大的特征圖重要性越大,反之則重要性越小。在剪枝過程中,通過評估逐點卷積層中的權重大小,可以估計出輸入通道的重要程度,從而將較小的權重及其關聯(lián)的特征圖裁減掉,降低網(wǎng)絡的參數(shù)量和運算量。
逐層卷積中主要提取二維平面特征,不同的濾波器在空間平面上應該獲取不同的特征信息。在深度可分離卷積中,逐層卷積的濾波器采用了單層的二維卷積結構,因此在濾波器相似性評估上更加簡單。相似的濾波器獲取的特征有相似之處,它們之間應該有相互替代的作用。通過K-L散度對于濾波器的相似性進行評估,刪除相似的濾波器,從而減少卷積的計算量。
通過上述網(wǎng)絡剪枝的方法對于以深度可分離卷積為主體的跟蹤網(wǎng)絡進行了精簡。相比于其他剪枝方法,本文采用的剪枝方法在保證精度的前提下,能夠更加有效地減少計算量,并在嵌入式設備NVIDIA TX2上取得較好的加速效果。
SiameseFC網(wǎng)絡[12]是一種典型使用深度學習的跟蹤網(wǎng)絡,其通過兩個卷積分支分別對于目標區(qū)域和整個圖像進行特征提取,通過比較輸出特征圖的區(qū)域相似性來確定目標位置。SiameseFC網(wǎng)絡的思想對于基于深度學習的目標跟蹤方法產(chǎn)生過重要影響,并在此基礎上衍生出眾多的基于深度學習的網(wǎng)絡,例如DASiamRPN[13],SiamRPN[14],SA-Siam[15]等。SiameseFC跟蹤網(wǎng)絡的基本框架結構如圖1所示。
※—網(wǎng)絡輸出中目標所在的區(qū)域。圖1 SiameseFC跟蹤網(wǎng)絡架構
在圖1中,使用CNN代表了跟蹤任務中的卷積分支。在SiameFC層中使用AlexNet[16]作為基本網(wǎng)絡,在訓練的過程中共享了兩個網(wǎng)絡分支的權重。
為了降低計算量和參數(shù)量,深度可分離卷積將傳統(tǒng)的卷積分解為逐層卷積和逐點卷積兩個部分。圖2為深度可分離卷積的示意。在逐層卷積中,輸入的M個通道特征圖和M個濾波器分別各自進行卷積,輸出M個特征圖。在逐層卷積中,主要關注空間平面特征的提取,卷積計算僅限各個通道內(nèi)部發(fā)生,通道之間的信息并不進行融合。在逐點卷積中,逐層卷積輸出的M個特征圖和1×1×M濾波器通過卷積操作輸出一個特征圖。由于在逐點卷積中有N個1×1×M卷積核,因此最終輸出N個通道的特征圖。在這個過程中,通過逐點卷積實現(xiàn)了輸入特征圖在通道層面的特征融合。深度可分離卷積主要改變了傳統(tǒng)卷積的內(nèi)部實現(xiàn),對外依然可以保持之前輸入和輸出的特征維度。因此,可以在不修改網(wǎng)絡層級結構的情況下,將相應的傳統(tǒng)卷積依次替換為深度可分離卷積。
圖2 深度可分離卷積結構示意
在計算量上,傳統(tǒng)卷積的計算量為DKDKMNDFDF,其中,DK為卷積的大小,DF為輸入特征圖的大小。使用深度可分離卷積之后,傳統(tǒng)的卷積被分解為逐層卷積和逐點卷積,其計算量為兩者之和DKDKMDFDF+MNDFDF,其中,DKDKMDFDF是逐層卷積的計算量,MNDFDF是逐點卷積的計算量。優(yōu)化后與優(yōu)化前的計算量之比為
(1)
在可分離卷積中,絕大部分的計算量還是集中在逐點卷積上。因此,首先將剪枝的重點放在逐點卷積上。
M個輸入特征圖(F1,F2,…,FM)和一個1×1×M濾波器(k1,k2,…,kM)的卷積過程可描述為
(2)
逐點卷積計算可以表示為特征圖的線性組合。在多個1×1×M卷積中,若某通道對應的權重很小,則可以認為這個通道的重要性不強。在剪枝過程中,將不重要的特征圖連同其權重裁減掉,如圖3所示,圖中1×1×M濾波器中,紅色輸入特征圖對應的權重很小。
圖3 對于權重小的輸入特征圖進行剪枝
在逐點卷積裁剪過程中,按照逐點卷積每層分別進行剪枝。先對于1×1濾波器權重進行歸一化,再按照權重的大小對于特征圖重要性進行排序。在剪枝過程中,以超參數(shù)α為比例,按照權重的大小進行剪枝。超參數(shù)α為通過實驗獲得的經(jīng)驗值。
在逐層卷積中,主要是針對圖像的空間信息進行特征提取。在保持神經(jīng)網(wǎng)絡精度的前提下,功能相似的濾波器具有相互的補充作用。即使其中一個濾波器被刪除,在重訓練的過程中,剩余相似的濾波器依然可以保證網(wǎng)絡精度。通過減少此種冗余,可以直接減少參與運算的濾波器,從而降低網(wǎng)絡的復雜度。
采用兩個濾波器之間的對稱性K-L散度來評估其相似性,公式為
(3)
式中:P和Q表示待評估兩個濾波器的概率分布;xi表示濾波器的值;p(xi)和q(xi)分別表示在濾波器相應位置上的權重占比。在對比過程中,首先將濾波器的權重進行歸一化,然后將其權重按照所在位置進行排列,對于兩個濾波器的權重分布進行相似性比較。
為了保留信息更加豐富的濾波器,通過交叉熵評估相似的濾波器。保留交叉熵較大的濾波器,裁減交叉熵比較小的濾波器。
空間逐層卷積中基于相似性的剪枝方法流程如下。
輸入:逐層卷積的M個濾波器,剪枝超參數(shù)β
輸出:被移除的Mβ個濾波器
步驟2對于M個濾波器進行兩兩之間K-L散度計算,并將按照K-L散度從小到大將濾波器進行排序。
步驟3以超參數(shù)β為比例,選擇Mβ對相似的濾波器,作為待剪枝的濾波器。
步驟4對于待剪枝的濾波器對,分別計算兩個濾波器的交叉熵,裁減交叉熵小的濾波器。
步驟5逐層卷積剪枝完成后,通過迭代訓練恢復跟蹤網(wǎng)絡的精度。
在剪枝過程中以超參數(shù)β為比例進行剪枝處理,此參數(shù)是通過實驗得出的最優(yōu)比例。
在訓練過程中,與原始SiameseFC網(wǎng)絡保持一致,采用ImageNet視頻訓練集。此視頻訓練集包含4 000多段視頻,超過百萬具有標注的視頻幀。對于跟蹤任務的訓練,它不僅包含了更多的視頻片段,并且在目標和場景上也超過其他訓練集。因此,ImageNet視頻訓練集非常適合用于訓練基于深度學習的跟蹤網(wǎng)絡,避免出現(xiàn)過擬合情況。
在測試過程中,為了保證與原始SiameseFC跟蹤網(wǎng)絡相同的實驗條件,同樣使用VOT數(shù)據(jù)集[17]作為評估數(shù)據(jù)集。從2013年開始,VOT數(shù)據(jù)集成為了一個重要的單目標跟蹤測試平臺。VOT數(shù)據(jù)集不僅有大量的測試數(shù)據(jù),并且綜合考察了遮擋、形變、模糊、分辨率、運動等因素對于跟蹤任務中的影響。
在深度分離卷積為主的訓練過程中,首先使用深度卷積網(wǎng)絡替換傳統(tǒng)網(wǎng)絡,然后重新開始訓練。采用Xavier[18]方法來初始化網(wǎng)絡參數(shù)。采用隨機梯度下降方法來優(yōu)化跟蹤網(wǎng)絡,minibatch設置為8,執(zhí)行50輪訓練迭代,學習率從10-2到10-5按照迭代次數(shù)均勻下降。通過訓練,得到了基于深度分離卷積的SiameseFC跟蹤網(wǎng)絡。
為了減少剪枝對于深度可分離卷積跟蹤網(wǎng)絡準確度的影響,在剪枝的過程中,采用逐次剪枝的方法,即每次進行少量剪枝,然后通過少量輪迭代訓練,使得網(wǎng)絡精度得到恢復,再進入下一輪剪枝。在網(wǎng)絡剪枝中,逐點卷積剪枝超參數(shù)α設置為0.10,逐層卷積剪枝超參數(shù)β設置為0.05。將待裁剪的通道或者濾波器分散到10輪剪枝迭代中進行。每次剪枝后,進行2到3輪訓練來恢復網(wǎng)絡精度。
所有的訓練在Nvidia TITAN XP GPU硬件設備上進行。使用Matlab的MatConvNet[19]進行訓練。在測試過程中,由于TensorFlow平臺對于深度可分離卷積實現(xiàn)上支持力度更好,因此將訓練好的權重導入到TensorFlow環(huán)境中進行前向推理測試。
在逐點卷積的裁剪過程中發(fā)現(xiàn),權重較大的特征圖通常包含比較多的信息,相反,權重較小的特征圖沒有明顯的特征。圖4是SiameseFC網(wǎng)絡中第3層卷積的輸入特征圖可視化結果。在圖4b中,輸入特征圖按照其在逐點卷積中的權重大小進行從上到下、從左到右排序,上半部分為1×1卷積中大權重所對應的特征圖,下半部分為較小權重的特征圖??梢钥闯?權重較大的特征圖一般特征信息都比較豐富,權重較小的特征圖信息量通常比較缺乏。
(a)原始待(b)卷積過程中的輸入特征圖跟蹤目標圖4 逐點卷積中的輸入特征圖可視化
圖5為逐層卷積的裁剪過程中,跟蹤網(wǎng)絡中第2個逐層卷積內(nèi)K-L散度top5最小的濾波器對,圖中一列為一組濾波器對??梢钥闯?這些濾波器對之間有明顯的相似性。
圖5 逐層卷積中相似的濾波器組可視化
為了驗證本文的剪枝方法,在不同的網(wǎng)絡架構上進行了相應的對比實驗,比較了計算量和精度。進行對比的網(wǎng)絡架構如下。
(1)傳統(tǒng)卷積SiameseFC網(wǎng)絡。
(2)深度可分離卷積SiameseFC網(wǎng)絡。Siamese FC網(wǎng)絡的傳統(tǒng)卷積被深度可分離卷積替代,剪枝操作以此作為基準。
(3)隨機剪枝的深度可分離卷積SiameseFC網(wǎng)絡[20]。
(4)在深度可分離卷積SiameseFC網(wǎng)絡上,按照濾波器的權重絕對值大小(L1范數(shù))進行剪枝[8]。將卷積層中權重絕對值大的濾波器保留下來,絕對值小的濾波器裁剪掉。
(5)在深度可分離卷積SiameseFC網(wǎng)絡上,將激活層輸出為0元素的平均百分比(APoZ)[11]作為評價濾波器是否重要的標準,進行剪枝。
(6)在深度可分離卷積SiameseFC網(wǎng)絡的逐層卷積中,按照濾波器的方差大小逐層進行剪枝[21]。濾波器的方差越小,其作用越小,應該優(yōu)先被裁剪掉。
本文方法和6種對比方法的性能比較如表1所示。
表1 不同SiameseFC網(wǎng)絡的性能比較
在表1中,跟蹤目標的準確率通過視頻中預測框和真實區(qū)域的交并比平均值進行評估。交并比越大,準確率越高。失敗率是每段視頻中的平均失敗幀數(shù),用來衡量跟蹤的魯棒性。當交并比為0時,認為跟蹤失敗,跟蹤網(wǎng)絡將重新進行初始化。平均重疊期望(EAO)是考慮到準確性和魯棒性的綜合指標。EAO用來衡量在跟蹤網(wǎng)絡未發(fā)生失敗情況下的平均準確率,是衡量跟蹤網(wǎng)絡性能最重要的指標。參數(shù)量是指CNN分支的參數(shù)量。由于兩個CNN分支共享參數(shù),因此在表1中的參數(shù)量是指單個網(wǎng)絡的參數(shù)量。計算量是兩個分支的卷積中乘加計算的數(shù)量。由于兩個分支輸入的圖像大小不同,因此兩個分支的計算量不同。表1中的計算量為兩個分支的卷積計算量總和。
從表1可知,本文剪枝方法在跟蹤精度和計算效率方面取得了良好的效果。相比于剪枝之前的深度可分離卷積SiameseFC網(wǎng)絡,在網(wǎng)絡性能沒有下降的情況下,網(wǎng)絡的參數(shù)量下降了22.54%,卷積層的計算量下降了17.8%。在保持精度的同時,將運算量降到了最少。
為了進一步證明本文剪枝方法的有效性,采用了NVIDIA TX2進行了進一步的實驗。NVIDIA TX2是嵌入式移動設備中普遍使用的一款硬件。在Tensorflow平臺上進行了測試驗證,結果如表2所示。
表2 跟蹤網(wǎng)絡在NVIDIA TX2設備上的計算速度對比
從表2可以看出,在嵌入式設備上,相比于深度可分離卷積SiameseFC網(wǎng)絡,本文方法剪枝后網(wǎng)絡的計算速度在CPU上提升了14.95%,在GPU上提升了13.07%,在CPU和GPU的速度提升比例不完全相同。這是因為在GPU中,內(nèi)存數(shù)據(jù)的訪問頻率和速度對于計算速度也會有較大的影響。
為了充分說明采用本文方法剪枝后網(wǎng)絡的泛化能力,采用本文剪枝方法精簡了網(wǎng)絡,在OTB50數(shù)據(jù)集[22]上進行了測試驗證。圖6是SiameseFC網(wǎng)絡剪枝前后在OTB50數(shù)據(jù)集上的指標對比??梢钥闯?當位置誤差閾值為20時,本文方法、傳統(tǒng)卷積、深度可分離卷積SiameseFC網(wǎng)絡的準確率分別為0.692、0.682、0.613;當重疊閾值為0.5時,本文方法、傳統(tǒng)卷積、深度可分離卷積SiameseFC網(wǎng)絡的成功率分別為0.600、0.621、0.561;剪枝后網(wǎng)絡的各指標均超過剪枝前的。
(a)準確率
(b)成功率圖6 SiameseFC網(wǎng)絡剪枝前后在OTB50數(shù)據(jù)集上的指標對比
通過對比剪枝前后的測試結果可以看出,剪枝后的網(wǎng)絡在VOT數(shù)據(jù)集的EAO指標,以及OTB50數(shù)據(jù)集上的準確率和成功率指標都有所提升。從機器學習的理論分析,網(wǎng)絡的泛化能力在一定程度上和網(wǎng)絡自身的復雜度成反相關[23]。因此,適當?shù)募糁p少了參數(shù)量和計算量,降低了模型的復雜度,提升了跟蹤網(wǎng)絡的泛化能力。剪枝后網(wǎng)絡在數(shù)據(jù)集上的精度超過了剪枝前網(wǎng)絡的。
圖7展示了本文方法剪枝后的網(wǎng)絡在VOT數(shù)據(jù)集上的結果??梢钥闯?在前3行跟蹤序列中,目標存在較大遮擋,剪枝后的跟蹤網(wǎng)絡依然能夠保持很好的跟蹤效果;第4行跟蹤序列為有很大運動模糊的場景,第5行跟蹤序列為光照變化劇烈的場景,第6行跟蹤序列為跟蹤物體尺度變化的場景,在這些場景中,剪枝后的網(wǎng)絡都可以保持優(yōu)異的性能。
圖7 本文方法剪枝后網(wǎng)絡在VOT數(shù)據(jù)集上的跟蹤效果
隨著深度學習在跟蹤領域的廣泛應用,眾多的參數(shù)量和計算量對于跟蹤實時性是一個巨大的挑戰(zhàn)。深度可分離卷積相比傳統(tǒng)卷積,計算量已經(jīng)有較大精簡,在此基礎上進行剪枝更加具有挑戰(zhàn)性。
本文根據(jù)深度可分離卷積的特點,有針對性地對網(wǎng)絡進行剪枝,進行進一步加速。剪枝過程中,通過在逐點卷積上評估輸入特征圖通道的線性系數(shù)大小,將不重要的通道裁減掉。在逐層卷積中,衡量空間卷積濾波器的相似性,減少濾波器的冗余。在VOT數(shù)據(jù)集上的結果表明,相比未剪枝的網(wǎng)絡,本文方法剪枝后的網(wǎng)絡能夠在精度沒有下降的情況下,使網(wǎng)絡參數(shù)量下降22.54%,計算量下降17.8%。在嵌入式設備NVIDIA TX2上,本文方法剪枝后的網(wǎng)絡在CPU上的計算速度提升了14.95%,在GPU上提升了13.07%。