張文燁,尚方信,郭 浩,3
(1.中國人民大學(xué)信息學(xué)院,北京 100872;2.山西虛擬現(xiàn)實產(chǎn)業(yè)技術(shù)研究院有限公司,太原 030024;3.太原理工大學(xué)信息與計算機學(xué)院,太原030024)(*通信作者電子郵箱slicent@foxmail.com)
近年來,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)被成功應(yīng)用于許多計算機視覺問題的解決上,例如圖像分類[1-2]、目標檢測[3]和實例分割[4]等。但隨著神經(jīng)網(wǎng)絡(luò)性能的增強,這些模型所需的運算量也顯著上升?,F(xiàn)代深度學(xué)習模型大多運行在大容量內(nèi)存和高性能計算設(shè)備上,如圖形處理器(Graphics Processing Unit,GPU),帶來高昂計算成本;同時,移動設(shè)備和嵌入式設(shè)備搭載神經(jīng)網(wǎng)絡(luò)模型的需求與日俱增,而相關(guān)應(yīng)用程序的運算性能、功耗和可用內(nèi)存,均受設(shè)備平臺的限制。因此,對計算和內(nèi)存的高需求成為在移動設(shè)備上部署深度神經(jīng)網(wǎng)絡(luò)模型的瓶頸。
目前,解決這一矛盾的途徑可分為三類:即模型量化[5-6]、模型剪枝[7-8]和神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索[9]。其中,量化神經(jīng)網(wǎng)絡(luò)及二值神經(jīng)網(wǎng)絡(luò)(Binarized Neural Network,BNN),致力于在取值有限的離散空間中,表征卷積神經(jīng)網(wǎng)絡(luò)的權(quán)值。與32 位浮點數(shù)運算相比,較低位寬環(huán)境下進行的運算顯著降低了運算量。特別地,二值神經(jīng)網(wǎng)絡(luò)將權(quán)值和激活函數(shù)輸出約束至二值類型(即+1或-1),使得乘法和累加運算可以被二進制位運算代替,大幅降低了運算成本;然而,對網(wǎng)絡(luò)權(quán)值與激活值的量化操作將限制相關(guān)數(shù)值的信息表征能力,在低位寬環(huán)境下將導(dǎo)致嚴重的預(yù)測精度損失。為了兼顧運算效率與模型性能,Wu 等[10]基于微分神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索技術(shù),在盡量保持預(yù)測精度的同時,逐層搜索特定的量化位寬(bit 數(shù)),構(gòu)建了混合精度模型。另一方面,2019 年,Chen 等[11]提出了Octave 卷積,將輸入的特征圖分解為高頻信息和低頻信息兩部分,使用降采樣壓縮了低頻特征圖分辨率,在不損失預(yù)測精度的同時,顯著降低了卷積運算量。
與最初的量化神經(jīng)網(wǎng)絡(luò)相比,混合精度架構(gòu)在模型性能上有了明顯進步。但是,現(xiàn)有方法大多僅考慮圖像語義信息,或依賴損失函數(shù)及梯度指導(dǎo)精度混合模式,沒有考慮不同位置、不同深度的卷積核對圖像信息成分的側(cè)重。
一幅如圖1(a)所示的自然圖像可以被分解為緩慢變化的,描述圖像全局結(jié)構(gòu)信息的低頻分量(如圖1(b))及描述快速變化的精細局部細節(jié)的高頻分量(如圖1(c));同時,由于圖像低頻分量在全局范圍上緩慢變化,其對數(shù)值量化造成的信息損失不敏感。本文利用Octave 卷積的高低頻信息混合架構(gòu),提出一種新的混合精度方法,在每一個卷積運算層面實現(xiàn)了量化特征圖的混合,并未增加運算量。其次,得益于Octave卷積是一種網(wǎng)絡(luò)結(jié)構(gòu)無關(guān)的傳統(tǒng)卷積層替代方案,本文方法可即插即用地適配任意卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)。與Octave卷積相比,本文方法進一步節(jié)省了運算成本與內(nèi)存需求。
圖1 圖像的高低頻分量示意圖Fig.1 High-and low-frequency components of an image
作為卷積神經(jīng)網(wǎng)絡(luò)的輸入信號,自然圖像通常包含多種頻率成分,其中,圖像全局信息通常由低頻成分編碼,而圖像局部的精細結(jié)構(gòu)則常由高頻成分來表現(xiàn)。如圖2 所示,現(xiàn)有的基于傳統(tǒng)卷積方法(vanilla convolution)搭建的卷積神經(jīng)網(wǎng)絡(luò),其中一部分卷積核被訓(xùn)練用于提取低頻特征,另一部分則專注于提取高頻特征。傳統(tǒng)卷積方法未考慮圖像頻率信息的差異,未針對不同頻率的特征圖進行有差別的處理;同時,低頻信息在空間上變化較緩慢,因此對特征圖分辨率不敏感。若實現(xiàn)高低頻信息的差異化處理,則可以由降低低頻特征圖分辨率的方式,減少卷積運算量。
圖2 AlexNet的第一層卷積核的可視化Fig.2 Visualization of the first layer’s convolution kernel of AlexNet
2019 年,Chen 等[11]提出了Octave 卷積方法,如圖3 所示。圖中XH、XL代表輸入的高頻與低頻特征圖;WH→H、WL→L分別代表高頻至高頻、低頻至低頻的卷積核參數(shù);WH→L、WL→H代表用于高頻與低頻信息融合的卷積核參數(shù)。Octave 卷積方法將輸入卷積層的特征圖沿通道方向分為兩組,由高低頻卷積核分別處理并進行升采樣/降采樣后,進行高低頻分量的混合,最終輸出特征圖的高頻與低頻分量。輸出通道數(shù)之和與傳統(tǒng)卷積輸出通道數(shù)相同,此外,空間上變化較緩慢的低頻特征圖分辨率被減半,以節(jié)約運算量。
圖3 Octave卷積方法示意圖Fig.3 Schematic diagram of Octave convolution method
研究人員指出,Octave 卷積并未改變輸出特征圖的總通道數(shù),也未改變卷積核參數(shù)量,而是專注于降低卷積神經(jīng)網(wǎng)絡(luò)在空間維度(特征圖寬高維度)的冗余,因而該方法與現(xiàn)有的多種網(wǎng)絡(luò)拓撲結(jié)構(gòu)和減少網(wǎng)絡(luò)特征冗余的方法是正交和互補的,并可以即插即用地直接替代現(xiàn)有卷積層,不改變卷積網(wǎng)絡(luò)整體的網(wǎng)絡(luò)尺寸和模型參數(shù)量。
卷積神經(jīng)網(wǎng)絡(luò)及相關(guān)改進方法在計算機視覺問題的解決上取得了廣泛成功,但絕大多數(shù)模型的研究工作是在32 位浮點數(shù)環(huán)境下進行的,并需要同樣的運算環(huán)境來部署模型。與此同時,卷積神經(jīng)網(wǎng)絡(luò)模型對于運算性能和內(nèi)存的高要求,成為限制相關(guān)方法部署于移動設(shè)備和嵌入式設(shè)備的瓶頸。
數(shù)值量化是指減少表示數(shù)值的二進制數(shù)位數(shù)的操作,兩組進行乘法/累加運算的二進制數(shù)位數(shù)越短,則運算量越小。研究人員發(fā)現(xiàn),對神經(jīng)網(wǎng)絡(luò)中權(quán)值與激活值進行量化,不僅有助于加快模型運算速度,降低內(nèi)存需求和運算成本,還可以減少模型權(quán)值文件的存儲大小,節(jié)約硬盤存儲容量。自2013年Bengio等[12]提出直通梯度估計(Straight Through gradient Estimator,STE)方法,為量化模型的訓(xùn)練提供了計算方法基礎(chǔ)后,研究人員已廣泛證明,可以使用8位整數(shù)(INT8)來表示模型權(quán)值和激活值,且不會導(dǎo)致模型精度的顯著損失。目前,研究人員致力于在不顯著損失模型精度的前提下,將神經(jīng)網(wǎng)絡(luò)量化至更低的位寬(如4/2/1 bits),以進一步壓縮模型對運算資源的需求。
2016 年,Zhou 等[6]提出了DoReFa-Net,即基于DoReFa 量化方法構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò),該方法支持模型權(quán)值、激活值與梯度被量化至不同位寬。要執(zhí)行DoReFa量化方法,首先需要定義如下的量化方程:
在DoReFa 量化方法中,激活值xf被裁剪至[0,1],并按照如下方式量化至離散值xq:
模型權(quán)值wf按照式(3)、(4)進行量化:
DoReFa 首次將梯度納入量化的范圍內(nèi),但量化神經(jīng)網(wǎng)絡(luò)的主要應(yīng)用場景是在高運算性能設(shè)備(如GPU)上進行模型訓(xùn)練和超參搜索等工作;而在移動端與嵌入式設(shè)備上,僅執(zhí)行加載預(yù)訓(xùn)練權(quán)值和推斷計算,無需考慮梯度。此外,研究人員發(fā)現(xiàn),使用DoReFa 量化方法搭建的二值神經(jīng)網(wǎng)絡(luò),難以取得令人滿意的預(yù)測精度。
近年來,研究人員在STE 方法及其他梯度估計方法的基礎(chǔ)上,提出了多種二值神經(jīng)網(wǎng)絡(luò)方法。如Rastegari 等[13]于2016 年提出的XNOR-Net 不僅將模型權(quán)值與卷積層輸入均轉(zhuǎn)化為二值表示,并使用同或邏輯運算(XNOR)代替卷積神經(jīng)網(wǎng)絡(luò)中的二進制向量點乘;通過引入比例因子的方法,幫助多個二值卷積核模擬全精度卷積核權(quán)值。2018 年,Liu 等[14]提出了Bi-Real Net,近似求解了不可微符號函數(shù)的梯度公式,并使用裁剪函數(shù)替代線性整流函數(shù)(Rectified Linear Unit,ReLU)為模型提供非線性變換。除通用的模型量化方法以外,2019 年,研究人員探索了目標檢測模型的量化壓縮問題,并取得成功[15]。此外,壓縮后模型的部署問題也在近期取得進展,如量化后模型已可以在FPGA 平臺[16]、ARM 移動端平臺[17]等算力敏感的場景上完成部署。
傳統(tǒng)卷積方法在輸入和輸出特征圖在所有通道上均使用相同的空間分辨率。同時,Octave Conv 的工作證明,自然圖像及其特征圖可以被分解為編碼全局信息的低頻分量與編碼局部細節(jié)信息的高頻分量,且現(xiàn)有卷積方法在空間分辨率上存在冗余。
為便于說明,本文將以四維張量表示的二維卷積核,沿卷積核的空間方向展開為三維張量。如圖4 所示,Octave Conv卷積核WH→H、WL→H、WH→L、WL→L可分別被看作傳統(tǒng)卷積核在輸入通道與輸出通道方向按比例的切分結(jié)果;ain和aout分別代表輸入特征圖與輸出特征圖在通道方向被分解為低頻特征圖的比例;k為二維卷積核尺寸。
圖4 QOCN卷積核示意圖Fig.4 Schematic diagram of convolution kernel of QOCN
目前,量化卷積神經(jīng)網(wǎng)絡(luò)方法大多立足于對傳統(tǒng)卷積方法的卷積核的量化操作,在空間分辨率上同樣存在冗余信息。為進一步降低量化神經(jīng)網(wǎng)絡(luò)的運算量,本文根據(jù)Octave Conv的思想將輸入特征圖分解為高頻和低頻兩部分,并將處理低頻信息的卷積核WL→L,WL→H使用Bi-Real 方法量化至1 bit,處理高頻信息的卷積核WH→H,WH→L由DoReFa 方法量化至較高的位寬。接著,沿用Octave Conv 的高低頻混合架構(gòu),同時完成頻率混合與量化位寬混合。這樣的量化卷積運算規(guī)則被命名為QOCN 卷積(Quantized Octave Convolution,QOCN),下文簡稱QOCN Conv。具體地,本文在實驗部分分別將高頻網(wǎng)絡(luò)分支量化至2 bits、4 bits、8 bits 和16 bits,并進行了對比實驗。
結(jié)合BiReal量化方法與DoReFa量化方法,結(jié)合式(4),有卷積核量化函數(shù)如下:
值得注意的是,對卷積運算的量化操作僅約束了卷積核的離散取值空間,并未限制輸入特征圖,即激活值的取值范圍。而全精度的激活張量中常常包含統(tǒng)計上的異常值,進而影響量化卷積輸出特征圖的取值,并帶來了額外的運算量。目前主流的量化方法以量化激活值的方式解決這一問題。與量化卷積類似,本文提出的QOCN 方法基于Bi-Real 方法的1 bit 激活函數(shù)與DoReFa 對激活函數(shù)的量化操作,將低頻卷積的輸出特征圖量化至1 bit;高頻卷積的輸出特征圖則量化至與高頻卷積核相同的位寬。
現(xiàn)代卷積神經(jīng)網(wǎng)絡(luò)中,通常由卷積層、歸一化層和非線性激活層組成一個基本單元。本文方法需要通過量化激活函數(shù)的方式提供量化卷積圖,一個完整的QOCN Module 同樣由卷積、歸一化和激活函數(shù)三部分組成,輸入的高低頻特征圖經(jīng)QOCN Conv 處理后,輸出混合精度的高低頻特征圖并分別進行歸一化處理。接著,高頻特征圖由DoReFa Net 方法的量化激活函數(shù)處理,低頻特征圖由Bi-Real Net方法的激活函數(shù)(符號函數(shù))處理,分別進行非線性變換,最終輸出量化的特征圖。
在梯度反向傳播階段,BiReal 方法對1 bit 位寬下激活函數(shù)和量化卷積的梯度進行了近似估計,DoReFa 方法基于直通梯度估計方法,給出了量化激活函數(shù)與量化卷積的梯度估計。本文沿用了相關(guān)設(shè)定。
本章首先基于CIFAR-10/100 和ImageNet 在圖像分類任務(wù)上驗證了本文提出的QOCN 方法性能,即使用不同位寬分別量化卷積組內(nèi)的高低頻分量,將多個卷積組按照特定拓撲結(jié)構(gòu)相連,如殘差神經(jīng)網(wǎng)絡(luò)(Residual neural Network,ResNet)、MobileNet 等,作為一個整體進行實驗。實驗結(jié)果表明,基于Octave Conv 卷積方法對高低頻特征圖的混合機制設(shè)計的混合精度模型,可以在較低的量化位寬環(huán)境下達到與全精度模型接近的預(yù)測精度。將QOCN模型按照低頻位寬+高頻位寬的方式命名,如QOCN(1+4)代表模型中每一卷積組的低頻分支被量化至1 bit,而高頻分支被量化至4 bits。其次,為進一步理解QOCN方法的工作原理,體現(xiàn)基于不同位寬的卷積核獲得的卷積結(jié)果,本文基于在ImageNet 上訓(xùn)練的ResNet18-QOCN(1+8)模型進行了不同位寬的特征圖可視化,對比了量化操作對高低頻特征圖的信息表征能力的影響。本文實驗代碼:https://github.com/parap1uie-s/quantization_octconv。
為驗證混合精度的QOCN 方法的有效性,本文在3 個公開數(shù)據(jù)集CIFAR-10、CIFAR-100 和ImageNet 上進行了對比實驗,并使用標準數(shù)據(jù)擴增策略。具體來說,本文在CIFAR-10/100 上對訓(xùn)練集圖像進行隨機水平翻轉(zhuǎn)和隨機垂直翻轉(zhuǎn);在ImageNet 訓(xùn)練集上使用隨機裁剪、隨機水平翻轉(zhuǎn)和隨機垂直翻轉(zhuǎn),并調(diào)整圖像大小至224 px×224 px,ImageNet驗證集上將圖像大小調(diào)整至256 px×256 px 并進行中心裁剪至224 px,以匹配模型輸入尺寸。在數(shù)據(jù)預(yù)處理環(huán)節(jié),本文根據(jù)各數(shù)據(jù)集的均值和方差對圖像進行了歸一化。
在相同迭代輪次與訓(xùn)練計劃的約束下,基于預(yù)訓(xùn)練全精度模型權(quán)值訓(xùn)練出的量化模型,其預(yù)測精度要高于從隨機初始狀態(tài)開始訓(xùn)練的量化模型。QOCN 模型均以相應(yīng)的預(yù)訓(xùn)練全精度模型權(quán)值作為初始權(quán)值。本文實驗詳細訓(xùn)練計劃,如表1 所示。除表中列出數(shù)據(jù)以外,本文實驗基于PyTorch1.4和4x Nvidia-V100 GPU 完成,訓(xùn)練過程中使用包含動量項的隨機梯度下降(Stochastic Gradient Descent,SGD)優(yōu)化器調(diào)整模型參數(shù),BatchSize=256,αin與αout均為0.5。
表1 訓(xùn)練計劃Tab.1 Training plan
表2~4 展示了傳統(tǒng)卷積(Vanilla Conv)、Octave Conv 與QOCN 在相同的網(wǎng)絡(luò)架構(gòu)下搭建模型的性能表現(xiàn),以正確率(Top-1 Accuracy)為度量模型性能的指標,其中,正確率是指預(yù)測類別正確的樣本數(shù)量與總樣本量的比值。特別地,Top-1正確率以模型輸出概率最大值所屬類別與真實類別是否相等作為預(yù)測正確的標準。首先,本文在最為簡單的CIFAR-10數(shù)據(jù)集上采用ResNet-20 和ResNet-56 結(jié)構(gòu),對比了QOCN 方法與基線方法(Baseline)的性能。如表2 所示,采用Octave 卷積的全精度模型(32 bits Octave Conv)取得了最高的正確率,而高低頻分支均被量化至1 bit 的模型(1 bit Octave Conv)分類性能與全精度模型具有顯著差異;高低頻分支均被量化至8 bits 時(8 bits Octave Conv),可獲得與32 bits 全精度模型接近的分類性能。這表明全精度ResNet 結(jié)構(gòu)在CIFAR-10 分類任務(wù)上具有冗余參數(shù)和模型容量,但不足以支持全部運算在1 bit下進行。采用本文提出的混合精度方法時,僅具有2 bits高頻分支、低頻分支仍保持1 bit 位寬的QOCN(1+2),其分類性能已接近全精度模型;QOCN(1+4)則取得了與8 bit Octave Conv 接近的分類性能,說明了混合精度方法的有效性,且進一步縮小了與全精度模型的差異。
表2 QOCN和基線模型在CIFAR-10數(shù)據(jù)集上的分類性能對比Tab.2 Classification performance comparison of QOCN with baseline models on CIFAR-10 dataset
值得注意的是,本文提出的混合量化方法試圖取得模型性能(正確率)與運算代價之間的平衡,即盡可能少地損失正確率以換取盡可能多地減少運算代價。在相同模型結(jié)構(gòu)前提下,以加載卷積參數(shù)所消耗的內(nèi)存空間計算,加載全1 bit模型占用內(nèi)存約為全精度模型的3%;加載全8 bits模型占用內(nèi)存約為全精度模型的25%。當αin與αout均為0.5時,以QOCN(1+8)為例,占用內(nèi)存約為全精度模型的14%,全8 bits模型的56%;更激進的QOCN(1+2)則僅使用8 bits模型18%的內(nèi)存消耗,獲得與1 bit模型相比近11%的正確率增幅,接近了全8 bits 模型的性能。特別地,定制化的計算設(shè)備使用移位運算實現(xiàn)1 bit參數(shù)相關(guān)的運算,其運算延時遠小于全精度模型的1/32。
CIFAR-10 數(shù)據(jù)集僅要求模型提供較為簡單的10 分類能力。為更加充分地展示QOCN 方法的優(yōu)勢,說明該方法兼顧了模型分類性能與運算資源需求壓縮,本文引入了更為復(fù)雜的CIFAR-100 和ImageNet 數(shù)據(jù)集。相關(guān)實驗數(shù)據(jù)如表3 和表4所示。
表3 QOCN和基線模型在CIFAR-100數(shù)據(jù)集上的分類性能對比Tab.3 Classification performance comparison of QOCN with baseline models on CIFAR-100 dataset
表4 QOCN和基線模型在ImageNet數(shù)據(jù)集上的分類性能對比Tab.4 Classification performance comparison of QOCN with baseline models on ImageNet dataset
在CIFAR-100 的實驗中,本文選取MobileNet V2、ResNet-26 和ResNet-101 分別代表主流的輕量化網(wǎng)絡(luò)、中等規(guī)模網(wǎng)絡(luò)和大型網(wǎng)絡(luò)。其中,被量化至1 bit的MobileNet V2表現(xiàn)最差,證明輕量化網(wǎng)絡(luò)具有更少的冗余運算量;但基于QOCN(1+2)構(gòu)建的MobileNet V2 的分類性能已顯著上升。同時,QOCN(1+4)構(gòu)建的所有模型,在CIFAR-100和ImageNet上均可以獲得與全精度方法接近的分類性能。
為充分展示QOCN 混合精度方法的有效性,本文在ImageNet 數(shù)據(jù)集上進行進一步實驗,并與主流神經(jīng)網(wǎng)絡(luò)量化方法XNOR-Net[13]、DoReFa-Net[6]和層量化網(wǎng)絡(luò)(Layer-wise Quantization Net,LQ-Net)[18]對比,并使用與對比方法相同的模型結(jié)構(gòu)與量化方案,為與前段實驗區(qū)分,本段實驗以“QOCN*”標注。具體地,將典型的ResNet-18 結(jié)構(gòu)中,“卷積+批歸一化+激活函數(shù)”的結(jié)構(gòu)替換為“批歸一化+卷積+激活函數(shù)”的結(jié)構(gòu),并解耦低頻分支的權(quán)值與激活值的量化位寬,W為量化權(quán)值位寬,A 為激活值位寬;保持高頻分支量化位寬與激活值一致。實驗結(jié)果如表5 所示。其中,XNOR-Net 方法僅用于1 bit 模型量化,作為基線結(jié)果;LQ-Net 與Dorefa-Net 均遵循卷積結(jié)果量化與激活值量化的混合模式,且使用自適應(yīng)量化器的LQ-Net 方法指標上優(yōu)于Dorefa-Net。采用高低頻分支卷積的本文方法可更有效地提取圖像中全局與局部信息,并在相同量化參數(shù)下獲得了優(yōu)于上述基線方法的正確率。
表5 所提方法與主流模型混合量化方法對比Tab.5 Comparison of the proposed methods with mainstream mixed precision methods for model
為進一步理解QOCN 方法的工作原理,本節(jié)從ResNet18-QOCN(1+8)模型Stage1的輸出抽取了特征圖。由于原始特征圖通道數(shù)為64,不便進行可視化。為盡量反映特征圖的原始分布,本文于32 bits位寬下,將特征圖沿通道方向逐像素平均后,未進行二值化等后處理,因此低頻分量特征圖可視化結(jié)果并非嚴格的二值化圖像。如圖5 所示,高頻分量(H→H、H→L)借助較高的位寬保留了絕大多數(shù)目標相關(guān)的局部細節(jié),而低頻分量(L→H、L→L)則承載了較低位寬就可以表達的圖像全局特征。
圖5 QOCN(1+8)高低頻分支特征圖可視化Fig.5 Visualization of high-and low-frequency branch feature maps of QOCN(1+8)
基于Octave 卷積,本文提出一種即插即用式的量化卷積神經(jīng)網(wǎng)絡(luò)方法,并使用典型卷積網(wǎng)絡(luò)ResNet50,在主流數(shù)據(jù)集CIFAR-10/100 和ImageNet 上進行了廣泛實驗。實驗驗證了本文方法的有效性,在模型壓縮至1 bit+4 bits時,本文方法仍能在ImageNet 數(shù)據(jù)集上取得超過70%的準確率。在下一步工作中,將對QOCN 方法和混合精度模型進行更廣泛研究,進一步減少量化產(chǎn)生的性能損失。