任紅萍, 陳敏捷, 王子豪, 楊 春, 殷緒成
(北京科技大學 計算機與通信工程學院, 北京 100083)
網絡技術的飛速發展和各種電子設備成本的下降為當今信息傳播的爆炸式發展提供了契機, 我們現在接觸到的海量信息均依托于不同的信息載體. 其中圖片和視頻是日常生活中非常重要和直接的兩種信息來源, 在今天的社交活動、娛樂活動中扮演著重要的角色. 這些視覺數據除了圖形本身傳遞的信息外, 往往還包含文本元素, 這些文本能夠更加直接的傳遞信息, 也因此需要被研究人員重點關注.
由于近年來深度學習算法的發展, 場景文本識別技術取得了豐碩的成果[1]. 目前深度學習中的場景文本識別主要基于兩種思路. 第一種是將“檢測”和“識別”兩個模塊的算法替換成深度模型, 利用深度模型本身的優勢解決問題; 另一種是針對短文本行或單詞文本, 將檢測和識別兩部分在深度網絡中加以融合, 實現不依賴于切分的序列化文本識別. 兩種思路都在場景文本識別任務中取得了良好效果, 但是卻在落地產品時遇到了瓶頸.
深度神經網絡(DNN)在眾多領域中取得了非常好的效果, 這離不開硬件條件的支持. 但由于深度學習方法的計算復雜度過大, 導致算法對硬件環境(GPU、TPU等)的要求過高[2]. 而真正在使用一個深度模型時,一旦脫離了GPU的支持, 運算速度就會降低一個數量級以上, 導致很多任務中的復雜模型無法實時運行[3-5],很多當下流行的如手機、攝像機等能源儲量低、計算能力弱的設備無法有效使用深度神經網絡模型[6-9].
因此人們開始對計算方式進行改進優化, 通過特定的處理方法, 降低深度模型在運行時所需的乘法運算量, 二值網絡[10,11]因其在速度、能耗、內存占用等方面的優勢日益被關注. 近兩年來, 單純加入二值化操作的網絡主要有二值權重網絡和二值神經網絡兩種方法.二值權重網絡(BWN)[12,13]是一種只針對神經網絡系數二值化的算法. BWN只關心系數的二值化, 并采取了一種混和的策略, 構建了一個混有單精度浮點型中間值與二值權重的BinaryConnect網絡, 它把原始全精度浮點權重強行置為-1、+1兩個浮點數, 同時不改變網絡的輸入和層之間的中間值, 保留原始精度. 權重取值的特點使得原本在神經網絡中的乘法運算可以被加法代替, 大大地減少了計算量. 而二值神經網絡(BNN)不僅對權重做二值化, 也對網絡中間每層的輸入值進行二值化, 它將二值浮點數“-1”、“+1”分別用一個比特“0”、“1”來表示, 這樣原本占用 32 個比特位的浮點數現在只需1個比特位就可存放. 然而大量的實驗結果表明, BNN在大規模數據集上的效果很差. 它們在提升速度、降低能耗、減小內存占用等方面存在巨大的可能性, 但這樣做會對識別精度造成一定的影響. 只有做到保持原有精度, 二值網絡、量化網絡的思路才能夠真正在應用中得以實現.
單純使用BWN或BNN確實會對深度網絡模型造成較大的精度損失. 同或網絡(XNOR-net)[14]的提出主要就是為了解決二值網絡精度損失的問題. XNOR-net是一種針對CNN的簡單、高效、準確近似方法,核心思想是: 在BNN的基礎上, 針對二值化操作給每一層數據造成的誤差, 引入最佳的近似因子, 以此來彌補二值化帶來的精度損失, 提高訓練精度的同時保持BNN在速度和能耗方面的優勢.
隨機量化算法的核心在于訓練過程中考慮到量化誤差的因素, 只對誤差較小的部分權重采用一定的概率進行量化, 其他權重則保留原始精度, 這樣對混合模型的訓練達到收斂后, 再去量化剩余的權重, 逐步增加量化比例, 直到模型完全收斂, 接近原始精度的準確率.隨機量化網絡算法能夠訓練得到比BWN更高的準確率, 但是對于BNN卻沒有做更進一步的分析, 也沒有能夠利用XNOR-net這一算法給模型帶來準確率方面的提升, 鑒于它的有效性, 我們需要更好的將其應用到BNN中.
在文本識別任務中采用XNOR-net算法可以實現CPU條件下5倍以上的加速, 采用二值模型能夠實現64倍的峰值內存占用壓縮, 這就基本實現了低配硬件條件下深度模型的實時運行. 雖然XNOR-net算法的目的是為了彌補二值網絡造成的識別精度下降, 但是僅采用這一算法依然不能有效的保證深度網絡訓練模型的準確率.
為了解決上述問題, 提升二值網絡的訓練精度, 本文提出了二值網絡的“分階段殘差二值化”優化算法.實驗表明, 該算法能顯著提升二值網絡訓練效果而不會增加相關網絡在測試過程中的計算量, 從而保持了二值網絡速度快、空間小、能耗低的優勢. 本文使用整合得到的二值深度框架對文本識別任務展開訓練,主要工作包括: 將隨機量化網絡算法與XNOR-net相結合進行分析與改進, 并對提出的“分階段殘差二值化”算法進行研究與評估. 通過對上述算法的實驗與改進, 得到接近全精度神經網絡的識別準確率.
本節將對隨機量化網絡和高階殘差量化網絡進行概述, 并對這兩種網絡目前存在的問題進行簡要的分析. 首先介紹了隨機量化網絡算法; 其次將隨機量化的思想與XNOR-net進行結合, 得到“帶有近似因子”的隨機權重二值化網絡; 接著, 進一步對“隨機”的優缺點進行分析, 基于卷積計算的結構進行合理改進得到“確定權重二值化網絡”; 最后, 對高階殘差量化網絡進行了簡要的概述和分析.
隨機量化網絡是一種針對BWN的訓練優化算法,算法設計的出發點是基于對二值化誤差的分析. 權重在二值化過程中被強制引入了較大誤差, 這一誤差將導致總體損失非常大, 從而致使網絡的訓練過程極不穩定, 無法收斂到最優結果, 這也就是二值網絡準確率較差的原因. 隨機量化網絡則試圖減小損失過大帶來的訓練過程的劇烈震動, 這與調小學習率等訓練技巧不謀而合. 圖1是隨機量化流程圖, 具體的實現過程如下文.

圖1 隨機量化流程圖
1) 預訓練. 將二值化比例置0, 保留全部的原始精度權重, 以得到一個準確率較高的預訓練模型.
2) 隨機選取二值化權重. 提高二值化比例, 使得一部分訓練中的權重會被二值化. 如何選取這些權重呢?首先統計二值化給不同權重帶來的誤差大小, 按“誤差越小, 被二值化的幾率越大”原則, 用“輪盤賭”的方式隨機選取一部分權重進行二值化訓練. 訓練過程跟普通BWN一樣.
3) 將提高了二值化比例的網絡在預訓的模型上進行finetune, 直到訓練的準確率達到與之前全精度網絡模型接近的水準.
4) 在finetune成功的模型上繼續提高網絡二值化的比例, 重復2)、3)的步驟, 直到整個網絡中的模型權重被二值化的比例達到100%, 且finetune的結果達到可接受范圍.
以上就是隨機量化網絡的具體實現, 其中需要注意的點在于“隨機”的概念, 即“中間每次訓練的過程中被二值化的權重并不固定”. 這樣做會造成前期finetune的困難, 因為被影響的權重較多, 需要大量權重基本調整好之后網絡才會收斂的比較好; 但是等到訓練中后期, 大部分的權重已經被調優到了最佳位置, 這時候網絡的finetune會非常容易.
XNOR-net是一種有效的二值訓練精度優化算法,在這里我們考慮將“隨機量化”這一思想應用在XNOR-net權重二值化中, 進一步提升二值網絡的訓練精度.隨機量化網絡在實現時并不會具體到每個權重, 而是以整個通道為單位來操作的, 而XNOR-net算法的處理也是通道級別的, 這就為我們研究如何將兩種訓練優化算法合理融合提供了便利.
要將XNOR-net的權重近似推導應用于隨機量化網絡, 最重要的是要解決兩點問題: 一是在求近似因子時, 確定參與求解的權重; 二是計算誤差時考慮近似因子帶來的變化, 而非單純的二值化誤差.
解決第一個問題則必須要明確一點: 出于實現簡單的考慮, 隨機量化網絡并非針對每個權重都去判斷是否二值化, 而是通過同一個輸出通道上的一組權重的總誤差來決定的. 而我們在實現XNOR-net算法時也是在一組通道上求得一個近似因子. 這樣, 我們就可以通過對通道級別結構的分析, 實現兩個算法的結合. 我們通過圖2所示的示意圖來簡單回顧下權重矩陣的形狀, 并借此說明隨機量化網絡的權重選取方法和XNOR-net近似因子的求解.

圖2 權重矩陣隨機求取示意圖
有了二值化的選取規則, 還需要解決的第二個問題是: 存在近似因子時如何確定量化選取通道的概率.直觀的, 我們可以得到如下的量化誤差統計公式:

以上我們就完成了對“帶有近似因子的隨機權重二值化網絡”的研究, 具體來說, 在隨機量化網絡上加入XNOR-net的近似因子方法的實現過程可以總結為4個步驟:
2) 求出每組輸出通道上添加了近似因子后的權重量化、二值化誤差, 計算的定量表達見式(1);
3) 根據量化誤差, 計算每個通道的權重被進行二值化的概率;
4) 以概率大小為依據, 采用輪盤賭的方式選取可以進行權重二值化的通道, 選中的通道被二值化. 在訓練時, 需要二值化這些通道的權重并乘上相應的近似因子, 沒有被選中的通道則繼續保留全精度, 計算過程中不使用對應的近似因子.
為了證明根據之前的介紹, 我們知道在隨機量化權重中加入近似因子這一優化對于實現來說會造成比較大的額外成本, 這主要是因為量化通道的選取過程是“隨機的”, 而每個通道被選取的概率也是基于對二值化誤差的計算得到的. 因此, 每次對二值化通道的選取過程都需要對所有通道的二值化誤差進行求解, 而當引入XNOR-net算法中的近似因子操作后, 又增加了求每組通道上近似因子一項, 額外的計算成本變得更高, 實現更加復雜.
本節提出的改進辦法是將“隨機”改為“確定”, 只在初始時對每個通道計算一次二值化誤差, 然后確定進行二值化的通道. 即每次訓練給出確定的二值化通道, 這樣可以避免每次都對不需要量化的通道進行計算, 在有效節省訓練時間的同時, 也簡化了深度學習框架中對這一算法的實現過程. 由于“隨機量化網絡”結合了誤差的大小來選取量化通道, 而我們“確定二值化通道”的方法也在初始時利用了這一優點, 因此具有單次迭代訓練比較容易收斂、后期迭代比前期迭代更快收斂的特點.
但是“確定權重二值化”的方法確實也存在一定的問題. 我們知道, “確定”方式可以有效地節省訓練時間,在訓練過程中, 隨著訓練輪數的增加, 誤差較大的通道也能逐漸收斂. 雖然不能保證每次訓練都對誤差最小的一些通道進行二值化, 但是網絡最終都會收斂, 因此是否每次都選擇誤差最小的一些通道對訓練結果影響甚微.
“階段量化”則是一種純線性的訓練模式, 由于只在初始時對每個通道計算一次二值化誤差, 每次訓練只二值化固定的通道, 其他通道不會出現二值化, 因此整體上看每次迭代的訓練難度只與二值化比例有關.這樣做雖然會導致每次二值化比例提升后都需要對所有新產生的二值化權重進行調整, 看上去后期訓練收斂的過程會相對變慢, 但是因為二值化的選取變成了確定式的, 使得前期訓練收斂變得相對更容易, 因此整體上看并不會增加訓練的難度. 改進后的階段量化方式示意圖如圖3所示.

圖3 改進后的階段量化方式示意圖
實驗表明, 采用了這一改變后的隨機量化網絡, 也就是“確定權重二值化網絡”, 通過更新二值化的比例并進行finetune, 不僅可以有效提升二值化通道選取的效率, 同時依然能夠得到與全精度的預訓練模型準確率相近的二值網絡模型. 因此, 本文繼續在這一思路上展開研究, 將“確定”的思想推廣到BNN乃至整個XNOR-net.
網絡量化分為輸入量化和權值量化兩種. 而同時將輸入和權值量化會造成網絡精度的大幅下降. 針對這個問題, 高階殘差量化HORQ方法提出了一種針對輸入的高階殘差二值量化的方法, 既能夠利用二值化計算來加快網絡的計算, 又能夠保證訓練所得的二值化網絡模型有較高的準確率.
HORQ方法可以作為一個基礎的二值量化的方法用于網絡的輸入二值化中, 能夠在保證網絡模型精度的前提下, 利用二值量化的技術提升網絡的計算速度, 而且同時可以根據實際的硬件需要來調整殘差階數以適應需求.
HORQ可以看做是XNOR-net的改進版, 要對權重和輸入進行高階殘差近似, 先按照 XNOR-net的方法對權重和輸入進行一階二值近似, 下面以輸入為例進行高階殘差近似的分析:

隨后, 就可以由此定義輸入殘差張量, 可以看出,R1(X)是用來表征二值化后輸入信息的損失:

繼續對殘差進行二值量化, 就可以得到輸入X的二階二值近似:

那么, 現在可以定義輸入X的二階殘差近似:

類似的, 我們可以定義出輸入X的高階殘差, 以及相應的高階殘差量化:

顯然, 如果階數越高, 輸入的信息損失會越少, 但是計算量會越大. 我們所熟悉的XNOR-net算法其實用的是一階殘差近似, 因此會有很大的精度損失. 而HORQ高階殘差算法可以極大程度上保證網絡的精度, 同時為了避免過于復雜的計算量, 我們一般采用二階殘差近似來進行實驗.
這個方法有很大的發展前景. 對于一般的深度學習網絡, HORQ 方法能夠在很大程度上加速深度網絡的計算速度. 由于網絡每一層的輸入和權值都被二值化, 模型的前向傳播時間得到大大降低, 同時存儲模型所需的空間也得到大大壓縮, 這就使得在資源受限的小運算平臺(例如手機和筆記本)上運行大規模的深度網絡模型成為可能. 另外, 高階殘差量化的方法能夠使得網絡精度得到保證, 使得網絡不再會因為簡單的二值化方法而造成精度的大幅下降.
這一部分介紹基于高階殘差量化網絡所提出的二值網絡的“分階段殘差二值化”訓練優化算法, 該算法分別對權重和輸入的二值化過程分階段進行處理, 從而提高了最終二值模型的精度. 簡單來說, “分階段”也是一種確定式二值化, 但是與之前確定權重二值化不同的是, 這一算法將解決BNN的訓練精度問題, 分別對權重和輸入的二值化過程分階段進行處理, 從而提高最終二值模型的精度.
本文基于高階殘差量化網絡的思路設計了二值網絡的“分階段殘差二值化”算法, 該算法使用殘差來彌補精度損失. 下面將分為兩個部分進行介紹: 第一, “分階段二值化”算法的實現; 第二, 基于高階殘差量化方法改進的“分階段殘差二值化”算法的實現.
2.1.1 “分階段二值化”算法的推導流程
在確定權重二值化的基礎上, 參考XNOR-net對輸入數據的處理辦法, 給二值化輸入增加近似因子,以此來彌補二值化給網絡帶來的精度損失, 確保二值模型的準確率. 此項工作的出發點是由于BWN在速度性能提升方面的作用有限, 這就要求必須實現對BNN的分階段二值化, 以得到精度更高的模型, 實現深度神經網絡在低配硬件下的實時、準確運行.
通過圖4的表示方式, 可以很容易發現分階段對中間值進行二值化處理時, 需要求近似核的部分恰好是不同通道上對應的相同位置.

圖4 關于中間值矩陣的“分階段二值化”示意圖
對輸入近似因子的推導過程如下所示:

需要特別注意, 使用“分階段二值化” 算法處理中間值時與處理權重不一樣的地方:
2.1.2 “分階段二值化”算法的實現過程
至此, 我們通過理論分析和數值推導已經得到了“分階段二值化”算法, 算法具體過程總結如下:
1) 首先, 實現對權重的階段二值化, 將模型在BWN結構中達到接近單精度浮點數據的模型準確率. 階段二值化根據網絡中設定的“二值化比例”ratio這一參數,選取權重矩陣的前ratio行, 即總共n組通道權重中的前ratio進行二值化,n為該層神經網絡輸出的特征數.
2) 然后, 當權重二值化的比例達到 100%, 并將其模型finetune到接近全精度模型的準確率后, 開始提高中間值的二值化比例. 關于二值化中間值的選取方式與權重類似, 按照中間值矩陣的列進行確定式選擇. 恢復到特征圖的形狀, 則可以理解成從特征圖的左上角開始, 以滑動窗口的方式向右、向下逐漸覆蓋整個特征圖.
3) 最后, 當中間值的二值化比例也達到100%后,繼續finetune直到模型的準確率不再提高.
在“分階段二值化”算法的基礎上, 本文基于高階殘差量化網絡的思想, 來進一步改進這一針對BNN和XNOR-net的訓練優化算法. 現有的XNOR-net算法在使用中間值的近似因子時, 可以將其看做是一種乘法近似, 即:

這里我們使用一種新的近似因子求解方法, 即:

這樣卷積的計算過程就由式(5)變為:

本文基于高階殘差量化的思想對“分階段二值化”算法進行了改進, 提出了二值網絡的“分階段殘差二值化”訓練優化算法, 該算法分別對權重和輸入的二值化過程“分階段”進行處理, 從而提高了最終二值化網絡模型的精度.
本文的實驗主要分為兩個部分:
第一部分是本文的重點部分, 即對二值網絡的訓練過程進行優化, 使用本文所提出的二值網絡“分階段殘差二值化”算法, 以期在實現深度模型實時運行和降低運行內存占用的同時, 提升二值化網絡模型的訓練精度, 并且達到更好的識別準確率, 繼續保有深度模型的優勢.
第二部分主要是驗證XNOR-net以及隨機量化網絡在特殊層上(這里以DECONV層為例)的有效性,并驗證XNOR-net網絡相較于原始的全精度網絡在效率上的優勢.
3.1.1 數據集及評判標準
本文實驗所使用的是CITYSCAPES數據集.CITYSCAPES評測數據集是一個大規模數據集, 在2015年由奔馳公司推動發布, 是目前公認的自動駕駛領域內最具權威性和專業性的圖像語義分割評測集之一. 其主要關注真實場景下的城區道路環境理解, 在任務難度更高, 并且更貼近于自動駕駛等熱門需求.
CITYSCAPES評測集包含5000多張高質量的像素級標注街景圖片, 其主要被應用在圖像語義分割任務[15]中, 用于評估視覺算法在城區場景語義理解方面的性能. 這其中共包含50個城市不同情況下的街景,以及30類物體標注. CITYSCAPES主要專注于像素級別的分割和識別, 雖然其圖像相對于真實的駕駛場景來說較干凈, 但像素級別的分割和識別卻提出了更高的要求. CITYSCAPES使用標準的PASCAL VOC IoU(intersection-over-union)得分來評估預測結果與真實場景之間的匹配準確度, 每個像素點的預測結果都會直接影響到最終得分.
3.1.2 實驗設置
普通的神經網絡層主要包括卷積層、全連層等,一般的二值網絡算法也都是在CONV層上進行研究,而且大量實驗證明二值深度學習框架在基本層上的計算是正確的. 為了進一步驗證其他特殊層的實現沒有問題, 本文將算法改進拓展到其他特殊神經網絡層, 這里以DECONV層為例進行驗證.
本文對一套利用到DECONV層的網絡結構進行了復現, 并在CITYSCAPES數據集上進行了訓練. 訓練發現,在除最后一層之外的其他CONV、DECONV層使用XNOR-net算法和隨機量化算法實現的網絡層, 能夠使模型正常收斂, 初步證明了在特殊層中算法實現的正確性.
但是對于一些大型的分類網絡或回歸模型, 二值網絡往往不能滿足準確率的要求, 這就導致無法在實際生產中大規模使用二值網絡, 也就無法真正發揮它速度快、空間小、能耗低的性能優勢. 為了更好地保持深度模型在二值網絡中的訓練結果, 本文結合隨機量化算法和XNOR-net進一步提出了“分階段殘差二值化”這一訓練優化算法, 并通過實驗驗證了該算法能在不增加使用復雜度的條件下, 實現二值網絡模型在精度上的有效提升.
3.2.1 “分階段殘差二值化”算法在測試集上的性能
為了驗證本文設計的“分階段殘差二值化”算法的有效性, 本節將對采用了“分階段殘差二值化”算法、高階殘差量化算法、隨機量化算法訓練所得模型的分割mask效果圖與全精度模型的分割mask效果圖進行對比, 由于采用了隨機量化算法的網絡在訓練集上不能收斂, 這里將不考慮基于該算法模型的分割結果. 最終的分割mask效果如圖5所示.
通過上述實驗可以看出: (1)高階殘差量化模型比本文設計實現的分階段殘差二值化模型的分割效果要差, 不能清晰地分割圖片中的物體; (2) “分階段殘差二值化”模型的分割效果接近原始全精度模型的分割效果, 皆能有效地分割圖片中的物體.

圖5 高階殘差量化、“分階段殘差二值化”、原始全精度分割模型效果對比
3.2.2 “分階段殘差二值化”算法在訓練集上的性能
為了驗證“分階段殘差二值化”算法的可行性與高效性, 本節將對“分階段殘差二值化”算法的訓練結果進行分析, 并與高階殘差量化網絡、隨機量化網絡、原始全精度網絡的訓練結果進行對比. 對于“分階段殘差二值化”網絡的訓練, 首先對中間值進行階段二值化,等模型finetune完再對權重進行分階段二值化.
實驗中分別設置了不同的中間值二值化比例和權重二值化比例, 并記錄了相對應的訓練輪數. 實驗結果如圖6所示.

圖6 分階段殘差二值化訓練結果
通過上面的訓練結果我們可以發現該算法帶來的最大好處在于能夠使二值網絡訓練的模型更好地逼近原始全精度模型的效果.
除此之外, 我們還在訓練集上對比了“分階段殘差二值化”模型與原始全精度模型、高階殘差量化模型、隨機量化模型在accuracy和loss兩大指標上的差異, 結果如表1所示.

表1 “分階段殘差二值化”模型與原始全精度模型、高階殘差量化模型、隨機量化模型的量化指標對比
綜合上述實驗可以看出: (1)隨機量化模型難以收斂; (2)“分階段殘差二值化”模型比高階殘差量化模型收斂得快, 而且訓練所得到的accuracy比高階殘差量化模型要高; (3)無論在accuracy還是在loss上, “分階段殘差二值化”模型都與單精度浮點模型十分接近.
3.2.3 “分階段殘差二值化”算法在特殊層上的實現
為了進一步驗證“分階段殘差二值化”算法不僅能在神經網絡的基本層(例如: 卷積層, 全連層等)上實現, 也能在其他特殊層上正常實現, 本小節將以DECONV層為例來驗證“分階段殘差二值化”算法的通用性.
我們對前文提到的基于隨機量化算法以及基于高階殘差量化算法的網絡進行了實驗, 通過觀察實驗結果不難發現, 最后一層的DECONV在使用了這兩種算法的網絡上不能有效收斂, 而采用了“分階段殘差二值化”的訓練方式后, 整個網絡的收斂結果明顯提升.
我們對比了幾種結構下只針對最后一層特殊層,即DECONV層進行二值化(計算量占比達到40%)的實驗結果, 如表2所示.

表2 “分階段殘差二值化”算法的實驗
綜合上述實驗可以看出: (1)基于隨機量化算法和高階殘差量化算法的網絡不能用于特殊層; (2)基于“分階段殘差二值化”算法的網絡在特殊層上能正常收斂, 因此該算法能適用于特殊層.
1) 在DECONV層上的實現
首先, 我們對一套利用到DECONV層的網絡結構進行了復現, 并且在CITYSCAPES數據集上進行了訓練. 通過訓練, 我們發現: 在除最后一層之外的其他CONV層、DECONV層使用“分階段殘差二值化”算法實現的網絡層能夠使模型正常收斂, 初步證明了在特殊層中算法實現的正確性, 實驗結果如表3所示.

表3 對DECONV使用“分階段殘差二值化”訓練的效果
通過分析表3中的數據, 我們可以發現, 大部分網絡層(包括特殊層)采用了“分階段殘差二值化”算法的模型后, 可以達到與全精度網絡訓練得到的模型相近的精度效果.
2) 速度對比
其次, 除了對識別精度的驗證外, 我們更關注的是二值模型的運行速度, 關心它能否實現CPU環境下的實時運行. 因此我們在CPU硬件環境下, 對不同規模、不同種類的神經網絡進行了速度方面的對比, 統計了二值模型相比于全精度權重模型的加速比. 實驗結果如表4所示.
表 4 中, Full代表 Full precision, staged 代表“staged residual binarization”. 結合表中統計的實驗結果, 分析可得: “分階段殘差二值化”所統計的時間不僅有異或位運算和popcount函數所構成的二值計算部分, 還包括對權重的按位壓縮處理, 以及對中間值按位壓縮改造過的im2col處理. 而全精度的運行時間則只是統計了乘法運算部分, 原始的im2col處理并沒有包含在內. 如果通過caffe本身的time函數計算時間以及在函數外部打印時間兩種方式去統計神經網絡層的運行時間, 得到的結果反映出“分階段殘差二值化” 能夠實現5倍左右的提速.

表4 原始全精度模型與“分階段殘差二值化”模型在不同結構上運行的用時對比(單位: ms)
綜上所述, 本文基于高階殘差量化算法所設計的“分階段殘差二值化”算法, 能夠有效利用全精度的預訓練模型, 降低了二值網絡的訓練難度, 使二值網絡最終收斂到與原始全精度深度模型接近的準確率水平.在語義分割等復雜任務上進行的實驗結果表明, 本文所提出的“分階段殘差二值化”算法對于二值網絡的優化訓練、提升模型準確率有著非常明顯的作用, 而且不增加測試計算量, 從而保持了二值網絡速度快、空間小、能耗低的優勢.
本文主要工作有兩點: (1) 對CNN中二值網絡的實現及訓練技巧進行優化總結, 構建了“二值深度學習框架”;(2) 基于高階殘差量化網絡提出了一種全新的“二值網絡的分階段殘差二值化算法”. 前一項工作包含對二值網絡結構的理論研究及優化調整; 后者所提出的算法能夠顯著提升二值網絡訓練效果, 得到接近全精度神經網絡的識別準確率, 具有較高的現實意義和使用價值.