集美大學(xué)計(jì)算機(jī)工程學(xué)院 蘭寶星 湯龍楊 吳仕龍 王世偉 黃斌
近年來(lái),一種基于神經(jīng)網(wǎng)絡(luò)的非極大值抑制算法取得了媲美傳統(tǒng)非極大值抑制算法的結(jié)果,并因其主要采用卷積算子和全連接算子而有望部署于存算一體芯片上。然而,目前以新型阻變存儲(chǔ)器(RRAM)為代表的存算一體芯片大多只能支持5 比特以下的位寬,基于神經(jīng)網(wǎng)絡(luò)的非極大值抑制算法能否在低位寬的存算一體芯片上獲取同等性能仍待研究。本文運(yùn)用量化感知訓(xùn)練和后訓(xùn)練量化等方法,旨在探究低位寬對(duì)基于神經(jīng)網(wǎng)絡(luò)的非極大值抑制算法的影響。采用5 比特位寬的量化感知訓(xùn)練方法,在MS COCO 數(shù)據(jù)集的行人檢測(cè)任務(wù)(Person Detection)數(shù)據(jù)集下,mAP 為62.71;在MS COCO 多類別(multi-class)檢測(cè)任務(wù)下,mAP 和multiclass_ap 分別為40.66 和44.86,精度損失較小,為在低位寬存算一體芯片上部署目標(biāo)檢測(cè)算法奠定了基礎(chǔ)。
在2008 年,惠普實(shí)驗(yàn)室發(fā)現(xiàn)了一種被稱為記憶電阻器(或“憶阻器”)的新型電路元件,它可以通過(guò)電壓調(diào)整摻雜物和無(wú)摻雜物的比例改變阻值。由憶阻器組成的交叉陣列可以根據(jù)歐姆定律和基爾霍夫定律實(shí)現(xiàn)大規(guī)模的矩陣乘法運(yùn)算,因此適合于以密集矩陣運(yùn)算為核心的神經(jīng)網(wǎng)絡(luò)算法。由交叉陣列和其他部件組成存算一體芯片的特點(diǎn)是可以組成具有計(jì)算能力的存儲(chǔ)電路,進(jìn)而真正實(shí)現(xiàn)“存儲(chǔ)與計(jì)算一體”,這從根本上解決了馮諾依曼架構(gòu)下大量的來(lái)回搬運(yùn)數(shù)據(jù)導(dǎo)致的能量浪費(fèi)問(wèn)題。
存算一體芯片具有優(yōu)于傳統(tǒng)的存算分離芯片的能耗比優(yōu)勢(shì)。Aayush Ankit 等人研究了新型的存內(nèi)計(jì)算芯片與傳統(tǒng)的存算分離芯片兩種不同方案的性能和功耗差異的對(duì)比,發(fā)現(xiàn)存內(nèi)計(jì)算芯片相比于GPU 的能量消耗降低了10 ~50倍左右,吞吐量和單位能量下的算力也優(yōu)于Google 公司的TPU 芯片[1]。Yao P 等人將圖片分類網(wǎng)絡(luò)完全部署至存內(nèi)計(jì)算芯片中,其能量效率達(dá)到11.014TOP/s/W[2]。因此,存算一體芯片對(duì)于諸如目標(biāo)檢測(cè)的邊緣端AI 應(yīng)用具有巨大的意義,能夠在理論上達(dá)到更高性能和更低功耗的目標(biāo)。
傳統(tǒng)的目標(biāo)檢測(cè)算法在部署到邊緣端AI 芯片時(shí),普遍采用CNN 網(wǎng)絡(luò)的方法。CNN 網(wǎng)絡(luò)通常以卷積運(yùn)算為核心來(lái)提取圖像中的信息,而卷積核在提取局部特征時(shí)會(huì)不可避免地出現(xiàn)冗余特征并可能產(chǎn)生多個(gè)候選目標(biāo)框。因此,通常還需要使用非極大值抑制算法(Non-Maximum Suppression 或NMS)進(jìn)一步消除冗余的候選目標(biāo)框后才能得到最終的目標(biāo)框。目前工業(yè)界常用的NMS 算法為貪心NMS 算法,但其算法實(shí)現(xiàn)是串行的,算法復(fù)雜度較高,無(wú)法部署至適用于密集矩陣運(yùn)算的存內(nèi)計(jì)算芯片,因此并不能滿足在存算一體芯片上端到端部署的需求。
目標(biāo)檢測(cè)算法通常分為兩個(gè)階段:第一個(gè)階段是提取圖像特征并生成存在冗余的候選目標(biāo)框(該階段所采用的主干網(wǎng)絡(luò)適合部署于存算一體芯片);第二個(gè)階段是用NMS 算法來(lái)去除冗余的目標(biāo)框得到最終的目標(biāo)框。如圖1 所示展示了傳統(tǒng)NMS 部署方式和基于存算一體芯片的NMS 部署方式的差異。目前工業(yè)界普遍使用的貪心NMS 不適合部署于存算一體芯片,因此需要通過(guò)a 方案中的傳統(tǒng)AI 芯片(一般由Memory、CPU 和GPU 構(gòu)成)完成處理。該類型處理器先將冗余目標(biāo)框存儲(chǔ)到Memory 中,CPU 從Memory 中讀取數(shù)據(jù)并與GPU 交互進(jìn)行數(shù)據(jù)處理,最后將處理的目標(biāo)框保存到Memory,待數(shù)據(jù)處理完畢后輸出目標(biāo)框。在b 方案中,存算一體芯片先通過(guò)DAC 將數(shù)字信息轉(zhuǎn)化為電信號(hào),再通過(guò)憶阻器交叉對(duì)電信號(hào)進(jìn)行計(jì)算得到結(jié)果,最后通過(guò)ADC 將輸出的電信號(hào)轉(zhuǎn)化為數(shù)字信息,最后輸出目標(biāo)框結(jié)果。
圖1 傳統(tǒng)NMS 和基于存算一體芯片的NMS 的差異Fig.1 Differences between traditional NMS and NMS based on compute-in-memory chip
J Hosang 等人提出了一種被稱為“Learnable NMS”策略的GossipNet 網(wǎng)絡(luò)[3],采用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)每個(gè)候選目標(biāo)框和其他候選目標(biāo)框之間的特征關(guān)系,進(jìn)而重新計(jì)算每個(gè)候選目標(biāo)框的置信度。該網(wǎng)絡(luò)核心在于通過(guò)對(duì)候選目標(biāo)框進(jìn)行特殊的算法處理,制作包含相鄰候選目標(biāo)框之間結(jié)構(gòu)化特征關(guān)系的人工特征。GossipNet 網(wǎng)絡(luò)再通過(guò)對(duì)人工特征進(jìn)行學(xué)習(xí)和計(jì)算,得到每個(gè)候選目標(biāo)框和其他候選目標(biāo)框之間的特征關(guān)系。GossipNet 網(wǎng)絡(luò)設(shè)計(jì)了一種能夠懲罰“Double Detection”的損失函數(shù),能夠?qū)Χ鄠€(gè)檢測(cè)框進(jìn)行聯(lián)合處理。實(shí)驗(yàn)表明“Learnable NMS”策略效果和Greedy NMS 算法相當(dāng),而且在某些情況下優(yōu)于Greedy NMS 算法。由于GossipNet 的網(wǎng)絡(luò)結(jié)構(gòu)主要是基于密集矩陣運(yùn)算,因而更加有利于部署在存算一體芯片架構(gòu)上。但是,目前以新型阻變存儲(chǔ)器(RRAM)為代表的存內(nèi)計(jì)算芯片的單個(gè)憶阻器最多能支持5 比特的位寬,而傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)位寬通常是8~32 比特,所以如何在降低GossipNet 網(wǎng)絡(luò)數(shù)據(jù)位寬的同時(shí)保持和原位寬較為接近的檢測(cè)精度方法至關(guān)重要。
本研究面向基于神經(jīng)網(wǎng)絡(luò)的非極大值抑制算法在存內(nèi)計(jì)算芯片上的量化部署展開,在Pytorch 框架上采用量化感知訓(xùn)練和后訓(xùn)練量化等方法,探究基于神經(jīng)網(wǎng)絡(luò)的非極大值抑制算法在存內(nèi)計(jì)算芯片下超低位寬的表現(xiàn)。實(shí)驗(yàn)結(jié)果發(fā)現(xiàn),對(duì)于MS COCO 數(shù)據(jù)集下的行人檢測(cè)任務(wù)(Person Detection)數(shù)據(jù)集,采用5 比特量化的神經(jīng)網(wǎng)絡(luò)非極大值抑制模型取得mAP 為62.71;對(duì)于MS COCO多類別(multi-class)檢測(cè)任務(wù),采用5 比特量化的神經(jīng)網(wǎng)絡(luò)非極大值抑制模型取得的mAP 和multiclass_ap 分別為40.66 和44.86。這個(gè)性能比較接近全精度的版本,對(duì)于將Learnable NMS 部署到一個(gè)工業(yè)級(jí)的低位寬的存算一體芯片具有重要的指導(dǎo)意義。
在目標(biāo)檢測(cè)中通常使用的是基于CNN 網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法,其通過(guò)卷積運(yùn)算為核心來(lái)提取圖像中的信息。基于CNN 網(wǎng)絡(luò)的目標(biāo)檢測(cè)算法對(duì)同一個(gè)目標(biāo)物體提取特征時(shí),不可避免地出現(xiàn)冗余特征并可能產(chǎn)生多個(gè)目標(biāo)候選框,此時(shí)就需要使用非極大值抑制算法的進(jìn)一步處理,消除冗余的候選目標(biāo)框后,才能得到最終的目標(biāo)框。
常見的非極大值抑制算法分為兩類:一類是無(wú)需學(xué)習(xí)的非極大值抑制算法,另一類是基于學(xué)習(xí)的非極大值抑制算法。在無(wú)需學(xué)習(xí)的非極大值抑制算法中,傳統(tǒng)的Greedy NMS 算法基于一個(gè)固定的距離閾值進(jìn)行貪婪聚類。具體而言,該算法會(huì)貪婪地選取得分高的檢測(cè)結(jié)果,并刪除那些與其重疊面積超過(guò)閾值的相鄰結(jié)果,從而在召回率和精準(zhǔn)率之間取得權(quán)衡。然而對(duì)于IoU 大于或等于NMS 閾值的相鄰框,Greedy NMS 算法的做法是將其得分暴力置零,這使得該算法在處理存在遮擋的場(chǎng)景時(shí)表現(xiàn)不佳[4]。Bharat Singh 等提出了Soft NMS 方法,相較于傳統(tǒng)Greedy NMS 算法會(huì)刪除所有與最高分值的邊界框大于IoU 閾值的框,該方法則采用降低這些框的置信度的方式進(jìn)行處理[5]。Soft NMS 方法在處理低重疊的邊界框時(shí)保留得更好。Chengcheng Ning 等人提出了一種名為Weighted NMS 的算法,該算法認(rèn)為,傳統(tǒng)的Greedy NMS 每次迭代所選出的最大得分框并非一定具備精確定位的特點(diǎn),同時(shí)一些冗余的邊界框也有可能具有良好的定位效果。因此,Weighted NMS 方法在處理過(guò)程中采用了與傳統(tǒng)的直接剔除機(jī)制不同的策略,即對(duì)邊界框的坐標(biāo)進(jìn)行加權(quán)平均,其中加權(quán)平均的對(duì)象包括得分最大的邊界框自身以及與其IoU 大于或等于NMS閾值的相鄰框[6]。Zheng Z 等人提出了DIoU-NMS 算法,該算法認(rèn)為,若相鄰框的中心點(diǎn)距離當(dāng)前的最大得分框的中心點(diǎn)越近,則其更有可能是冗余框。該算法采用了DIoU 替代IoU 作為NMS 的評(píng)判準(zhǔn)則。從直觀的角度來(lái)說(shuō),加入了距離的信息,有利于在密集的場(chǎng)景中做更好的NMS[7]。Zheng Z 等人提出Cluster NMS,該方法主要旨在彌補(bǔ)Fast NMS 的性能下降,期望利用Pytorch 的GPU矩陣運(yùn)算進(jìn)行NMS,同時(shí)又使得性能保持與Greedy NMS相同,此外,筆者還在其中加入了很多其他操作,如得分懲罰機(jī)制(SPM)、加中心點(diǎn)距離(DIoU)、框的加權(quán)平均法(Weighted NMS)[8]。
關(guān)于基于學(xué)習(xí)的非極大值抑制算法,Hosang J 等人提出Conv NMS,其主要考慮到,如果將IoU 閾值設(shè)定得過(guò)高,則可能會(huì)導(dǎo)致抑制不夠充分,而如果將IoU 閾值設(shè)定得過(guò)低,則有可能將多個(gè)真陽(yáng)合并到一起。為了解決這個(gè)問(wèn)題,其設(shè)計(jì)了一個(gè)卷積網(wǎng)絡(luò),將具有不同重疊閾值的Greedy NMS 結(jié)果進(jìn)行組合,并通過(guò)學(xué)習(xí)的方法獲得最佳的輸出[9]。J Hosang 等人提出了Learnable NMS 方法,該方法主要考慮目標(biāo)檢測(cè)中遇到的高遮擋密集場(chǎng)景,通過(guò)聯(lián)合相鄰的預(yù)測(cè)框,向網(wǎng)絡(luò)提供必要的信息,讓網(wǎng)絡(luò)能夠確認(rèn)一個(gè)物體是否被多次檢測(cè),并設(shè)計(jì)了一個(gè)損失函數(shù)來(lái)懲罰網(wǎng)絡(luò),使其學(xué)習(xí)到一個(gè)物體只生成一個(gè)高分預(yù)測(cè)框的特性。借助這個(gè)分?jǐn)?shù)來(lái)達(dá)到NMS去重的目的,并使每個(gè)目標(biāo)對(duì)應(yīng)一個(gè)預(yù)測(cè)框。在PETS和COCO 數(shù)據(jù)集的高遮擋場(chǎng)景下,Learnable NMS 的AP 明顯優(yōu)于Greedy NMS,在高遮擋的場(chǎng)景下表現(xiàn)更好,并且GossipNet 非常適合處理各種類型的對(duì)象類[3]。Jiang B 等人提出了IoU-Net 方法,該方法提出了IoUguided NMS,即在NMS 階段引入定位得分作為排序指標(biāo),而不是采用傳統(tǒng)的分類得分。相較于Greedy NMS,該方法實(shí)際上就是用網(wǎng)絡(luò)預(yù)測(cè)的IoU 替代了原來(lái)計(jì)算的IoU,Jiang B 等人認(rèn)為,通過(guò)上述網(wǎng)絡(luò)訓(xùn)練出來(lái)的IoU是包含了定位信息的,可以緩解沖突IoU 的定位信息缺失問(wèn)題[10]。Liu S 等人提出Adaptive-NMS,該方法通過(guò)一個(gè)附屬的網(wǎng)絡(luò)來(lái)學(xué)習(xí)密集程度,根據(jù)密度值和閾值的對(duì)比實(shí)時(shí)修改NMS 的實(shí)現(xiàn)。該方法針對(duì)行人檢測(cè)這一特殊的應(yīng)用場(chǎng)景進(jìn)行了優(yōu)化,使得在人群密集的地方設(shè)置較大的NMS 閾值,而人群稀疏的地方設(shè)置較小的NMS 閾值[11]。
傳統(tǒng)的Greedy NMS 并不適合部署在存算一體的芯片上,所以本研究在以存算一體芯片作為目標(biāo)檢測(cè)系統(tǒng)載體時(shí),采用了一種被稱為“Learnable NMS”的基于神經(jīng)網(wǎng)絡(luò)的非極大值抑制算法,該算法由J Hosang等人提出。與傳統(tǒng)的Greedy NMS 不同的是,傳統(tǒng)的NMS 依靠一個(gè)固定的閾值來(lái)刪除那些IoU 過(guò)大且分?jǐn)?shù)較低的預(yù)測(cè)框。而GossipNet 網(wǎng)絡(luò)設(shè)計(jì)了一種能夠懲罰“Double Detection”的損失函數(shù),對(duì)多個(gè)檢測(cè)框進(jìn)行聯(lián)合處理,且設(shè)計(jì)中不再出現(xiàn)IoU 的計(jì)算,有利于存算一體架構(gòu)。
量化的目的是通過(guò)壓縮神經(jīng)網(wǎng)絡(luò)中的參數(shù)數(shù)值位數(shù),例如權(quán)重、激活值等,來(lái)實(shí)現(xiàn)對(duì)神經(jīng)網(wǎng)絡(luò)的壓縮。不論是多值量化、三值量化還是二值量化,它們的核心操作都是將高精度的浮點(diǎn)數(shù)數(shù)值位數(shù)合理地壓縮到低位的定點(diǎn)數(shù)數(shù)值位數(shù),從而在減少網(wǎng)絡(luò)性能的損失情況下,實(shí)現(xiàn)對(duì)模型的大幅度壓縮。這種方式可以以很小的精度損失為代價(jià),方便在邊緣端上部署模型。
Gong 等人[12]采用向量量化來(lái)壓縮深度卷積網(wǎng)絡(luò),該方法將權(quán)重分組且對(duì)各組的向量量化,從而減少權(quán)重?cái)?shù)量。Wu 等人采用K-means 聚類量化的策略實(shí)現(xiàn)參數(shù)共享,從而實(shí)現(xiàn)不存儲(chǔ)所有的權(quán)重值,而只是存儲(chǔ)作為權(quán)重索引值的K 個(gè)質(zhì)心,減少了模型大小[13]。Gupta 等人在基于隨機(jī)舍入的CNN 訓(xùn)練中采用了16 位定點(diǎn)數(shù)表示,發(fā)現(xiàn)在幾乎沒有分類精度損失的情況下,采用低精度定點(diǎn)運(yùn)算進(jìn)行深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練可以顯著減少計(jì)算資源的使用和模型的內(nèi)存占用[14]。Han 等人進(jìn)一步提出了一種方法,基于權(quán)值共享對(duì)權(quán)值進(jìn)行量化,然后使用剪枝和哈夫曼編碼的方法,從而縮減模型大小[15]。Choi 等人證明了利用Hessian 權(quán)重來(lái)衡量網(wǎng)絡(luò)權(quán)值重要性的可行性,并提出了一種聚類參數(shù),用于最小化Hessian 加權(quán)量化誤差[16]。
Vanhoucke 等人提出將權(quán)重值量化至8 位能夠既保證最小的精度損失,又顯著提升推理速度[17]。Jacob 等人提出一種關(guān)于在訓(xùn)練時(shí)保留32 位全精度存儲(chǔ)方式,而在前向推理時(shí)對(duì)權(quán)重值與激活值進(jìn)行8 位量化的量化框架,實(shí)現(xiàn)了整數(shù)算術(shù)的高效推理[18]。
Zhu 等人提出了8 位模擬的量化方法,為解決模擬量化時(shí)帶來(lái)的不穩(wěn)定因素影響和精度損失問(wèn)題,該方法考慮到學(xué)習(xí)率對(duì)誤差的敏感性,并通過(guò)對(duì)學(xué)習(xí)率進(jìn)行調(diào)節(jié)和利用方向自適應(yīng)的梯度階段算法進(jìn)行了解決[19]。
需要注意的是,二值神經(jīng)網(wǎng)絡(luò)是一種極端的網(wǎng)絡(luò)量化方法。在一般情況下,網(wǎng)絡(luò)模型的所有參數(shù)都以32 位單精度浮點(diǎn)數(shù)的形式存儲(chǔ),而二值網(wǎng)絡(luò)中,參數(shù)和特征圖激活值分別被量化為+1 和-1,每個(gè)值僅占用1 比特內(nèi)存。
Liu 等人提出DSQ 方法,它是一種可微的軟性量化策略,將全精度參數(shù)映射到低比特空間,并且保留了參數(shù)值的近似,能夠通過(guò)在反向傳播過(guò)程中獲得更加精確的梯度來(lái)彌補(bǔ)二值網(wǎng)絡(luò)在前向傳播過(guò)程中出現(xiàn)的量化誤差[20]。
Lin 等人提出一種對(duì)權(quán)重進(jìn)行隨機(jī)二值化處理的壓縮方法,該方法不僅能夠減少浮點(diǎn)運(yùn)算次數(shù),還具有一定的正則化效果,減小了精度損失[21]。
Zhang 等人提出一種可習(xí)得的量化器,將模型訓(xùn)練與量化器相結(jié)合,采取逐層優(yōu)化量化策略,在訓(xùn)練過(guò)程中逐層優(yōu)化量化模型,從而提升模型精度[22]。Cai 等人提出一種基于半波高斯量化的近似方法,在二值化權(quán)重的基礎(chǔ)上,近似處理ReLu 激活函數(shù),從而更好地完成二值化網(wǎng)絡(luò)中的反向傳播,減小精度損失[23]。
量化在目標(biāo)檢測(cè)領(lǐng)域內(nèi)的應(yīng)用也頗為深入。谷歌提出了一種8 位的量化方法[24],顯著提高了MobileNets[25]在ImageNet 分類[26]和COCO 目標(biāo)檢測(cè)[27]上的延遲和精度的權(quán)衡。Wei 等人提出了知識(shí)蒸餾和量化來(lái)對(duì)非常小的CNN 進(jìn)行目標(biāo)檢測(cè)[28]。Zhuang 等人提出用全精度輔助模塊訓(xùn)練低精度網(wǎng)絡(luò),以解決訓(xùn)練時(shí)梯度傳播的困難[29]。Jacob 等人提出了一種僅用整數(shù)算子的量化方案,并在具有8 位精度的COCO 數(shù)據(jù)集進(jìn)行目標(biāo)檢測(cè)[30]。Li 等人觀察到在進(jìn)行量化訓(xùn)練中進(jìn)行微調(diào)的不穩(wěn)定性,提出了三種方案[31]。然而,這些工作對(duì)網(wǎng)絡(luò)結(jié)構(gòu)和量化算法的設(shè)計(jì)都施加了額外的約束,從而限制了它們的性能。相比之下,Chen 等人提出了一種具有全整數(shù)算子操作的精確量化目標(biāo)檢測(cè)方案,完全擺脫了對(duì)浮點(diǎn)數(shù)的依賴。該方法用定點(diǎn)操作代替浮點(diǎn)操作,包括卷積層、歸一化層和殘差連接,從而實(shí)現(xiàn)了更好的性能[32]。目前還沒有適合于目標(biāo)檢測(cè)算法的Learnable NMS 的量化方法研究。
為了達(dá)到在存算一體設(shè)備上超低功耗運(yùn)行的目標(biāo),本研究需要在保持GoosipNet 網(wǎng)絡(luò)效果的情況下盡可能地壓縮網(wǎng)絡(luò)參數(shù),進(jìn)而減少憶阻器的需求量,從而降低芯片尺寸和運(yùn)行能耗。
在接下來(lái)的研究中將采用量化感知訓(xùn)練和后訓(xùn)練量化中的非對(duì)稱量化對(duì)Learnable NMS 進(jìn)行量化,以期在實(shí)際的模型部署到存算一體芯片前,GossipNet 網(wǎng)絡(luò)在量化后的不同位寬下的表現(xiàn)中,分析出更好的優(yōu)化方法以提高量化后的效果,達(dá)到和原網(wǎng)絡(luò)相近甚至超過(guò)原網(wǎng)絡(luò)的性能。
如圖2 所示,可知Learnable NMS 和存算芯片的關(guān)系。圖2 中Software 部分為L(zhǎng)earnable NMS 核心的Block 部分,該Block 在GossipNet 網(wǎng)絡(luò)中是一個(gè)序列,負(fù)責(zé)提取深層次的組合信息。
圖2 Learnable NMS 在存算一體芯片上的部署Fig.2 Deployment of Learnable NMS on compute-in-memory chip
圖2 中的Per-detection Computations 部分中,最左邊的紅色矩形框?yàn)锽lock 的輸入,輸入為0 矩陣或上一Block的輸出,通過(guò)制作Pairwise Context 后,將上一個(gè)Block的輸出先經(jīng)過(guò)FC 整合,再提取出每一個(gè)預(yù)測(cè)框的相關(guān)信息,相鄰預(yù)測(cè)框再?gòu)闹腥〕龊妥约河嘘P(guān)的信息和人工特征重新組合得到Pairwise Context,最后通過(guò)全連接層的映射和最大池化等操作完成深層次的組合信息地提取。
Block 序列輸出的組合信息在GossipNet 網(wǎng)絡(luò)中的全連接層中得到新的預(yù)測(cè)框分?jǐn)?shù)。同時(shí),網(wǎng)絡(luò)期望每一個(gè)高分?jǐn)?shù)的預(yù)測(cè)框都能匹配一個(gè)真實(shí)框。為了實(shí)現(xiàn)這個(gè)目的,網(wǎng)絡(luò)通過(guò)損失函數(shù)懲罰將多個(gè)對(duì)應(yīng)同一個(gè)目標(biāo)的預(yù)測(cè)框中的其中一個(gè)設(shè)置為高分,其他設(shè)置為低分。這樣,在高分匹配的同時(shí),也實(shí)現(xiàn)了一個(gè)目標(biāo)對(duì)應(yīng)一個(gè)預(yù)測(cè)框這一目的,從而去除冗余的預(yù)測(cè)框。
圖2 中Hardware 部分為存算一體芯片,通過(guò)DAC將數(shù)字信息轉(zhuǎn)化為電信號(hào),通過(guò)憶阻器交叉陣列對(duì)電信號(hào)進(jìn)行計(jì)算得到結(jié)果,再通過(guò)ADC 將輸出的電信號(hào)轉(zhuǎn)化為數(shù)字信息,最后輸出目標(biāo)框結(jié)果。
量化感知訓(xùn)練讓網(wǎng)絡(luò)在量化過(guò)程中進(jìn)行訓(xùn)練,從而讓網(wǎng)絡(luò)參數(shù)能更好地適應(yīng)量化帶來(lái)的信息損失。在對(duì)Learnable NMS 進(jìn)行量化感知訓(xùn)練時(shí),本研究使用了Round 函數(shù),但該函數(shù)無(wú)法進(jìn)行訓(xùn)練,因?yàn)槠鋷缀趺恳惶幍奶荻榷紴?,導(dǎo)致反向傳播的梯度也變成 0。因此,本研究采用STE 方法[33],直接將卷積層的梯度回傳到之前的權(quán)重上,以完成網(wǎng)絡(luò)權(quán)重的更新,使得量化訓(xùn)練可以正常進(jìn)行。
如圖3 所示,STE 核心的思想就是權(quán)重參數(shù)初始化為Float,并將權(quán)重經(jīng)過(guò)將原來(lái)的連續(xù)的參數(shù)映射成整數(shù)帶入到網(wǎng)絡(luò)進(jìn)行前向傳播計(jì)算,從而計(jì)算網(wǎng)絡(luò)的輸出。在反向傳播時(shí),直接對(duì)原來(lái)權(quán)重中的Float 參數(shù)進(jìn)行更新,從而完成對(duì)整個(gè)網(wǎng)絡(luò)的更新。通過(guò)這樣的方式,就可以更新權(quán)重,使量化訓(xùn)練可以正常進(jìn)行。
圖3 Learnable NMS 的量化感知訓(xùn)練示意圖Fig.3 Schematic diagram of quant aware training for Learnable NMS
簡(jiǎn)單而言,因?yàn)榱炕蟮臄?shù)據(jù)是一個(gè)離散的方程,我們無(wú)法計(jì)算它的導(dǎo)數(shù),所以STE 方法的目的就是在反向傳播時(shí)繞過(guò)量化函數(shù),使得梯度能夠順利地從輸出層傳遞到輸入層,簡(jiǎn)單粗暴地直接把輸出的導(dǎo)數(shù)作為了對(duì)輸入的導(dǎo)數(shù),其前向傳播和反向傳播的相關(guān)關(guān)系如式(1)、式(2)所示:
其中,式(1)中表示本研究中將浮點(diǎn)數(shù)量化映射成整數(shù)的范圍,式(2)表示使用在梯度更新時(shí)的因?yàn)榱炕瘮?shù)無(wú)法求導(dǎo),而使用近似估計(jì)來(lái)進(jìn)行梯度更新的一種數(shù)學(xué)方法。
后訓(xùn)練量化即在不重新訓(xùn)練網(wǎng)絡(luò)的情況下,獲取已訓(xùn)練好的模型,將其訓(xùn)練過(guò)的32bit 神經(jīng)網(wǎng)絡(luò)直接轉(zhuǎn)換為定點(diǎn)計(jì)算的網(wǎng)絡(luò)。
以均勻量化中的非對(duì)稱量化為例,根據(jù)如式(3)、式(4)、式(5)所示放縮關(guān)系來(lái)對(duì)Learnable NMS 后訓(xùn)練量化。
其中,式(3)計(jì)算了量化前的浮點(diǎn)數(shù)映射到量化后的定點(diǎn)數(shù)時(shí)的比例關(guān)系xscale,、分別表示量化前的浮點(diǎn)數(shù)的最大值和最小值,、表示量化后定點(diǎn)數(shù)的最大值和最小值,式(4)中表示0 經(jīng)過(guò)量化對(duì)應(yīng)的定點(diǎn)數(shù),稱作零點(diǎn),式(5)表示量化后定點(diǎn)數(shù)的值。
本實(shí)驗(yàn)硬件采用GPU 型號(hào)為G200eR2,CPU 采用6核E5-2603 v3,頻率為2.60GHz,軟件配置采用Linux系統(tǒng),在Pytorch1.9.1 框架、CUDA10.2 等基礎(chǔ)上完成實(shí)驗(yàn)。Pytorch1.9.1 框架擁有強(qiáng)大的深度學(xué)習(xí)處理包,是進(jìn)行模型量化時(shí)的一個(gè)很好的選擇。
首先,本次研究采用COCO 數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),用于訓(xùn)練目標(biāo)檢測(cè)模型的子集COCO_2014_train 訓(xùn)練集進(jìn)行訓(xùn)練得到模型,再采用量化中的量化感知訓(xùn)練和后訓(xùn)練量化操作將模型進(jìn)行量化。
然后,本研究分別采用量化感知訓(xùn)練和后訓(xùn)練量化中的非對(duì)稱量化方法。在實(shí)驗(yàn)中,對(duì)單獨(dú)的COCO 數(shù)據(jù)集中的coco_person 類別和coco_muticlass 分別進(jìn)行測(cè)試,在測(cè)試過(guò)程中,通過(guò)設(shè)定block=16,以mAP、multiclass_ap為評(píng)價(jià)指標(biāo),探究在block 等于16 下,GossipNet 網(wǎng)絡(luò)在不同位寬(bit=8、7、6、5、4、3、2)的表現(xiàn)。
最后,本研究再將訓(xùn)練量化好的模型在COCO 數(shù)據(jù)集中包含80 個(gè)類別的物體子集coco_2014_minival 測(cè)試集上進(jìn)行測(cè)試。隨著位寬的減少,統(tǒng)計(jì)mAP 和multiclass_ap 的性能損失。
本實(shí)驗(yàn)對(duì)coco_person 這個(gè)類別進(jìn)行量化感知訓(xùn)練,對(duì)GossipNet 網(wǎng)絡(luò)分別進(jìn)行量化位寬為8bit、7bit、6bit、5bit 量化感知訓(xùn)練。對(duì)于4bit 及4bit 以下的位寬采取后訓(xùn)練量化的策略,經(jīng)過(guò)多次迭代量化,可以得到對(duì)應(yīng)不同位寬的模型在測(cè)試集上測(cè)試得到的量化感知訓(xùn)練和后訓(xùn)練量化下最佳的性能效果的結(jié)果。
如圖4 所示為量化感知訓(xùn)練與后訓(xùn)練量化在位寬為8bit 至5bit 的量化性能對(duì)比,由圖4 可知,對(duì)GossipNet進(jìn)行量化感知訓(xùn)練后,位寬為6 ~8bit 的性能表現(xiàn)甚至超過(guò)原網(wǎng)絡(luò)的性能,而5bit 的性能相較原網(wǎng)絡(luò)的性能只出現(xiàn)了微小的性能損失。但是后訓(xùn)練量化在5 ~8bit 的位寬下相較原網(wǎng)絡(luò)的性能損失較大,且量化后性能表現(xiàn)與量化感知訓(xùn)練方法相比表現(xiàn)較差。因?yàn)?bit 及4bit 以下的位寬容易出現(xiàn)量化感知訓(xùn)練失效的情況,所以對(duì)于4bit 及4bit 以下的位寬,本研究基于16bit 預(yù)訓(xùn)練模型進(jìn)行后訓(xùn)練量化。
圖4 量化感知訓(xùn)練與后訓(xùn)練量化最佳性能表現(xiàn)的對(duì)比Fig.4 Comparison of performance between quantizationaware training and post-training quantization for optimal quantized performance
如圖5 所示,基于量化感知訓(xùn)練的16bit 模型再進(jìn)行后訓(xùn)練量化得4bit 和3bit 的表現(xiàn)相較于原網(wǎng)絡(luò)性能損失較大,在2bit 的位寬下,相較原網(wǎng)絡(luò)性能損失了約40%。結(jié)合圖4 和圖5 可知量化感知訓(xùn)練和后訓(xùn)練量化相結(jié)合的量化策略,在3bit 及3bit 以上都有較為不錯(cuò)的表現(xiàn)。
圖5 基于16bit 預(yù)訓(xùn)練模型后訓(xùn)練量化的性能表現(xiàn)Fig.5 Performance of post-training quantization based on 16-bit pretrained models
本研究對(duì)COCO_muticlass 進(jìn)行量化感知訓(xùn)練,并在coco_2014_minival 的測(cè)試集上進(jìn)行測(cè)試。本實(shí)驗(yàn)對(duì)multi-class 進(jìn)行量化感知訓(xùn)練,對(duì)GossipNet 網(wǎng)絡(luò)分別進(jìn)行量化位寬為8bit、7bit、6bit、5bit、4bit 量化感知訓(xùn)練。對(duì)于3bit 及3bit 以下的位寬采取后訓(xùn)練量化的策略,經(jīng)過(guò)多次迭代量化,可以得到對(duì)應(yīng)不同位寬的模型在測(cè)試集上測(cè)試得到的量化感知訓(xùn)練和后訓(xùn)練量化下最佳的性能效果的結(jié)果。
如圖6 所示,隨著位寬降低,量化感知訓(xùn)練的mAP性能表現(xiàn)在5bit 及5bit 以上的位寬下優(yōu)于后訓(xùn)練量化。且相較于原網(wǎng)絡(luò)性能而言損失較小,性能較為接近,但是在4bit 時(shí)量化感知訓(xùn)練,已經(jīng)出現(xiàn)了大幅度的精度損失,而后訓(xùn)練量化在4bit 時(shí)效果明顯優(yōu)于量化感知訓(xùn)練。因?yàn)?bit 及3bit 以下的位寬容易出現(xiàn)量化感知訓(xùn)練失效的情況。所以對(duì)于3bit 及3bit 以下的位寬,本研究采取后訓(xùn)練量化。
圖6 量化感知訓(xùn)練與后訓(xùn)練量化mAP 最佳性能表現(xiàn)的對(duì)比Fig.6 Comparison of performance between quantizationaware training and post-training quantization for mAP optimal performance
如圖7 所示,后訓(xùn)練量化在3bit 時(shí),相較于原位寬精度損失較大,在2bit 時(shí)性能損失相較于原網(wǎng)絡(luò)損失了約50%。
圖7 后訓(xùn)練量化在3bit 至2bit 下mAP 的性能表現(xiàn)Fig.7 Performance of post-training quantization for mAP at 3-bit to 2-bit levels
如圖8、圖9 所示,隨著位寬的降低,從8bit 至4bit 量化后的網(wǎng)絡(luò)精度相較于原位寬,出現(xiàn)了較小的精度損失。量化感知訓(xùn)練的multiclass_ap 性能表現(xiàn)在8bit 至5bit 時(shí)要優(yōu)于后訓(xùn)練量化,而在4bit 時(shí)前者效果則弱于后者。在3bit 和2bit 下的性能表現(xiàn)也明顯弱于原網(wǎng)絡(luò)效果。
圖8 量化感知訓(xùn)練與后訓(xùn)練量化multiclass_ap 最佳性能表現(xiàn)的對(duì)比Fig.8 Comparison of performance between quantizationaware training and post-training quantization for multiclass_ap optimal performance
圖9 后訓(xùn)練量化在3bit 至2bit 下multiclass_ap 的性能表現(xiàn)Fig.9 Performance of post-training quantization for multiclass_ap at 3-bit to 2-bit levels
本研究通過(guò)對(duì)GossipNet 網(wǎng)絡(luò)進(jìn)行量化感知訓(xùn)練和后訓(xùn)練量化,發(fā)現(xiàn)在量化為5bit 及5bit 以上的位寬時(shí),可以獲得較好的性能表現(xiàn)。在基于COCO 的Person Detection 模型的量化中,5bit 及5bit 以上的位寬的量化感知訓(xùn)練結(jié)果性能損失都較小,甚至在6bit 及6bit 的量化感知訓(xùn)練中得到的性能效果略優(yōu)于原網(wǎng)絡(luò)。而在基于COCO multi-class 模型的量化中,5bit 及5bit 以上的效果性能損失較小,與原網(wǎng)絡(luò)性能相近,而從4bit 開始,性能損失則較大。本研究表明,通過(guò)運(yùn)用模型量化的手段,分別對(duì)Learnable NMS 進(jìn)行量化感知訓(xùn)練和后訓(xùn)練量化,探究了GossipNet 網(wǎng)絡(luò)在不同量化方式和不同位寬場(chǎng)景下的具體表現(xiàn),從而為面向最多只能支持5bit 位寬的新型阻變存儲(chǔ)器(RRAM)為代表的存算一體芯片部署提供了關(guān)鍵依據(jù)。
引用
[1] ANKIT A,HAJJ I E,CHALAMALASETTI S R,et al.PUMA:A Programmable Ultra-efficient Memristor-based Accelerator for Machine Learning Inference[C]//Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems,2019:715-731.
[2] YAO P,WU H,GAO B,et al.Fully Hardware-implemented Memristor Convolutional Neural Network[J].Nature,2020,577(7792):641-646.
[3] HOSANG J,BENENSON R,SCHIELE B.Learning Nonmaximum suppression[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2017:4507-4515.
[4] GIRSHICK R.Fast r-cnn[C]//Proceedings of the IEEE International Conference on Computer Vision,2015:1440-1448.
[5] BODLA N,SINGH B,CHELLAPPA R,et al.Soft-NMS-improving Object Detection with one Line of Code[C]//Proceedings of the IEEE International Conference on Computer Vision,2017:5561-5569.
[6] NING C,ZHOU H,SONG Y,et al.Inception Single Shot Multibox Detector for Object detection[C]//2017 IEEE International Conference on Multimedia & Expo Workshops (ICMEW),IEEE,2017:549-554.
[7] ZHENG Z,WANG P,LIU W,et al.Distance-IoU Loss:Faster and Better Learning for Bounding Box Regression[C]//Proceedings of the AAAI Conference on Artificial Intelligence,2020,34(07):12993-13000.
[8] ZHENG Z,WANG P,REN D,et al.Enhancing Geometric Factors in Model Learning and Inference for Object Detection and Instance Segmentation[J].IEEE Transactions on Cybernetics,2021,52(8):8574-8586.
[9] HOSANG J,BENENSON R,SCHIELE B.A Convnet for Nonmaximum Suppression[C]//Pattern Recognition:38th German Conference,GCPR 2016,Hannover,Germany,September12-15,2016,Proceedings 38.Springer International Publishing,2016:192-204.
[10] JIANG B,LUO R,MAO J,et al.Acquisition of Localization Confidence for Accurate Object Detection[C]//Proceedings of the European Conference on Computer Vision(ECCV),2018:784-799.
[11] LIU S,HUANG D,WANG Y.Adaptive nms:Refining Pedestrian Detection in a Crowd[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,2019:6459-6468.
[12] GONG Y,LIU L,YANG M,et al.Compressing Deep Convolutional Networks Using Vector Quantization[J].2014.
[13] WU J,LENG C,WANG Y,et al.Quantized Convolutional Neural Networks for Mobile Devices[C]//Proceedings of the IEEE conference on computer vision and pattern recognition,2016:4820-4828.
[14] GUPTA S,AGRAWAL A,GOPALAKRISHNAN K,et al.Deep Learning with Limited Numerical Precision[C]//International Conference on Machine Learning.PMLR,2015:1737-1746.
[15] HAN S,MAO H,DALLY W J.Deep Compression:Compressing Deep Neural Networks with Pruning,Trained Quantization and Huffman Coding[J].2015.
[16] CHOI Y,EL-KHAMY M,LEE J.Towards the Limit of Network Quantization[J].2016.
[17] VANHOUCKE V,SEN0R A,MAO M.Improving the Speed of Neural Networks on CPUs[J].Proc Deep Learning and Unsupervised Feature Learning Workshop,2011:1-8.
[18] JACOB B,KLIGYS S,CHEN B,et al.Quantization and Training of Neural Networks for Efficient Integer-arithmetic-only Inference[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2018:2704-2713.
[19] ZHU F,GONG R,YU F,et al.Towards Unified Int8 Training for Convolutional Neural Network[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,2020:1969-1979.
[20] GONG R,LIU X,JIANG S,et al.Differentiable Soft Quantization:Bridging Full-precision and Low-bit Neural Networks[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision,2019:4852-4861.
[21] LIN Z,COURBARIAUX M,MEMISEVIC R,et al.Neural Networks with Few Multiplications[J].2015.
[22] ZHANG D,YANG J,YE D,et al.Lq-nets:Learned Quantization for Highly Accurate and Compact Deep Neural Networks[C]//Proceedings of the European Conference on Computer Vision(ECCV),2018:365-382.
[23] CAI Z,HE X,SUN J,et al.Deep Learning with Low Precision by Half-wave Gaussian Quantization[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2017:5918-5926.
[24] KRISHNAMOORTHI R.Quantizing Deep Convolutional Networks for Efficient Inference:A whitepaper[J].2018.
[25] HOWARD A G,ZHU M,CHEN B,et al.Mobilenets:Efficient Convolutional Neural Networks for Mobile Vision Applications[J].2017.
[26] DENG J,DONG W,SOCHER R,et al.Imagenet:A Largescale Hierarchical Image Database[C]//2009 IEEE Conference on Computer Vision and Pattern Recognition.Ieee,2009:248-255.
[27] LIN T Y,MAIRE M,BELONGIE S,et al.Microsoft coco:Common Objects in Context[C]//Computer Vision-ECCV 2014:13th European Conference,Zurich,Switzerland,September 6-12,2014,Proceedings,Part V 13.Springer International Publishing,2014:740-755.
[28] WEI Y,PAN X,QIN H,et al.Quantization Mimic:Towards Very Tiny Cnn for Object Detection[C]//Proceedings of the European Conference on Computer Vision (ECCV),2018:267-283.
[29] ZHUANG B,LIU L,TAN M,et al.Training Quantized Neural Networks with a Full-precision Auxiliary Module[C]//Proceedings of the IEEE/CVF conference on Computer Vision and Pattern Recognition,2020:1488-1497.
[30] JACOB B,KLIGYS S,CHEN B,et al.Quantization and Training of Neural Networks for Efficient Integer-arithmetic-only Inference[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2018:2704-2713.
[31] LI R,WANG Y,LIANG F,et al.Fully Quantized Network for Object Detection[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,2019:2810-2819.
[32] CHEN P,LIU J,ZHUANG B,et al.Aqd:Towards Accurate Quantized Object Detection[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition,2021:104-113.
[33] BENGIO Y,LéONARD N,COURVILLE A.Estimating or Propagating Gradients Through Stochastic Neurons for Conditional Computation[J].2013.