前言
接續前篇博文的人臉偵測,本篇博文是關於如何自行將人臉辨識功能,實作在聯詠 NT9852x 晶片上。會尋找適合嵌入式的人臉辨識模型,並將其移植到聯詠晶片上運行。
相關博文:
-
人臉偵測
→ 傳送門: 在聯詠 NT9852X 上實現人臉偵測 https://www.wpgdadatong.com/blog/detail/70354
-
如何將自己的模型,轉換成聯詠晶片可以用的格式。
→ 傳送門: 以 Novatek AI Tool 轉換模型放至NT9852x, NT9856x, NT9832x上運行之說明https://www.wpgdadatong.com/blog/detail/45282
目前已支援轉換 pytorch/tensorflow/caffe
本文
- 流程圖
- 使用模型: mobilefacenet
- 來源: https://gitee.com/shopping-tang/mobilenetfacenet_nnie
- 使用其中的 caffe 模型,轉換成 nvt_model.bin
- 此模型訓練時有使用 face align 和 image flip 來增加人臉辨識的準確度
- 目的是在嵌入式裝置上運行,考量到運行速度,省去了 face align 和 image flip 步驟 以caffe模型測試,準確度有從 98.4% 降到 96.9%
- 由於前後處理有省略,並且模型也經過量化,使用 LFW 資料集重新計算出判別人臉的閾值 (原本是 76.8267,重新計算後是 80.7)
- 人臉辨識的輸入影像
- 用人臉偵測得出的預測框,將影像進行裁減,留下臉的部分
- 人臉偵測模型 retinaface 還可以標出眼睛、鼻子、嘴巴的位置(拍自己畫圖),可以做為進行人臉辨識前的分析資料
- 利用 retinaface 輸出的置信度、五點臉部五官位置,判斷此人臉是否適合進行辨識或存入資料庫
- 自行定義置信度閾值、臉左右傾斜角度閾值、側臉角度閾值,過濾不適合辨識的人臉
- 執行程式前預先用照片建立資料庫
- 執行人臉辨識程式時,自動將陌生的臉暫時加入資料庫 (之後需關掉程式將新加入的臉命名)
- 時間/FPS
- 人臉辨識 18 ms(一人) (FPS 55)
- 人臉偵測+辨識(一人) 70 ms (FPS 14)
- 模型大小
- 人臉辨識 2.6MB
- MACC
- 人臉辨識 226,129,920
- AI 部分的效能
-
AI 相關引擎使用情況(人臉偵測+辨識):
引擎 使用率 CNN1 27.61% CNN2 22.87% NUE1 1.03% NUE2 6.09% CPU 0.11% -
記憶體用量(包含模型大小和運行模型需要的 buffer)
- 人臉辨識: 5.17MB
- 人臉偵測+辨識: 10.8MB (人臉偵測使用buffer大小與上篇相比,使用了較優化的設定)
-
以下是 demo 人臉辨識功能的影片
評論