我司最近要做和人臉識別相關的產品,原來使用的是其他的在線平台,識別率和識別速度很滿意,但是隨着量起來的話,成本也是越來越不能接受(目前該功能我們是免費給用戶使用的),而且一旦我們的設備掉線了就無法使用人臉識別功能。基於這些考慮,我司需要尋找其他的方案。
通過搜索,目前發現,開源或免費支持離線的方案也有不少。目前初步考慮虹軟 ArcFace和Dlib。
通過官方的demo 和 網上的資料,寫了個工程,也可以在這里看。
這里說一下要注意的攝像頭是使用了 OpenCV 來處理的,這里可能會涉及到預覽圖和屏幕方向不一致的情況,我主要是通過一下代碼處理
Dlib 和虹軟 ArcFace要做人臉識別前都需要先檢測人臉,要不然后續提取不到人臉特征人臉特征比對時,建議將需要識別的人臉特征庫預先加載到內存,這樣可以加快速度(當然也占用比較大的內存)在使用 Dlib 做人臉檢測時要注意,人臉方向和屏幕方向不一致時檢測不到人臉(虹軟 ArcFace 不存在這個問題),如果不一致,需要將圖片的人臉方向轉為和屏幕方向一致時再來做人臉檢測虹軟 ArcFace 做人臉識別時,要注意你下載的憑條 SDK 與 APP_Id、SDK_key 要一致(這個是沒懂要搞這么多驗證數據)。庫的引用直接安裝文檔操作即可。虹軟 ArcFace 做人臉識別時,要使用人臉檢測時的人臉角度,要不然提取不到人臉特征,可以參考一下代碼說明
Dlib測試結果機型 一次人臉檢測耗時 一次一個人臉特征提取耗時 一次人臉特征比對耗時
堅果 U1 280毫秒左右 6800毫秒左右 0.03毫秒左右
堅果 pro 293毫秒左右 1060毫秒左右 0.002毫秒左右
虹軟測試結果機型一次 人臉檢測耗時 一次一個人臉特征提取耗時 一次人臉特征比對耗時堅果 U1 43毫秒左右 943毫秒左右 0.883毫秒左右堅果 pro 220毫秒左右 314毫秒左右 0.308毫秒左右
從該測試可以看出 Dlib 和 虹軟 ArcFace 的優缺點,兩個的性能瓶頸都在人臉特征提取,Dlib尤為突出。相對比Dlib,虹軟 ArcFace更適合於手機端平台。