Yolo框架大改 | 消耗極低的目標(biāo)檢測新框架(附論文下載)
使用常規(guī)深度神經(jīng)網(wǎng)絡(luò)到脈沖神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)換方法應(yīng)用于脈沖神經(jīng)網(wǎng)絡(luò)域時,性能下降的很多,深入分析后提出了可能的解釋:一是來自逐層歸一化的效率低,二是用于leaky-ReLU函數(shù)的負(fù)激活缺乏表示。
1.前言
在過去的十年中,深度神經(jīng)網(wǎng)絡(luò)(DNNs)在各種應(yīng)用中表現(xiàn)出顯著的性能。當(dāng)我們試圖解決更艱難和最新的問題時,對計算和電力資源的需求增加已經(jīng)成為不可避免的。
Spiking neural networks(SNNs)作為第三代神經(jīng)網(wǎng)絡(luò),由于其事件驅(qū)動(event-driven)和低功率特性,引起了廣泛的興趣。
然而,SNN很難訓(xùn)練,主要是因為它們的神經(jīng)元復(fù)雜的動力學(xué)和不可微的尖峰操作。此外,它們的應(yīng)用僅限于相對簡單的任務(wù),如圖像分類。
在今天的分享中,作者研究了SNN在一個更具挑戰(zhàn)性的回歸問題(即對象檢測)。通過深入分析,引入了兩種新的方法:channel-wise normalization和signed neuron with imbalanced threshold,這兩種方法都為深度SNN提供了快速的信息傳輸。因此,提出了第一個基于尖峰的目標(biāo)檢測模型,稱為Spiking-YOLO。
2.新框架貢獻(xiàn)
盡管SNN有很多好處,但目前僅能處理相對簡單的任務(wù),由于神經(jīng)元復(fù)雜的動態(tài)性以及不可導(dǎo)的操作,暫時沒有一個可擴展的訓(xùn)練方法。DNN-to-SNN是近期廣泛的SNN訓(xùn)練方法,該方法將目標(biāo)DNN轉(zhuǎn)化成SNN的中間DNN網(wǎng)絡(luò)進(jìn)行訓(xùn)練,然后轉(zhuǎn)成SNN并復(fù)用其訓(xùn)練的參數(shù),在小數(shù)據(jù)集分類上能達(dá)到不錯的性能,但是在大數(shù)據(jù)集上分類結(jié)果不太理想
論文打算使用DNN-to-SNN轉(zhuǎn)化方法將SNN應(yīng)用到更復(fù)雜的目標(biāo)檢測領(lǐng)域中,圖片分類只需要選擇分類就好,而目標(biāo)檢測則需要神經(jīng)網(wǎng)絡(luò)進(jìn)行高度準(zhǔn)確的數(shù)字預(yù)測,難很多。在深入分析后,論文實現(xiàn)YOLO的轉(zhuǎn)換主要面臨以下兩個問題:
常用的SNN歸一化方法過于低效,導(dǎo)致脈沖****頻率過低。由于SNN需要設(shè)定閾值進(jìn)行脈沖****,所以要對權(quán)值進(jìn)行歸一化,這樣有利于閾值的設(shè)定,而常用的SNN歸一化方法在目標(biāo)檢測中顯得過于低效,后面會詳細(xì)闡述
在SNN領(lǐng)域,沒有高效leaky-ReLU的實現(xiàn),因為要將YOLO轉(zhuǎn)換為SNN,YOLO中包含大量leaky-ReLU,這是很重要的結(jié)構(gòu),但目前還沒有高效的轉(zhuǎn)換方法
來自韓國的比較冷門或者前沿一點的文章,研究方向是脈沖神經(jīng)網(wǎng)絡(luò)(Spiking Neural Networks)與YOLO算法的融合,發(fā)現(xiàn)韓國人特別擅長對YOLO,SSD等算法進(jìn)行魔改啊。
提出一種在深度SNN中能夠進(jìn)行快速精確信息傳輸?shù)腟piking-YOLO算法。這是第一次將深度SNN成功應(yīng)用于目標(biāo)檢測任務(wù)的工作;
為深度SNN開發(fā)了一種成為逐通道歸一化的精細(xì)歸一化技術(shù)。所提出的方法使得在多個神經(jīng)元中更高的****率成為可能,這促成了快速并且精確的信息傳輸;
提出了一種新穎的方法,其特點在于具有不平衡閾值的帶符號神經(jīng)元,這些神經(jīng)元讓SNNs中的leakyReLU得以實現(xiàn)。這給深度SNN應(yīng)用于各種模型和應(yīng)用創(chuàng)造了機會。
3.新框架
Channel-wise data-based normalization在SNN中,根據(jù)輸入的幅度產(chǎn)生脈沖序列進(jìn)行無損的內(nèi)容傳遞是極為重要的。但在固定時間,激活過度或激活不足的神經(jīng)元內(nèi)將可能導(dǎo)致內(nèi)容損失,這和臨界電壓的設(shè)置有關(guān)。設(shè)置過高,神經(jīng)元需要累積很長時間的電壓才能****脈沖,相反則會過多地****脈沖。****頻率通常定義為,為個timestep的脈沖****總數(shù),最大的****率為100%,即每個timestep都****脈沖:
為了防止神經(jīng)元的激活過度和激活不足,權(quán)值和臨界電壓都需要精心地選擇。為此,很多研究提出了歸一化的方法,比如常用的Layer-wise normalization(layer-norm)。該方法通過該層的最大化激活值來歸一化層的權(quán)值,如上公式,和為權(quán)重,為輸出特征圖最大值。經(jīng)過歸一化后,神經(jīng)元的輸出就歸一到,方便設(shè)定臨界電壓。由于最大激活值從訓(xùn)練集得到的,所以測試集和訓(xùn)練集需要有相同的分布,但論文實驗發(fā)現(xiàn)這種常規(guī)的歸一化方法在目標(biāo)檢測任務(wù)上會導(dǎo)致明顯的性能下降。
基于數(shù)據(jù)的逐通道歸一化
傳統(tǒng)的脈沖神經(jīng)網(wǎng)絡(luò)中,需要確保神經(jīng)元根據(jù)其輸入大小產(chǎn)生脈沖序列,其中權(quán)值和閾值電壓分別負(fù)責(zé)神經(jīng)元激活的充足度和平衡度,這會導(dǎo)致要么欠激活要么過激活,從而使信息丟失和性能不佳。
作者深入分析并證明了細(xì)粒度的通道正則化可以通過極小的激活來提高神經(jīng)元的****率。換句話說,非常小的激活被正確歸一化,將在更短的時間內(nèi)準(zhǔn)確地傳輸信息。文章認(rèn)為通道正則化的應(yīng)用可以帶來更快更準(zhǔn)確的深度SNN,這將使深度SNN應(yīng)用于更高級機器學(xué)習(xí)問題成為可能。
上圖展示了通過layer-norm后的各層每個channel的最大激活值,藍(lán)色和紅色的線分別為每層的平均激活值和最小激活值。可以看到每層的歸一化后的激活值偏差較大,總體而言,layer-norm使得神經(jīng)元的channel偏向激活不足,這在僅需選擇分類的圖片分類任務(wù)是不被察覺的,但對于需要預(yù)測準(zhǔn)確值的檢測任務(wù)的回歸則不一樣。比如傳遞0.7,則需要在10個timestep脈沖7次,0.007則需要在1000timestep脈沖7次。當(dāng)tempstep本身就很少時,過低的****率可能會因****不到足夠的脈沖而導(dǎo)致信息丟失。Proposed normalization method
整個流程如下:
具體的邏輯如上圖和算法,channel-wise的歸一化方法能夠消除激活值特別小的問題,即得到更高但合適的****頻率,在短時間內(nèi)也能準(zhǔn)確地傳遞信息。
Signed neuron featuring imbalanced threshold
具有不平衡閾值特征的帶符號神經(jīng)元
引入了一種具有不平衡閾值(即IBT)的帶符號神經(jīng)元,它不僅可以對正負(fù)激活進(jìn)行解釋,還可以對leakyReLU負(fù)激活值區(qū)域的滲漏項進(jìn)行補償。如下圖所示,作者增加了另外一個Vth負(fù)責(zé)對負(fù)激活響應(yīng)。
其中,具有IBT的帶符號神經(jīng)元的基本動力學(xué)公式如下所示。
通過使用上述具有IBT的帶符號神經(jīng)元,可以在SNN中使用leakyReLU,從而將各種DNN模型轉(zhuǎn)換為廣泛應(yīng)用的SNN。
4.實驗結(jié)果與評估
作者使用Tiny YOLO的實時目標(biāo)檢測模型,在脈沖神經(jīng)網(wǎng)絡(luò)中實現(xiàn)最大池化層和BN層。模型在PASCAL VOC2007和2012上訓(xùn)練,在PASCAL VOC2007上測試。所有代碼基于Tensorflow Eager框架,在V100的GPU上進(jìn)行實驗。
文章通過實驗的設(shè)計驗證并分析了使用通道正則化和有符號神經(jīng)元的IBT存在的用處。如下圖所示,當(dāng)通道正則化和有符號神經(jīng)元都使用時,脈沖-YOLO能夠達(dá)到51.61%的mAP,這個性能比較高了。
此外,逐層正則化的mAP僅僅46.98%,而通道正則化優(yōu)勢明顯,收斂速度也更快。如果不使用本文提出的這兩種方法,Spiking-YOLO無法檢測目標(biāo),如果僅僅使用有符號神經(jīng)元的話,mAP僅僅7.3%,這表明有符號神經(jīng)元可以補償leakyReLU的不足項,并且在解決深度SNN中這種高數(shù)值精度問題中起著關(guān)鍵作用。
在上圖中,作者還在兩種輸出編碼方案上進(jìn)行了額外的對比實驗,一種基于累計Vth,一種基于脈沖數(shù)量。實驗結(jié)果表明基于Vth的輸出編碼方案在解釋尖峰序列時將更精確,也體現(xiàn)出收斂更快的特點。
實驗的目的是無損地將Tiny-YOLO的轉(zhuǎn)移為SNN,結(jié)果如上圖所示,使用channel-norm和IBT能有效地提升性能,且使用的timestep更少。
作者嘗試了不同的解碼方式,分別為膜電壓和脈沖數(shù),由于脈沖數(shù)的余數(shù)要舍棄,這會帶來誤差和信息損失,所以基于膜電壓進(jìn)行解壓會更準(zhǔn)確。
5.總結(jié)
在今天分享中,作者提出了Spiking-YOLO,第一個SNN模型,通過在non-trivial datasets、PASCALVOC和MSCO上獲得與原始DNN相似的結(jié)果來成功地執(zhí)行目標(biāo)檢測。
我認(rèn)為,這項研究代表了解決深度SNN中更高級的機器學(xué)習(xí)問題的第一步。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。