摘要:汽車(chē)行業(yè)ADAS功能需求日益增長(zhǎng),防疲勞駕駛是一個(gè)熱門(mén)方向,對(duì)于駕駛員狀態(tài)的檢測(cè),,人臉識(shí)別是基礎(chǔ),只有快速準(zhǔn)確地識(shí)別到人臉,,才能對(duì)人臉狀態(tài)進(jìn)行分析,。本文將介紹基于S32V來(lái)實(shí)現(xiàn)人臉識(shí)別的應(yīng)用。
一,、S32V視覺(jué)處理平臺(tái)
NXP于2015開(kāi)始推出S32V平臺(tái),,現(xiàn)在已經(jīng)推出了第二代型號(hào)S32V234,第三代目前已經(jīng)在樣品階段,,該平臺(tái)定位為ADAS視覺(jué)處理,,提供了視覺(jué)系統(tǒng)應(yīng)用所需的性能和功能。
對(duì)于圖像處理,,S32V具有自己的特色,,硬件方面:具有兩路CSI和兩路并口攝像頭接口,提供了可圖形化編程的ISP,、APEX,,以及3D渲染的GPU。其中可編程的ISP可以對(duì)通過(guò)CSI輸入的攝像頭圖像數(shù)據(jù)進(jìn)行處理,支持HDR,、顏色轉(zhuǎn)換,、色調(diào)映射等。APEX提供了并行圖像處理的能力,。還提供了H264硬件編解碼等,,基本覆蓋了圖像處理所需要的硬件資源。
軟件方面:提供了VSDK,,包含S32V平臺(tái)的各個(gè)外設(shè)驅(qū)動(dòng),,并配有相關(guān)例程。API方面提供了OpenCV,、FFmpeg,、OpenCL、OpenGL,、EGL等常用圖像處理相關(guān)庫(kù),。
圖1 S32V內(nèi)部框圖
二、人臉識(shí)別方案介紹
采用索尼的IMX224攝像頭作為圖像輸入,,移植人臉識(shí)別庫(kù),,建立演示demo將檢測(cè)到的人臉實(shí)時(shí)用方框標(biāo)記出來(lái)。
1.方案框圖
圖 2 人臉識(shí)別方案框圖
2.Demo搭建
獲取攝像頭數(shù)據(jù)
首先,,基于VSDK實(shí)現(xiàn)iMX224攝像頭的數(shù)據(jù)獲取,。通過(guò)NXP提供S32 Design Studio for Vision Version軟件建立iMX224的ISP處理流程,如下圖所示,。
圖 3 ISP處理流程
這里通過(guò)運(yùn)行在IPUS0中的debayer_rgb_simple_interleaced,,實(shí)現(xiàn)了攝像頭Debayer數(shù)據(jù)轉(zhuǎn)RGB,然后通過(guò)FDMA傳輸?shù)紻DR中供算法調(diào)用,。如果對(duì)于圖像有特殊要求的,,可以自己建立對(duì)應(yīng)的IPUS核,對(duì)圖像數(shù)據(jù)進(jìn)行相關(guān)處理,。
交叉編譯相關(guān)庫(kù)
移植人臉識(shí)別算法庫(kù),該庫(kù)基于NCNN神經(jīng)網(wǎng)絡(luò)上搭建人臉識(shí)別系統(tǒng),,依賴的庫(kù)有OpenCV,、NCNN以及Sqlit3。這些庫(kù)需要交叉編譯,,其中OpenCV和Sqlit3的ARM版S32V已經(jīng)提供不需要再進(jìn)行編譯,,編譯后的NCNN和人臉識(shí)別算法庫(kù)都是靜態(tài)庫(kù),不需要拷貝到目標(biāo)板上,。
人臉檢測(cè)demo
通過(guò)Qt來(lái)實(shí)現(xiàn)界面顯示,,首先在pro文件中添加VSDK中獲取攝像頭數(shù)據(jù)的相關(guān)庫(kù),算法移植的相關(guān)庫(kù),,然后通過(guò)如下API接口獲取圖像數(shù)據(jù),。
int getCImg(cv::Mat &cimg);
再調(diào)用如下接口進(jìn)行人臉檢測(cè):
void detectMaxFace(ncnn::Mat& img_, std::vector<Bbox>& finalBbox);
3.Demo效果
最后將檢測(cè)結(jié)果通過(guò)Qt界面顯示出來(lái),,如下圖所示。
圖4 人臉檢測(cè)結(jié)果
通過(guò)測(cè)試,,人臉檢測(cè)耗時(shí)如下所示: