我司最近要做和人臉識別相關的產(chǎn)品谷誓,原來使用的是其他的在線平臺迫横,識別率和識別速度很滿意番舆,但是隨著量起來的話,成本也是越來越不能接受(目前該功能我們是免費給用戶使用的)矾踱,而且一旦我們的設備掉線了就無法使用人臉識別功能恨狈。基于這些考慮呛讲,我司需要尋找其他的方案禾怠。
通過搜索,目前發(fā)現(xiàn)贝搁,開源或免費支持離線的方案也有不少吗氏。目前初步考慮虹軟 ArcFace和Dlib。通過官方的demo 和 網(wǎng)上的資料雷逆,寫了個工程弦讽,也可以在這里看。
這里說一下要注意的
攝像頭是使用了 OpenCV 來處理的膀哲,這里可能會涉及到預覽圖和屏幕方向不一致的情況往产,我主要是通過一下代碼處理
Dlib 和虹軟 ArcFace要做人臉識別前都需要先檢測人臉,要不然后續(xù)提取不到人臉特征
人臉特征比對時某宪,建議將需要識別的人臉特征庫預先加載到內存仿村,這樣可以加快速度(當然也占用比較大的內存)
在使用 Dlib 做人臉檢測時要注意,人臉方向和屏幕方向不一致時檢測不到人臉(虹軟 ArcFace 不存在這個問題)缩抡,如果不一致奠宜,需要將圖片的人臉方向轉為和屏幕方向一致時再來做人臉檢測
虹軟 ArcFace 做人臉識別時,要注意你下載的憑條 SDK 與 APP_Id瞻想、SDK_key 要一致(這個是沒懂要搞這么多驗證數(shù)據(jù))压真。庫的引用直接安裝文檔操作即可。
虹軟 ArcFace 做人臉識別時蘑险,要使用人臉檢測時的人臉角度滴肿,要不然提取不到人臉特征,可以參考一下代碼說明
Dlib測試結果
機型 ? ? ? ? 一次人臉檢測耗時 ? ?一次一個人臉特征提取耗時 ? ? 一次人臉特征比對耗時
堅果 U1 ? 280毫秒左右 ? ? ? ? ? ? 6800毫秒左右 ? ? ? ? ? ? ? ? ? ? ? ? ? ?0.03毫秒左右
堅果 pro ?293毫秒左右 ? ? ? ? ? ? 1060毫秒左右 ? ? ? ? ? ? ? ? ? ? ? ? ? ?0.002毫秒左右
虹軟測試結果
機型一次 ? 人臉檢測耗時 ? ? ? ? ? ? 一次一個人臉特征提取耗時 ? ? ? ? ?一次人臉特征比對耗時
堅果 U1 ? ? 43毫秒左右 ? ? ? ? ? ? ? ?943毫秒左右 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0.883毫秒左右
堅果 pro ? ? 220毫秒左右 ? ? ? ? ? ? 314毫秒左右 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0.308毫秒左右
從該測試可以看出 Dlib 和 虹軟 ArcFace 的優(yōu)缺點佃迄,兩個的性能瓶頸都在人臉特征提取泼差,Dlib尤為突出。相對比Dlib呵俏,虹軟 ArcFace更適合于手機端平臺堆缘。