邱忠宇,趙文龍,高 文,潘洪濤,史冉東
(上海機(jī)電工程研究所,上海 201109)
近年來,機(jī)器視覺在安防、軍事、醫(yī)療、工業(yè)農(nóng)業(yè)生產(chǎn)等諸多領(lǐng)域大放異彩,但面對(duì)復(fù)雜環(huán)境,圖像傳感器仍無法平衡高精度與低計(jì)算消耗的關(guān)系。1991年,《Scientific American》雜志上刊登了一張由模仿眼睛神經(jīng)結(jié)構(gòu)的新型硅視網(wǎng)膜獲得的貓的圖像[1],這是首次從生物學(xué)和工程學(xué)角度研究立體視覺問題并產(chǎn)生成果,也標(biāo)志著視覺仿生神經(jīng)形態(tài)領(lǐng)域的揭幕。事件相機(jī)作為一種異步傳感器,改變了傳統(tǒng)獲取視覺信息的方式,從原來的根據(jù)時(shí)鐘周期采樣獲取視覺信息,變?yōu)橐揽縿?dòng)態(tài)場(chǎng)景中光線變化獲取視覺信息,這與視網(wǎng)膜系統(tǒng)的信號(hào)傳輸有著極大相似之處。
動(dòng)態(tài)視覺傳感器最早源于瑞士的J?rg Kramer 教授設(shè)計(jì)的第一款異步動(dòng)態(tài)視覺傳感器(dynamic vision sensor,DVS),其成像規(guī)格為48×48,每個(gè)像素點(diǎn)會(huì)根據(jù)光照強(qiáng)度變化,輸出ON/OFF 事件[2-3]。2004年,瑞士的Lichtsteiner 等[4]在動(dòng)態(tài)視覺傳感器中加入反饋機(jī)制,加快了模型反應(yīng)速度,提高了傳感器的動(dòng)態(tài)范圍。2006年到2008年,Lichtsteiner 等[5]將前端光感受器與開關(guān)電容差分電路相結(jié)合,使得響應(yīng)延遲值進(jìn)一步降低,動(dòng)態(tài)范圍也有所提升。2009年,奧地利的Posch團(tuán)隊(duì)[6]設(shè)計(jì)了一款基于事件的紅外視覺傳感器。2014年,瑞士Berner 等[7]設(shè)計(jì)了動(dòng)態(tài)有源像素視覺傳感器(dynamic and active pixel vision sensor,DAVIS),實(shí)現(xiàn)異步事件和同步幀級(jí)圖像的同時(shí)輸出。
事件相機(jī)以其微秒級(jí)的時(shí)間分辨率、低延遲、高動(dòng)態(tài)范圍和低功耗的特性,在高速、高動(dòng)態(tài)范圍等挑戰(zhàn)性場(chǎng)景中有著極高的應(yīng)用潛力。本文通過對(duì)基于事件的特征檢測(cè)算法和基于事件的卷積神經(jīng)網(wǎng)絡(luò)算法這兩種目標(biāo)檢測(cè)算法進(jìn)行對(duì)比分析,驗(yàn)證基于事件的卷積神經(jīng)網(wǎng)絡(luò)算法在多目標(biāo)、高速場(chǎng)景檢測(cè)的優(yōu)越性。
為驗(yàn)證檢測(cè)算法,根據(jù)MNIST-DVS 數(shù)據(jù)集和POKER-DVS 數(shù)據(jù)集進(jìn)行目標(biāo)檢測(cè),具體流程如圖1所示。基于事件的特征檢測(cè)算法采用第一章的積分模型和LS(leaky surface)模型進(jìn)行事件相機(jī)數(shù)據(jù)的預(yù)處理,并通過改進(jìn)方向梯度直方圖(histogram of oriented gradient,HOG)算法進(jìn)行特征提取,改進(jìn)支持向量機(jī)(support vector machine,SVM)分類器進(jìn)行特征分類,進(jìn)而實(shí)現(xiàn)目標(biāo)的檢測(cè)與分類?;谑录木矸e神經(jīng)網(wǎng)絡(luò)算法采用第一章的LS 模型,將其放在神經(jīng)網(wǎng)絡(luò)模型的第一層進(jìn)行事件處理,然后進(jìn)行神經(jīng)網(wǎng)絡(luò)的模型訓(xùn)練,最終實(shí)現(xiàn)基于事件的卷積神經(jīng)網(wǎng)絡(luò)的目標(biāo)檢測(cè)。
動(dòng)態(tài)視覺傳感器作為一種異步傳感器,改變了傳統(tǒng)獲取視覺信息的方式。動(dòng)態(tài)視覺傳感器與傳統(tǒng)圖像傳感器的區(qū)別在于,動(dòng)態(tài)視覺傳感器沒有“幀”的概念,主要利用動(dòng)態(tài)場(chǎng)景的光照強(qiáng)度變化進(jìn)行采樣,輸出由微秒級(jí)的事件組成,類似于點(diǎn)云,不受傳輸速度的限制,圖2 為傳統(tǒng)圖像傳感器與動(dòng)態(tài)視覺傳感器的對(duì)比。
圖2 傳統(tǒng)圖像傳感器與動(dòng)態(tài)視覺傳感器的輸出對(duì)比Fig.2 Output comparison between traditional imaging sensor and dynamic vision sensor
動(dòng)態(tài)視覺傳感器的輸出樣例如表1 所示,共有4個(gè)變量,分別為時(shí)間t、像素點(diǎn)橫坐標(biāo)x、縱坐標(biāo)y、極性p。時(shí)間t單位為微秒級(jí)分辨率,較為精確地表示出像素點(diǎn)的光照強(qiáng)度變化時(shí)間;坐標(biāo)(x,y)構(gòu)成一個(gè)二維空間,表示像素點(diǎn)的位置;極性p∈{-1,1}表示某一個(gè)像素點(diǎn)的光照強(qiáng)度是否發(fā)生變化。如果p無變化則動(dòng)態(tài)視覺傳感器沒有事件輸出;如果像素點(diǎn)的光照強(qiáng)度變亮超過某個(gè)閾值,則極性為1;如果像素點(diǎn)的光照強(qiáng)度變暗超過某個(gè)閾值,則極性為-1。有效提取事件信息是一個(gè)重要的研究?jī)?nèi)容,本文參照已有方法選取兩種模型進(jìn)行對(duì)比。
表1 動(dòng)態(tài)視覺傳感器輸出樣例Tab.1 Output sample of dynamic vision sensor
CanniciM 等[8]設(shè)計(jì)一種LS 模型,將動(dòng)態(tài)視覺傳感器產(chǎn)生的稀疏事件整合到一個(gè)表面,用于卷積神經(jīng)網(wǎng)絡(luò)的事件預(yù)處理,便于后續(xù)卷積層、池化層的內(nèi)部數(shù)據(jù)處理和修改信息的向下傳遞。
參照尖峰神經(jīng)網(wǎng)絡(luò)具有保持過去事件記憶的功能,其主要通過一個(gè)能夠累積事件的體系結(jié)構(gòu)將動(dòng)態(tài)視覺傳感器產(chǎn)生的稀疏事件整合到LS模型上。時(shí)刻t產(chǎn)生的事件對(duì)應(yīng)像素坐標(biāo)(xe,ye)和時(shí)間戳tts,每個(gè)像素位置(x,y)產(chǎn)生一定的增量Δincr。此外,表面所有像素的衰減量取決于上一次接收到的事件和先前接收到的事件之間的時(shí)間間隔,因此,t時(shí)刻的表面像素(x,y)對(duì)應(yīng)值具體可以表示為
式中:表示LS 模型上的像素坐標(biāo)(x,y)的值;Δleak=λ·(tts-tt-1s)。λ和Δincr對(duì)整個(gè)模型有很大影響:Δincr決定每個(gè)事件中包含多少信息,而λ定義了其中的衰減率,可通過調(diào)整λ和Δincr決定每個(gè)像素點(diǎn)值的累積,最大值化操作可防止像素值變?yōu)樨?fù)值。
解決稀疏事件還有另外一種方式——積分模型[9],主要是將每個(gè)像素點(diǎn)的事件轉(zhuǎn)化為一系列的連續(xù)函數(shù),然后通過積分實(shí)現(xiàn)圖像重構(gòu)。
根據(jù)輸出事件e={tts,x,y,p},基于事件相機(jī)的積分模型可表示為
式中:ex,y(t)表示隨時(shí)間變化的連續(xù)函數(shù);δts(t)是一個(gè)脈沖函數(shù),事件序列被轉(zhuǎn)換成連續(xù)時(shí)間信號(hào),由一系列脈沖組成;表示時(shí)間戳為tts的位置(x,y)的事件輸出極性。這樣,圖像中每一個(gè)像素點(diǎn)都有對(duì)應(yīng)的一個(gè)ex,y(t)來表示。
接著定義增量E為時(shí)間段[f,t]之間的事件的積分累加,可表達(dá)為
通過得到的增量E,將其與原始值進(jìn)行整合,像素點(diǎn)(x,y)對(duì)應(yīng)值可表達(dá)為
基于事件的特征檢測(cè)算法采用改進(jìn)HOG 算法[10]和改進(jìn)多分類SVM 算法[11-12]。首先采用LS 模型或積分模型將事件形成到某一平面,再通過改進(jìn)HOG算法和改進(jìn)多分類SVM 算法進(jìn)行特征提取和目標(biāo)檢測(cè)。HOG特征提取算法,在進(jìn)行梯度計(jì)算之前通過高斯濾波實(shí)現(xiàn)圖像的平滑操作,對(duì)梯度方向位于相鄰區(qū)間的中心之間的方向和位置進(jìn)行雙線性插值,可降低圖像的局部細(xì)節(jié)特征,提高圖像的整體細(xì)節(jié)性,原理如圖3所示。點(diǎn)M、N、P像素值的計(jì)算公式為
圖3 雙線性插值原理Fig.3 Schematic diagram of bilinear interpolation
并將A、B、C、D的坐標(biāo)(0,0)、(0,1)、(1,0)和(1,1)代入,化簡(jiǎn)可得矩陣表達(dá)形式為
式中:f(A)、f(B)、f(C)、f(D)、f(M)、f(N)、f(P)分別為像素點(diǎn)A、B、C、D、M、N、P的像素值。
SVM分類器只是一個(gè)二分類模型,要將多分類復(fù)雜問題轉(zhuǎn)換為二分類的簡(jiǎn)單問題,可通過采用多個(gè)SVM 分類器來實(shí)現(xiàn)多分類目的。由于目標(biāo)檢測(cè)中提取出來的特征向量中背景類別通常占絕大部分,因此本文對(duì)二叉樹的分類方法進(jìn)行了改進(jìn)。首先將背景與其他類別通過SVM 分類器進(jìn)行分類,以有效地分離背景特征類別與目標(biāo)特征類別,最大限度地提高目標(biāo)檢測(cè)的精度。改進(jìn)多分類SVM 算法如圖4所示,步驟為:
圖4 改進(jìn)多分類SVM算法Fig.4 Improved multi-classification SVM algorithm
1)將訓(xùn)練樣本數(shù)據(jù)集輸入SVM 模型中,得到一個(gè)初步分類背景特征與目標(biāo)特征的SVM模型S。
2)通過模型S將目標(biāo)特征和背景特征分為兩大類。
3)根據(jù)目標(biāo)特征類別數(shù)量N判定是否需要進(jìn)行二分類。如果N≤6,可直接進(jìn)行逐個(gè)分類;否則,則需要先進(jìn)行二分類,再次將目標(biāo)特征分成兩大類,以減少錯(cuò)誤累積。
4)輸出各個(gè)特征類別,實(shí)現(xiàn)目標(biāo)檢測(cè)。
本文采用已有的基于事件的深度學(xué)習(xí)目標(biāo)檢測(cè)算法——Event-YOLO[8]進(jìn)行驗(yàn)證,基于事件的卷積神經(jīng)網(wǎng)絡(luò),對(duì)卷積層和池化層進(jìn)行重新表達(dá),通過重新計(jì)算更新事件的像素區(qū)域的特征,并以此實(shí)現(xiàn)最終的目標(biāo)預(yù)測(cè)。在此設(shè)計(jì)中,特征圖只會(huì)在新事件傳入時(shí)才進(jìn)行更新,此外,Event-YOLO 引入了衰減機(jī)制,隨著時(shí)間推移,某些像素點(diǎn)的增量在各個(gè)隱藏層也會(huì)不斷衰減,這也導(dǎo)致了計(jì)算出來的特征信息會(huì)隨著視覺信息在輸入端的消失而逐漸衰減消失。
Event-YOLO算法的網(wǎng)絡(luò)架構(gòu)主要參照了YOLO檢測(cè)網(wǎng)絡(luò)[13],加入了LS 模型,并改進(jìn)了卷積層、池化層、全連接層?;谑录木矸e層(e-conv)的主要功能是:通過事件更新來確定此刻的特征圖相比于上一時(shí)刻特征圖在哪個(gè)區(qū)域發(fā)生變化,便于重新計(jì)算已經(jīng)發(fā)生變化的特征圖和重用未變化的特征圖?;谑录淖畲蟪鼗瘜拥脑O(shè)計(jì)核心在于:在最大池化層的每個(gè)接收域中,最大值的位置可能會(huì)隨著時(shí)間保持不變,利用此性質(zhì)可避免每次重新計(jì)算最大值的位置。全連接層可用1×1的基于事件的卷積層來代替,將之前層提取的特征映射成一組向量。損失函數(shù)與YOLO網(wǎng)絡(luò)損失函數(shù)相同。
Event-YOLO 網(wǎng)絡(luò)結(jié)構(gòu)如圖5 所示,網(wǎng)絡(luò)采用事件流作為輸入,通過LS 模型將事件集成到一個(gè)表面上,并采用基于事件的卷積層、基于事件的最大池化層對(duì)事件進(jìn)行特征提取,最后形成可用于目標(biāo)檢測(cè)和分類的網(wǎng)絡(luò)結(jié)構(gòu)。所采用的事件數(shù)據(jù)集像素大小均為128×128或256×256,因此本文將輸入表層劃分成4×4 個(gè)區(qū)域,這樣無論數(shù)據(jù)集尺寸為何種形式,都無需對(duì)網(wǎng)絡(luò)進(jìn)行大的修改。此外,本網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置每個(gè)區(qū)域需要預(yù)測(cè)兩個(gè)回歸框,即B=2,由于類別根據(jù)數(shù)據(jù)集的不同有所差異,在MNIST-DVS 數(shù)據(jù)集中,共有10個(gè)數(shù)字,類別數(shù)目C=10。
圖5 Event-YOLO網(wǎng)絡(luò)結(jié)構(gòu)Fig.5 Event-YOLO network structure
目前傳統(tǒng)圖像的目標(biāo)檢測(cè)數(shù)據(jù)集數(shù)不勝數(shù),但DVS尚處于起步階段,公開的基于事件的數(shù)據(jù)集資源稀缺。目前最流行的數(shù)據(jù)集有:MINST-DVS、POKER-DVS[14]、CIFAR10-DVS[15],這些數(shù)據(jù)集大多來源于傳統(tǒng)的數(shù)據(jù)集。受限于數(shù)據(jù)集,本文采用MINST-DVS、POKER-DVS兩種數(shù)據(jù)集進(jìn)行檢測(cè)。
MNIST-DVS數(shù)據(jù)集是由塞維利亞微電子研究所制作,來源于傳統(tǒng)圖像MNIST數(shù)據(jù)集。MNIST-DVS數(shù)據(jù)集通過平滑插值算法,將原始尺寸的手寫數(shù)字圖像放大4、8、16倍,最終通過動(dòng)態(tài)視覺傳感器錄制300 00組事件數(shù)據(jù)集,其中0~9每個(gè)數(shù)字各有3 000組。
POKER-DVS 數(shù)據(jù)集是一個(gè)小的神經(jīng)擬態(tài)記錄的數(shù)據(jù)集,通過在DVS前快速瀏覽定制撲克牌而制作形成,此數(shù)據(jù)集包含了黑桃、紅桃、方塊、梅花4 類目標(biāo),每組數(shù)據(jù)像素大小為31×31。POKER-DVS 數(shù)據(jù)集數(shù)據(jù)樣本過少,為便于應(yīng)用到目標(biāo)檢測(cè)算法中,本文進(jìn)行處理,每個(gè)時(shí)長(zhǎng)控制在1.5 ms 左右,并結(jié)合撲克牌中的邊界框,最終形成了292個(gè)數(shù)據(jù)樣本。
為驗(yàn)證已有算法的準(zhǔn)確性,本文設(shè)計(jì)了單目標(biāo)、多目標(biāo)、快速運(yùn)動(dòng)場(chǎng)景進(jìn)行試驗(yàn)驗(yàn)證。在單目標(biāo)檢測(cè)中,采用MNIST-DVS 數(shù)據(jù)集進(jìn)行驗(yàn)證;多目標(biāo)和快速運(yùn)動(dòng)場(chǎng)景采用POKER-DVS數(shù)據(jù)集。
單目標(biāo)檢測(cè)采用MNIST-DVS 數(shù)據(jù)集進(jìn)行驗(yàn)證,在基于事件的特征檢測(cè)算法中,采用不同的事件處理模型對(duì)MNIST-DVS 數(shù)據(jù)集進(jìn)行檢測(cè),檢測(cè)結(jié)果如表2 所示。由表2 可知,數(shù)字6 和數(shù)字9 在不同的角度有著極大的相似性,且兩者的檢測(cè)精度較低,其主要原因在于錯(cuò)誤的分類。此外根據(jù)數(shù)據(jù)還可以發(fā)現(xiàn),積分模型和LS 模型這兩種模型對(duì)事件的處理結(jié)果精度大致相當(dāng)。
表2 基于事件的特征檢測(cè)結(jié)果Tab.2 Result of event-based feature detection
MINST-DVS 數(shù)據(jù)集下,基于事件的特征檢測(cè)算法準(zhǔn)確率為97.3%,基于事件的卷積神經(jīng)網(wǎng)絡(luò)算法準(zhǔn)確率為98.2%(事件處理后3 種不同尺寸數(shù)字圖片的檢測(cè)結(jié)果如圖6 所示)。兩種算法檢測(cè)準(zhǔn)確率都比較高,均在97%以上,其原因在于該數(shù)據(jù)集背景較為簡(jiǎn)單,事件處理模型可以快速地將事件背景剔除,形成只有數(shù)據(jù)的表層,這種檢測(cè)較為簡(jiǎn)單且準(zhǔn)確率會(huì)很高。
圖6 MINST-DVS數(shù)據(jù)Fig.6 MINST-DVS dataset
在快速場(chǎng)景目標(biāo)檢測(cè)中,基于事件的特征檢測(cè)算法結(jié)果較差,準(zhǔn)確率為52.6%,檢測(cè)效果較差的原因不在此文中進(jìn)行分析。面對(duì)多目標(biāo)檢測(cè),簡(jiǎn)單的基于事件的檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)不足以實(shí)現(xiàn)復(fù)雜的目標(biāo)檢測(cè),因此本實(shí)驗(yàn)加深網(wǎng)絡(luò)層次,加深了Event-YOLO網(wǎng)絡(luò),增加基于事件的卷積層的層數(shù),并將其網(wǎng)絡(luò)結(jié)構(gòu)命名為Event-YOLO-D。POKER-DVS 數(shù)據(jù)集檢測(cè)結(jié)果如圖7所示。
圖7 POKER-DVS數(shù)據(jù)Fig.7 POKER-DVS dataset
根據(jù)數(shù)據(jù)集檢測(cè)結(jié)果,如表3所示,對(duì)于單目標(biāo)檢測(cè),不同的檢測(cè)網(wǎng)絡(luò)目標(biāo)檢測(cè)準(zhǔn)確率均高達(dá)98%以上,精度較高,符合驗(yàn)證性能;對(duì)于多目標(biāo)和快速運(yùn)動(dòng)場(chǎng)景,受限于數(shù)據(jù)集較小,且目標(biāo)在DVS 中閃動(dòng)極為快速,檢測(cè)準(zhǔn)確率相對(duì)不高,但增加網(wǎng)絡(luò)層數(shù)對(duì)檢測(cè)的準(zhǔn)確度有明顯提升,基于DVS的目標(biāo)檢測(cè)效果已經(jīng)遠(yuǎn)遠(yuǎn)高于同類別的傳統(tǒng)圖像檢測(cè)效果。
表3 不同數(shù)據(jù)集的檢測(cè)結(jié)果Tab.3 Detection results of different dataset
本文針對(duì)動(dòng)態(tài)視覺傳感器輸出事件特性的分析,提出兩種處理事件模型并通過算法檢測(cè)仿真進(jìn)行比較,仿真結(jié)果表明,相同條件下兩種處理事件模型的檢測(cè)準(zhǔn)確度無較大差異。此外,本文根據(jù)基于事件的特征檢測(cè)算法和卷積神經(jīng)網(wǎng)絡(luò)算法,分別對(duì)MNISTDVS和POKER-DVS數(shù)據(jù)集進(jìn)行單目標(biāo)、多目標(biāo)和快速場(chǎng)景檢測(cè),基于事件的卷積神經(jīng)網(wǎng)絡(luò)算法檢測(cè)效果更佳,網(wǎng)絡(luò)層數(shù)越多,檢測(cè)精度越高,驗(yàn)證了基于事件的卷積神經(jīng)網(wǎng)絡(luò)算法在多目標(biāo)、高速場(chǎng)景檢測(cè)的優(yōu)越性。