孫盛婷 賀盼博 馬遠浩
(中國聯(lián)通(上海)產(chǎn)業(yè)互聯(lián)網(wǎng)有限公司 上海市 200050)
深度神經(jīng)網(wǎng)絡(luò)已經(jīng)在語音識別,圖像分類,目標檢測,語義圖像分割和機器翻譯等領(lǐng)域取得了廣泛的應用。然而基于Faster RCNN[1]和SSD[2]等目標檢測方法是一件計算成本很高的任務,這些方法的網(wǎng)絡(luò)參數(shù)多,計算量大,在便攜式設(shè)備中部署是不可行的,因此使用輕量級和加速網(wǎng)絡(luò)非常重要。
目前,輕量級網(wǎng)絡(luò)可歸納為三類:
知識提煉方法:這些方法將深度網(wǎng)絡(luò)中的知識提取為更小的網(wǎng)絡(luò),這些方法首先在文獻[3]中引入,他們將這種方法與散列碼相結(jié)合,進一步壓縮神經(jīng)網(wǎng)絡(luò),目前該方法已經(jīng)廣泛應用于各種領(lǐng)域。
張量分解壓縮方法:該方法通過逼近低階張量分解的權(quán)值來解決空間冗余問題。文獻[4]在無梯度下降的情況下逼近多層非線性響應,并確定加速度和性能之間的折中。文獻[5]給出了求解非凸問題時張量分解的數(shù)據(jù)無關(guān)解。
低比特寬度權(quán)重分配方法:低比特權(quán)量化可以節(jié)省更多的內(nèi)存,但精度略有下降,在典型工程[6]中,算法將權(quán)值限制在定點量化上,此外Rastegar[7]等人在網(wǎng)絡(luò)中使用了一位激活和權(quán)重,并取得了可觀的性能。Lin[8]等人建議通過使用更多的權(quán)重參數(shù)來增強性能。Rastegari 等人建議使用二進制權(quán)重和激活進行圖像分類。Wen[9]等人提出用低比特寬度權(quán)值加速神經(jīng)網(wǎng)絡(luò)的分段任務。Duan[10]等人引入多級量化的二值描述子進行圖像匹配。Yan[11]等提出一種人臉親緣關(guān)系驗證的可分辨壓縮二值人臉描述子。Duan[12]等人提出了一種用于人臉識別的上下文感知局部二值描述子。
本文提出了一種簡單的低比特寬度權(quán)值分配方法來壓縮檢測網(wǎng)絡(luò);首先將模型權(quán)重裁剪到[-b,b],其中b 是層權(quán)重的最大值,且不超過1。在前向傳遞過程中,本文使用了M 位量化權(quán)值,它可以將卷積轉(zhuǎn)換為加法和減法運算。在反向傳播過程中,使用實值權(quán)重來更新參數(shù)。但是在低比特寬度權(quán)重不能包含較小梯度中的信息,并且忽略了參數(shù)的變化,降低了量化檢測網(wǎng)絡(luò)的性能。在本文實驗中發(fā)現(xiàn)如果同時量化所有的權(quán)值,檢測網(wǎng)絡(luò)就很難收斂,性能也會降低很多了,所有本文使用貪婪的分層訓練方法,實驗結(jié)果顯示具有較好的結(jié)果。
在本節(jié)中,本文將介紹如何使用低比特寬度權(quán)值量化算法,然后使用貪心層式算法來訓練二進制偵測網(wǎng)絡(luò)模型,以及在各個數(shù)據(jù)集上的結(jié)果與其它模型的對比。
圖1:基于VGG16 的Faster RCNN 兩階段貪婪分層方案的實例
本文將權(quán)重量化算法擴展到文獻[13]形式上。在一個L 層的網(wǎng)絡(luò)中,其中L 代表是網(wǎng)絡(luò)中的層數(shù)的數(shù)量,在L(L=1,2,...,L)層中,用表示第L 層精度權(quán)重。nl和kl表示特征映射的個數(shù)和核大小。為了獲得一個穩(wěn)定的范圍,本文首先將權(quán)重裁剪為[-b,b],其中b 是層權(quán)重中的最大絕對值,且不超過1,如果權(quán)值的絕對值大于1,則誤差會累積,網(wǎng)絡(luò)很難收斂。因此,它也會增加量化誤差,降低性能。相關(guān)計算函數(shù)如下:
注意,步長(分辨率)將隨著m 的增加以指數(shù)級的速率減小。量化權(quán)重集是本文將裁剪后的權(quán)重近似為這里 和Q 分別表示標度因子和量化權(quán)重張量,如果把重量張量展平,和Q 可以被重塑為一個相等的向量然后本文可以將量化優(yōu)化問題模擬如下:
可以使用以下公式獲得比例因子:
在文獻[14]中,網(wǎng)絡(luò)的所有權(quán)值在前進步驟中同時被訓練。本文嘗試采用同樣的方法來訓練BDNN,觀察到它的性能會下降。當本文對整個網(wǎng)絡(luò)進行二值化時,網(wǎng)絡(luò)中的檢測錯誤會累積,改良后的網(wǎng)絡(luò)將只能以次優(yōu)方式收斂。
相反,本文引入一種貪婪的逐層方法來訓練BDNN。為了加快訓練過程,穩(wěn)定訓練過程,對檢測網(wǎng)絡(luò)的權(quán)值進行了逐級二值化。本文對預先訓練好的VGG16 模型進行微調(diào),以完成檢測任務。然后,本文量化底層的權(quán)值,使用二進制權(quán)值,并對網(wǎng)絡(luò)進行微調(diào),直到收斂。在下一階段,本文凍結(jié)這些底層,繼續(xù)量化下一層中的權(quán)重,除了卷積網(wǎng)絡(luò)中的分類和定位層,貪婪的分層訓練過程如圖1所示。
在本文的實驗中,本文在Image Net 上對預先訓練好的VGG16模型進行微調(diào)以進行檢測。在前向傳播過程中,本文將重量限制在范圍[-b,b],使用二進制量化權(quán)重并獲得標度因子α。在向后傳播過程中,需要全精度的權(quán)重來計算通過ADAM[15]或隨機梯度下降的小梯度,本文使用貪婪的分層方法對深層網(wǎng)絡(luò)進行二值化,而不是同時對所有權(quán)重進行二值化。
Floor 函數(shù)不是連續(xù)的,大多數(shù)梯度都是零,通過層的量化權(quán)重使用反向傳播是不可行的,文獻[16]中給出了梯度法的一個直接快速估算方法:
在本文的實驗中,本文結(jié)合了分類和檢測任務兩大功能。多任務的損失函數(shù)如下:
其中x,y,w 和h 是邊界框的中心坐標、寬度和高度。x,x*和是預測邊界框、錨和地面真實性的相應變量。
本文在PASCAL VOC 2007 和2012 檢測數(shù)據(jù)集上評估了本文的算法。PASCAL VOC 2007 包含了5000 個訓練樣本和驗證圖像,以及5000 個測試圖像,涵蓋了21 個類別。PASCAL VOC 2012 包含了10000 個測試圖像,本文使用平均精度(mAP)來展示分割測試結(jié)果的性能,使用mxnet 來實現(xiàn)本文的算法。
在第2.2 節(jié)中,本文探討了兩種用于BDNN 的二進制方法。在本文的實驗中,本文使用Faster RCNN 和VGG16 作為基礎(chǔ)模型。全卷積網(wǎng)絡(luò)VGG16 是從原始分類網(wǎng)絡(luò)[17]投射而來的。將原分類網(wǎng)絡(luò)中的內(nèi)積層fc6 和fc7 轉(zhuǎn)化為卷積層。fc6 的卷積運算是在conv5-3 之后用步長為1 來實現(xiàn)×7 濾波器,fc7 的卷積運算是用步長1 轉(zhuǎn)換成1×1 濾波器。
采用隨機梯度下降(SGD)方法訓練Faster RCNN,每個小批量包含兩個隨機圖像。每個image 有64 個候選區(qū)域。如果具有地面真實度的IOU 大于0.5,則選擇候選作為前景對象。
在PASCAL VOC 2007 數(shù)據(jù)集中,本文的BDNN 的結(jié)果與mAP 58.6%相當,比32 位網(wǎng)絡(luò)低8.3%。在PASCAL VOC 2012 上,本文的BDNN 獲得的mAP 為58.0%,比32 位網(wǎng)絡(luò)低7.7%。貪婪分層方法在PASCAL VOC 2007 上實現(xiàn)了58.6%的映射,比整體量化方法提高了18.1%。驗證了如果同時對整個網(wǎng)絡(luò)的權(quán)值進行二值化。這些誤差會逐層累積,難以收斂。分類和定位損失如圖2所示。結(jié)果表明,貪婪分層方法的分類損失和定位損失都比整體量化方法小,收斂速度快。
Faster RCNN 生成候選區(qū)域和檢測過程選擇候選區(qū)域并同時檢測對象。候選區(qū)域和檢測網(wǎng)絡(luò)共享bottom 層和底層特征。突破了區(qū)域方案生成需要大量計算的瓶頸。在實驗中,本文還采用貪婪分層的方法對底層的權(quán)重進行二值化。對于候選區(qū)域,候選區(qū)域網(wǎng)絡(luò)充當檢測任務的注意力機制。共享層上的候選區(qū)域網(wǎng)絡(luò)保持完全精確。對于檢測網(wǎng)絡(luò),考慮到網(wǎng)絡(luò)的輸出是連續(xù)變量,不需要對位置層和分類層進行二值化。與Faster RCNN 相比,該算法在區(qū)域規(guī)劃和檢測方面的性能下降較小,并且具有二進制權(quán)值進行端到端的訓練。
在本文的實驗中,使用256 小批量。對于λ,本文將默認值設(shè)置為1 以平衡這兩個損失。其他實現(xiàn)細節(jié)與[18]相同。結(jié)構(gòu)如表2所示。與全精度相比,F(xiàn)aster RCNN 降低了7.3%的mAP。此外,與全精度Faster RCNN 相比,該方法在CPU 上可達到10 倍。
SSD 以Faster RCNN 刪除候選對象。它以多尺度和每個要素地圖的方面預測邊界框。與具有競爭性能的區(qū)域定位方法相比,它是一個更快的檢測網(wǎng)絡(luò)。本文采用同樣的方法對SSD 中的權(quán)重進行二值化。
在本文的實驗中,除了第一層、分類層和定位層之外,本文對所有層的權(quán)重進行了二值化,二值化檢測網(wǎng)絡(luò)比全精度網(wǎng)絡(luò)降低了8.8%的mAP。實驗證明了該算法的有效性。此外,與全精度相比,本文的方法在SSD 上的速度可以達到9.86 倍。
表1:不同模型中的尺寸比較
表2:不同方法的結(jié)果比較
圖2:在SSD 模型中應用結(jié)果
圖3:在Faster RCNN 中的應用結(jié)果
與全精度檢測網(wǎng)絡(luò)相比,BDNN 可以節(jié)省大量的存儲空間,同時具有可比的性能。如表1所示,本文的BDNN 顯著地節(jié)省了內(nèi)存。Tiny YOLO[19]是一個比普通YOLO 網(wǎng)絡(luò)更小更快的網(wǎng)絡(luò)。與Tiny YOLO 相比,本文的BDNN 有更好的效果和更小的尺寸。在PASCAL VOC 2007 測試中,本文的二值化SSD 比Tiny YOLO 的性能好6.1%。
本文將BDNN 與全精度網(wǎng)絡(luò)進行了比較。有必要將本文的方法與其他二進制網(wǎng)絡(luò)進行比較,以證明本文的方法有效性。這里本文用兩種方法進行了另一種消融實驗:BinaryNet[20]和XNORNet[21]。本文使用mxnet[22]來實現(xiàn)它們的方法并壓縮SSD,結(jié)果如表2所示。
本文在PASCAL VOC 2007 數(shù)據(jù)集上運用BDNN 執(zhí)行我們的結(jié)果。預測的邊界框用分數(shù)標記。圖2 顯示SSD 的結(jié)果,圖3 顯示Faster RCNN 的結(jié)果。即使檢測網(wǎng)絡(luò)的權(quán)值是二值化的,BDNN 仍然可以檢測不同尺度和類別的目標??梢暬Y(jié)果表明了BDNN 和貪婪分層訓練方案的有效性。如表1 和表2所示。
本文介紹了一種快速目標檢測的二值化方法。經(jīng)研究發(fā)現(xiàn),如果同時對檢測網(wǎng)絡(luò)的所有權(quán)值進行二值化,則BDNN 的檢測性能會大大降低,所以本文通過引入貪婪分層approach 算法進行訓練,而且經(jīng)過改良后的BDNN 可以節(jié)省大約95%的內(nèi)存,使檢測網(wǎng)絡(luò)能夠部署在便攜設(shè)備上。實驗結(jié)果表明,本文中的BDNN 方案可以有效的壓縮深層神經(jīng)網(wǎng)絡(luò),在接下來的工作中,可以擴展更好的權(quán)重量化方法來進一步提高性能。