聯詠 NT9852X 上實現人臉辨識

前言

接續前篇博文的人臉偵測,本篇博文是關於如何自行將人臉辨識功能,實作在聯詠 NT9852x 晶片上。會尋找適合嵌入式的人臉辨識模型,並將其移植到聯詠晶片上運行。

相關博文:

本文

  • 流程圖
    人臉辨識流程圖
  • 使用模型: 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 輸出的置信度、五點臉部五官位置,判斷此人臉是否適合進行辨識或存入資料庫
    • 自行定義置信度閾值、臉左右傾斜角度閾值、側臉角度閾值,過濾不適合辨識的人臉

  • 建立人臉資料庫方式
    1. 執行程式前預先用照片建立資料庫
    2. 執行人臉辨識程式時,自動將陌生的臉暫時加入資料庫 (之後需關掉程式將新加入的臉命名)

  • 板端實際運行
    • 時間/FPS
      • 人臉辨識 18 ms(一人) (FPS 55)
      • 人臉偵測+辨識(一人) 70 ms (FPS 14)
    • 模型大小
      • 人臉辨識 2.6MB
    • MACC
      • 人臉辨識 226,129,920
    • AI 部分的效能
      • AI 相關引擎使用情況(人臉偵測+辨識):

        引擎使用率
        CNN127.61%
        CNN222.87%
        NUE11.03%
        NUE26.09%
        CPU0.11%
      • 記憶體用量(包含模型大小和運行模型需要的 buffer)

        • 人臉辨識: 5.17MB
        • 人臉偵測+辨識: 10.8MB (人臉偵測使用buffer大小與上篇相比,使用了較優化的設定)

  • 展示影片
    以下是 demo 人臉辨識功能的影片

  • 相關影片

    聯詠NT9852X上實現人臉辨識

    使用網路上現有的模型,以聯詠AI工具轉換後,在聯詠NT9852x上實現人臉偵測和人臉辨識功能。

    ★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

    ★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

    評論