嵌入式平臺(tái)物體追蹤應(yīng)用實(shí)例:人臉追蹤風(fēng)扇
掃描二維碼
隨時(shí)隨地手機(jī)看文章
近年來,嵌入式平臺(tái)物體追蹤技術(shù)呈現(xiàn)出蓬勃發(fā)展的態(tài)勢(shì),在諸多領(lǐng)域展現(xiàn)出了強(qiáng)大的應(yīng)用價(jià)值,并隨著科技進(jìn)步持續(xù)拓展其應(yīng)用邊界與深度,不斷推動(dòng)各行業(yè)朝著智能化方向邁進(jìn)。
在安防領(lǐng)域,嵌入式平臺(tái)物體追蹤技術(shù)已然成為安全防范工作的得力助手。借助各類傳感器與高清攝像頭,能夠精準(zhǔn)捕捉可疑人員、車輛等目標(biāo)的實(shí)時(shí)動(dòng)態(tài),實(shí)現(xiàn)對(duì)其全方位、不間斷的追蹤。例如,在大型商場(chǎng)、機(jī)場(chǎng)等人流量密集且安全要求較高的場(chǎng)所,監(jiān)控系統(tǒng)中的嵌入式設(shè)備可以通過物體追蹤技術(shù),迅速鎖定行為異常的人員,跟蹤其行動(dòng)軌跡,一旦發(fā)現(xiàn)有違法或危險(xiǎn)行為的跡象,便能及時(shí)通知安保人員進(jìn)行干預(yù),有效預(yù)防盜竊、恐怖襲擊等安全事件的發(fā)生,極大地提升了區(qū)域的整體安全性。
工業(yè)自動(dòng)化領(lǐng)域同樣受益于嵌入式平臺(tái)物體追蹤技術(shù)。在現(xiàn)代化的生產(chǎn)線上,該技術(shù)可對(duì)產(chǎn)品從原材料加工到成品組裝的各個(gè)環(huán)節(jié)進(jìn)行精確跟蹤。通過實(shí)時(shí)監(jiān)測(cè)產(chǎn)品的位置、狀態(tài)等信息,確保每一道工序都能準(zhǔn)確無誤地執(zhí)行,不僅有助于提高生產(chǎn)效率,避免因人為疏忽或機(jī)器故障導(dǎo)致的生產(chǎn)延誤,還能在質(zhì)量把控方面發(fā)揮關(guān)鍵作用,及時(shí)發(fā)現(xiàn)生產(chǎn)過程中的次品或缺陷產(chǎn)品,方便企業(yè)及時(shí)采取糾正措施,保障產(chǎn)品質(zhì)量的穩(wěn)定性。
智能交通方面,嵌入式平臺(tái)物體追蹤技術(shù)更是不可或缺。它可以通過安裝在道路關(guān)鍵位置的攝像頭以及車載終端等設(shè)備,實(shí)時(shí)追蹤車輛的行駛軌跡、速度等信息。交通管理部門利用這些數(shù)據(jù),能夠?qū)崿F(xiàn)對(duì)交通流量的智能調(diào)控,比如根據(jù)實(shí)時(shí)路況動(dòng)態(tài)調(diào)整信號(hào)燈時(shí)長(zhǎng),合理引導(dǎo)車輛分流,緩解交通擁堵狀況;同時(shí),對(duì)于超速、違規(guī)變道等交通違法行為也能做到精準(zhǔn)抓拍,維護(hù)良好的交通秩序,提升道路交通安全水平。
智能家居場(chǎng)景下,嵌入式平臺(tái)物體追蹤技術(shù)為人們的生活帶來了諸多便利與舒適體驗(yàn)。例如,通過追蹤家庭成員在室內(nèi)的活動(dòng)情況,智能照明系統(tǒng)可以實(shí)現(xiàn)人來燈亮、人走燈滅的自動(dòng)化控制;空調(diào)系統(tǒng)能依據(jù)人員所在位置及活動(dòng)狀態(tài),自動(dòng)調(diào)節(jié)室內(nèi)不同區(qū)域的溫度,達(dá)到節(jié)能且舒適的效果;智能電視等娛樂設(shè)備也可以根據(jù)用戶的觀看習(xí)慣和位置,自動(dòng)調(diào)整畫面角度和音量大小等參數(shù),為用戶打造個(gè)性化、智能化的家居環(huán)境[1]。
隨著MCU產(chǎn)品的迅猛發(fā)展與快速迭代,MCU早已突破傳統(tǒng)控制單元的局限。如今,它的計(jì)算能力與資源配置已得到極大提升,足以支撐更為繁雜的運(yùn)算任務(wù)。MCU憑借著低成本、低功耗的顯著優(yōu)勢(shì),以及與生俱來的卓越實(shí)時(shí)性,為實(shí)時(shí)控制系統(tǒng)注入了人工智能的強(qiáng)大活力,使其成功具備AI功能。
本文以一個(gè)能追蹤人臉位置的風(fēng)扇為例,添加了物體檢測(cè)追蹤和電機(jī)控制模塊,使得風(fēng)扇具備了實(shí)時(shí)的人臉追蹤功能。
2. 工程實(shí)現(xiàn)
人臉追蹤風(fēng)扇作為嵌入式平臺(tái)物體追蹤技術(shù)的一個(gè)具體應(yīng)用案例,有機(jī)地將多種先進(jìn)技術(shù)整合在一起,實(shí)現(xiàn)了風(fēng)扇對(duì)人臉的實(shí)時(shí)追蹤功能。
首先,主控芯片的選擇至關(guān)重要,本案例選用了恩智浦的MCXN947芯片,它搭載了雙核Cortex-M33作為主運(yùn)算單元,主頻高達(dá)150 M,能夠滿足復(fù)雜運(yùn)算對(duì)處理速度的要求。同時(shí),內(nèi)置了512 K的RAM和2 M的Flash,為數(shù)據(jù)的臨時(shí)存儲(chǔ)和程序的運(yùn)行提供了必要的空間支持。尤為關(guān)鍵的是,芯片集成了一顆NPU (神經(jīng)網(wǎng)絡(luò)處理單元),這一組件在加速運(yùn)行神經(jīng)網(wǎng)絡(luò)模型方面發(fā)揮著不可替代的作用,使得物體追蹤算法能夠在嵌入式平臺(tái)有限的資源條件下得以高效執(zhí)行,為整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行和高效運(yùn)算提供了堅(jiān)實(shí)基礎(chǔ)。
在圖像采集環(huán)節(jié),攝像頭負(fù)責(zé)采集外界的圖像信息,將其作為后續(xù)處理的原始數(shù)據(jù)輸入。采集到的圖像分辨率為640 × 480,數(shù)據(jù)格式為RGB565,不過一幀數(shù)據(jù)大小達(dá)到了600 KB,超出了MCXN947內(nèi)部RAM的大小。為解決這一數(shù)據(jù)處理難題,系統(tǒng)運(yùn)用了SmartDMA技術(shù)對(duì)圖像數(shù)據(jù)進(jìn)行切片處理,每次中斷僅處理部分?jǐn)?shù)據(jù),并且把接收到的原始圖像經(jīng)過剪裁后顯示在LCD上,方便用戶直觀查看實(shí)時(shí)圖像;另一方面,我們把原始圖像經(jīng)過下采樣后,并且把下采樣后的切片數(shù)據(jù)增量緩存,直到接收完一幀圖像的所有切片,得到完整的下采樣后的圖像,再將其輸入到物體追蹤算法中進(jìn)行進(jìn)一步分析。
算法運(yùn)算階段是實(shí)現(xiàn)人臉追蹤功能的核心環(huán)節(jié)。我們先是通過物體檢測(cè)算法對(duì)輸入的圖像數(shù)據(jù)進(jìn)行分析,計(jì)算得出物體的位置信息,具體而言,就是能夠確定人臉的中心點(diǎn)坐標(biāo)以及長(zhǎng)、寬等關(guān)鍵參數(shù)。隨后,在LCD上繪制白色框,將其疊加顯示在實(shí)時(shí)圖像上,這樣使用者便可以直觀地看到算法的運(yùn)算結(jié)果。接著,對(duì)獲取到的位置信息進(jìn)行SORT (Simple Online and Realtime Track)運(yùn)算,通過該運(yùn)算可以得到穩(wěn)定的軌跡信息,為后續(xù)電機(jī)控制提供精準(zhǔn)的數(shù)據(jù)依據(jù)。
最后是電機(jī)控制環(huán)節(jié),基于前面算法運(yùn)算所得到的軌跡信息,通過PWM (脈沖寬度調(diào)制)技術(shù)來控制水平和垂直兩個(gè)方向的舵機(jī)進(jìn)行相應(yīng)轉(zhuǎn)動(dòng),進(jìn)而帶動(dòng)風(fēng)扇旋轉(zhuǎn),使其能夠精準(zhǔn)地追蹤攝像頭采集到的人臉位置,確保風(fēng)扇始終朝著人臉?biāo)诜较蛩惋L(fēng),實(shí)現(xiàn)了人臉追蹤風(fēng)扇這一智能化的功能應(yīng)用。系統(tǒng)結(jié)構(gòu)見圖1所示。
Figure 1. Block diagram of system
圖1. 系統(tǒng)框架圖
3. 物體追蹤算法
目前常用的物體追蹤算法主要有:傳統(tǒng)算法和基于深度學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)算法。
傳統(tǒng)算法常用幀差法和均值漂移法。幀差法[2]通過比較相鄰兩幀圖像之間的像素差異來判斷物體是否發(fā)生移動(dòng),進(jìn)而實(shí)現(xiàn)對(duì)物體的追蹤。其核心在于,移動(dòng)的物體在連續(xù)的視頻幀中會(huì)呈現(xiàn)出明顯的像素變化,而靜止的背景像素變化則相對(duì)較小。它的計(jì)算過程較為簡(jiǎn)單,對(duì)硬件計(jì)算資源的要求相對(duì)不高,這使得其能夠很好地適配那些計(jì)算能力有限的嵌入式設(shè)備。同時(shí)它局限性也很明顯。它對(duì)光照條件的變化較為敏感,當(dāng)光照出現(xiàn)明顯改變時(shí),比如從白天到夜晚、或是有強(qiáng)光突然照射等情況,即使物體本身沒有移動(dòng),前后幀的像素差異也可能會(huì)很大,從而容易導(dǎo)致誤判,影響追蹤的準(zhǔn)確性。同時(shí),對(duì)于物體的陰影部分,幀差法可能會(huì)將其誤識(shí)別為移動(dòng)物體,而且在面對(duì)快速移動(dòng)的物體時(shí),由于幀率的限制,可能出現(xiàn)漏檢的情況,像快速奔跑的小動(dòng)物等在畫面中可能無法被準(zhǔn)確追蹤。
均值漂移法[3]是一種基于密度估計(jì)的非參數(shù)算法,其算法流程大致如下:首先,在圖像中選擇一個(gè)初始窗口(通常為矩形),這個(gè)窗口用于框定要追蹤的目標(biāo)物體;接著,計(jì)算該窗口內(nèi)像素的顏色直方圖,以此作為目標(biāo)物體的模型特征表示;然后,根據(jù)目標(biāo)模型的顏色分布情況,在后續(xù)的幀圖像中,通過不斷迭代計(jì)算窗口的平均漂移量,也就是計(jì)算當(dāng)前窗口內(nèi)像素的顏色直方圖與目標(biāo)模型顏色直方圖之間的差異,進(jìn)而更新窗口的位置和尺寸,最終實(shí)現(xiàn)目標(biāo)的跟蹤。它的局限性是無法處理背景復(fù)雜,相對(duì)特征不明顯的物體檢測(cè)。
隨著深度學(xué)習(xí)的發(fā)展,由基于神經(jīng)網(wǎng)絡(luò)的物體檢測(cè)算法加上基于卡爾曼濾波實(shí)現(xiàn)的SORT [4]算法逐漸成為物體追蹤的主流實(shí)現(xiàn)方法,這也是我們采用的方法,接下來詳細(xì)介紹。
3.1. 物體檢測(cè)算法
目前在嵌入式平臺(tái)上比較成熟的基于深度學(xué)習(xí)的物體檢測(cè)算法主要由兩大類:SSD算法以及YOLO算法。
3.1.1. 模型選擇
SSD (Single Shot MultiBox Detector) [5]算法同樣是一種基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法,它屬于單階段(one-stage)檢測(cè)方法,能夠在單次前向傳播中就完成目標(biāo)檢測(cè)任務(wù),兼具速度快和精度相對(duì)較高的特點(diǎn)。SSD 的一個(gè)顯著區(qū)別在于它提取了不同尺度的特征圖來做檢測(cè),大尺度特征圖(較靠前的特征圖)可以用來檢測(cè)小物體,而小尺度特征圖(較靠后的特征圖)用來檢測(cè)大物體,這使得它在對(duì)不同大小目標(biāo)的檢測(cè)上更加全面和準(zhǔn)確。
YOLO (You Only Look Once) [6]系列算法在嵌入式設(shè)備上的物體追蹤應(yīng)用中有著顯著的特點(diǎn)。其核心思想是將物體檢測(cè)問題轉(zhuǎn)換為回歸問題,采用單個(gè)神經(jīng)網(wǎng)絡(luò)直接在整個(gè)圖像上預(yù)測(cè)邊界框和類別概率,摒棄了傳統(tǒng)的基于區(qū)域建議的復(fù)雜流程,實(shí)現(xiàn)了端到端的檢測(cè)。在嵌入式設(shè)備這種對(duì)實(shí)時(shí)性要求較高、計(jì)算資源相對(duì)受限的環(huán)境下,YOLO算法的快速檢測(cè)和識(shí)別目標(biāo)能力凸顯出極大優(yōu)勢(shì)。
YOLO與SSD相比,精度更高且小目標(biāo)識(shí)別率更好,YOLO模型的網(wǎng)絡(luò)結(jié)構(gòu)更加復(fù)雜,檢測(cè)頭網(wǎng)絡(luò)具備特征融合機(jī)制,可以更好的利用全局上下文信息提升檢測(cè)效果,在遮擋或復(fù)雜背景下表現(xiàn)更好。在嵌入式設(shè)備上選擇物體追蹤算法時(shí),需要綜合考量多方面的因素。首先硬件資源是一個(gè)重要的考量因素,過大的模型無法適配到MCU平臺(tái)上。其次計(jì)算資源方面,不同的模型算子在NPU上的支持與否也很重要。YOLO V3版本算子簡(jiǎn)單更適合部署在NPU上運(yùn)行,而且其實(shí)現(xiàn)算法簡(jiǎn)單,更適剪裁優(yōu)化。
3.1.2. 模型優(yōu)化
標(biāo)準(zhǔn)YOLO V3 Tiny版本模型經(jīng)過訓(xùn)練后權(quán)重有8 M左右,運(yùn)行內(nèi)存需求6 M,遠(yuǎn)遠(yuǎn)超出了MCXN947的存儲(chǔ)大小。所以需要我們對(duì)模型的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行剪裁。
原始網(wǎng)絡(luò)結(jié)構(gòu)由骨干網(wǎng)絡(luò)Darknet53加檢測(cè)頭FPN組合而成,結(jié)構(gòu)圖如下圖2所示。
Figure 2. YOLO network
圖2. YOLO網(wǎng)絡(luò)結(jié)構(gòu)圖
優(yōu)化方向從兩個(gè)方面入手:首先縮減輸入分辨率,由416 × 416縮減至128 × 160。然后縮減骨干網(wǎng)絡(luò),改用MobileNet網(wǎng)絡(luò)結(jié)構(gòu),見圖3。
Figure 3. Backbone network
圖3. 骨干網(wǎng)絡(luò)
從圖2可知Darknet-53作為骨干網(wǎng)絡(luò)共有52個(gè)卷積,并且大量使用了殘差鏈接。殘差鏈接對(duì)內(nèi)存的需求量很大,不利于在MCU平臺(tái)上部署。改用MobileNet極大減少了內(nèi)存的使用,同時(shí)支持預(yù)訓(xùn)練權(quán)重,縮短了訓(xùn)練時(shí)間。骨干網(wǎng)絡(luò)分別提取1/8大小的特征圖,1/16大小特征圖以及1/32大小特征圖。
檢測(cè)頭網(wǎng)絡(luò)FPN根據(jù)根據(jù)骨干網(wǎng)絡(luò)提取的特征值進(jìn)行進(jìn)一步提煉與融合,最終輸出3個(gè)尺度的目標(biāo)預(yù)測(cè),結(jié)構(gòu)見圖4。
經(jīng)過優(yōu)化后,模型大小為280 KB,運(yùn)行RAM需求是195 KB,量化后在NPU上運(yùn)行時(shí)間為22 ms,可以滿足實(shí)時(shí)控制需求。
3.2. 追蹤算法
經(jīng)過模型運(yùn)算后得到人臉的二維坐標(biāo)信息,就可以控制電機(jī)根據(jù)人臉位置進(jìn)行旋轉(zhuǎn)。接下來有兩個(gè)問題需要解決。第一個(gè)問題:模型結(jié)果會(huì)有誤差會(huì)導(dǎo)致物體中心點(diǎn)位置出現(xiàn)抖動(dòng),需要引入算法解決抖動(dòng)問題。第二個(gè)問題:模型檢測(cè)到多個(gè)物體,怎么判斷當(dāng)前該跟隨哪個(gè)目標(biāo)移動(dòng)。
Figure 4. FPN network
圖4. 檢測(cè)頭網(wǎng)絡(luò)
SORT物體追蹤算法可以解決以上兩個(gè)問題。SORT算法主要基于物體的運(yùn)動(dòng)模型進(jìn)行追蹤,對(duì)于運(yùn)動(dòng)比較規(guī)律的目標(biāo)能夠取得較好的追蹤效果,其計(jì)算復(fù)雜度較低,能夠滿足實(shí)時(shí)性要求。廣泛應(yīng)用于視頻監(jiān)控,自動(dòng)駕駛以及機(jī)器人視覺等領(lǐng)域。算法流程見圖5。
Figure 5. Algorithm workflow
圖5. 算法流程圖
從上圖所示,YOLO模型檢測(cè)得出多個(gè)目標(biāo)位置信息,經(jīng)過匈牙利匹配算法,查找歷史記錄中是否有與當(dāng)前目標(biāo)匹配的記錄,發(fā)現(xiàn)匹配記錄則更新卡爾曼濾波器中軌跡信息及協(xié)方差矩陣。未發(fā)現(xiàn)匹配記錄表示出現(xiàn)新目標(biāo),根據(jù)新目標(biāo)的位置信息新建卡爾曼濾波器實(shí)例。同時(shí)遍歷其它濾波器,如果沒有新的軌跡更新則表示目標(biāo)脫離,刪除無效濾波器。當(dāng)所有濾波器更新完畢后根據(jù)更新后的軌跡控制電機(jī),追蹤目標(biāo)。
4. 實(shí)驗(yàn)驗(yàn)證
基于WIDER-FACE [7]生成人臉檢測(cè)訓(xùn)練集,原始數(shù)據(jù)集圖像尺寸過大,大部分圖片包含身體部分,不適用當(dāng)前的應(yīng)用場(chǎng)景,需要根據(jù)模型輸入大小優(yōu)化精簡(jiǎn)數(shù)據(jù)集。使用YOLOV3訓(xùn)練腳本訓(xùn)練模型,在訓(xùn)練開始階段加載MobileNetV1預(yù)訓(xùn)練權(quán)重可以提高訓(xùn)練效率的同時(shí)提高模型精度。經(jīng)過50輪訓(xùn)練后,平均精度mAP = 89.78%。
將訓(xùn)練后的模型進(jìn)行量化,保存成INT8數(shù)據(jù)格式的tflite文件。使用恩智浦官網(wǎng)提供的eIQ Toolkit將模型轉(zhuǎn)換成NPU可以識(shí)別的數(shù)據(jù)類型,部署在硬件MCX-N947。系統(tǒng)運(yùn)行時(shí)檢測(cè)結(jié)果實(shí)時(shí)顯示在LCD上,可以看到模型檢測(cè)人臉的消耗時(shí)間是24 ms,可以滿足實(shí)時(shí)性控制需求。
5. 更多討論
本文實(shí)現(xiàn)了一種能夠在資源有限的微控制器單元(MCU)上運(yùn)行的物體追蹤算法。還有很多細(xì)節(jié)問題可以進(jìn)一步討論,比如:
環(huán)境適應(yīng)性挑戰(zhàn)。光照條件的變化對(duì)嵌入式設(shè)備上物體追蹤的準(zhǔn)確性有著顯著影響,在強(qiáng)光直射的情況下,物體表面可能會(huì)出現(xiàn)過曝現(xiàn)象,原本的紋理、顏色等特征變得模糊不清,這使得基于特征識(shí)別的追蹤算法難以準(zhǔn)確提取有效的特征信息,從而導(dǎo)致追蹤失敗或者追蹤位置出現(xiàn)較大偏差。而從白天到夜晚的光照變化過程中,光線逐漸變暗,物體的對(duì)比度降低,對(duì)于一些依靠顏色、灰度等特征來區(qū)分物體和背景的追蹤算法來說,其區(qū)分度下降,誤判的概率大幅增加??梢砸牍δ芨鼜?qiáng)的攝像頭或引入補(bǔ)光設(shè)備降低光照對(duì)輸入圖像的影響。
再比如遮擋問題,在實(shí)際應(yīng)用場(chǎng)景中,物體被遮擋是經(jīng)常出現(xiàn)的情況,這給物體追蹤帶來了很大的困難。當(dāng)物體被部分遮擋時(shí),其可見的特征信息減少,追蹤算法依據(jù)有限的特征進(jìn)行匹配和定位的難度增大,容易出現(xiàn)誤跟或者跟丟的現(xiàn)象??梢砸攵鄶z像頭不同角度采集圖像解決遮擋問題。
目前物體追蹤主要依賴視覺數(shù)據(jù)居多,未來結(jié)合其他模態(tài)數(shù)據(jù)如聲音、紅外熱成像、雷達(dá)信號(hào)等進(jìn)行融合追蹤將是重要發(fā)展方向。不同模態(tài)的數(shù)據(jù)可以相互補(bǔ)充、驗(yàn)證,在復(fù)雜環(huán)境下提高追蹤的準(zhǔn)確性和魯棒性。例如,在低光照、煙霧等視覺受限的場(chǎng)景中,利用紅外熱成像和聲音信息輔助。
文中配合使用的代碼已經(jīng)開源,地址:https://github.com/nxp-appcodehub/dm-multiple-face-detection-on-mcxn947。
NOTES
*通訊作者。