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