孫盛婷 賀盼博 馬遠浩
(中國聯通(上海)產業互聯網有限公司 上海市 200050)
深度神經網絡已經在語音識別,圖像分類,目標檢測,語義圖像分割和機器翻譯等領域取得了廣泛的應用。然而基于Faster RCNN[1]和SSD[2]等目標檢測方法是一件計算成本很高的任務,這些方法的網絡參數多,計算量大,在便攜式設備中部署是不可行的,因此使用輕量級和加速網絡非常重要。
目前,輕量級網絡可歸納為三類:
知識提煉方法:這些方法將深度網絡中的知識提取為更小的網絡,這些方法首先在文獻[3]中引入,他們將這種方法與散列碼相結合,進一步壓縮神經網絡,目前該方法已經廣泛應用于各種領域。
張量分解壓縮方法:該方法通過逼近低階張量分解的權值來解決空間冗余問題。文獻[4]在無梯度下降的情況下逼近多層非線性響應,并確定加速度和性能之間的折中。文獻[5]給出了求解非凸問題時張量分解的數據無關解。
低比特寬度權重分配方法:低比特權量化可以節省更多的內存,但精度略有下降,在典型工程[6]中,算法將權值限制在定點量化上,此外Rastegar[7]等人在網絡中使用了一位激活和權重,并取得了可觀的性能。Lin[8]等人建議通過使用更多的權重參數來增強性能。Rastegari 等人建議使用二進制權重和激活進行圖像分類。Wen[9]等人提出用低比特寬度權值加速神經網絡的分段任務。Duan[10]等人引入多級量化的二值描述子進行圖像匹配。Yan[11]等提出一種人臉親緣關系驗證的可分辨壓縮二值人臉描述子。Duan[12]等人提出了一種用于人臉識別的上下文感知局部二值描述子。
本文提出了一種簡單的低比特寬度權值分配方法來壓縮檢測網絡;首先將模型權重裁剪到[-b,b],其中b 是層權重的最大值,且不超過1。在前向傳遞過程中,本文使用了M 位量化權值,它可以將卷積轉換為加法和減法運算。在反向傳播過程中,使用實值權重來更新參數。但是在低比特寬度權重不能包含較小梯度中的信息,并且忽略了參數的變化,降低了量化檢測網絡的性能。在本文實驗中發現如果同時量化所有的權值,檢測網絡就很難收斂,性能也會降低很多了,所有本文使用貪婪的分層訓練方法,實驗結果顯示具有較好的結果。
在本節中,本文將介紹如何使用低比特寬度權值量化算法,然后使用貪心層式算法來訓練二進制偵測網絡模型,以及在各個數據集上的結果與其它模型的對比。

圖1:基于VGG16 的Faster RCNN 兩階段貪婪分層方案的實例
本文將權重量化算法擴展到文獻[13]形式上。在一個L 層的網絡中,其中L 代表是網絡中的層數的數量,在L(L=1,2,...,L)層中,用表示第L 層精度權重。nl和kl表示特征映射的個數和核大小。為了獲得一個穩定的范圍,本文首先將權重裁剪為[-b,b],其中b 是層權重中的最大絕對值,且不超過1,如果權值的絕對值大于1,則誤差會累積,網絡很難收斂。因此,它也會增加量化誤差,降低性能。相關計算函數如下:


注意,步長(分辨率)將隨著m 的增加以指數級的速率減小。量化權重集是本文將裁剪后的權重近似為這里 和Q 分別表示標度因子和量化權重張量,如果把重量張量展平,和Q 可以被重塑為一個相等的向量然后本文可以將量化優化問題模擬如下:

可以使用以下公式獲得比例因子:

在文獻[14]中,網絡的所有權值在前進步驟中同時被訓練。本文嘗試采用同樣的方法來訓練BDNN,觀察到它的性能會下降。當本文對整個網絡進行二值化時,網絡中的檢測錯誤會累積,改良后的網絡將只能以次優方式收斂。
相反,本文引入一種貪婪的逐層方法來訓練BDNN。為了加快訓練過程,穩定訓練過程,對檢測網絡的權值進行了逐級二值化。本文對預先訓練好的VGG16 模型進行微調,以完成檢測任務。然后,本文量化底層的權值,使用二進制權值,并對網絡進行微調,直到收斂。在下一階段,本文凍結這些底層,繼續量化下一層中的權重,除了卷積網絡中的分類和定位層,貪婪的分層訓練過程如圖1所示。
在本文的實驗中,本文在Image Net 上對預先訓練好的VGG16模型進行微調以進行檢測。在前向傳播過程中,本文將重量限制在范圍[-b,b],使用二進制量化權重并獲得標度因子α。在向后傳播過程中,需要全精度的權重來計算通過ADAM[15]或隨機梯度下降的小梯度,本文使用貪婪的分層方法對深層網絡進行二值化,而不是同時對所有權重進行二值化。
Floor 函數不是連續的,大多數梯度都是零,通過層的量化權重使用反向傳播是不可行的,文獻[16]中給出了梯度法的一個直接快速估算方法:

在本文的實驗中,本文結合了分類和檢測任務兩大功能。多任務的損失函數如下:




其中x,y,w 和h 是邊界框的中心坐標、寬度和高度。x,x*和是預測邊界框、錨和地面真實性的相應變量。
本文在PASCAL VOC 2007 和2012 檢測數據集上評估了本文的算法。PASCAL VOC 2007 包含了5000 個訓練樣本和驗證圖像,以及5000 個測試圖像,涵蓋了21 個類別。PASCAL VOC 2012 包含了10000 個測試圖像,本文使用平均精度(mAP)來展示分割測試結果的性能,使用mxnet 來實現本文的算法。
在第2.2 節中,本文探討了兩種用于BDNN 的二進制方法。在本文的實驗中,本文使用Faster RCNN 和VGG16 作為基礎模型。全卷積網絡VGG16 是從原始分類網絡[17]投射而來的。將原分類網絡中的內積層fc6 和fc7 轉化為卷積層。fc6 的卷積運算是在conv5-3 之后用步長為1 來實現×7 濾波器,fc7 的卷積運算是用步長1 轉換成1×1 濾波器。
采用隨機梯度下降(SGD)方法訓練Faster RCNN,每個小批量包含兩個隨機圖像。每個image 有64 個候選區域。如果具有地面真實度的IOU 大于0.5,則選擇候選作為前景對象。
在PASCAL VOC 2007 數據集中,本文的BDNN 的結果與mAP 58.6%相當,比32 位網絡低8.3%。在PASCAL VOC 2012 上,本文的BDNN 獲得的mAP 為58.0%,比32 位網絡低7.7%。貪婪分層方法在PASCAL VOC 2007 上實現了58.6%的映射,比整體量化方法提高了18.1%。驗證了如果同時對整個網絡的權值進行二值化。這些誤差會逐層累積,難以收斂。分類和定位損失如圖2所示。結果表明,貪婪分層方法的分類損失和定位損失都比整體量化方法小,收斂速度快。
Faster RCNN 生成候選區域和檢測過程選擇候選區域并同時檢測對象。候選區域和檢測網絡共享bottom 層和底層特征。突破了區域方案生成需要大量計算的瓶頸。在實驗中,本文還采用貪婪分層的方法對底層的權重進行二值化。對于候選區域,候選區域網絡充當檢測任務的注意力機制。共享層上的候選區域網絡保持完全精確。對于檢測網絡,考慮到網絡的輸出是連續變量,不需要對位置層和分類層進行二值化。與Faster RCNN 相比,該算法在區域規劃和檢測方面的性能下降較小,并且具有二進制權值進行端到端的訓練。
在本文的實驗中,使用256 小批量。對于λ,本文將默認值設置為1 以平衡這兩個損失。其他實現細節與[18]相同。結構如表2所示。與全精度相比,Faster RCNN 降低了7.3%的mAP。此外,與全精度Faster RCNN 相比,該方法在CPU 上可達到10 倍。
SSD 以Faster RCNN 刪除候選對象。它以多尺度和每個要素地圖的方面預測邊界框。與具有競爭性能的區域定位方法相比,它是一個更快的檢測網絡。本文采用同樣的方法對SSD 中的權重進行二值化。
在本文的實驗中,除了第一層、分類層和定位層之外,本文對所有層的權重進行了二值化,二值化檢測網絡比全精度網絡降低了8.8%的mAP。實驗證明了該算法的有效性。此外,與全精度相比,本文的方法在SSD 上的速度可以達到9.86 倍。

表1:不同模型中的尺寸比較

表2:不同方法的結果比較

圖2:在SSD 模型中應用結果

圖3:在Faster RCNN 中的應用結果
與全精度檢測網絡相比,BDNN 可以節省大量的存儲空間,同時具有可比的性能。如表1所示,本文的BDNN 顯著地節省了內存。Tiny YOLO[19]是一個比普通YOLO 網絡更小更快的網絡。與Tiny YOLO 相比,本文的BDNN 有更好的效果和更小的尺寸。在PASCAL VOC 2007 測試中,本文的二值化SSD 比Tiny YOLO 的性能好6.1%。
本文將BDNN 與全精度網絡進行了比較。有必要將本文的方法與其他二進制網絡進行比較,以證明本文的方法有效性。這里本文用兩種方法進行了另一種消融實驗:BinaryNet[20]和XNORNet[21]。本文使用mxnet[22]來實現它們的方法并壓縮SSD,結果如表2所示。
本文在PASCAL VOC 2007 數據集上運用BDNN 執行我們的結果。預測的邊界框用分數標記。圖2 顯示SSD 的結果,圖3 顯示Faster RCNN 的結果。即使檢測網絡的權值是二值化的,BDNN 仍然可以檢測不同尺度和類別的目標。可視化結果表明了BDNN 和貪婪分層訓練方案的有效性。如表1 和表2所示。
本文介紹了一種快速目標檢測的二值化方法。經研究發現,如果同時對檢測網絡的所有權值進行二值化,則BDNN 的檢測性能會大大降低,所以本文通過引入貪婪分層approach 算法進行訓練,而且經過改良后的BDNN 可以節省大約95%的內存,使檢測網絡能夠部署在便攜設備上。實驗結果表明,本文中的BDNN 方案可以有效的壓縮深層神經網絡,在接下來的工作中,可以擴展更好的權重量化方法來進一步提高性能。