天天看點

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

Spiking-YOLO: Spiking Neural Network for Energy-Efficient Object Detection |AAAI 2020

  • Spiking-YOLO:脈沖神經網絡高效的目标檢測
    • Abstract
    • Introduction
    • Related work
      • DNN-to-SNN conversion
      • Object detection
    • Methods
      • Channel-wise data-based normalization
        • Conventional normalization methods
        • Analysis of layer-norm limitation
        • Proposed normalization method
        • Analysis of the improved firing rate
      • Signed neuron featuring imbalanced threshold
        • Limitation of leaky-ReLU implementation in SNNs
        • The notion of imbalanced threshold
    • Evaluation
      • Experimental setup
      • Experimental results
        • Spiking-YOLO detection results
        • Spiking-YOLO energy efficiency
    • Conclusion

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

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測
Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測
Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  由于事件驅動的性質,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計算

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  作為layer-norm的一個擴充版本,引入了一種使用最大激活的99.9%來歸一化激活的方法;這增加了對異常值的魯棒性,并確定了神經元的充分激活。然而,我們的實驗表明,當使用傳統的歸一化方法在深度SNN中應用目标檢測時,該模型的性能會顯著下降。

Analysis of layer-norm limitation

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  圖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可以表示為

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  如前所述,最大激活是從訓練資料集計算出來的。在下一層中,歸一化激活必須乘以λl-1i,以在歸一化之前獲得原始激活。具體方法如算法1和圖2所示。

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測
Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  以通道方式歸一化激活可消除極小激活(即,欠激活),在歸一化之前有很小的激活值。換言之,神經元被歸一化以獲得更高但适當的放電率,進而在短時間内實作準确的資訊傳輸。

Analysis of the improved firing rate

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  在圖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時,許多神經元放電更為規律。

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  詳細分析驗證了細粒度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的有符号神經元的潛在動力學表現為

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測
Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  如圖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。

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  值得注意的是,沒有提出的方法,模型無法檢測到目标,VOC PASCAL和MS COCO的檢測率分别為6.87%和2.82%。當使用channel-norm時,模型仍然難以檢測到目标,檢測率最多約7.31%和3.02%。這是一個很好的迹象表明,帶IBT的有符号神經元在leaky-ReLU中準确地實作了漏項。是以,其餘的實驗是以IBT為預設值的有符号神經元進行的。

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  為了進一步分析,我們對兩種不同的輸出解碼方案進行了額外的實驗:一種是基于累積Vmem,另一種是基于脈沖計數。Vmem/Vth的商表示脈沖計數,餘數四舍五入。餘數将最終成為一個錯誤和丢失的資訊。是以,基于Vmem的輸出解碼方案對于解釋脈沖序列更為精确;圖7驗證了這個斷言。基于Vmem的輸出解碼方案優于基于脈沖計數的方案,在channel-norm上收斂更快。

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  圖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倍以上。

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  其次,神經形态晶片上的SNN具有優異的能量效率,這是神經網絡的一個重要和理想方面。我們分别比較了在最新的GPU(泰坦V100)和神經形态晶片(TrueNorth)上運作時,Tiny YOLO和Spiking-YOLO的能量消耗。Titan V100的功率和GFLOPS(每秒千兆浮點運算)從(NVIDIA 2017)獲得,TrueNorth的GFLOPS/W來自(Merolla等人。2014年)中。我們将一個時間步長定義為1毫秒(1 kHz同步信号)在(Merolla等人。2014年)中。

Spiking-YOLO:脈沖神經網絡高效的目标檢測Spiking-YOLO:脈沖神經網絡高效的目标檢測

  根據在表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中更先進的機器學習問題的第一步。

繼續閱讀