Spiking-YOLO:脈衝神經網絡高效的目標檢測

Spiking-YOLO:脈衝神經網絡高效的目標檢測

  本文提出Spiking-YOLO是脈衝神經網絡在目標檢測領域的首次成功使用,具有高性能低功耗的優勢。

Abstract

  在過去的十年中,深度神經網絡(DNNs)在各種應用中都表現出了顯著的性能。隨着我們試圖解決更先進的問題,對計算和電力資源的需求也越來越大。脈衝神經網絡(SNNs)由於其事件驅動和低功耗的特點,作爲第三代神經網絡受到了廣泛的關注。然而,SNN很難訓練,主要是由於它們複雜的神經元動力學和不可微的脈衝操作。此外,它們的應用侷限於相對簡單的任務,如圖像分類。在這項研究中,我們研究了SNNs在一個更具挑戰性的迴歸問題(即目標檢測)中的性能退化原因。通過深入分析,我們提出了兩種新的方法:逐通道歸一化和閾值不平衡的符號神經元,這兩種方法都爲深度SNN提供了快速、準確的信息傳輸。因此,我們提出了首個基於脈衝的目標檢測模型,稱爲Spiking-YOLO。實驗結果表明,在數據集PASCAL-VOC和MS-COCO上與Tiny YOLO的效果相當(高達98%)。此外,在神經形態芯片上Spiking-YOLO消耗的能量大約比Tiny YOLO小280倍,並且收斂速度比以前的SNN轉換方法快2.3~4倍。

Introduction

  深度神經網絡(deep neural networks,DNNs)最近取得成功的主要原因之一,可以歸因於高性能計算系統的發展和大量用於模型訓練的數據的可用性。然而,在實際應用中解決更多複雜和高級的問題,需要更復雜的模型和訓練數據,這導致計算開銷和功耗顯著增加。爲了克服這些挑戰,許多研究人員嘗試使用剪枝、壓縮和量化來設計計算效率和能量效率高的DNN,其中一些已經顯示出很有希望的結果。儘管做出了這些努力,但隨着更深入、更復雜的神經網絡獲得更高的精度,對計算和電力資源的需求將增加。
  脈衝神經網絡(SNNs)是第三代神經網絡,它以脈衝神經元爲計算單元,模擬信息在人腦中的編碼和處理過程。與傳統的神經網絡不同,SNN通過由一系列脈衝(離散)組成的脈衝序列的精確定時(時間)來傳輸信息,而不是通過一個真實值(連續)。也就是說,SNN在信息傳輸中利用時間,就像在生物神經系統中一樣,從而提供稀疏但強大的計算能力。此外,當接收到脈衝時,脈衝神經元將輸入整合到膜電位中,當膜電位達到一定閾值時,產生(發放)脈衝,從而實現事件驅動計算。由於脈衝事件的稀疏性和事件驅動的計算,SNN提供卓越的能效 ,是神經形態結構中首選的神經網絡。
儘管SNN潛力巨大,但它僅限於相對簡單的任務(如,圖像分類)和較小的數據集(例如,MNIST和CIFAR),其結構相當淺。應用範圍有限的一個主要原因是由於脈衝神經元的複雜動力學和不可微操作,缺乏可擴展的訓練算法。DNN-SNN轉換方法作爲一種替代方法,近年來得到了廣泛的研究。這些方法基於將預先訓練的參數(如權重和偏差)從DNN導入SNN的思想。DNN到SNN的轉換方法在深層SNN中取得了與原始DNN(如VGG和ResNet)相當的結果,在MNIST和CIFAR數據集的結果具有競爭力,而ImageNet數據集的結果與DNN的精度相比則不盡如人意。
  在本研究中,使用DNN到SNN的轉換方法來探討深度SNN中一個更先進的機器學習問題,即目標檢測。目標檢測被認爲是更具挑戰性的,因爲它涉及到識別多個重疊對象和計算邊界框的精確座標。因此,在預測神經網絡的輸出值(即迴歸問題)時,它需要很高的數值精度,而不像在圖像分類中那樣選擇一個概率最高的類(即argmax函數)。在深入分析的基礎上,提出了將目標檢測應用於深度SNN時存在的幾個問題:a)傳統歸一化方法效率低下;b)SNN域中缺少一種有效的leaky-ReLU實現方法。
  爲了克服這些問題,我們提出了兩種新的方法:通道歸一化和閾值不平衡的有符號神經元。因此,提出了一個基於脈衝的目標檢測模型,稱爲Spiking-YOLO。作爲SNNs中目標檢測的第一步,我們實現了基於Tiny YOLO的Spiking-YOLO。
  這是第一個用於目標檢測的深度SNN,在非平凡數據集PASCAL VOC和MS-COCO上獲得了與DNN相當的結果。作者貢獻可以總結如下:

  • 深度SNN的首個目標檢測模型首次提出了一個在深度SNN中實現高效目標檢測的模型Spiking YOLO。在非平凡數據集上,Spiking YOLO的結果與原始DNN相當,即98%。
  • 逐通道歸一化 提出了了一個針對深度SNN的細粒度歸一化方法。所提出的方法能夠在多個神經元中獲得更高但適當的放電率,從而在深度SNN中實現了快速、準確的信息傳輸。
  • 閾值不平衡的有符號神經元提出了一種在SNN域中準確有效地實現leaky-ReLU的方法。該方法易於在最小開銷的神經形態芯片上實現。

Related work

DNN-to-SNN conversion

  與DNN相反,SNN使用由一系列脈衝組成的脈衝序列在神經元之間傳遞信息。IF神經元將輸入z累加到膜電位Vmem
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

  由於事件驅動的性質,SNN提供節能操作。然而,在各種應用中部署snn時,它們很難訓練,這一直是主要的障礙之一。
  SNNs的訓練方法包括具有脈衝時間依賴可塑性(STDP) 的無監督學習和具有梯度下降和誤差反向傳播的有監督學習。儘管STDP在生物學上更爲合理,但其學習效果明顯低於監督學習。最近的工作提出了一種監督學習算法,該算法的函數逼近SNNs的不可微部分(IF),以提高學習性能。儘管做了這些努力,但以往的工作大多侷限於淺層snn上的圖像分類任務和MNIST數據集。

Object detection

  目標檢測通過繪製邊界框,定位圖像或視頻中的單個或多個對象,然後識別其類別。因此,目標檢測模型不僅包括對目標進行分類的分類器,還包括預測邊界框的精確座標(x軸和y軸)和大小(寬度和高度)的迴歸器。由於預測邊界框的精確座標是關鍵,因此目標檢測被認爲是比圖像分類更具挑戰性的任務,在圖像分類中,argmax函數被用來簡單地選取一個概率最高的類。
  基於區域的CNN(R-CNN)被認爲是目標檢測領域最重要的進展之一。爲了提高檢測性能和速度,人們提出了各種R-CNN的擴展版本,即fast R-CNN、faster R-CNN和Mask R-CNN。然而,基於R-CNN的網絡由於採用多級檢測方案,推理速度慢,不適合實時目標檢測。
  作爲一種替代方法,提出了一步檢測方法,提取邊界框信息,在統一的網絡中對目標進行分類。在一級檢測模型中,“單點多盒檢測器”(SSD)和“你只看一次”(YOLO)實現了最先進的性能。尤其是在實時目標檢測中,YOLO具有較高的推理速度(FPS),且不存在顯著的精度損失。因此我們選擇了Tiny YOLO作爲目標檢測模型。

Methods

  在目標檢測中,識別多個目標並在其周圍繪製邊界框(即迴歸問題)是一個巨大的挑戰:預測網絡的輸出值需要很高的數值精度。
利用傳統的DNN-SNN轉換方法在深度SNN中進行目標檢測時,其性能嚴重下降,無法檢測到任何目標。
  作者深入分析強調了這種性能下降的可能原因:a)大量神經元的放電率極低;b)SNN中缺乏一種有效的leaky-ReLU實現方法。爲了克服這些問題,我們提出了兩種新的方法:通道歸一化和閾值不平衡的有符號神經元。

Channel-wise data-based normalization

Conventional normalization methods

  在典型的SNN中,確保神經元根據輸入的大小產生脈衝序列,並在不丟失任何信息的情況下傳輸這些脈衝序列是至關重要的。然而,在給定的時間步長下,神經元的激活不足或過度激活都可能導致信息丟失。例如,如果閾值電壓Vth非常大或輸入很小,那麼膜電位Vmem將需要很長時間才能達到Vth,從而導致低發射率(即未激活)。相反,如果Vth非常小或輸入很大,那麼Vmem很可能會超過Vth,並且無論輸入值是多少,神經元都會產生脈衝(即過度激活)。值得注意的是,發射率可以定義爲N/T,其中N是給定時間步長T中的脈衝總數。最大發射率將是100%,因爲每個時間步長都可以產生脈衝。
  爲了防止神經元激活不足或過度激活,需要仔細選擇權值和閾值電壓,以保證神經元的有效和平衡激活。各種基於數據的歸一化方法被提出。層歸一化(Layer-wise normalization,簡稱layer-norm)是最著名的歸一化方法之一;layer-norm通過在DNN中運行訓練數據集計算出對應層的最大激活來歸一化特定層中的權重。這是基於一個假設,即訓練和測試數據集的分佈是相似的。此外,請注意,使用最大激活歸一化權重的效果與歸一化輸出激活的效果相同。layer-norm計算
在這裏插入圖片描述
  作爲layer-norm的一個擴展版本,引入了一種使用最大激活的99.9%來歸一化激活的方法;這增加了對異常值的魯棒性,並確保了神經元的充分激活。然而,我們的實驗表明,當使用傳統的歸一化方法在深度SNN中應用目標檢測時,該模型的性能會顯著下降。

Analysis of layer-norm limitation

在這裏插入圖片描述
  圖1表示從layer-norm獲得的每個通道中的歸一化最大激活值。Tiny YOLO由八個卷積層組成;x軸表示通道索引,y軸表示歸一化的最大激活值。藍線和紅線分別表示每個層中歸一化激活的平均值和最小值。如圖1所示,對於特定卷積層,每個通道上的歸一化激活的偏差相對較大。例如,在Conv1層中,對於某些通道(如通道6、7和14),歸一化最大激活接近1,對於其他通道(如通道1、2、3、13和16),歸一化最大激活接近0。其他卷積層也一樣。顯然,layer-norm在許多通道中產生異常小的歸一化激活(即,激活不足),這些通道在歸一化之前具有相對較小的激活值。
  這些非常小的歸一化激活在圖像分類中未被檢測到,但在解決深度SNN中的迴歸問題時可能是非常困難的。例如,要傳輸0.7,需要7個脈衝和10個時間步長。應用相同的邏輯,傳輸0.007需要7個脈衝和1000個時間步長,而不會丟失任何信息。因此,要發送非常小(例如0.007)或精確(例如0.9007與0.9000)的值而不造成任何損失,需要大量的時間步長。時間步長被認爲是被傳輸信息的分辨率。因此,極小的歸一化激活會產生較低的觸發率,當時間步長小於所需時,會導致信息丟失。

Proposed normalization method

  提出了一種更細粒度的規範化方法,稱爲通道歸一化(channel-wise normalization,簡稱channel-norm),以實現深度SNN中快速高效的信息傳輸。我們的方法通過最大可能激活(99.9%)以通道方式而不是傳統的層方式來歸一化權重。提出的channel-norm可以表示爲
在這裏插入圖片描述
  如前所述,最大激活是從訓練數據集計算出來的。在下一層中,歸一化激活必須乘以λl-1i,以在歸一化之前獲得原始激活。具體方法如算法1和圖2所示。
在這裏插入圖片描述
在這裏插入圖片描述
  以通道方式歸一化激活可消除極小激活(即,欠激活),在歸一化之前有很小的激活值。換言之,神經元被歸一化以獲得更高但適當的放電率,從而在短時間內實現準確的信息傳輸。

Analysis of the improved firing rate

在這裏插入圖片描述  在圖3中,x軸和y軸分別表示在對數尺度上產生特定放電率的神經元的放電率和數量。對於channel-norm,許多神經元產生高達80%的放電率。然而,在layer-norm中,大多數神經元產生的放電率在0%到3.5%之間。這是清楚表明了,channel-norm消除了極小的激活,更多的神經元產生更高但適當的放電率。此外,圖4顯示了卷積層1中每個通道的放電率。顯然,channel-norm在大多數通道中產生更高的放電率。特別是在通道2中,channel-norm產生的放電率比layer-norm高20倍。此外,圖5顯示了20個採樣神經元的脈衝活動的光柵圖。可見,應用channel-norm時,許多神經元放電更爲規律。
在這裏插入圖片描述
  詳細分析驗證了細粒度channel-norm可以更好地歸一化激活,防止激活不足導致低放電率。換句話說,極小的激活被適當地歸一化,這樣神經元就可以在短時間內準確地傳遞信息。在圖像分類等簡單應用中,這些小的激活可能不重要,對網絡的最終輸出影響不大;但是,它們在迴歸問題中是關鍵的,並且顯著影響模型的精度。因此,channel-norm是解決深度SNNs中更高級的機器學習問題的可行方案。

Signed neuron featuring imbalanced threshold

Limitation of leaky-ReLU implementation in SNNs

  ReLU是最常用的激活函數之一,它只保留正輸入值,並丟棄所有負值;當x≥0時,f(x)= x,否則f(x)=0。與ReLU不同,leaky-ReLU包含帶leaky項的負值,斜率α,通常設置爲0.01;當x≥0時,f(x)=x,否則f(x)=αx。
以往的DNN-SNN轉換方法大多集中於IF神經元向ReLU的轉換,而完全忽略了激活函數負區域的漏項。請注意,在Tiny YOLO中,負激活佔51%以上。爲了擴展SNNs中綁定到負區域的激活函數,添加了第二個Vth項(-1)。他們的方法成功地將BinaryNet轉換爲SNNs,其中BinaryNet的激活在CIFAR-10上被限制爲+1或-1。
  目前,各種DNN都使用leaky-ReLU作爲激活函數,但還沒有一種在SNN域中實現leaky-ReLU的準確有效的方法。leaky-ReLU可以在SNNs中實現,除了第二Vth項(-1)外,只需將負激活乘以斜率α。然而,這在生物學上是不合理的(脈衝是一個離散的信號),在神經形態芯片上使用時可能是一個巨大的挑戰。例如,斜率α的浮點乘法需要額外的硬件。

The notion of imbalanced threshold

  本文介紹了一種具有不平衡閾值(以下簡稱IBT)的有符號神經元,它不僅能解釋正、負激活,而且能準確、有效地補償leaky-ReLU負區間的leaky項。該方法還通過對負區間引入不同的閾值電壓Vth,neg來保持脈衝的離散特性。第二閾值電壓Vth,neg等於負Vth除以斜率α的,而Vth,pos等於Vth。這將在leaky-ReLU的負區間代替leaky漏項(斜率α)。帶有IBT的有符號神經元的潛在動力學表現爲
在這裏插入圖片描述
在這裏插入圖片描述
  如圖6所示,如果斜率α=0.1,則負責正激活Vth,pos的閾值電壓爲1V,而負責負激活Vth,neg的閾值電壓爲-10V;因此,必須對Vmem進行10倍以上的積分,以產生leaky-ReLU中負激活的脈衝。
  值得注意的是,有符號的神經元也能實現興奮性和抑制性神經元,這在生物學上更爲合理。使用帶IBT的有符號神經元,leaky-ReLU可以在SNNs中準確實現,並且可以以最小的開銷直接映射到當前的神經形態結構。此外,該方法將爲將各種DNN模型轉換爲SNN提供更多的應用機會。

Evaluation

Experimental setup

  作爲深入SNNs中目標檢測的第一步,我們使用了實時目標檢測模型Tiny YOLO,它是YOLO的一個簡單而有效的版本。在SNNs中實現了max-pooling和batch-normalization。Tiny YOLO在非平凡數據集PASCAL VOC和MS COCO上進行了測試。模型模擬基於TensorFlow-Eager,並在NVIDIA Tesla V100 GPUs上進行了所有的實驗。

Experimental results

Spiking-YOLO detection results

  爲了驗證和分析所提方法的功能,我們研究了有無channel-norm和帶有IBT的有符號神經元的影響。如圖7所示,當使用channel-norm和帶有IBT的有符號神經元時,Spiking-YOLO在VOC-PASCAL和MS-COCO上分別達到51.83%和25.66%的顯著性能。Tiny YOLO的目標mAP爲53.01%(PASCAL VOC)和26.24%(MS COCO)。事實上,channel-norm比layer-norm在目標檢測方面有很大的優勢,特別是在PASCAL VOC上(53.01%比48.94%),並且收斂速度更快。例如,要達到layer-norm的最大mAP(48.94),channel-norm只需要大約3500個時間步長(快2.3倍)。在MS-COCO中也觀察到類似的結果,其中channel-norm的收斂速度甚至比layer-norm快(4倍)。具體結果見表1。
在這裏插入圖片描述
  值得注意的是,沒有提出的方法,模型無法檢測到目標,VOC PASCAL和MS COCO的檢測率分別爲6.87%和2.82%。當使用channel-norm時,模型仍然難以檢測到目標,檢測率最多約7.31%和3.02%。這是一個很好的跡象表明,帶IBT的有符號神經元在leaky-ReLU中準確地實現了漏項。因此,其餘的實驗是以IBT爲默認值的有符號神經元進行的。
在這裏插入圖片描述  爲了進一步分析,我們對兩種不同的輸出解碼方案進行了額外的實驗:一種是基於累積Vmem,另一種是基於脈衝計數。Vmem/Vth的商表示脈衝計數,餘數四捨五入。餘數將最終成爲一個錯誤和丟失的信息。因此,基於Vmem的輸出解碼方案對於解釋脈衝序列更爲精確;圖7驗證了這個斷言。基於Vmem的輸出解碼方案優於基於脈衝計數的方案,在channel-norm上收斂更快。
在這裏插入圖片描述  圖8說明了隨着時間步長的增加Spiking-YOLO在檢測目標時的效果。對於每一個樣本,最左邊的圖像(Tiny YOLO)都顯示了Spiking-YOLO試圖複製 ground truth label 。在左上角的樣本(三艘船)中,僅經過1000個時間步長,用channel-norm的Spiking-YOLO就成功地檢測到了所有三個目標。同時,用layer-norm的Spiking-YOLO未能檢測到任何目標。經過2000個時間步長,它開始在目標周圍繪製邊界框,但是在單個目標上繪製了多個邊界框,並且它們的大小都不準確。檢測性能隨着時間步長的增加而提高,但仍不令人滿意;要達到所提出的channel-norm的檢測性能,需要5000個時間步長。圖8中的其他樣本也顯示了Spiking-YOLO卓越的性能。所提出的channel-norm在較短時間內準確檢測多目標和小目標方面顯示出明顯的優勢。

Spiking-YOLO energy efficiency

  爲了研究Spiking-YOLO的能效,我們考慮了兩種不同的方法:a)數字信號處理中Spiking-YOLO和Tiny YOLO 的計算操作;b)神經形態芯片上Spiking-YOLO 和gpu上Tiny YOLO的比較。
  首先,DNN中的大多數操作發生在卷積層中,在卷積層中主要負責執行乘法累加(MAC)操作。然而,SNN執行累加(AC)操作,因爲脈衝事件是二進制操作其輸入僅在接收脈衝時集成(或累加)到膜電位中。爲了公平比較,我們只關注用於對單個圖像執行目標檢測的計算能力(MAC和AC)。根據(Horowitz 2014),32位浮點(FL)MAC操作消耗4.6 pJ(0.9+3.7 pJ),AC操作消耗0.9 pJ。32位整數(INT)MAC操作消耗3.2pJ(0.1+3.1pJ)和AC操作消耗0.1pJ。基於這些措施,我們計算了Tiny YOLO和Spiking-YOLO的能耗通過FLOPs(浮點運算)乘以MAC和AC計算的能耗,如下所示。我們根據2016年《雷蒙》上報告的Tiny YOLO的FLOPs,在我們的模擬中計算了Spiking-YOLO的FLOPs。圖9顯示,無論採用何種歸一化方法,Spiking-YOLO都顯示出卓越的能效,對於32位FL和INT操作,它比Tiny YOLO高出2000倍以上。
在這裏插入圖片描述
  其次,神經形態芯片上的SNN具有優異的能量效率,這是神經網絡的一個重要和理想方面。我們分別比較了在最新的GPU(泰坦V100)和神經形態芯片(TrueNorth)上運行時,Tiny YOLO和Spiking-YOLO的能量消耗。Titan V100的功率和GFLOPS(每秒千兆浮點運算)從(NVIDIA 2017)獲得,TrueNorth的GFLOPS/W來自(Merolla等人。2014年)中。我們將一個時間步長定義爲1毫秒(1 kHz同步信號)在(Merolla等人。2014年)中。
在這裏插入圖片描述
  根據在表2中的計算,當在TrueNorth上運行時,Spiking-YOLO消耗的能量大約小於Tiny YOLO的280倍。實驗結果表明,所提出的 channel-norm比layer-norm收斂快得多,因此,由於具有相似的功耗,採用 channel-norm的Spiking-YOLO的能耗大約小於採用layer-norm的4倍。請注意,當代的GPU是更先進的計算技術,TrueNorth芯片於2014年首次引入。隨着神經形態芯片的不斷髮展和更好的性能,我們可以期待更高的能量和計算效率。

Conclusion

  本文提出了首個SNN模型Spiking YOLO,它通過在非平凡數據集PASCAL VOC和MS-COCO上獲得與原始DNN相似的結果,成功地執行了目標檢測。爲此,提出了兩種新的方法。作者認爲,這項研究是解決深層SNNs中更先進的機器學習問題的第一步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章