董紅斌,劉洋英杰,付強
哈爾濱工程大學 計算機科學與技術(shù)學院, 黑龍江 哈爾濱 150001
隨著物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展與壯大,車輛在生活中逐漸與物聯(lián)網(wǎng)進行融合。城市與郊外車輛數(shù)量逐漸增多,車輛實時定位、跨域跟蹤等功能已成為公安管理的重要組成部分。目前,大多數(shù)地區(qū)的車輛識別主要是通過攝像頭識別車牌。然而,在實際環(huán)境中,尤其在偏遠區(qū)域,大量的攝像機清晰度低、處理速度慢。由于功耗原因,無法在終端上得到計算,需要傳回云端進行計算,在極端天氣條件下邊緣設(shè)備抗干擾能力弱、傳輸速度慢、圖像質(zhì)量差,導致云端計算準確率下降,反應(yīng)速度降低。
SNN是神經(jīng)網(wǎng)絡(luò)領(lǐng)域的一個重要分支,在計算機領(lǐng)域中發(fā)揮著重要作用,如場景分類[1]、圖像分類[2]、語音識別[3]等。Fu等[4]提出了一種先進的模式分類方法,即差分進化脈沖神經(jīng)網(wǎng)絡(luò)(differential evolving spiking neural network,DESNN)。在另一項研究中,F(xiàn)u等[5]設(shè)計了一個分層脈沖神經(jīng)網(wǎng)絡(luò)(spiking neural network,SNN),包括卷積層和池化層,并根據(jù)靈長類大腦的機制,提出了由興奮性神經(jīng)元和抑制性神經(jīng)元組成的SNN,同時使用取決于突觸后的脈沖到達等級的時間編碼(rank order)方式對輸入模式進行編碼,以確定特定模式的輸入脈沖優(yōu)先級。在卷積層中使用脈沖時間依 賴 可 塑 性 ( spike timing dependent plasticity,STDP)學習規(guī)則,以無監(jiān)督學習方式提取視覺特征。在目標檢測方面,Kim等[6]在研究中首次應(yīng)用了SNN,其將SNN與目標檢測相結(jié)合的研究具有重要意義。車輛重識別作為目標檢測的一個子任務(wù),不同于目標檢測,其目的是在不同的監(jiān)控場景中查找同一輛車。將SNN融合到應(yīng)用中也是一個重要的研究方向。
在改進車輛重識別算法性能的過程中,通過大量實驗后發(fā)現(xiàn),注意力機制在圖像領(lǐng)域效果極佳,尤其是對輸入圖像進行特征的提取過程作用重大。注意力機制在計算機視覺領(lǐng)域有著廣泛的應(yīng)用。目前,許多學者將注意力機制與行人重識別和車輛重識別相結(jié)合。因此,我們希望將脈沖神經(jīng)網(wǎng)絡(luò)集成到車輛重識別算法中的同時,利用注意力機制對脈沖神經(jīng)網(wǎng)絡(luò)進行優(yōu)化,提高算法的分類能力。伴隨著邊緣計算的不斷發(fā)展,邊緣設(shè)備間互相可以組成網(wǎng)絡(luò)。在由攝像頭組成的邊緣網(wǎng)絡(luò)中進行車輛重識別時,1輛車被攝像頭所捕捉后將數(shù)據(jù)發(fā)送給其他邊緣設(shè)備,然后其他邊緣設(shè)備將數(shù)據(jù)進行重識別計算,而不是返回云端計算,進而減少計算時間與傳輸時間。在邊緣設(shè)備進行計算后得到重識別結(jié)果,并及時在邊緣設(shè)備上進行響應(yīng),如警報、呼叫附近服務(wù)臺等,從而明顯減少了響應(yīng)時間。
針對車輛重識別算法的研究主要是通過度量學習、車輛外觀信息以及時空信息來研究車輛重識別算法。Liu等[7]利用車輛外觀信息和融合車牌匹配進行車輛重識別研究。Wu等[8]通過時空信息的約束,顯著提高了車輛重識別算法指標。Bai等[9]在度量學習方面調(diào)整了backbone中的損失函數(shù),改進了算法。
在車輛重識別算法的研究中,網(wǎng)絡(luò)結(jié)構(gòu)是一個重要的研究方向。Hsieh等[10]提出了一種基于興趣點及其相應(yīng)對稱點以確定其感興趣區(qū)域(region of interest,ROI)的方法,無需使用任何具有運動功能的車輛重識別算法,并提出了一種新穎的補丁匹配(PatchMatch)網(wǎng)絡(luò),以極高的精度細化最終結(jié)果。Mai等[11]采用暹羅卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),以車牌和車輛外觀為輸入,提出了一種用于車輛重識別任務(wù)的神經(jīng)網(wǎng)絡(luò)。Chao等[12]提出了一種基于深度學習的車輛重識別方法,該方法利用兩分支復(fù)合深度網(wǎng)絡(luò)(Multi-DNN)融合暹羅神經(jīng)網(wǎng)絡(luò)來融合顏色、模型和在擋風玻璃和地圖上粘貼的標記的分類輸出,將它們轉(zhuǎn)換為歐幾里得空間,其中距離可以直接用于衡量任意兩輛車的相似度。為實現(xiàn)這一目標,該研究提出了一種基于經(jīng)典卷積神經(jīng)網(wǎng)絡(luò)(Alex-net)的車輛顏色識別方法、一種基于深度卷積網(wǎng)絡(luò)(visual geometry group network,VGG)的車型識別方法和一種基于加速區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(faster region-CNN,F(xiàn)aster R-CNN)的粘貼標記檢測識別方法。Wu等[13]提出了一種新穎的綜合細節(jié)細化網(wǎng)絡(luò)(comprehensive detail refinement network,CDRNet),提出了從車輛圖像中學習魯棒和多樣化的特征。該算法包含全局注意力模塊、細節(jié)模塊和局部特征細化模塊3個模塊。全局注意力模塊提取關(guān)鍵的全局特征,而細節(jié)和局部細化模塊檢索重要的次要特征。Liu等[14]通過實驗,提出了車輛重識別框架。該框架基于深度神經(jīng)網(wǎng)絡(luò),其漸進式車輛重識 別 算 法 ( progressive and multimodal vehicle reidentification,PROVID)對視覺特征、車牌、攝像頭位置和上下文信息利用更加充分。
車輛重識別算法的訓練流程是:在輸入圖像后,算法對圖像進行預(yù)先處理;隨后將處理后得到的圖像傳輸?shù)骄W(wǎng)絡(luò)中,進行計算和訓練損失函數(shù)的操作,目的是增加類之間的距離,減少類內(nèi)的距離。圖1是訓練流程,描述了文中算法的訓練過程。模型被訓練后,可以測試輸入圖像。測試過程是將圖像輸入網(wǎng)絡(luò)進行計算,計算得到的特征圖的相似度(主要是余弦距離),通過排序得到結(jié)果。圖2是測試流程,描述了文中算法的測試過程。
圖1 車輛重識別訓練流程
圖2 車輛重識別測試流程
SNN被稱為第三代人工神經(jīng)網(wǎng)絡(luò),是受大腦等脈沖信號處理系統(tǒng)的啟發(fā)而構(gòu)建的。大腦具有高智能和低功耗的優(yōu)點,通過參考大腦中的脈沖結(jié)構(gòu),SNN可以在保持低功耗的同時實現(xiàn)與人工神經(jīng)網(wǎng)絡(luò)(artificial neural network,ANN)接近的性能。但是在SNN上訓練面向ANN的數(shù)據(jù)時發(fā)現(xiàn),SNN模擬更接近現(xiàn)實的神經(jīng)元,實值像素圖像不適合SNN。此外,還需要考慮時間信息的影響,單個神經(jīng)元模型[15]必須計算簡單,擁有多種可變的放電方式。通過該方法可以模擬真實研究中的生物神經(jīng)元。當神經(jīng)元被信號激活的情況下,該神經(jīng)元會產(chǎn)生1個信號。神經(jīng)元通過將該信號傳遞給其他神經(jīng)元,來實現(xiàn)改變膜電位的目的。
在脈沖神經(jīng)網(wǎng)絡(luò)中,脈沖神經(jīng)元的當前激活情況通常被認為是當前狀態(tài)。該水平通常會通過建模的方式生成為微分方程。當對脈沖神經(jīng)元進行脈沖輸入操作時,其輸入的脈沖會將電流增加1個短暫的間隙時間,然后逐漸下降。有許多編碼方法將這些輸出脈沖序列轉(zhuǎn)換為實際數(shù)字,這些編碼方法同時考慮了脈沖頻率和脈沖間隔時間。在動態(tài)的脈沖神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元與深度神經(jīng)網(wǎng)絡(luò)不同。脈沖神經(jīng)元并不是在每次迭代計算過程中都被激活。相對的,脈沖神經(jīng)元是在其膜電位達到閾值時有激活情況。
脈沖神經(jīng)網(wǎng)絡(luò)接近現(xiàn)實,尤其是在構(gòu)造模擬神經(jīng)元更,并且脈沖神經(jīng)元在計算過程中對時間信息所產(chǎn)生的影響進行了計算與考慮。在Izhikevich[16]的經(jīng)典實驗中,當1個神經(jīng)元被激活時,它會產(chǎn)生1個信號傳遞給其他神經(jīng)元,以增加或減少其膜電位。
圖3[17]為脈沖神經(jīng)原電位轉(zhuǎn)換過程。在SNN中,神經(jīng)元的行為被描述為充電、放電和復(fù)位3個過程,對應(yīng)于圖3中的3種顏色。膜電位H輸入X到脈沖神經(jīng)元。在輸入后膜電位產(chǎn)生變化,隨后進行充電過程。在進行充電過程后,膜電位H產(chǎn)生新的變化,隨后生成脈沖S,并在此之后進行放電過程。最后,膜電位在釋放脈沖后變化到V,從H和S到V的轉(zhuǎn)換是一個復(fù)位過程。
圖3 神經(jīng)元充電、放電和復(fù)位過程的研究
圖3中X(t)是時間t的輸入,H(t)是時間t充電后的膜電位,S(t)是時間t釋放的脈沖,V(t)是時間t釋放脈沖后的膜電位。在0時刻時,X傳輸進入脈沖神經(jīng)網(wǎng)絡(luò)的脈沖神經(jīng)元中,神經(jīng)元充電,V(0)進行變化,隨后神經(jīng)元放電并重置為默認膜電位,并為下一個1時刻脈沖做好準備。圖3中的充電方程定義為
不同的神經(jīng)元有不同的充電方程。充電方程將描述閾下動態(tài)的微分方程轉(zhuǎn)換為差分方程。當考慮到將神經(jīng)元膜電位中的離子通過膜擴散的“泄漏”項反映在方程中,此神經(jīng)元被定義為LIFNode(leaky integration-and-fire)。跟據(jù)圖3 可以得到其充電方程定義為
式中:Vreset為重置電壓, τm為膜電位時間常數(shù)。在神經(jīng)元的計算過程(動力學方程)的描述中可以發(fā)現(xiàn),放電過程中的放電方程是不可微分的。放電方程定義為
式中: Θ 為一個生成二進制脈沖的階躍函數(shù),Vthreshold為閾值電壓。復(fù)位方程定義為
式中Vreset為重置電壓。式(1)表示了脈沖神經(jīng)元在經(jīng)過放電后電位歸位的過程。
IFNode(integration-and-fire)是研究中最早的脈沖神經(jīng)元模型[18?19]。在該模型中,細胞的表現(xiàn)被認為是通過對細胞膜進行充電來控制的,不考慮將神經(jīng)元膜電位中的離子通過膜擴散的“泄漏”項反映在方程中。
式中:I(t)為刺激電流,C為細胞膜電容。
在實際情況中,很多圖像質(zhì)量較差,圖像中存在大量噪聲。這是終端設(shè)備在極端天氣下不穩(wěn)定造成的,很難在短時間內(nèi)大規(guī)模優(yōu)化終端設(shè)備。在Deng等[20]的研究中發(fā)現(xiàn)SNN更適合處理非實值像素二值圖像,如N-MNIST數(shù)據(jù)集和DVS-CIFAR10,它們使用動態(tài)視覺傳感器(dynamic vision sensor,DVS)進行掃描每個數(shù)據(jù)集。從靜態(tài)數(shù)據(jù)集中的圖像轉(zhuǎn)換而來的脈沖事件格式數(shù)據(jù)會在圖像中產(chǎn)生動態(tài)模糊。實驗表明,真實圖像不適合由SNN處理,而虛擬圖像更適合由SNN計算。相比之下,模糊圖像更接近于不真實的圖像。當將幀圖像轉(zhuǎn)換為具有非實值像素的二值圖像時,模糊幀圖像轉(zhuǎn)換后生成的非實值像素圖像更適合于脈沖神經(jīng)網(wǎng)絡(luò)的計算,可以讓更多的神經(jīng)元受到刺激和釋放反應(yīng)。
在注意力機制被提出后,注意力機制在計算機領(lǐng)域得到了廣泛的應(yīng)用。在Dong等[21]的研究中提出了一種基于注意力機制的協(xié)同過濾系統(tǒng),并設(shè)計了特征主題模型以從評論文本中提取項目的特征。注意力機制已廣泛應(yīng)用于行人識別和車輛重識別任務(wù)。在Pirazh[22]的研究中,將注意力機制集成到車輛重識別任務(wù)中,提出了一種雙向自適應(yīng)注意力(adaptive attention for vehicle reidentification,AAVER)模型,作用是通過全局外觀路徑捕捉車輛的宏觀特征,通過使用方向條件對路徑信息進行約束,通過該方式的部分外觀形狀進行學習,隨后對區(qū)域性的不同的特征進行捕捉,即把注意力集中在最有用的信息關(guān)鍵點上。
本文使用的注意力機制是空間通道注意力機制[23](convolutional block attention module,CBAM)。CBAM廣泛應(yīng)用于計算機視覺領(lǐng)域。在Zhang等[24]的研究中就設(shè)計了一種基于稠密連接網(wǎng)絡(luò)(densely connected networks,DenseNet)模型和 CBAM 模塊的遙感圖像算法。將CBAM與任意卷積神經(jīng)網(wǎng)絡(luò)一起疊加使用,其不僅不會對結(jié)構(gòu)產(chǎn)生額外的負擔,反而在訓練過程實現(xiàn)了端到端的效果,對分類任務(wù)有顯著的效果。本文將其融合到算法中,以最大限度地減少脈沖神經(jīng)元在提取特征時的開銷,并且在將SNN設(shè)計為卷積模塊后,使用CBAM模塊處理脈沖卷積神經(jīng)網(wǎng)絡(luò)效果極佳。同時,CBAM模塊中面向通道的注意力機制對針對SNN的通道歸一化優(yōu)化效果影響不大。綜上所述,使用CBAM對SNN有極好的效果。
加入CBAM模塊后,整體算法網(wǎng)絡(luò)結(jié)構(gòu)如圖4所示。
圖4 算法網(wǎng)絡(luò)結(jié)構(gòu)
在本文中數(shù)據(jù)集使用是開源數(shù)據(jù)集VeRi776[25]。VeRi776 包含 776 輛汽車的 50 000 多張圖像。數(shù)據(jù)集圖像是在現(xiàn)實世界采集得到的。采集過程中,通過約束監(jiān)控場景進行捕獲,同時進行了預(yù)先屬性的標記。屬性分類很多,如邊框BBox、品牌、顏色和類型等。每輛車由不同數(shù)目攝像頭(約2~18個)分別采集。不同采集條件可以分為視角、光照、分辨率和遮擋的不同等。同時數(shù)據(jù)集標注了大量的車牌信息如邊框BBox、車牌號等。除此以外數(shù)據(jù)集包括了大量的攝像機時空信息,比如拍攝的時間戳、相鄰攝像機之間的距離等。
為了模擬模糊場景,對數(shù)據(jù)集進行模糊處理。使用運動模糊、高斯噪聲、椒鹽噪聲等模糊方法后,實驗表明算法對加入單一類型噪聲的模糊場景處理效果穩(wěn)定;加入2種以上的噪聲后,算法對其處理效果較差。因此,選擇運動模糊作為增加噪聲方法。
實驗中使用的實驗平臺為Zhu[26]搭建的AICity2020-VOC-ReID實驗平臺。該平臺在NVIDIA AICity Challenge 2020 的車輛重識別賽道排名第2,無需使用任何其他數(shù)據(jù)和注釋,針對車輛本身信息進行計算。在VeRi776數(shù)據(jù)集上,其性能也優(yōu)于當前最先進的方法。
在脈沖神經(jīng)網(wǎng)絡(luò)部分,本文采用了北京大學信息科學與技術(shù)學院數(shù)字媒體研究所多媒體學習小組和鵬城實驗室共同開發(fā)的Spiking Jelly框架[17]。Spiking Jelly是一種基于 PyTorch的框架,使用PyTorch作為自動微分后端,使用C++和CUDA擴展來增強性能,同時支持CPU和GPU。該框架包含數(shù)據(jù)集、可視化和深度學習3個模塊。目前,整體項目主要由北京大學媒體學習小組和鵬城實驗室人工智能中心管理。
根據(jù)該框架的研究,在卷積過程中使用IFNode的效果更好,本文還使用了其他優(yōu)化SNN的方法,如在脈沖神經(jīng)網(wǎng)絡(luò)中加入通道歸一化操作[6]等。
實驗中發(fā)現(xiàn),在主干網(wǎng)絡(luò)中串行加入SNN會顯著降低算法的效果。原因可能是SNN的串行添加將向計算后獲得的特征映射添加噪聲。這是因為SNN從圖像中提取模糊特征并丟棄清晰特征,但模糊場景的特征映射和清晰場景的特征共存,而這對車輛重識別算法極為不利。因此,該算法采用并行結(jié)構(gòu)將SNN并行融合到算法中。融合后,該算法在VeRi776數(shù)據(jù)集上得到的Rank-1指標為89.7%,在處理清晰圖像時僅下降了7.1%。這個結(jié)果是可以接受的,因為脈沖神經(jīng)網(wǎng)絡(luò)在處理清晰圖像方面不如人工神經(jīng)網(wǎng)絡(luò)有效。但根據(jù)研究[15]顯示,除了功耗優(yōu)勢外,脈沖神經(jīng)網(wǎng)絡(luò)在模糊情況下的效果可以與人工神經(jīng)網(wǎng)絡(luò)進行比較。實驗中使用了預(yù)熱機制,初始學習率為3.50×10?4,統(tǒng)一訓練 250 個迭代次數(shù)(epoch)。接下來,在模糊條件下,將串行結(jié)構(gòu)和并行結(jié)構(gòu)與Baseline進行比較。
損失函數(shù)的訓練圖如圖5所示,效果比較如表1所示。如圖5所示,SNN串行結(jié)構(gòu)損失函數(shù)的收斂效果較差,在模糊情況下振蕩。如表1所示,與baseline相比,加入串行SNN結(jié)構(gòu)后,Rank-1降低了10.4%,mAP降低了16.7%。然而,在添加并行SNN結(jié)構(gòu)后,Rank-1降低了2.0%,mAP降低了5.6%。SNN并行結(jié)構(gòu)與baseline之間的mAP和Rank-1指標差異在預(yù)期范圍內(nèi)??梢钥闯觯⑿蠸NN在收斂性和網(wǎng)絡(luò)訓練性能方面優(yōu)于串行SNN。加入并行結(jié)構(gòu)后,訓練時間增加,收斂速度減慢。但是,與串行結(jié)構(gòu)相比,并行結(jié)構(gòu)的收斂效果更好,精度也會大大提高。
圖5 Baseline和增加串行結(jié)構(gòu)和并行結(jié)構(gòu)的損失函數(shù)訓練圖
表1 baseline 與添加串行結(jié)構(gòu)和并行結(jié)構(gòu) baseline 比較%
在添加CBAM模塊后,我們進行了消融實驗,以驗證CBAM模塊對SNN具有更好的適應(yīng)性。損失函數(shù)的訓練圖如圖6所示,效果比較如表2所示。
表2 比較 baseline、SNN 和 CBAM 模塊的消融效果 %
圖6 baseline、SNN 和 CBAM 消融實驗中損失函數(shù)訓練圖
圖6顯示了添加SNN后算法的收斂效果變差。這是因為在SNN的并行訓練過程中,需要額外計算每個神經(jīng)元充電和放電的復(fù)位過程。在添加CBAM后收斂速度變慢,但整體收斂效果變好。
如表2所示,將CBAM添加到baseline后,Rank-1提升2.2%,mAP提升5.4%。然而,在使用SNN時將CBAM添加到Baseline后,Rank-1提升2.7%,mAP提升7.9%??梢钥闯觯珻BAM模塊添加到使用SNN的baseline中,相比于將CBAM添加到baseline時,在Rank-1和mAP指標方面提升更明顯,證明了SNN比ANN更適合使用CBAM。在Rank-1和mAP指標中,添加SNN后,Baseline和具有CBAM的Baseline的準確性降低在預(yù)期范圍內(nèi)。與清晰情景相比,模糊情景中的指標下降幅度減小。這也證明了SNN與基于ANN的Baseline相比,在處理模糊場景時的性能差異小于在處理清晰場景時的性能差異。
本文提出了一種融合SNN和CBAM的車輛重識別模型。融合SNN后,車輛重識別算法可以保持較低的功耗,并且在性能上縮小了與ANN的差距。CBAM模塊則進一步提高了車輛重識別算法的重識別效果。實驗結(jié)果表明,將SNN融合到車輛重識別算法中后,對算法效果的影響是可以接受的,CBAM對SNN的影響是很好的。同時,文中算法需要在某些方面進行改進,以便在靈活性方面獲得更好的性能,例如損失函數(shù)的收斂性。今后,我們將針對模糊場景優(yōu)化損失函數(shù)的收斂性,并設(shè)計完全基于SNN的車輛重識別算法,以SNN取代整個網(wǎng)絡(luò)。