人臉識(shí)別是一種高安全性的生物識(shí)別技術(shù),廣泛應(yīng)用在安防、身份驗(yàn)證等領(lǐng)域。而人臉檢測(cè)是進(jìn)行人臉識(shí)別的重要前提,本文主要介紹如何基于EsDA設(shè)計(jì)的人臉檢測(cè)節(jié)點(diǎn),快速實(shí)現(xiàn)人臉檢測(cè)功能。 ?簡(jiǎn)介
人臉識(shí)別是一種高安全性的生物識(shí)別技術(shù),在安防、身份驗(yàn)證等領(lǐng)域被廣泛應(yīng)用。
本文在【EsDA應(yīng)用】5分鐘快速實(shí)現(xiàn)攝像頭圖像采集 的基礎(chǔ)上,使用M6G2C核心板,簡(jiǎn)單介紹如何基于EsDA設(shè)計(jì)的face_detection人臉檢測(cè)功能節(jié)點(diǎn),快速實(shí)現(xiàn)人臉檢測(cè)識(shí)別。
?前期準(zhǔn)備
若是剛開(kāi)始接觸EsDA,可先閱讀EsDA其他系列文章,從零開(kāi)始搭建環(huán)境和掌握基本開(kāi)發(fā)流程,已有基礎(chǔ)的可以跳過(guò):
- EsDAMPC-ZC1入門(一)——軟件安裝
- EsDAMPC-ZC1入門(二)——LED控制
- 【EsDA應(yīng)用】5分鐘實(shí)現(xiàn)一個(gè)串口通信業(yè)務(wù)
- 【EsDA應(yīng)用】5分鐘快速實(shí)現(xiàn)攝像頭圖像采集
1. 硬件準(zhǔn)備
1.1 準(zhǔn)備一個(gè)攝像頭,這里我們以O(shè)V7725攝像頭為例,搭配轉(zhuǎn)接板使用。
1.2 準(zhǔn)備一塊LCD顯示屏。1.3 準(zhǔn)備一張SD卡,用于存放人臉模型。1.4 準(zhǔn)備一塊M6G2C核心板和EPC-6G2C-L評(píng)估板,并按照下圖所示連接好硬件。其中,eth0網(wǎng)口用于下載流圖,并連接LCD顯示屏接口、電源,以及將OV7725攝像頭通過(guò)轉(zhuǎn)接板連接到開(kāi)發(fā)板背面的CSI接口上。
2. 其它準(zhǔn)備
將人臉檢測(cè)相關(guān)的模型文件存放到SD卡中。
?節(jié)點(diǎn)介紹
這里我們需要使用到攝像頭、圖像格式轉(zhuǎn)換以及人臉檢測(cè)相關(guān)的AWFlow節(jié)點(diǎn),包括在【EsDA應(yīng)用】5分鐘快速實(shí)現(xiàn)攝像頭圖像采集 中介紹的camera_video節(jié)點(diǎn)、camera配置節(jié)點(diǎn)、lcd_display節(jié)點(diǎn),以及本文介紹的用于圖像數(shù)據(jù)格式轉(zhuǎn)換的image_format_convert節(jié)點(diǎn)和人臉檢測(cè)節(jié)點(diǎn)face_detection。
1. image_format_convert節(jié)點(diǎn)
圖像格式轉(zhuǎn)換節(jié)點(diǎn),用于將攝像頭輸出的圖像轉(zhuǎn)換為人臉檢測(cè)節(jié)點(diǎn)支持的RGB888格式。1.1屬性
輸入圖像格式:待轉(zhuǎn)換圖像的格式,一般是攝像頭輸出的原始數(shù)據(jù)格式;
輸入圖像寬度:待轉(zhuǎn)換圖像的寬度;
輸入圖像高度:待轉(zhuǎn)換圖像的高度;
輸出圖像格式:轉(zhuǎn)換后的圖像的格式,必須指定為RGB888;
輸出圖像寬度:轉(zhuǎn)換后的圖像的寬度;
輸出圖像高度:轉(zhuǎn)換后的圖像的高度。
1.2輸入
- image:需要進(jìn)行轉(zhuǎn)換的原始圖像的地址,一般由camera_video節(jié)點(diǎn)提供輸入;
1.3輸出
- image:指向轉(zhuǎn)換完成后的目標(biāo)格式圖像數(shù)據(jù)的指針,一般由后級(jí)節(jié)點(diǎn)接收并處理;
- format:轉(zhuǎn)換后的圖像的格式;
- width:轉(zhuǎn)換后的圖像的寬度;
height:轉(zhuǎn)換后的圖像的高度。
2.face_detection節(jié)點(diǎn)
face_detection是人臉檢測(cè)節(jié)點(diǎn),該節(jié)點(diǎn)對(duì)輸入的圖像數(shù)據(jù)進(jìn)行人臉檢測(cè)處理,當(dāng)檢測(cè)到圖像中存在人臉時(shí),截取圖像中的人臉數(shù)據(jù)并輸出。后級(jí)節(jié)點(diǎn)可以使用這個(gè)圖像數(shù)據(jù)進(jìn)行特征值提取、比對(duì)等操作。
2.1屬性
活體檢測(cè):是否進(jìn)行活體檢測(cè);
模糊檢測(cè):是否進(jìn)行模糊檢測(cè);
人臉矯正:是否進(jìn)行人臉整理矯正;
模型和參數(shù)路徑:檢測(cè)模型和參數(shù)文件路徑;
人臉圖像主題:需要進(jìn)行人臉檢測(cè)的圖像的主題,此節(jié)點(diǎn)只對(duì)與此屬性匹配的輸入圖像進(jìn)行檢測(cè)。
2.2輸入
image:輸入圖像數(shù)據(jù)的緩沖區(qū)指針,必須是RGB888格式,可以由image_format_convert轉(zhuǎn)換后提供輸入;
width:輸入圖像的寬度;
height:輸入圖像的高度;
- topic:輸入圖像的主題。
2.3輸出
image:從輸入圖像中截取的人臉圖像緩沖區(qū);
coord_x1:人臉的左上角橫坐標(biāo),與后面三個(gè)坐標(biāo)共同決定坐標(biāo)系上的兩個(gè)點(diǎn),這兩個(gè)點(diǎn)可以確定圖像中的人臉位置;
coord_y1:左上角縱坐標(biāo);
coord_x2:右下角橫坐標(biāo);
coord_y2:右下角縱坐標(biāo)。
?業(yè)務(wù)處理
本應(yīng)用主要實(shí)現(xiàn)M6G2C開(kāi)發(fā)板采集攝像頭圖像,并在LCD顯示屏上進(jìn)行顯示。同時(shí),將攝像頭輸出的原始數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換后,輸入到face_detection節(jié)點(diǎn)中進(jìn)行人臉檢測(cè)。具體實(shí)現(xiàn)如下:1. 添加節(jié)點(diǎn)并連線首先我們需要添加一個(gè)camera_video節(jié)點(diǎn)用于采集圖像,并輸出到lcd_display節(jié)點(diǎn)中顯示。然后,將camera_video節(jié)點(diǎn)輸出的RGB565原始圖像在image_format_convert節(jié)點(diǎn)中轉(zhuǎn)換為RGB888格式,接下來(lái)將轉(zhuǎn)換后的圖像輸入到face_detection中進(jìn)行人臉檢測(cè),并將檢測(cè)的結(jié)果輸入到lcd_display節(jié)點(diǎn)中。另外,增加兩個(gè)fscript節(jié)點(diǎn),用于指定圖像主題和打印坐標(biāo)點(diǎn)信息。2. 配置節(jié)點(diǎn)2.1配置camera_video節(jié)點(diǎn)雙擊camera_video節(jié)點(diǎn),并在配置項(xiàng)中選擇添加一個(gè)新的camera節(jié)點(diǎn)。
在camera配置節(jié)點(diǎn)中,根據(jù)所使用的攝像頭,分別設(shè)置設(shè)備名、輸出圖像的數(shù)據(jù)格式和圖像寬度、高度。
然后更新配置,在camera_video節(jié)點(diǎn)的配置項(xiàng)中,選擇上一步新增的camera配置節(jié)點(diǎn)即可。
2.2配置image_format_convert使用image_format_convert節(jié)點(diǎn)目的是將圖像格式轉(zhuǎn)換為RGB888,因此,根據(jù)圖像的信息進(jìn)行設(shè)置即可。如果攝像頭輸出的原始數(shù)據(jù)即為RGB888,那么這一步可以省略。
2.3face_detection節(jié)點(diǎn)
使用人臉檢測(cè)節(jié)點(diǎn)需要將相關(guān)的模型文件存放到文件系統(tǒng)中,并在face_detection節(jié)點(diǎn)中指定模型存放的路徑,這里我們存放到SD卡中,并指定路徑。人臉圖像主題屬性用于對(duì)輸入的圖像進(jìn)行過(guò)濾,這里我們?cè)O(shè)置為攝像頭輸出的圖像的主題即可。
2.4fscript
流圖中標(biāo)識(shí)為“1”的fscript節(jié)點(diǎn)主要是為圖像指定一個(gè)主題,我們將其設(shè)置為face,和face_detection節(jié)點(diǎn)中的主題一致。
msg.topic = "face"
另一個(gè)節(jié)點(diǎn)用于打印人臉檢測(cè)結(jié)果的坐標(biāo)點(diǎn)信息,方便我們對(duì)結(jié)果進(jìn)行驗(yàn)證。其內(nèi)容如下:
print("(x1, y1)#: (" + msg.coord_x1 + ", " + msg.coord_y1 + ")")
print("(x2, y2)#: (" + msg.coord_x2 + ", " + msg.coord_y2 + ")")
2.5lcd_display節(jié)點(diǎn)
lcd_display節(jié)點(diǎn)用于顯示圖像,不需要我們進(jìn)行配置。它會(huì)實(shí)時(shí)顯示camera_video節(jié)點(diǎn)輸出的圖像,并且在檢測(cè)到圖像中存在人臉后,根據(jù)face_detection節(jié)點(diǎn)輸入的坐標(biāo),在圖像中將人臉框選顯示出來(lái)。3. 下載驗(yàn)證因?yàn)镸6G2C開(kāi)發(fā)板是通過(guò)網(wǎng)口去下載流圖,所以打開(kāi)AWFlow Designer后需要配置目標(biāo)板IP和端口號(hào)。然后點(diǎn)擊下載運(yùn)行即可。
流圖下載完成后,通過(guò)LCD可以看到,我們已經(jīng)成功從攝像頭獲取圖像,并且成功在顯示屏上顯示。
當(dāng)攝像頭采集的圖像中含有人臉時(shí),face_detection節(jié)點(diǎn)可以正常檢測(cè)到人臉并且輸出準(zhǔn)確的坐標(biāo)點(diǎn)。
-
檢測(cè)
+關(guān)注
關(guān)注
5文章
4514瀏覽量
91764 -
人臉檢測(cè)
+關(guān)注
關(guān)注
0文章
80瀏覽量
16515
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論