天天看點

OpenCV+OpenVINO實作人臉Landmarks實時檢測

自從OpenCV3.3版本引入深度神經網絡(DNN)子產品之後,OpenCV對DNN子產品支援最好的表現之一就是開始支援基于深度學習人臉檢測,OpenCV本身提供了兩個模型分别是基于Caffe與Tensorflow的,Caffe版本的模型是半精度16位的,tensorflow版本的模型是8位量化的。同時OpenCV通過與OpenVINO IE模型內建實作了底層硬體對對象檢測、圖像分割、圖像分類等常見模型加速推理支援。OpenVINO架構本身提供直接快速開發應用原型的模型庫,對很多常見視覺任務都可以做到快速示範支援。說起人臉的Lankmarks提取,最早的OpenCV跟DLib支援的方式都是基于AAM算法實作的68個人臉特征點的拟合模型,另外OpenCV中支援landmark的人臉檢測會先加載一個很大的模型檔案,然後速度感人,覺得還有很大的改進空間。好處是OpenCV自己提供了一個訓練工具,可以自己訓練模型。常見的MTCNN同時實作了人臉檢測跟landmarks檢測,但是隻支援5點檢測。而OpenVINO自帶的Landmark檢測模型基于自定義的卷積神經網絡實作,取35個人臉各部位關鍵點。

OpenCV+OpenVINO實作人臉Landmarks實時檢測

使用OpenCV DNN子產品人臉檢測的tensorflow量化8位模型

opencv_face_detector_uint8.pb權重檔案

opencv_face_detector.pbtxt配置檔案

OpenCV3.3以上版本支援

模型名稱:facial-landmarks-35-adas-0002

支援35點分布表示出左眼、右眼、鼻子、嘴巴、左側眉毛、右側眉毛、人臉輪廓。模型的輸入格式為:

BCHW = [1x3x60x60]

模型的輸出資料為:[1x70]大小的浮點數組、對應到35個點x、y的坐标。

輸出層名稱:align_fc3

首先加載模型檔案

首先讀取視訊的每一幀,檢測人臉,得到的人臉區域轉換位blob對象之後,再調用landmark檢測模型forward方法得到輸出結果,實作的代碼如下:

運作結果如下:

OpenCV+OpenVINO實作人臉Landmarks實時檢測

至于速度,我隻能告訴你很實時,我是i7 CPU。

想嘗試下載下傳與使用OpenVINO直接從下面連結即可開始:

https://software.intel.com/en-us/openvino-toolkit/choose-download?innovator=C

學習OpenVINO開發技術看這裡

OpenVINO計算機視覺模型加速

繼續閱讀